# Rust Oxide/uMod hook reference Every hook the uMod Rust game extension raises — **477 hooks across 20 categories** — with its description, its return contract and the C# signature to declare in a plugin. > **Scraped verbatim from [`umod.org/documentation/games/rust`](https://umod.org/documentation/games/rust) on 2026-09-15.** > This is a *mirror for reference*, not a specification we own: uMod is upstream and wins any > disagreement. See [`README.md`](README.md) for what it is for and how to refresh it. --- ## How to read an entry Each hook gives three things: - **What it is called for** — the game moment that raises it. - **Return behaviour** — the hook's contract, and the only part that is load-bearing. Oxide reads the value your method returns and one of four things is true: | Contract | Meaning | |---|---| | *No return behavior* | The hook is a **notification**. Return `void`; nothing you return is read. | | *Returning a non-null value overrides default behavior* | The hook is a **veto with a payload**. Declare it `object`; return `null` to let the game proceed, anything else (conventionally `true`/`false`) to cancel the default action. | | *Returning true or false overrides default behavior* | A **veto**. Declare it `object`; return `null` to abstain — returning `false` is *not* the same as abstaining. | | *Returning a string will kick…* (and similar) | The returned value is **consumed as data**, not just as a veto. | - **Signature** — the exact method to declare. Oxide binds hooks **by name and arity**, by reflection, at runtime: there is no interface to implement and no compile-time check. A typo in the name, or the wrong parameter types, means the method is silently never called. > **Two cautions that apply to the whole table.** (1) Never return a non-`null` value from a hook > whose contract is *no return behavior* — on some hooks Oxide will still treat it as a veto. > (2) When several plugins hook the same veto, **the first non-`null` return wins** and the > remaining plugins are not consulted; abstain with `null` unless you mean to decide. --- ## Categories | Category | Hooks | What it covers | |---|---:|---| | [Server](#server-hooks) | 17 | Process lifecycle, the tick/frame loop, save and restart, RCON and console commands. | | [Player](#player-hooks) | 138 | Everything a connected human does: connect, chat, command, craft, loot, build, die, respawn. The largest surface alongside Entity. | | [Entity](#entity-hooks) | 140 | The generic `BaseEntity` graph — spawn, kill, damage, mount, loot, flags. Anything in the world that is not specifically an item. | | [Item](#item-hooks) | 43 | Item stacks and containers: add, remove, split, stack, move, repair, research, craft, use. | | [Resource](#resource-hooks) | 12 | Gathering and node dispensers — ore, trees, corpses, collectibles, quarries. | | [Structure](#structure-hooks) | 15 | Building blocks: placement, upgrade, demolish, rotate, stability, doors and locks. | | [Terrain](#terrain-hooks) | 1 | Terrain/map topology. | | [Vending](#vending-hooks) | 16 | Vending machines and the shop/trade flow, including the marketplace and drone deliveries. | | [Weapon](#weapon-hooks) | 16 | Firing, reloading, throwing, melee swings, projectile and trap behaviour. | | [Vehicle](#vehicle-hooks) | 22 | Boats, cars, horses, helicopters, trains, submarines — fuel, engines, mounting, pushing. | | [Team](#team-hooks) | 12 | Rust's built-in team/party system: create, invite, join, leave, promote, disband. | | [World](#world-hooks) | 1 | World-level generation events. | | [Fishing](#fishing-hooks) | 4 | The fishing minigame. | | [Electronic](#electronic-hooks) | 2 | The electricity graph. | | [Clan](#clan-hooks) | 7 | The first-party clan system (distinct from Team). | | [Plugin](#plugin-hooks) | 4 | Plugin lifecycle inside Oxide itself — `Loaded`, `Unload`, and compilation. | | [Sign](#sign-hooks) | 3 | Sign painting, updating and locking. | | [TechTree](#techtree-hooks) | 4 | Tech tree node unlocks and their prerequisites. | | [Phone](#phone-hooks) | 12 | In-game telephones: dialling, answering, voicemail, directory. | | [Permission](#permission-hooks) | 8 | uMod's own permission/group system (Covalence) — grants, revokes, group membership. | | **Total** | **477** | | --- ## Alphabetical index | Hook | Category | Returns | |---|---|---| | [`CanAcceptItem`](#canacceptitem) | Item | Returning CanAcceptResult value overrides default behavior | | [`CanAdministerVending`](#canadministervending) | Vending | Returning true or false overrides default behavior | | [`CanAffordToPlace`](#canaffordtoplace) | Player | Returning true or false overrides default behavior | | [`CanAffordUpgrade`](#canaffordupgrade) | Player | Returning true or false overrides default behavior | | [`CanAssignBed`](#canassignbed) | Player | Returning a non-null value overrides default behavior | | [`CanBeTargeted`](#canbetargeted) | Player | Returning true or false overrides default behavior | | [`CanBeWounded`](#canbewounded) | Player | Returning true or false overrides default behavior | | [`CanBradleyApcTarget`](#canbradleyapctarget) | Entity | Returning true or false overrides default behavior | | [`CanBuild`](#canbuild) | Player | Returning a non-null value overrides default behavior | | [`CanBypassQueue`](#canbypassqueue) | Player | Returning true will bypass the queue, returning nothing will by def… | | [`CanCatchFish`](#cancatchfish) | Fishing | Returning true or false overrides default behavior | | [`CanChangeCode`](#canchangecode) | Player | Returning a non-null value overrides default behavior | | [`CanChangeGrade`](#canchangegrade) | Player | Returning true or false overrides default behavior | | [`CanCheckFuel`](#cancheckfuel) | Vehicle | Returning true or false overrides default behavior | | [`CanClientLogin`](#canclientlogin) | Player | Returning a string will use the string as the error message | | [`CanCombineDroppedItem`](#cancombinedroppeditem) | Item | Returning a non-null value overwrites command arguments | | [`CanCraft`](#cancraft) | Player | Returning true or false overrides default behavior | | [`CanCreateWorldProjectile`](#cancreateworldprojectile) | Weapon | Returning a non-null value overrides default behavior | | [`CanDemolish`](#candemolish) | Player | Returning true or false overrides default behavior | | [`CanDeployItem`](#candeployitem) | Player | Returning a non-null value cancels default behavior | | [`CanDismountEntity`](#candismountentity) | Player | Returning a non-null value overrides default behavior | | [`CanDropActiveItem`](#candropactiveitem) | Item | Returning true or false overrides default behavior | | [`CanEntityBeHostile`](#canentitybehostile) | Entity | Returning a non-null value overrides default behavior | | [`CanEquipItem`](#canequipitem) | Player | Returning true or false overrides default behavior | | [`CanExplosiveStick`](#canexplosivestick) | Weapon | Returning a non-null value overwrites the default behavior | | [`CanHackCrate`](#canhackcrate) | Player | Returning a non-null value overrides default behavior | | [`CanHelicopterDropCrate`](#canhelicopterdropcrate) | Entity | Returning true or false overrides default behavior | | [`CanHelicopterStrafe`](#canhelicopterstrafe) | Entity | Returning true or false overrides default behavior | | [`CanHelicopterStrafeTarget`](#canhelicopterstrafetarget) | Entity | Returning true or false overrides default behavior | | [`CanHelicopterTarget`](#canhelicoptertarget) | Entity | Returning true or false overrides default behavior | | [`CanHelicopterUseNapalm`](#canhelicopterusenapalm) | Entity | Returning true or false overrides default behavior | | [`CanHideStash`](#canhidestash) | Player | Returning a non-null value overrides default behavior | | [`CanLock`](#canlock) | Player | Returning a non-null value cancels default behavior | | [`CanLockerAcceptItem`](#canlockeracceptitem) | Entity | Returning true or false overrides default behavior | | [`CanLootEntity`](#canlootentity) | Player | Returning a non-null value overrides default behavior | | [`CanLootPlayer`](#canlootplayer) | Player | Returning true or false overrides default behavior | | [`CanMountEntity`](#canmountentity) | Player | Returning a non-null value overrides default behavior | | [`CanMoveItem`](#canmoveitem) | Item | Returning a non-null value overrides default behavior | | [`CanNetworkTo`](#cannetworkto) | Entity | Returning true or false overrides default behavior | | [`CanNpcAttack`](#cannpcattack) | Entity | Returning true or false overrides default behavior | | [`CanNpcEat`](#cannpceat) | Entity | Returning true or false overrides default behavior | | [`CanPickupEntity`](#canpickupentity) | Player | Returning true or false overrides default behavior | | [`CanPickupLock`](#canpickuplock) | Player | Returning true or false overrides default behavior | | [`CanPushBoat`](#canpushboat) | Player | Returning a non-null value cancels default behavior | | [`CanReceiveCall`](#canreceivecall) | Phone | Returning true or false overrides default behavior | | [`CanRecycle`](#canrecycle) | Entity | Returning true or false overrides default behavior | | [`CanRenameBed`](#canrenamebed) | Player | Returning a non-null value overrides default behavior | | [`CanResearchItem`](#canresearchitem) | Player | Returning a non-null value overrides default behavior | | [`CanSamSiteShoot`](#cansamsiteshoot) | Entity | Returning a non-null value cancels default behavior | | [`CanSeeStash`](#canseestash) | Player | Returning a non-null value overrides default behavior | | [`CanSetBedPublic`](#cansetbedpublic) | Player | Returning a non-null value overrides default behavior | | [`CanSetRelationship`](#cansetrelationship) | Player | Returning true or false overrides default behavior | | [`CanSpectateTarget`](#canspectatetarget) | Player | Returning a non-null value cancels default behavior | | [`CanStackItem`](#canstackitem) | Item | Returning true or false overrides default behavior | | [`CanSwapToSeat`](#canswaptoseat) | Entity | Returning true or false overrides default behavior | | [`CanTakeCutting`](#cantakecutting) | Resource | Returning a non-null value cancels default behavior | | [`CanUnlock`](#canunlock) | Player | Returning a non-null value overrides default behavior | | [`CanUnlockTechTreeNode`](#canunlocktechtreenode) | TechTree | Returning true or false overrides default behavior | | [`CanUnlockTechTreeNodePath`](#canunlocktechtreenodepath) | TechTree | Returning true or false overrides default behavior | | [`CanUpdateSign`](#canupdatesign) | Player | Returning true or false overrides default behavior | | [`CanUseFuel`](#canusefuel) | Vehicle | Returning true or false overrides default behavior | | [`CanUseGesture`](#canusegesture) | Player | Returning true or false overrides default behavior | | [`CanUseHelicopter`](#canusehelicopter) | Vehicle | Returning a non-null value cancels default behavior | | [`CanUseLockedEntity`](#canuselockedentity) | Player | Returning true or false overrides default behavior | | [`CanUseMailbox`](#canusemailbox) | Player | Returning true or false overrides default behavior | | [`CanUserLogin`](#canuserlogin) | Player | Returning a string will kick the user with this reason. Returning a… | | [`CanUseUI`](#canuseui) | Player | Returning a non-null value overrides default behavior | | [`CanUseVending`](#canusevending) | Vending | Returning true or false overrides default behavior | | [`CanUseWires`](#canusewires) | Player | Returning a non-null value overrides default behavior | | [`CanVendingAcceptItem`](#canvendingacceptitem) | Vending | Returning true or false overrides default behavior | | [`CanWearItem`](#canwearitem) | Player | Returning a non-null value overrides default behavior | | [`Init`](#init) | Server | — | | [`LoadDefaultConfig`](#loaddefaultconfig) | Plugin | — | | [`LoadDefaultMessages`](#loaddefaultmessages) | Plugin | — | | [`Loaded`](#loaded) | Plugin | — | | [`OnActiveItemChange`](#onactiveitemchange) | Player | Returning a non-null value cancels default behavior | | [`OnActiveItemChanged`](#onactiveitemchanged) | Player | — | | [`OnAddVendingOffer`](#onaddvendingoffer) | Vending | — | | [`OnAirdrop`](#onairdrop) | Entity | — | | [`OnAmmoSwitch`](#onammoswitch) | Weapon | Returning a non-null value overrides default behavior | | [`OnAmmoUnload`](#onammounload) | Weapon | Returning a non-null value cancels default behavior | | [`OnAnalysisComplete`](#onanalysiscomplete) | Player | — | | [`OnBackpackDrop`](#onbackpackdrop) | Item | Return non-null to override default behaviour. | | [`OnBigWheelLoss`](#onbigwheelloss) | Entity | — | | [`OnBigWheelWin`](#onbigwheelwin) | Entity | Returning non-null value overrides default behaviour. | | [`OnBoatPathGenerate`](#onboatpathgenerate) | Vehicle | Returning a List overrides default behavior | | [`OnBonusItemDrop`](#onbonusitemdrop) | Item | Returning a non-null value overrides default behavior | | [`OnBonusItemDropped`](#onbonusitemdropped) | Item | — | | [`OnBookmarkAdd`](#onbookmarkadd) | Entity | Returning a non-null value overrides default behavior | | [`OnBookmarkControl`](#onbookmarkcontrol) | Entity | Returning a non-null value overrides default behavior | | [`OnBookmarkControlEnd`](#onbookmarkcontrolend) | Entity | Returning a non-null value overrides default behavior | | [`OnBookmarkControlEnded`](#onbookmarkcontrolended) | Entity | — | | [`OnBookmarkControlStarted`](#onbookmarkcontrolstarted) | Entity | — | | [`OnBookmarkDelete`](#onbookmarkdelete) | Entity | Returning a non-null value overrides default behavior | | [`OnBookmarkInput`](#onbookmarkinput) | Entity | Returning a non-null value overrides default behavior | | [`OnBookmarksSendControl`](#onbookmarkssendcontrol) | Entity | Returning a non-null value overrides default behavior | | [`OnBradleyApcHunt`](#onbradleyapchunt) | Entity | Returning a non-null value overrides default behavior | | [`OnBradleyApcInitialize`](#onbradleyapcinitialize) | Entity | Returning a non-null value overrides default behavior | | [`OnBradleyApcPatrol`](#onbradleyapcpatrol) | Entity | Returning a non-null value overrides default behavior | | [`OnBroadcastCommand`](#onbroadcastcommand) | Player | Returning a non-null value overwrites command arguments | | [`OnBuildingPrivilege`](#onbuildingprivilege) | Entity | Returning BuildingPrivlidge value overrides default behavior | | [`OnBuildingSplit`](#onbuildingsplit) | Structure | — | | [`OnButtonPress`](#onbuttonpress) | Entity | Returning a non-null value cancels default behavior | | [`OnBuyVendingItem`](#onbuyvendingitem) | Vending | Returning a non-null value overrides default behavior | | [`OnCardSwipe`](#oncardswipe) | Item | Returning a non-null value cancels default behavior | | [`OnCargoPlaneSignaled`](#oncargoplanesignaled) | Entity | — | | [`OnCCTVDirectionChange`](#oncctvdirectionchange) | Entity | Returning a non-null value cancels default behavior | | [`OnCentralizedBanCheck`](#oncentralizedbancheck) | Player | Returning a non-null value cancels default behavior | | [`OnClanColorChanged`](#onclancolorchanged) | Clan | — | | [`OnClanCreated`](#onclancreated) | Clan | — | | [`OnClanDisbanded`](#onclandisbanded) | Clan | — | | [`OnClanLogoChanged`](#onclanlogochanged) | Clan | — | | [`OnClanMemberAdded`](#onclanmemberadded) | Clan | — | | [`OnClanMemberKicked`](#onclanmemberkicked) | Clan | — | | [`OnClanMemberLeft`](#onclanmemberleft) | Clan | — | | [`OnClientAuth`](#onclientauth) | Player | — | | [`OnClientCommand`](#onclientcommand) | Player | Returning a non-null value overrides default behavior | | [`OnCodeEntered`](#oncodeentered) | Structure | Returning a non-null value overrides default behavior | | [`OnCollectiblePickup`](#oncollectiblepickup) | Resource | Returning a non-null value overrides default behavior | | [`OnConstructionPlace`](#onconstructionplace) | Structure | Returning a non-null value overrides default behavior | | [`OnContainerDropItems`](#oncontainerdropitems) | Entity | Returning a non-null value overrides default behavior | | [`OnCorpsePopulate`](#oncorpsepopulate) | Player | Returning a BaseCorpse overrides default behavior | | [`OnCounterModeToggle`](#oncountermodetoggle) | Entity | Returning a non-null value overrides default behavior | | [`OnCounterTargetChange`](#oncountertargetchange) | Entity | Returning a non-null value overrides default behavior | | [`OnCrateDropped`](#oncratedropped) | Entity | — | | [`OnCrateHack`](#oncratehack) | Entity | — | | [`OnCrateHackEnd`](#oncratehackend) | Entity | — | | [`OnCrateLanded`](#oncratelanded) | Entity | — | | [`OnCupboardAuthorize`](#oncupboardauthorize) | Structure | Returning a non-null value overrides default behavior | | [`OnCupboardClearList`](#oncupboardclearlist) | Structure | Returning a non-null value overrides default behavior | | [`OnCupboardDeauthorize`](#oncupboarddeauthorize) | Structure | Returning a non-null value overrides default behavior | | [`OnDefaultItemsReceive`](#ondefaultitemsreceive) | Player | Returning a non-null value overrides default behavior | | [`OnDefaultItemsReceived`](#ondefaultitemsreceived) | Player | Returning a non-null value overrides default behavior | | [`OnDeleteVendingOffer`](#ondeletevendingoffer) | Vending | — | | [`OnDemoRecordingStart`](#ondemorecordingstart) | Player | Returning a non-null value overrides default behavior | | [`OnDemoRecordingStarted`](#ondemorecordingstarted) | Player | — | | [`OnDemoRecordingStop`](#ondemorecordingstop) | Player | Returning a non-null value overrides default behavior | | [`OnDemoRecordingStopped`](#ondemorecordingstopped) | Player | — | | [`OnDestroyUI`](#ondestroyui) | Player | — | | [`OnDieselEngineToggle`](#ondieselenginetoggle) | Entity | Returning a non-null value cancels default behavior | | [`OnDieselEngineToggled`](#ondieselenginetoggled) | Entity | — | | [`OnDispenserBonus`](#ondispenserbonus) | Resource | Returning an Item replaces the existing Item | | [`OnDispenserGather`](#ondispensergather) | Resource | Returning a non-null value overrides default behavior | | [`OnDoorClosed`](#ondoorclosed) | Structure | — | | [`OnDoorKnocked`](#ondoorknocked) | Structure | — | | [`OnDoorOpened`](#ondooropened) | Structure | — | | [`OnElevatorButtonPress`](#onelevatorbuttonpress) | Entity | Returning a non-null value overrides default behavior | | [`OnElevatorCall`](#onelevatorcall) | Entity | Returning a non-null value overrides default behavior | | [`OnElevatorMove`](#onelevatormove) | Entity | Returning a non-null value overrides default behavior | | [`OnEngineLoadoutRefresh`](#onengineloadoutrefresh) | Entity | Returning a non-null value overrides default behaviour | | [`OnEngineStart`](#onenginestart) | Vehicle | Returning a non-null value overrides default behavior | | [`OnEngineStarted`](#onenginestarted) | Vehicle | — | | [`OnEngineStatsRefresh`](#onenginestatsrefresh) | Vehicle | Returning a non-null value overrides default behavior | | [`OnEngineStatsRefreshed`](#onenginestatsrefreshed) | Vehicle | — | | [`OnEngineStop`](#onenginestop) | Vehicle | Returning a non-null value overrides default behavior | | [`OnEngineStopped`](#onenginestopped) | Vehicle | — | | [`OnEntityBuilt`](#onentitybuilt) | Structure | — | | [`OnEntityControl`](#onentitycontrol) | Entity | Returning true or false overrides default behavior | | [`OnEntityDeath`](#onentitydeath) | Entity | — | | [`OnEntityDestroy`](#onentitydestroy) | Entity | Returning a non-null value overrides default behavior | | [`OnEntityDismounted`](#onentitydismounted) | Entity | — | | [`OnEntityEnter`](#onentityenter) | Entity | — | | [`OnEntityFlagsNetworkUpdate`](#onentityflagsnetworkupdate) | Entity | Returning a non-null value overrides default behavior | | [`OnEntityGroundMissing`](#onentitygroundmissing) | Entity | Returning a non-null value overrides default behavior | | [`OnEntityKill`](#onentitykill) | Entity | Returning a non-null value overrides default behavior | | [`OnEntityLeave`](#onentityleave) | Entity | — | | [`OnEntityMarkHostile`](#onentitymarkhostile) | Entity | Returning a non-null value cancels default behavior | | [`OnEntityMounted`](#onentitymounted) | Entity | — | | [`OnEntitySaved`](#onentitysaved) | Entity | — | | [`OnEntitySnapshot`](#onentitysnapshot) | Entity | Returning a non-null value overrides default behavior | | [`OnEntitySpawned`](#onentityspawned) | Entity | — | | [`OnEntityStabilityCheck`](#onentitystabilitycheck) | Entity | Returning a non-null value cancels default behavior | | [`OnEntityTakeDamage`](#onentitytakedamage) | Entity | | | [`OnExcavatorGather`](#onexcavatorgather) | Entity | Returning a non-null value cancels default behavior | | [`OnExcavatorMiningToggled`](#onexcavatorminingtoggled) | Entity | — | | [`OnExcavatorResourceSet`](#onexcavatorresourceset) | Entity | Returning a non-null value cancels default behavior | | [`OnExcavatorSuppliesRequest`](#onexcavatorsuppliesrequest) | Electronic | Returning non-null overrides default behaviour. | | [`OnExcavatorSuppliesRequested`](#onexcavatorsuppliesrequested) | Electronic | | | [`OnExperimentEnd`](#onexperimentend) | Player | Returning a non-null value overrides defualt behaviour. | | [`OnExperimentEnded`](#onexperimentended) | Player | — | | [`OnExperimentStart`](#onexperimentstart) | Player | Returning a non-null value overrides default behavior | | [`OnExperimentStarted`](#onexperimentstarted) | Player | — | | [`OnExplosiveDropped`](#onexplosivedropped) | Weapon | — | | [`OnExplosiveDud`](#onexplosivedud) | Weapon | Returning a non-null value cancels default behavior | | [`OnExplosiveFuseSet`](#onexplosivefuseset) | Weapon | Returning a non-null value overwrites fuse length | | [`OnExplosiveThrown`](#onexplosivethrown) | Weapon | — | | [`OnFindBurnable`](#onfindburnable) | Item | Returning an Item overrides default behavior | | [`OnFindSpawnPoint`](#onfindspawnpoint) | Player | Return a BasePlayer.SpawnPoint object to use that spawnpoint | | [`OnFireBallDamage`](#onfireballdamage) | Entity | — | | [`OnFireBallSpread`](#onfireballspread) | Entity | — | | [`OnFishCatch`](#onfishcatch) | Fishing | Returning a non-null value overrides default behavior | | [`OnFishCaught`](#onfishcaught) | Fishing | — | | [`OnFishingStopped`](#onfishingstopped) | Fishing | — | | [`OnFlameExplosion`](#onflameexplosion) | Entity | — | | [`OnFlameThrowerBurn`](#onflamethrowerburn) | Weapon | — | | [`OnFrame`](#onframe) | Server | — | | [`OnFuelAmountCheck`](#onfuelamountcheck) | Vehicle | Returning a numeric value (int) overrides the default value | | [`OnFuelCheck`](#onfuelcheck) | Vehicle | Returning true or false overrides default behavior | | [`OnFuelConsume`](#onfuelconsume) | Item | Returning a non-null value overrides default behavior | | [`OnFuelConsumed`](#onfuelconsumed) | Item | — | | [`OnFuelItemCheck`](#onfuelitemcheck) | Vehicle | Returning an Item overrides default behavior | | [`OnGiveSoldItem`](#ongivesolditem) | Vending | Returning a non-null value cancels default behavior | | [`OnGroupCreated`](#ongroupcreated) | Permission | — | | [`OnGroupDeleted`](#ongroupdeleted) | Permission | — | | [`OnGroupParentSet`](#ongroupparentset) | Permission | — | | [`OnGroupPermissionGranted`](#ongrouppermissiongranted) | Permission | — | | [`OnGroupPermissionRevoked`](#ongrouppermissionrevoked) | Permission | — | | [`OnGroupRankSet`](#ongrouprankset) | Permission | — | | [`OnGroupTitleSet`](#ongrouptitleset) | Permission | — | | [`OnGrowableGather`](#ongrowablegather) | Resource | Returning a non-null value overrides default behavior | | [`OnGrowableGathered`](#ongrowablegathered) | Resource | — | | [`OnHammerHit`](#onhammerhit) | Structure | Returning a non-null value overrides default behavior | | [`OnHealingItemUse`](#onhealingitemuse) | Item | Returning a non-null value overrides default behavior | | [`OnHelicopterAttack`](#onhelicopterattack) | Entity | Returning a non-null value overrides default behavior | | [`OnHelicopterDropCrate`](#onhelicopterdropcrate) | Entity | Returning a non-null value overrides default behavior | | [`OnHelicopterDropDoorOpen`](#onhelicopterdropdooropen) | Entity | Returning a non-null value overrides default behavior | | [`OnHelicopterKilled`](#onhelicopterkilled) | Entity | Returning a non-null value overrides default behavior | | [`OnHelicopterOutOfCrates`](#onhelicopteroutofcrates) | Entity | Returning true or false overrides default behavior | | [`OnHelicopterRetire`](#onhelicopterretire) | Entity | Returning a non-null value overrides default behaviour. | | [`OnHelicopterStrafeEnter`](#onhelicopterstrafeenter) | Entity | Returning a non-null value cancels default behavior | | [`OnHelicopterTarget`](#onhelicoptertarget) | Entity | Returning a non-null value overrides default behavior | | [`OnHorseHitch`](#onhorsehitch) | Entity | Returning a non-null value overrides default behavior | | [`OnHorseLead`](#onhorselead) | Entity | Returning a non-null value overrides default behavior | | [`OnHotAirBalloonToggle`](#onhotairballoontoggle) | Vehicle | Returning a non-null value overrides default behavior | | [`OnHotAirBalloonToggled`](#onhotairballoontoggled) | Vehicle | — | | [`OnIngredientsCollect`](#oningredientscollect) | Item | Returning a non-null value cancels default behavior | | [`OnInputUpdate`](#oninputupdate) | Entity | Returning a non-null value cancels default behavior | | [`OnInventoryNetworkUpdate`](#oninventorynetworkupdate) | Player | Returning a non-null value overrides default behavior | | [`OnIORefCleared`](#oniorefcleared) | Entity | — | | [`OnItemAction`](#onitemaction) | Item | Returning a non-null value overrides default behavior | | [`OnItemAddedToContainer`](#onitemaddedtocontainer) | Item | — | | [`OnItemCraft`](#onitemcraft) | Item | Returning true or false overrides default behavior | | [`OnItemCraftCancelled`](#onitemcraftcancelled) | Item | — | | [`OnItemCraftFinished`](#onitemcraftfinished) | Item | — | | [`OnItemDeployed`](#onitemdeployed) | Item | — | | [`OnItemDropped`](#onitemdropped) | Item | — | | [`OnItemLock`](#onitemlock) | Item | Returning a non-null value overrides default behavior | | [`OnItemPickup`](#onitempickup) | Item | Returning a non-null value overrides default behavior | | [`OnItemRecycle`](#onitemrecycle) | Entity | Returning a non-null value overrides default behavior | | [`OnItemRefill`](#onitemrefill) | Item | Returning a non-null value overrides default behavior | | [`OnItemRemove`](#onitemremove) | Item | Return a non-null value stop item from being destroyed | | [`OnItemRemovedFromContainer`](#onitemremovedfromcontainer) | Item | — | | [`OnItemRepair`](#onitemrepair) | Item | Returning a non-null value overrides default behavior | | [`OnItemResearch`](#onitemresearch) | Item | — | | [`OnItemResearched`](#onitemresearched) | Item | Returning a float will affect if researching is successful or not | | [`OnItemSplit`](#onitemsplit) | Item | Returning an Item overrides default behavior | | [`OnItemStacked`](#onitemstacked) | Item | — | | [`OnItemSubmit`](#onitemsubmit) | Item | Returning a non-null value cancels default behavior | | [`OnItemUnlock`](#onitemunlock) | Item | Returning a non-null value overrides default behavior | | [`OnItemUpgrade`](#onitemupgrade) | Item | — | | [`OnItemUse`](#onitemuse) | Item | Returning an int overrides the amount consumed. | | [`OnLiftUse`](#onliftuse) | Entity | Returning a non-null value overrides default behavior | | [`OnLiquidVesselFill`](#onliquidvesselfill) | Entity | Returning a non-null value cancels default behavior | | [`OnLockerSwap`](#onlockerswap) | Entity | Returning non-null value overrides default behavior | | [`OnLootEntity`](#onlootentity) | Player | — | | [`OnLootEntityEnd`](#onlootentityend) | Player | — | | [`OnLootItem`](#onlootitem) | Player | — | | [`OnLootNetworkUpdate`](#onlootnetworkupdate) | Player | Returning a non-null value overrides default behavior | | [`OnLootPlayer`](#onlootplayer) | Player | — | | [`OnLootSpawn`](#onlootspawn) | Entity | Returning a non-null value overrides default behavior | | [`OnLoseCondition`](#onlosecondition) | Item | — | | [`OnMagazineReload`](#onmagazinereload) | Weapon | Returning a non-null value overrides default behavior | | [`OnMapImageUpdated`](#onmapimageupdated) | Item | — | | [`OnMapMarkerAdd`](#onmapmarkeradd) | Player | Returning a non-null value cancels default behavior | | [`OnMapMarkerAdded`](#onmapmarkeradded) | Player | — | | [`OnMapMarkerRemove`](#onmapmarkerremove) | Player | Returning a non-null value cancels default behaviour | | [`OnMapMarkersClear`](#onmapmarkersclear) | Player | Returning a non-null value cancels default behavior | | [`OnMapMarkersCleared`](#onmapmarkerscleared) | Player | — | | [`OnMaxStackable`](#onmaxstackable) | Item | Returning a numeric value (int) overrides the default value | | [`OnMeleeAttack`](#onmeleeattack) | Player | Returning a non-null value cancels default behavior | | [`OnMeleeThrown`](#onmeleethrown) | Weapon | — | | [`OnMessagePlayer`](#onmessageplayer) | Server | Returning a non-null value overrides default behavior | | [`OnMlrsFire`](#onmlrsfire) | Entity | Returning a non-null value overrides default behaviour. | | [`OnMlrsFired`](#onmlrsfired) | Entity | No return behaviour. | | [`OnNetworkGroupEntered`](#onnetworkgroupentered) | Player | — | | [`OnNetworkGroupLeft`](#onnetworkgroupleft) | Player | — | | [`OnNetworkSubscriptionsUpdate`](#onnetworksubscriptionsupdate) | Entity | Returning a non-null value prevents Rust from applying the proposed… | | [`OnNewSave`](#onnewsave) | Server | — | | [`OnNpcConversationEnded`](#onnpcconversationended) | Player | — | | [`OnNpcConversationRespond`](#onnpcconversationrespond) | Player | Returning a non-null value overrides default behavior | | [`OnNpcConversationResponded`](#onnpcconversationresponded) | Player | — | | [`OnNpcConversationStart`](#onnpcconversationstart) | Player | Returning a non-null value overrides default behavior | | [`OnNpcDestinationSet`](#onnpcdestinationset) | Entity | Returning a non-null value cancels default behavior | | [`OnNpcGiveSoldItem`](#onnpcgivesolditem) | Vending | Returning a non-null value overrides default behaviour. | | [`OnNpcPlayerResume`](#onnpcplayerresume) | Entity | Returning a non-null value cancels default behavior | | [`OnNpcStopMoving`](#onnpcstopmoving) | Entity | Returning a non-null value cancels default behavior | | [`OnNpcTarget`](#onnpctarget) | Entity | Returning a non-null value overrides default behavior | | [`OnNpcTargetSense`](#onnpctargetsense) | Entity | Returning a non-null value overrides default behavior | | [`OnOpenVendingAdmin`](#onopenvendingadmin) | Vending | — | | [`OnOutputUpdate`](#onoutputupdate) | Entity | Returning a non-null value cancels default behavior | | [`OnOvenCook`](#onovencook) | Entity | Returning a non-null value overrides default behavior | | [`OnOvenCooked`](#onovencooked) | Entity | — | | [`OnOvenToggle`](#onoventoggle) | Entity | Returning a non-null value overrides default behavior | | [`OnPayForPlacement`](#onpayforplacement) | Player | Returning a non-null value cancels default behavior | | [`OnPayForUpgrade`](#onpayforupgrade) | Player | Returning a non-null value cancels default behavior | | [`OnPermissionRegistered`](#onpermissionregistered) | Permission | — | | [`OnPhoneAnswer`](#onphoneanswer) | Phone | Returning a non-null value overrides default behavior | | [`OnPhoneAnswered`](#onphoneanswered) | Phone | — | | [`OnPhoneCallStart`](#onphonecallstart) | Phone | Returning a non-null value overrides default behavior | | [`OnPhoneCallStarted`](#onphonecallstarted) | Phone | | | [`OnPhoneDial`](#onphonedial) | Phone | Returning a non-null value overrides default behavior | | [`OnPhoneDialFail`](#onphonedialfail) | Phone | Returning a non-null value overrides default behavior | | [`OnPhoneDialFailed`](#onphonedialfailed) | Phone | — | | [`OnPhoneDialTimedOut`](#onphonedialtimedout) | Phone | — | | [`OnPhoneDialTimeout`](#onphonedialtimeout) | Phone | Returning a non-null value overrides default behavior | | [`OnPhoneNameUpdate`](#onphonenameupdate) | Phone | Returning a non-null value overrides default behavior | | [`OnPhoneNameUpdated`](#onphonenameupdated) | Phone | — | | [`OnPlayerAddModifiers`](#onplayeraddmodifiers) | Player | Returning a non-null value overrides default behavior (prevents the… | | [`OnPlayerAssist`](#onplayerassist) | Player | Returning a non-null value cancels default behavior | | [`OnPlayerAttack`](#onplayerattack) | Player | Returning a non-null value overrides default behavior | | [`OnPlayerBanned`](#onplayerbanned) | Player | — | | [`OnPlayerChat`](#onplayerchat) | Player | Returning a non-null value overrides default behavior of chat, not… | | [`OnPlayerCommand`](#onplayercommand) | Player | Returning a non-null value overrides default behavior | | [`OnPlayerConnected`](#onplayerconnected) | Player | — | | [`OnPlayerCorpse`](#onplayercorpse) | Player | — | | [`OnPlayerCorpseSpawn`](#onplayercorpsespawn) | Player | Returning a non-null value overrides default behavior | | [`OnPlayerCorpseSpawned`](#onplayercorpsespawned) | Player | — | | [`OnPlayerDeath`](#onplayerdeath) | Player | Returning a non-null value overrides default behavior | | [`OnPlayerDisconnected`](#onplayerdisconnected) | Player | — | | [`OnPlayerDropActiveItem`](#onplayerdropactiveitem) | Player | — | | [`OnPlayerHealthChange`](#onplayerhealthchange) | Player | Returning a non-null value cancels the health change | | [`OnPlayerInput`](#onplayerinput) | Player | — | | [`OnPlayerKeepAlive`](#onplayerkeepalive) | Player | Returning a non-null value cancels default behavior | | [`OnPlayerKicked`](#onplayerkicked) | Player | — | | [`OnPlayerLand`](#onplayerland) | Player | Returning a non-null value overrides default behavior | | [`OnPlayerLanded`](#onplayerlanded) | Player | — | | [`OnPlayerLootEnd`](#onplayerlootend) | Player | — | | [`OnPlayerMetabolize`](#onplayermetabolize) | Player | — | | [`OnPlayerRecover`](#onplayerrecover) | Player | Returning a non-null value overrides default behavior | | [`OnPlayerRecovered`](#onplayerrecovered) | Player | — | | [`OnPlayerReported`](#onplayerreported) | Player | — | | [`OnPlayerRespawn`](#onplayerrespawn) | Player | Returning a BasePlayer.SpawnPoint (takes a position and rotation),… | | [`OnPlayerRespawned`](#onplayerrespawned) | Player | — | | [`OnPlayerRevive`](#onplayerrevive) | Player | Returning a non-null value cancels default behavior | | [`OnPlayerSetInfo`](#onplayersetinfo) | Player | — | | [`OnPlayerSleep`](#onplayersleep) | Player | Returning a non-null value overrides default behavior | | [`OnPlayerSleepEnded`](#onplayersleepended) | Player | — | | [`OnPlayerSpawn`](#onplayerspawn) | Player | Returning true overrides default behavior | | [`OnPlayerSpectate`](#onplayerspectate) | Player | Returning a non-null value overrides default behavior | | [`OnPlayerSpectateEnd`](#onplayerspectateend) | Player | Returning a non-null value stops the spectate from ending | | [`OnPlayerTick`](#onplayertick) | Player | Returning a non-null value overrides default behavior | | [`OnPlayerViolation`](#onplayerviolation) | Player | Returning a non-null value overrides default behavior | | [`OnPlayerVoice`](#onplayervoice) | Player | Returning a non-null value overrides default behavior | | [`OnPlayerWound`](#onplayerwound) | Player | Returning a non-null value cancels the wounded state | | [`OnPluginLoaded`](#onpluginloaded) | Server | — | | [`OnPluginUnloaded`](#onpluginunloaded) | Server | — | | [`OnProjectileRicochet`](#onprojectilericochet) | Weapon | Returning a non-null value overrides default behavior | | [`OnQuarryEnabled`](#onquarryenabled) | Resource | — | | [`OnQuarryGather`](#onquarrygather) | Resource | — | | [`OnQuarryToggled`](#onquarrytoggled) | Resource | — | | [`OnRconCommand`](#onrconcommand) | Server | — | | [`OnRconConnection`](#onrconconnection) | Server | Returning a non-null value overrides default behavior | | [`OnReactiveTargetReset`](#onreactivetargetreset) | Entity | — | | [`OnRecyclerToggle`](#onrecyclertoggle) | Entity | Returning a non-null value overrides default behavior | | [`OnRefreshVendingStock`](#onrefreshvendingstock) | Vending | — | | [`OnRemoveDying`](#onremovedying) | Resource | Returning a non-null value overrides default behavior | | [`OnResearchCostDetermine`](#onresearchcostdetermine) | Item | Returning a numeric value (int) overrides the default value | | [`OnResourceDepositCreated`](#onresourcedepositcreated) | Entity | — | | [`OnRespawnInformationGiven`](#onrespawninformationgiven) | Player | — | | [`OnRfBroadcasterAdd`](#onrfbroadcasteradd) | Entity | Returning a non-null value overrides default behavior | | [`OnRfBroadcasterAdded`](#onrfbroadcasteradded) | Entity | — | | [`OnRfBroadcasterRemove`](#onrfbroadcasterremove) | Entity | Returning a non-null value overrides default behavior | | [`OnRfBroadcasterRemoved`](#onrfbroadcasterremoved) | Entity | — | | [`OnRfFrequencyChange`](#onrffrequencychange) | Entity | Returning a non-null value overrides default behavior | | [`OnRfFrequencyChanged`](#onrffrequencychanged) | Entity | — | | [`OnRfListenerAdd`](#onrflisteneradd) | Entity | Returning a non-null value overrides default behavior | | [`OnRfListenerAdded`](#onrflisteneradded) | Entity | — | | [`OnRfListenerRemove`](#onrflistenerremove) | Entity | Returning a non-null value overrides default behavior | | [`OnRfListenerRemoved`](#onrflistenerremoved) | Entity | — | | [`OnRidableAnimalClaim`](#onridableanimalclaim) | Entity | Returning a non-null value overrides default behavior | | [`OnRidableAnimalClaimed`](#onridableanimalclaimed) | Entity | — | | [`OnRocketLaunched`](#onrocketlaunched) | Weapon | — | | [`OnRotateVendingMachine`](#onrotatevendingmachine) | Vending | Returning a non-null value overrides default behavior | | [`OnRunPlayerMetabolism`](#onrunplayermetabolism) | Player | Returning a non-null value cancels the update | | [`OnSamSiteTarget`](#onsamsitetarget) | Entity | Returning a non-null value cancels default behavior | | [`OnSaveLoad`](#onsaveload) | Server | Returning a non-null value overrides default behavior | | [`OnSendCommand`](#onsendcommand) | Player | Returning a non-null value overwrites command arguments | | [`OnServerCommand`](#onservercommand) | Server | Returning a non-null value overrides default behavior | | [`OnServerInformationUpdated`](#onserverinformationupdated) | Server | — | | [`OnServerInitialized`](#onserverinitialized) | Server | — | | [`OnServerMessage`](#onservermessage) | Server | Return a non-null value to stop message from being sent | | [`OnServerRestartInterrupt`](#onserverrestartinterrupt) | Server | Returning a non-null value overrides default behavior | | [`OnServerSave`](#onserversave) | Server | — | | [`OnServerShutdown`](#onservershutdown) | Server | — | | [`OnShopAcceptClick`](#onshopacceptclick) | Entity | Returning a non-null value cancels default behavior | | [`OnShopCancelClick`](#onshopcancelclick) | Entity | Returning a non-null value cancels default behavior | | [`OnShopCompleteTrade`](#onshopcompletetrade) | Entity | Returning a non-null value cancels default behavior | | [`OnShopCompleteTrade`](#onshopcompletetrade-1) | Entity | Returning a non-null value overrides default behavior | | [`OnSignLocked`](#onsignlocked) | Sign | — | | [`OnSignUpdated`](#onsignupdated) | Sign | — | | [`OnSleepingBagDestroy`](#onsleepingbagdestroy) | Entity | Returning a non-null value overrides default behavior | | [`OnSleepingBagDestroyed`](#onsleepingbagdestroyed) | Entity | — | | [`OnSleepingBagValidCheck`](#onsleepingbagvalidcheck) | Entity | Returning true or false overrides default behavior | | [`OnSolarPanelSunUpdate`](#onsolarpanelsunupdate) | Entity | Returning a non-null value overrides default behavior | | [`OnSpinWheel`](#onspinwheel) | Sign | — | | [`OnStashExposed`](#onstashexposed) | Player | — | | [`OnStashHidden`](#onstashhidden) | Player | — | | [`OnStructureDemolish`](#onstructuredemolish) | Structure | Returning a non-null value overrides default behavior | | [`OnStructureRepair`](#onstructurerepair) | Structure | Returning a non-null value cancels repair | | [`OnStructureRotate`](#onstructurerotate) | Structure | Returning a non-null value cancels rotate | | [`OnStructureUpgrade`](#onstructureupgrade) | Structure | Returning a non-null value overrides default behavior | | [`OnSupplyDropDropped`](#onsupplydropdropped) | Entity | — | | [`OnSupplyDropLanded`](#onsupplydroplanded) | Entity | — | | [`OnSurveyGather`](#onsurveygather) | Resource | — | | [`OnSwitchToggle`](#onswitchtoggle) | Entity | Returning a non-null value cancels default behavior | | [`OnSwitchToggled`](#onswitchtoggled) | Entity | — | | [`OnTakeCurrencyItem`](#ontakecurrencyitem) | Vending | Returning a non-null value cancels default behavior | | [`OnTeamAcceptInvite`](#onteamacceptinvite) | Team | Returning a non-null value cancels default behavior | | [`OnTeamCreate`](#onteamcreate) | Team | Returning a non-null value cancels default behavior | | [`OnTeamCreated`](#onteamcreated) | Team | — | | [`OnTeamDisband`](#onteamdisband) | Team | Returning a non-null value cancels default behavior | | [`OnTeamDisbanded`](#onteamdisbanded) | Team | — | | [`OnTeamInvite`](#onteaminvite) | Team | Returning a non-null value cancels default behavior | | [`OnTeamKick`](#onteamkick) | Team | Returning a non-null value cancels default behavior | | [`OnTeamLeave`](#onteamleave) | Team | Returning a non-null value cancels default behavior | | [`OnTeamPromote`](#onteampromote) | Team | Returning a non-null value cancels default behavior | | [`OnTeamRejectInvite`](#onteamrejectinvite) | Team | Returning a non-null value cancels default behavior | | [`OnTeamUpdate`](#onteamupdate) | Team | Returning a non-null value cancels default behavior | | [`OnTeamUpdated`](#onteamupdated) | Team | Returning a non-null value cancels default behavior | | [`OnTechTreeNodeUnlock`](#ontechtreenodeunlock) | TechTree | Returning a non-null value overrides default behavior | | [`OnTechTreeNodeUnlocked`](#ontechtreenodeunlocked) | TechTree | — | | [`OnTerrainInitialized`](#onterraininitialized) | Terrain | — | | [`OnThreatLevelUpdate`](#onthreatlevelupdate) | Player | Returning a non-null value cancels default behavior | | [`OnTick`](#ontick) | Server | — | | [`OnToggleVendingBroadcast`](#ontogglevendingbroadcast) | Vending | — | | [`OnTrapArm`](#ontraparm) | Item | Returning a non-null value overrides default behavior | | [`OnTrapDisarm`](#ontrapdisarm) | Item | Returning a non-null value overrides default behavior | | [`OnTrapSnapped`](#ontrapsnapped) | Item | — | | [`OnTrapTrigger`](#ontraptrigger) | Item | Returning a non-null value overrides default behavior | | [`OnTreeMarkerHit`](#ontreemarkerhit) | Resource | Returning true or false overrides default behaviour | | [`OnTurretAssign`](#onturretassign) | Entity | Returning a non-null value cancels default behavior | | [`OnTurretAssigned`](#onturretassigned) | Entity | — | | [`OnTurretAuthorize`](#onturretauthorize) | Entity | Returning a non-null value overrides default behavior | | [`OnTurretClearList`](#onturretclearlist) | Entity | Returning a non-null value overrides default behavior | | [`OnTurretDeauthorize`](#onturretdeauthorize) | Entity | Returning a non-null value overrides default behavior | | [`OnTurretModeToggle`](#onturretmodetoggle) | Entity | — | | [`OnTurretRotate`](#onturretrotate) | Entity | Returning a non-null value overrides default behavior | | [`OnTurretShutdown`](#onturretshutdown) | Entity | Returning a non-null value overrides default behavior | | [`OnTurretStartup`](#onturretstartup) | Entity | Returning a non-null value overrides default behavior | | [`OnTurretTarget`](#onturrettarget) | Entity | Returning a non-null value overrides default behavior | | [`OnTurretToggle`](#onturrettoggle) | Entity | Returning a non-null value overrides default behavior | | [`OnUserApprove`](#onuserapprove) | Player | Returning a non-null value overrides default behavior, plugin shoul… | | [`OnUserApproved`](#onuserapproved) | Player | — | | [`OnUserBanned`](#onuserbanned) | Player | — | | [`OnUserChat`](#onuserchat) | Player | Returning true overrides default behavior of chat, not commands | | [`OnUserCommand`](#onusercommand) | Player | Returning a non-null value overrides default behavior | | [`OnUserConnected`](#onuserconnected) | Player | — | | [`OnUserDisconnected`](#onuserdisconnected) | Player | — | | [`OnUserGroupAdded`](#onusergroupadded) | Player | — | | [`OnUserGroupRemoved`](#onusergroupremoved) | Player | — | | [`OnUserKicked`](#onuserkicked) | Player | — | | [`OnUserNameUpdated`](#onusernameupdated) | Player | — | | [`OnUserPermissionGranted`](#onuserpermissiongranted) | Player | — | | [`OnUserPermissionRevoked`](#onuserpermissionrevoked) | Player | — | | [`OnUserRespawn`](#onuserrespawn) | Player | — | | [`OnUserRespawned`](#onuserrespawned) | Player | — | | [`OnUserUnbanned`](#onuserunbanned) | Player | — | | [`OnVehicleModuleDeselected`](#onvehiclemoduledeselected) | Vehicle | — | | [`OnVehicleModuleMove`](#onvehiclemodulemove) | Vehicle | Returning a non-null value overrides default behavior | | [`OnVehicleModulesAssign`](#onvehiclemodulesassign) | Vehicle | Returning a non-null value overrides default behavior | | [`OnVehicleModulesAssigned`](#onvehiclemodulesassigned) | Vehicle | — | | [`OnVehicleModuleSelect`](#onvehiclemoduleselect) | Vehicle | Returning a non-null value overrides default behavior | | [`OnVehicleModuleSelected`](#onvehiclemoduleselected) | Vehicle | — | | [`OnVehiclePush`](#onvehiclepush) | Vehicle | Returning a non-null value overrides default behavior | | [`OnVendingShopOpened`](#onvendingshopopened) | Vending | — | | [`OnVendingShopRename`](#onvendingshoprename) | Vending | Returning a non-null value cancels default behavior | | [`OnVendingTransaction`](#onvendingtransaction) | Vending | Returning true or false overrides default behavior | | [`OnWaterCollect`](#onwatercollect) | Entity | Returning a non-null value cancels default behavior | | [`OnWaterPurified`](#onwaterpurified) | Entity | — | | [`OnWaterPurify`](#onwaterpurify) | Entity | Returning a non-null value cancels default behavior | | [`OnWeaponFired`](#onweaponfired) | Weapon | — | | [`OnWeaponReload`](#onweaponreload) | Weapon | Returning a non-null value overrides default behavior | | [`OnWireClear`](#onwireclear) | Entity | Returning a non-null value cancels default behavior | | [`OnWireConnect`](#onwireconnect) | Entity | Returning a non-null value cancels default behavior | | [`OnWorldPrefabSpawned`](#onworldprefabspawned) | World | — | | [`OnWorldProjectileCreate`](#onworldprojectilecreate) | Weapon | Returning a non-null value overrides default behavior | | [`Unload`](#unload) | Plugin | — | --- ## Server Hooks *Process lifecycle, the tick/frame loop, save and restart, RCON and console commands.* 17 hooks: [`Init`](#init), [`OnMessagePlayer`](#onmessageplayer), [`OnServerCommand`](#onservercommand), [`OnServerRestartInterrupt`](#onserverrestartinterrupt), [`OnServerShutdown`](#onservershutdown), [`OnFrame`](#onframe), [`OnServerInformationUpdated`](#onserverinformationupdated), [`OnRconCommand`](#onrconcommand), [`OnPluginLoaded`](#onpluginloaded), [`OnRconConnection`](#onrconconnection), [`OnNewSave`](#onnewsave), [`OnPluginUnloaded`](#onpluginunloaded), [`OnSaveLoad`](#onsaveload), [`OnServerInitialized`](#onserverinitialized), [`OnServerMessage`](#onservermessage), [`OnServerSave`](#onserversave), [`OnTick`](#ontick) ### `Init` - Called when a plugin is being initialized - Other plugins may or may not be present, dependant on load order **Returns:** No return behavior ```csharp void Init() { Puts("Init works!"); } ``` uMod last updated 2018-08-20 ### `OnMessagePlayer` - Useful for intercepting server messages before they get to their intended target **Returns:** Returning a non-null value overrides default behavior ```csharp object OnMessagePlayer(string message, BasePlayer player) { Puts("OnMessagePlayer works!"); return null; } ``` Tags: `message`, `server` · uMod last updated 2021-05-08 ### `OnServerCommand` - Useful for intercepting commands before they get to their intended target **Returns:** Returning a non-null value overrides default behavior ```csharp object OnServerCommand(ConsoleSystem.Arg arg) { Puts("OnServerCommand works!"); return null; } ``` Tags: `server` · uMod last updated 2021-05-08 ### `OnServerRestartInterrupt` - Called when a server restart is being cancelled **Returns:** Returning a non-null value overrides default behavior ```csharp object OnServerRestartInterrupt() { Puts("OnServerRestartInterrupt works!"); return null; } ``` Tags: `server` · uMod last updated 2023-04-11 ### `OnServerShutdown` - Useful for saving something / etc on server shutdown **Returns:** No return behavior ```csharp void OnServerShutdown() { Puts("OnServerShutdown works!"); } ``` Tags: `server` · uMod last updated 2021-05-08 ### `OnFrame` - Called each frame **Returns:** No return behavior ```csharp void OnFrame() { Puts("OnFrame works!"); } ``` Tags: `frame`, `server` · uMod last updated 2021-05-08 ### `OnServerInformationUpdated` - Called after all steam information for the server has has been updated **Returns:** No return behavior ```csharp void OnServerInformationUpdated() { Puts("OnServerInformationUpdated works!"); } ``` Tags: `server`, `steam` · uMod last updated 2023-04-11 ### `OnRconCommand` - Called when an RCON command is run **Returns:** No return behavior ```csharp void OnRconCommand(IPAddress ip, string command, string[] args) { Puts("OnRconCommand works!"); } ``` Tags: `rcon`, `server` · uMod last updated 2021-05-08 ### `OnPluginLoaded` - Called when any plugin has been loaded - Not to be confused with [`Loaded`](#loaded) **Returns:** No return behavior ```csharp void OnPluginLoaded(Plugin plugin) { Puts($"Plugin '{plugin.Name}' has been loaded"); } ``` Tags: `plugin`, `server` · uMod last updated 2023-12-25 ### `OnRconConnection` - Called when a new RCON connection is opened **Returns:** Returning a non-null value overrides default behavior ```csharp object OnRconConnection(IPAddress ip) { Puts("OnRconConnection works!"); return null; } ``` Tags: `rcon`, `server` · uMod last updated 2021-05-08 ### `OnNewSave` - Called when a new savefile is created (usually when map has wiped) **Returns:** No return behavior ```csharp void OnNewSave(string filename) { Puts("OnNewSave works!"); } ``` Tags: `server` · uMod last updated 2021-05-08 ### `OnPluginUnloaded` - Called when any plugin has been unloaded - Not to be confused with [`Unload`](#unload) **Returns:** No return behavior ```csharp void OnPluginUnloaded(Plugin plugin) { Puts($"Plugin '{plugin.Name}' has been unloaded"); } ``` Tags: `plugin`, `server` · uMod last updated 2023-12-25 ### `OnSaveLoad` - Called when a save file is loaded **Returns:** Returning a non-null value overrides default behavior ```csharp object OnSaveLoad(Dictionary entities) { Puts("OnSaveLoad works!"); return null; } ``` Tags: `save`, `server` · uMod last updated 2021-05-08 ### `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 **Returns:** No return behavior ```csharp void OnServerInitialized(bool initial) { Puts("OnServerInitialized works!"); } ``` Tags: `server` · uMod last updated 2021-05-08 ### `OnServerMessage` - Called before a SERVER message is sent to a player **Returns:** Return a non-null value to stop message from being sent ```csharp // 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; } ``` ```csharp // 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}"); } ``` Tags: `server` · uMod last updated 2022-01-28 ### `OnServerSave` - Called before the server saves **Returns:** No return behavior ```csharp void OnServerSave() { Puts("OnServerSave works!"); } ``` Tags: `server` · uMod last updated 2021-05-08 ### `OnTick` - Called every tick (defined by the tick rate of the server) - For better performance, avoid using heavy calculations in this hook. **Returns:** No return behavior ```csharp void OnTick() { Puts("OnTick works!"); } ``` Tags: `tick`, `server` · uMod last updated 2021-05-08 --- ## Player Hooks *Everything a connected human does: connect, chat, command, craft, loot, build, die, respawn. The largest surface alongside Entity.* 138 hooks: [`CanAffordToPlace`](#canaffordtoplace), [`CanAffordUpgrade`](#canaffordupgrade), [`CanAssignBed`](#canassignbed), [`CanDeployItem`](#candeployitem), [`CanLock`](#canlock), [`CanPushBoat`](#canpushboat), [`CanSpectateTarget`](#canspectatetarget), [`CanUpdateSign`](#canupdatesign), [`CanUseWires`](#canusewires), [`OnActiveItemChange`](#onactiveitemchange), [`OnActiveItemChanged`](#onactiveitemchanged), [`OnBroadcastCommand`](#onbroadcastcommand), [`OnMapMarkerAdd`](#onmapmarkeradd), [`OnMapMarkerAdded`](#onmapmarkeradded), [`OnMapMarkerRemove`](#onmapmarkerremove), [`OnMapMarkersClear`](#onmapmarkersclear), [`OnMapMarkersCleared`](#onmapmarkerscleared), [`OnMeleeAttack`](#onmeleeattack), [`OnPayForPlacement`](#onpayforplacement), [`OnPayForUpgrade`](#onpayforupgrade), [`OnPlayerAssist`](#onplayerassist), [`OnPlayerCommand`](#onplayercommand), [`OnPlayerCorpse`](#onplayercorpse), [`OnPlayerCorpseSpawn`](#onplayercorpsespawn), [`OnPlayerCorpseSpawned`](#onplayercorpsespawned), [`OnPlayerKeepAlive`](#onplayerkeepalive), [`OnPlayerRecovered`](#onplayerrecovered), [`OnPlayerReported`](#onplayerreported), [`OnPlayerRevive`](#onplayerrevive), [`OnPlayerSetInfo`](#onplayersetinfo), [`OnSendCommand`](#onsendcommand), [`OnUserChat`](#onuserchat), [`OnUserCommand`](#onusercommand), [`OnUserRespawn`](#onuserrespawn), [`OnUserRespawned`](#onuserrespawned), [`OnUserConnected`](#onuserconnected), [`OnUserDisconnected`](#onuserdisconnected), [`CanBeTargeted`](#canbetargeted), [`CanBeWounded`](#canbewounded), [`CanBuild`](#canbuild), [`CanBypassQueue`](#canbypassqueue), [`CanChangeCode`](#canchangecode), [`CanChangeGrade`](#canchangegrade), [`CanCraft`](#cancraft), [`CanClientLogin`](#canclientlogin), [`CanDemolish`](#candemolish), [`CanHackCrate`](#canhackcrate), [`CanUserLogin`](#canuserlogin), [`OnUserApproved`](#onuserapproved), [`CanDismountEntity`](#candismountentity), [`OnUserNameUpdated`](#onusernameupdated), [`CanEquipItem`](#canequipitem), [`OnUserGroupAdded`](#onusergroupadded), [`OnUserGroupRemoved`](#onusergroupremoved), [`OnExperimentStart`](#onexperimentstart), [`OnExperimentStarted`](#onexperimentstarted), [`OnUserPermissionGranted`](#onuserpermissiongranted), [`OnUserPermissionRevoked`](#onuserpermissionrevoked), [`OnExperimentEnd`](#onexperimentend), [`OnExperimentEnded`](#onexperimentended), [`OnUserKicked`](#onuserkicked), [`CanHideStash`](#canhidestash), [`OnUserBanned`](#onuserbanned), [`CanLootEntity`](#canlootentity), [`CanLootPlayer`](#canlootplayer), [`CanMountEntity`](#canmountentity), [`OnUserUnbanned`](#onuserunbanned), [`CanPickupEntity`](#canpickupentity), [`CanPickupLock`](#canpickuplock), [`CanRenameBed`](#canrenamebed), [`CanResearchItem`](#canresearchitem), [`CanUseLockedEntity`](#canuselockedentity), [`CanSeeStash`](#canseestash), [`OnStashExposed`](#onstashexposed), [`OnStashHidden`](#onstashhidden), [`CanSetBedPublic`](#cansetbedpublic), [`CanUnlock`](#canunlock), [`CanUseMailbox`](#canusemailbox), [`CanUseUI`](#canuseui), [`CanWearItem`](#canwearitem), [`OnClientAuth`](#onclientauth), [`OnDestroyUI`](#ondestroyui), [`OnFindSpawnPoint`](#onfindspawnpoint), [`OnLootEntity`](#onlootentity), [`OnLootEntityEnd`](#onlootentityend), [`OnLootItem`](#onlootitem), [`OnLootPlayer`](#onlootplayer), [`OnPlayerAttack`](#onplayerattack), [`OnPlayerBanned`](#onplayerbanned), [`OnPlayerChat`](#onplayerchat), [`OnPlayerConnected`](#onplayerconnected), [`OnPlayerDeath`](#onplayerdeath), [`OnPlayerDisconnected`](#onplayerdisconnected), [`OnPlayerDropActiveItem`](#onplayerdropactiveitem), [`OnPlayerHealthChange`](#onplayerhealthchange), [`OnPlayerInput`](#onplayerinput), [`OnPlayerKicked`](#onplayerkicked), [`OnPlayerLand`](#onplayerland), [`OnPlayerLanded`](#onplayerlanded), [`OnPlayerLootEnd`](#onplayerlootend), [`OnPlayerMetabolize`](#onplayermetabolize), [`OnPlayerRecover`](#onplayerrecover), [`OnPlayerRespawn`](#onplayerrespawn), [`OnPlayerRespawned`](#onplayerrespawned), [`OnRespawnInformationGiven`](#onrespawninformationgiven), [`OnPlayerSleep`](#onplayersleep), [`OnPlayerSleepEnded`](#onplayersleepended), [`OnPlayerSpawn`](#onplayerspawn), [`OnPlayerSpectate`](#onplayerspectate), [`OnPlayerSpectateEnd`](#onplayerspectateend), [`OnPlayerTick`](#onplayertick), [`OnPlayerViolation`](#onplayerviolation), [`OnPlayerVoice`](#onplayervoice), [`OnPlayerWound`](#onplayerwound), [`OnRunPlayerMetabolism`](#onrunplayermetabolism), [`OnUserApprove`](#onuserapprove), [`OnDefaultItemsReceive`](#ondefaultitemsreceive), [`OnDefaultItemsReceived`](#ondefaultitemsreceived), [`OnAnalysisComplete`](#onanalysiscomplete), [`OnNpcConversationStart`](#onnpcconversationstart), [`OnNpcConversationRespond`](#onnpcconversationrespond), [`OnNpcConversationEnded`](#onnpcconversationended), [`OnNpcConversationResponded`](#onnpcconversationresponded), [`OnNetworkGroupEntered`](#onnetworkgroupentered), [`OnNetworkGroupLeft`](#onnetworkgroupleft), [`OnDemoRecordingStart`](#ondemorecordingstart), [`OnDemoRecordingStarted`](#ondemorecordingstarted), [`OnDemoRecordingStop`](#ondemorecordingstop), [`OnDemoRecordingStopped`](#ondemorecordingstopped), [`OnLootNetworkUpdate`](#onlootnetworkupdate), [`OnInventoryNetworkUpdate`](#oninventorynetworkupdate), [`OnPlayerAddModifiers`](#onplayeraddmodifiers), [`OnThreatLevelUpdate`](#onthreatlevelupdate), [`CanUseGesture`](#canusegesture), [`OnCentralizedBanCheck`](#oncentralizedbancheck), [`OnClientCommand`](#onclientcommand), [`OnCorpsePopulate`](#oncorpsepopulate), [`CanSetRelationship`](#cansetrelationship) ### `CanAffordToPlace` - Useful for ignoring resource requirements for placement **Returns:** Returning true or false overrides default behavior ```csharp bool CanAffordToPlace(BasePlayer player, Planner planner, Construction construction) { Puts("CanAffordToPlace works!"); return false; } ``` Tags: `afford`, `player` · uMod last updated 2022-01-17 ### `CanAffordUpgrade` - Called when the resources for an upgrade are checked **Returns:** Returning true or false overrides default behavior ```csharp bool CanAffordUpgrade(BasePlayer player, BuildingBlock block, BuildingGrade.Enum grade) { Puts("CanAffordUpgrade works!"); return true; } ``` Tags: `player` · uMod last updated 2022-01-19 ### `CanAssignBed` - Called when a player attempts to assign a bed or sleeping bag to another player **Returns:** Returning a non-null value overrides default behavior ```csharp object CanAssignBed(BasePlayer player, SleepingBag bag, ulong targetPlayerId) { Puts("CanAssignBed works!"); return null; } ``` Tags: `assign`, `player` · uMod last updated 2021-05-08 ### `CanDeployItem` - Useful for denying items' deployment **Returns:** Returning a non-null value cancels default behavior ```csharp object CanDeployItem(BasePlayer player, Deployer deployer, NetworkableId entityId) { Puts("CanDeployItem works!"); return null; } ``` Tags: `deploy`, `player` · uMod last updated 2023-05-04 ### `CanLock` - Useful for canceling the lock action **Returns:** Returning a non-null value cancels default behavior ```csharp object CanLock(BasePlayer player, BaseLock baseLock) { Puts("CanLock works!"); return null; } ``` Tags: `lock`, `player` · uMod last updated 2021-08-14 ### `CanPushBoat` - Useful for canceling boat push **Returns:** Returning a non-null value cancels default behavior ```csharp object CanPushBoat(BasePlayer player, MotorRowboat boat) { Puts("CanPushBoat works!"); return null; } ``` Tags: `push`, `player` · uMod last updated 2021-05-08 ### `CanSpectateTarget` - Called when spectate target is attempting to update **Returns:** Returning a non-null value cancels default behavior ```csharp object CanSpectateTarget(BasePlayer player, string filter) { Puts($"{player.displayName} tries to spectate with a filter: {filter}"); return null; } ``` Tags: `spectate`, `player` · uMod last updated 2021-05-08 ### `CanUpdateSign` - Called when the player attempts to change the text on a sign or lock it, or update a photo frame **Returns:** Returning true or false overrides default behavior ```csharp bool CanUpdateSign(BasePlayer player, Signage sign) { Puts("CanUpdateSign works!"); return true; } ``` ```csharp bool CanUpdateSign(BasePlayer player, PhotoFrame photoFrame) { Puts("CanUpdateSign works!"); return true; } ``` Tags: `update`, `player` · uMod last updated 2021-05-08 ### `CanUseWires` - Useful for allowing or preventing a player from using wires **Returns:** Returning a non-null value overrides default behavior ```csharp object CanUseWires(BasePlayer player) { Puts($"{player.displayName} has just tried to use wires"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnActiveItemChange` - Called when active item is attempting to update **Returns:** Returning a non-null value cancels default behavior ```csharp object OnActiveItemChange(BasePlayer player, Item oldItem, ItemId newItemId) { Puts("OnActiveItemChange works!"); return null; } ``` Tags: `active`, `player` · uMod last updated 2023-05-04 ### `OnActiveItemChanged` - Called when active item was changed **Returns:** No return behavior ```csharp void OnActiveItemChanged(BasePlayer player, Item oldItem, Item newItem) { Puts("OnActiveItemChanged works!"); } ``` Tags: `active`, `player` · uMod last updated 2021-05-08 ### `OnBroadcastCommand` - Called before a command is broadcasted to all connected clients **Returns:** Returning a non-null value overwrites command arguments ```csharp object OnBroadcastCommand(string command, object[] args) { Puts("OnBroadcastCommand works!"); return null; } ``` Tags: `broadcast`, `player` · uMod last updated 2021-05-08 ### `OnMapMarkerAdd` - Called when trying to add a marker **Returns:** Returning a non-null value cancels default behavior ```csharp object OnMapMarkerAdd(BasePlayer player, MapNote note) { Puts("OnMapMarkerAdd works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnMapMarkerAdded` - Called after a marker was added **Returns:** No return behavior ```csharp void OnMapMarkerAdded(BasePlayer player, MapNote note) { Puts("OnMapMarkerAdded works!"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnMapMarkerRemove` - Called when trying to remove a marker **Returns:** Returning a non-null value cancels default behaviour ```csharp object OnMapMarkerRemove(BasePlayer player, MapNote note) { Puts("OnMapMarkerRemove works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnMapMarkersClear` - Called when trying to clear map markers **Returns:** Returning a non-null value cancels default behavior ```csharp object OnMapMarkersClear(BasePlayer player, List notes) { Puts("OnMapMarkersClear works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnMapMarkersCleared` - Called after markers were cleared **Returns:** No return behavior ```csharp void OnMapMarkersCleared(BasePlayer player, List notes) { Puts("OnMapMarkersCleared works!"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnMeleeAttack` - Useful for canceling melee attacks **Returns:** Returning a non-null value cancels default behavior ```csharp object OnMeleeAttack(BasePlayer player, HitInfo info) { Puts("OnMeleeAttack works!"); return null; } ``` Tags: `melee`, `player` · uMod last updated 2021-05-08 ### `OnPayForPlacement` - Called when a player is paying for placement. Useful for preventing paying for placing deployables, building blocks and etc **Returns:** Returning a non-null value cancels default behavior ```csharp object OnPayForPlacement(BasePlayer player, Planner planner, Construction construction) { Puts("OnPayForPlacement works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPayForUpgrade` - Called when player is paying for an upgrade. Useful for preventing paying for block upgrade **Returns:** Returning a non-null value cancels default behavior ```csharp object OnPayForUpgrade(BasePlayer player, BuildingBlock block, ConstructionGrade gradeTarget) { Puts("OnPayForUpgrade works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerAssist` - Called when a player tries to assist target player (when target is wounded) **Returns:** Returning a non-null value cancels default behavior ```csharp object OnPlayerAssist(BasePlayer target, BasePlayer player) { Puts("OnPlayerAssist works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerCommand` - Useful for intercepting players' commands before their handling **Returns:** Returning a non-null value overrides default behavior ```csharp object OnPlayerCommand(BasePlayer player, string command, string[] args) { Puts("OnPlayerCommand works!"); return null; } ``` Tags: `player` · uMod last updated 2021-08-05 ### `OnPlayerCorpse` - Called when a non-null corpse has just been spawned **Returns:** No return behavior ```csharp void OnPlayerCorpse(BasePlayer player, BaseCorpse corpse) { Puts($"A corpse for {player.displayName} has just been spawned!"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerCorpseSpawn` - Called when a non-null corpse is about to spawn **Returns:** Returning a non-null value overrides default behavior ```csharp object OnPlayerCorpseSpawn(BasePlayer player) { Puts("OnPlayerCorpseSpawn works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerCorpseSpawned` - Called when a non-null corpse has just been spawned **Returns:** No return behavior ```csharp void OnPlayerCorpseSpawned(BasePlayer player, PlayerCorpse corpse) { Puts("OnPlayerCorpseSpawned works!"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `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) **Returns:** Returning a non-null value cancels default behavior ```csharp object OnPlayerKeepAlive(BasePlayer player, BasePlayer target) { Puts("OnPlayerKeepAlive works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerRecovered` - Called when the player was recovered **Returns:** No return behavior ```csharp void OnPlayerRecovered(BasePlayer player) { Puts("OnPlayerRecovered works!"); } ``` Tags: `player` · uMod last updated 2022-01-24 ### `OnPlayerReported` - Called when a player has reported someone via F7 **Returns:** No return behavior ```csharp void OnPlayerReported(BasePlayer reporter, string targetName, string targetId, string subject, string message, string type) { Puts($"{reporter.displayName} reported {targetName} for {subject}."); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerRevive` - Called before the recover after reviving with a medical tool - Useful for canceling the reviving **Returns:** Returning a non-null value cancels default behavior ```csharp object OnPlayerRevive(BasePlayer reviver, BasePlayer player) { Puts($"{reviver.displayName} revived {player.displayName}"); return null; } ``` Tags: `player` · uMod last updated 2022-01-24 ### `OnPlayerSetInfo` - Called when setting player's information *(aka console variables)* **Returns:** No return behavior ```csharp void OnPlayerSetInfo(Connection connection, string key, string value) { Puts($"{connection.userid}: {key} was set to {value}"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `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. **Returns:** Returning a non-null value overwrites command arguments ```csharp object OnSendCommand(List connections, string command, object[] args) { Puts("OnSendCommand works!"); return null; } object OnSendCommand(Connection connection, string command, object[] args) { Puts("OnSendCommand works!"); return null; } ``` Tags: `send`, `player` · uMod last updated 2021-05-08 ### `OnUserChat` - Called when a player sends a chat message to the server **Returns:** Returning true overrides default behavior of chat, not commands ```csharp object OnUserChat(IPlayer player, string message) { Puts($"{player.Name} said: {message}"); return null; } ``` Tags: `user`, `player` · uMod last updated 2021-05-08 ### `OnUserCommand` - Useful for intercepting players' commands before their handling **Returns:** Returning a non-null value overrides default behavior ```csharp object OnUserCommand(IPlayer player, string command, string[] args) { Puts("OnUserCommand works!"); return null; } ``` Tags: `user`, `player` · uMod last updated 2021-08-05 ### `OnUserRespawn` - Called when a player is respawning **Returns:** No return behavior ```csharp void OnUserRespawn(IPlayer player) { Puts("OnUserRespawn works!"); } ``` Tags: `user`, `player` · uMod last updated 2022-01-25 ### `OnUserRespawned` - Called after a player has respawned **Returns:** No return behavior ```csharp void OnUserRespawned(IPlayer player) { Puts("OnUserRespawned works!"); } ``` Tags: `user`, `player` · uMod last updated 2022-01-25 ### `OnUserConnected` - Called after a player has been approved and has connected to the server **Returns:** No return behavior ```csharp 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}!"); } ``` Tags: `user`, `player` · uMod last updated 2021-05-08 ### `OnUserDisconnected` - Called after a player has disconnected from the server **Returns:** No return behavior ```csharp void OnUserDisconnected(IPlayer player) { Puts($"{player.Name} ({player.Id}) disconnected"); } ``` Tags: `user`, `player` · uMod last updated 2021-05-08 ### `CanBeTargeted` - Called when an autoturret, flame turret, shotgun trap, or helicopter turret is attempting to target the player **Returns:** Returning true or false overrides default behavior ```csharp bool CanBeTargeted(BaseCombatEntity player, MonoBehaviour behaviour) { Puts("CanBeTargeted works!"); return true; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `CanBeWounded` - Called when any damage is attempted on player **Returns:** Returning true or false overrides default behavior ```csharp bool CanBeWounded(BasePlayer player, HitInfo info) { Puts("CanBeWounded works!"); return true; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `CanBuild` - Called when the player tries to build something **Returns:** Returning a non-null value overrides default behavior ```csharp object CanBuild(Planner planner, Construction prefab, Construction.Target target) { Puts("CanBuild works!"); return null; } ``` Tags: `build`, `player` · uMod last updated 2021-05-08 ### `CanBypassQueue` - Called before the player is added to the connection queue **Returns:** Returning true will bypass the queue, returning nothing will by default queue the player ```csharp bool CanBypassQueue(Network.Connection connection) { Puts("CanBypassQueue works!"); return true; } ``` Tags: `bypass`, `player` · uMod last updated 2021-05-08 ### `CanChangeCode` - Called when a player tries to change the code on a codelock **Returns:** Returning a non-null value overrides default behavior ```csharp object CanChangeCode(BasePlayer player, CodeLock codeLock, string newCode, bool isGuestCode) { Puts("CanChangeCode works!"); return null; } ``` Tags: `change`, `player` · uMod last updated 2021-05-08 ### `CanChangeGrade` - Called when a player tries to change a building grade **Returns:** Returning true or false overrides default behavior ```csharp bool CanChangeGrade(BasePlayer player, BuildingBlock block, BuildingGrade.Enum grade) { Puts("CanChangeGrade works!"); return true; } ``` Tags: `change`, `player` · uMod last updated 2021-05-08 ### `CanCraft` - Called when the player attempts to craft an item **Returns:** Returning true or false overrides default behavior ```csharp bool CanCraft(ItemCrafter itemCrafter, ItemBlueprint bp, int amount) { Puts("CanCraft works!"); return true; } ``` ```csharp bool CanCraft(PlayerBlueprints playerBlueprints, ItemDefinition itemDefinition, int skinItemId) { Puts("CanCraft works!"); return true; } ``` Tags: `craft`, `player` · uMod last updated 2021-05-08 ### `CanClientLogin` - Called when the player is attempting to login **Returns:** Returning a string will use the string as the error message **Returns:** Returning true allows the connection, returning nothing will by default allow the connection, returning anything else will reject it with an error message ```csharp object CanClientLogin(Network.Connection connection) { Puts("CanClientLogin works!"); return true; } ``` Tags: `client`, `player` · uMod last updated 2022-09-28 ### `CanDemolish` - Called when a player tries to demolish a building block **Returns:** Returning true or false overrides default behavior ```csharp bool CanDemolish(BasePlayer player, BuildingBlock block, BuildingGrade.Enum grade) { Puts("CanDemolish works!"); return true; } ``` Tags: `demolish`, `player` · uMod last updated 2021-05-08 ### `CanHackCrate` - Called when a player starts hacking a locked crate **Returns:** Returning a non-null value overrides default behavior ```csharp object CanHackCrate(BasePlayer player, HackableLockedCrate crate) { Puts("CanHackCrate works!"); return null; } ``` Tags: `hack`, `player` · uMod last updated 2021-05-08 ### `CanUserLogin` - Called when a player is attempting to connect to the server **Returns:** Returning a string will kick the user with this reason. Returning a non-null value overrides default behavior ```csharp 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; } ``` Tags: `user`, `player` · uMod last updated 2021-05-08 ### `OnUserApproved` - Called after a player is approved to connect to the server **Returns:** No return behavior ```csharp void OnUserApproved(string name, string id, string ipAddress) { Puts($"{name} ({id}) at {ipAddress} has been approved to connect"); } ``` Tags: `user`, `player` · uMod last updated 2021-05-08 ### `CanDismountEntity` - Called when the player attempts to dismount an entity **Returns:** Returning a non-null value overrides default behavior ```csharp object CanDismountEntity(BasePlayer player, BaseMountable entity) { Puts("CanDismountEntity works!"); return null; } ``` Tags: `dismount`, `player` · uMod last updated 2021-05-08 ### `OnUserNameUpdated` - Called when a player's stored nickname has been changed **Returns:** No return behavior ```csharp void OnUserNameUpdated(string id, string oldName, string newName) { Puts($"Player name changed from {oldName} to {newName} for ID {id}"); } ``` Tags: `user`, `player` · uMod last updated 2021-05-08 ### `CanEquipItem` - Called when the player attempts to equip an item **Returns:** Returning true or false overrides default behavior ```csharp bool CanEquipItem(PlayerInventory inventory, Item item, int targetPos) { Puts("CanEquipItem works!"); return true; } ``` Tags: `equip`, `player` · uMod last updated 2021-05-08 ### `OnUserGroupAdded` - Called when a player has been added to a group **Returns:** No return behavior ```csharp void OnUserGroupAdded(string id, string groupName) { Puts($"Player '{id}' added to group: {groupName}"); } ``` Tags: `user`, `player` · uMod last updated 2021-05-08 ### `OnUserGroupRemoved` - Called when a player has been removed from a group **Returns:** No return behavior ```csharp void OnUserGroupRemoved(string id, string groupName) { Puts($"Player '{id}' removed from group: {groupName}"); } ``` Tags: `user`, `player` · uMod last updated 2021-05-08 ### `OnExperimentStart` - Called when the player attempts to experiment with at a workbench **Returns:** Returning a non-null value overrides default behavior ```csharp object OnExperimentStart(Workbench workbench, BasePlayer player) { Puts("OnExperimentStart works!"); return null; } ``` Tags: `experiment`, `player` · uMod last updated 2021-05-08 ### `OnExperimentStarted` - Called after the experimentation has started **Returns:** No return behaviour ```csharp void OnExperimentStarted(Workbench workbench, BasePlayer player) { Puts("OnExperimentStarted works!"); } ``` Tags: `experiment`, `player` · uMod last updated 2021-05-08 ### `OnUserPermissionGranted` - Called when a permission has been granted to a player **Returns:** No return behavior ```csharp void OnUserPermissionGranted(string id, string permName) { Puts($"Player '{id}' granted permission: {permName}"); } ``` Tags: `user`, `player` · uMod last updated 2021-05-08 ### `OnUserPermissionRevoked` - Called when a permission has been revoked from a player **Returns:** No return behavior ```csharp void OnUserPermissionRevoked(string id, string permName) { Puts($"Player '{id}' revoked permission: {permName}"); } ``` Tags: `user`, `player` · uMod last updated 2021-05-08 ### `OnExperimentEnd` - Called when an experiment is about to end **Returns:** Returning a non-null value overrides defualt behaviour. ```csharp object OnExperimentEnd(Workbench workbench) { Puts("OnExperimentEnd works!"); return null; } ``` Tags: `experiment`, `player` · uMod last updated 2021-05-08 ### `OnExperimentEnded` - Called after the experiment has finished **Returns:** No return behaviour ```csharp void OnExperimentEnded(Workbench workbench) { Puts("OnExperimentEnded works!"); } ``` Tags: `experiment`, `player` · uMod last updated 2021-05-08 ### `OnUserKicked` - Called when a player has been kicked from the server **Returns:** No return behavior ```csharp void OnUserKicked(IPlayer player, string reason) { Puts($"Player {player.Name} ({player.Id}) was kicked"); } ``` Tags: `user`, `player` · uMod last updated 2021-05-08 ### `CanHideStash` - Called when a player tries to hide a stash **Returns:** Returning a non-null value overrides default behavior ```csharp object CanHideStash(BasePlayer player, StashContainer stash) { Puts("CanHideStash works!"); return null; } ``` Tags: `hide`, `player` · uMod last updated 2021-05-08 ### `OnUserBanned` - Called when a player has been banned from the server - Will have reason available if provided **Returns:** No return behavior ```csharp void OnUserBanned(string name, string id, string ipAddress, string reason) { Puts($"Player {name} ({id}) at {ipAddress} was banned: {reason}"); } ``` Tags: `user`, `player` · uMod last updated 2021-05-08 ### `CanLootEntity` - Called when the player starts looting a DroppedItemContainer, LootableCorpse, ResourceContainer, BaseRidableAnimal, or StorageContainer entity **Returns:** Returning a non-null value overrides default behavior ```csharp object CanLootEntity(BasePlayer player, DroppedItemContainer container) { Puts("CanLootEntity works!"); return null; } ``` ```csharp object CanLootEntity(BasePlayer player, LootableCorpse corpse) { Puts("CanLootEntity works!"); return null; } ``` ```csharp object CanLootEntity(BasePlayer player, ResourceContainer container) { Puts("CanLootEntity works!"); return null; } ``` ```csharp object CanLootEntity(BasePlayer player, BaseRidableAnimal animal) { Puts("CanLootEntity works!"); return null; } ``` ```csharp object CanLootEntity(BasePlayer player, StorageContainer container) { Puts("CanLootEntity works!"); return null; } ``` Tags: `loot`, `player` · uMod last updated 2021-05-08 ### `CanLootPlayer` - Called when the player attempts to loot another player **Returns:** Returning true or false overrides default behavior ```csharp bool CanLootPlayer(BasePlayer target, BasePlayer looter) { Puts("CanLootPlayer works!"); return true; } ``` Tags: `loot`, `player` · uMod last updated 2021-05-08 ### `CanMountEntity` - Called when the player attempts to mount an entity **Returns:** Returning a non-null value overrides default behavior ```csharp object CanMountEntity(BasePlayer player, BaseMountable entity) { Puts("CanMountEntity works!"); return null; } ``` Tags: `mount`, `player` · uMod last updated 2021-05-08 ### `OnUserUnbanned` - Called when a player has been unbanned from the server **Returns:** No return behavior ```csharp void OnUserUnbanned(string name, string id, string ipAddress) { Puts($"Player {name} ({id}) at {ipAddress} was unbanned"); } ``` Tags: `user`, `player` · uMod last updated 2021-05-08 ### `CanPickupEntity` - Called when a player attempts to pickup a deployed entity (AutoTurret, BaseMountable, BearTrap, DecorDeployable, Door, DoorCloser, ReactiveTarget, SamSite, SleepingBag, SpinnerWheel, StorageContainer, etc.) **Returns:** Returning true or false overrides default behavior ```csharp bool CanPickupEntity(BasePlayer player, BaseEntity entity) { Puts("CanPickupEntity works!"); return true; } ``` Tags: `pickup`, `player` · uMod last updated 2021-05-08 ### `CanPickupLock` - Called when a player attempts to pickup a lock **Returns:** Returning true or false overrides default behavior ```csharp bool CanPickupLock(BasePlayer player, BaseLock baseLock) { Puts("CanPickupLock works!"); return true; } ``` Tags: `pickup`, `player` · uMod last updated 2021-05-08 ### `CanRenameBed` - Called when the player attempts to rename a bed or sleeping bag **Returns:** Returning a non-null value overrides default behavior ```csharp object CanRenameBed(BasePlayer player, SleepingBag bed, string bedName) { Puts("CanRenameBed works!"); return null; } ``` Tags: `rename`, `player` · uMod last updated 2021-05-08 ### `CanResearchItem` - Called when the player attempts to research an item **Returns:** Returning a non-null value overrides default behavior ```csharp object CanResearchItem(BasePlayer player, Item targetItem) { Puts("CanResearchItem works!"); return null; } ``` Tags: `research`, `player` · uMod last updated 2021-05-08 ### `CanUseLockedEntity` - Called when the player tries to use an entity that is locked **Returns:** Returning true or false overrides default behavior ```csharp bool CanUseLockedEntity(BasePlayer player, BaseLock baseLock) { Puts("CanUseLockedEntity works!"); return true; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `CanSeeStash` - Called when a player is looking at a hidden stash **Returns:** Returning a non-null value overrides default behavior ```csharp object CanSeeStash(BasePlayer player, StashContainer stash) { Puts("CanSeeStash works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnStashExposed` - Called when a player reveals a hidden stash **Returns:** No return behavior ```csharp void OnStashExposed(StashContainer stash, BasePlayer player) { Puts("OnStashExposed works"); } ``` Tags: `stash`, `player` · uMod last updated 2021-05-08 ### `OnStashHidden` - Called when a player hides a stash **Returns:** No return behavior ```csharp void OnStashHidden(StashContainer stash, BasePlayer player) { Puts("OnStashHidden works!"); } ``` Tags: `stash`, `player` · uMod last updated 2021-05-08 ### `CanSetBedPublic` - Called when a player tries to set a bed public **Returns:** Returning a non-null value overrides default behavior ```csharp object CanSetBedPublic(BasePlayer player, SleepingBag bed) { Puts("CanSetBedPublic works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `CanUnlock` - Called when the player tries to unlock a keylock or codelock **Returns:** Returning a non-null value overrides default behavior ```csharp object CanUnlock(BasePlayer player, BaseLock baseLock) { Puts("CanUnlock works!"); return null; } ``` Tags: `unlock`, `player` · uMod last updated 2021-05-08 ### `CanUseMailbox` - Called when the player tries to use a mailbox **Returns:** Returning true or false overrides default behavior ```csharp bool CanUseMailbox(BasePlayer player, Mailbox mailbox) { Puts("CanUseMailbox works!"); return true; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `CanUseUI` - Called when the player attempts to use a custom UI **Returns:** Returning a non-null value overrides default behavior ```csharp object CanUseUI(BasePlayer player, string json) { Puts("CanUseUI works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `CanWearItem` - Called when the player attempts to equip an item **Returns:** Returning a non-null value overrides default behavior ```csharp object CanWearItem(PlayerInventory inventory, Item item, int targetSlot) { Puts("CanWearItem works!"); return null; } ``` Tags: `wear`, `player` · uMod last updated 2021-05-08 ### `OnClientAuth` - Called when the player is giving server connection authorization information **Returns:** No return behavior ```csharp void OnClientAuth(Connection connection) { Puts("OnClientAuth works!"); } ``` Tags: `client`, `player` · uMod last updated 2021-05-08 ### `OnDestroyUI` - Called when a custom UI is destroyed for the player **Returns:** No return behavior ```csharp void OnDestroyUI(BasePlayer player, string json) { Puts("OnDestroyUI works!"); } ``` Tags: `destroy`, `player` · uMod last updated 2021-05-08 ### `OnFindSpawnPoint` - Useful for controlling player spawnpoints (like making all spawns occur in a set area) **Returns:** Return a BasePlayer.SpawnPoint object to use that spawnpoint ```csharp void OnFindSpawnPoint(BasePlayer player) { Puts("OnFindSpawnPoint works!"); } ``` Tags: `find`, `player` · uMod last updated 2021-05-08 ### `OnLootEntity` - Called when the player starts looting an entity **Returns:** No return behavior ```csharp void OnLootEntity(BasePlayer player, BaseEntity entity) { Puts("OnLootEntity works!"); } ``` Tags: `loot`, `player` · uMod last updated 2021-05-08 ### `OnLootEntityEnd` - Called when the player stops looting an entity **Returns:** No return behavior ```csharp void OnLootEntityEnd(BasePlayer player, BaseCombatEntity entity) { Puts("OnLootEntityEnd works!"); } ``` Tags: `loot`, `player` · uMod last updated 2021-05-08 ### `OnLootItem` - Called when the player starts looting an item **Returns:** No return behavior ```csharp void OnLootItem(PlayerLoot playerLoot, Item item) { Puts("OnLootItem works!"); } ``` Tags: `loot`, `player` · uMod last updated 2021-06-24 ### `OnLootPlayer` - Called when the player starts looting another player **Returns:** No return behavior ```csharp void OnLootPlayer(BasePlayer player, BasePlayer target) { Puts("OnLootPlayer works!"); } ``` Tags: `loot`, `player` · uMod last updated 2021-05-08 ### `OnPlayerAttack` - Useful for modifying an attack before it goes out - hitInfo.HitEntity should be the entity that this attack would hit **Returns:** Returning a non-null value overrides default behavior ```csharp object OnPlayerAttack(BasePlayer attacker, HitInfo info) { Puts("OnPlayerAttack works!"); return null; } ``` Tags: `player` · uMod last updated 2021-12-03 ### `OnPlayerBanned` - Called when the player is banned (Facepunch, EAC, server ban, etc.) **Returns:** No return behavior ```csharp void OnPlayerBanned(string name, ulong id, string address, string reason) { Puts("OnPlayerBanned works!"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerChat` - Called when the player sends chat to the server **Returns:** Returning a non-null value overrides default behavior of chat, not commands ```csharp object OnPlayerChat(BasePlayer player, string message, Chat.ChatChannel channel) { Puts("OnPlayerChat works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerConnected` - Called after the player object is created, but before the player has spawned **Returns:** No return behavior ```csharp void OnPlayerConnected(BasePlayer player) { Puts("OnPlayerConnected works!"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerDeath` - Called when the player is about to die - HitInfo may be null sometimes **Returns:** Returning a non-null value overrides default behavior ```csharp object OnPlayerDeath(BasePlayer player, HitInfo info) { Puts("OnPlayerDeath works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerDisconnected` - Called after the player has disconnected from the server **Returns:** No return behavior ```csharp void OnPlayerDisconnected(BasePlayer player, string reason) { Puts("OnPlayerDisconnected works!"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerDropActiveItem` - Called when the player drops their active held item **Returns:** No return behavior ```csharp void OnPlayerDropActiveItem(BasePlayer player, Item item) { Puts("OnPlayerDropActiveItem works!"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerHealthChange` - Called just before the player's health changes **Returns:** Returning a non-null value cancels the health change ```csharp object OnPlayerHealthChange(BasePlayer player, float oldValue, float newValue) { Puts("OnPlayerHealthChange works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerInput` - Called when input is received from a connected client **Returns:** No return behavior ```csharp void OnPlayerInput(BasePlayer player, InputState input) { Puts("OnPlayerInput works!"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerKicked` - Called after the player is kicked from the server **Returns:** No return behavior ```csharp void OnPlayerKicked(BasePlayer player, string reason) { Puts("OnPlayerKicked works!"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerLand` - Called just before the player lands on the ground **Returns:** Returning a non-null value overrides default behavior ```csharp object OnPlayerLand(BasePlayer player, float num) { Puts("OnPlayerLand works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerLanded` - Called when the player landed on the ground **Returns:** No return behavior ```csharp void OnPlayerLanded(BasePlayer player, float num) { Puts("OnPlayerLanded works!"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerLootEnd` - Called when the player stops looting **Returns:** No return behavior ```csharp void OnPlayerLootEnd(PlayerLoot inventory) { Puts("OnPlayerLootEnd works!"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerMetabolize` - Called after the player's metabolism has been changed **Returns:** No return behavior ```csharp void OnPlayerMetabolize(PlayerMetabolism metabolism, BaseCombatEntity entity, float delta) { Puts("OnPlayerMetabolize works!"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerRecover` - Called when the player is about to recover from the 'wounded' state **Returns:** Returning a non-null value overrides default behavior ```csharp object OnPlayerRecover(BasePlayer player) { Puts("OnPlayerRecover works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerRespawn` - Called when a player is attempting to respawn **Returns:** Returning a BasePlayer.SpawnPoint (takes a position and rotation), overrides the respawn location, for the variant that receives a BasePlayer.SpawnPoint argument **Returns:** Returning a SleepingBag overrides the respawn location, for the variant that receives a SleepingBag argument ```csharp object OnPlayerRespawn(BasePlayer player, BasePlayer.SpawnPoint spawnPoint) { Puts("OnPlayerRespawn works!"); return null; } ``` ```csharp object OnPlayerRespawn(BasePlayer player, SleepingBag sleepingBag) { Puts("OnPlayerRespawn works!"); return null; } ``` Tags: `player` · uMod last updated 2023-08-04 ### `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 **Returns:** No return behavior ```csharp void OnPlayerRespawned(BasePlayer player) { Puts("OnPlayerRespawned works!"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnRespawnInformationGiven` - Called when a player is about to be sent respawn information **Returns:** No return behavior ```csharp void OnRespawnInformationGiven(BasePlayer player, RespawnInformation respawnInformation) { Puts("OnRespawnInformationGiven works!"); } ``` Tags: `player` · uMod last updated 2021-07-03 ### `OnPlayerSleep` - Called when the player is about to go to sleep **Returns:** Returning a non-null value overrides default behavior ```csharp object OnPlayerSleep(BasePlayer player) { Puts("OnPlayerSleep works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerSleepEnded` - Called when the player awakes **Returns:** No return behavior ```csharp void OnPlayerSleepEnded(BasePlayer player) { Puts("OnPlayerSleepEnded works!"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerSpawn` - Called when a player is attempting to spawn for the first time **Returns:** Returning true overrides default behavior ```csharp object OnPlayerSpawn(BasePlayer player) { Puts("OnPlayerSpawn works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerSpectate` - Called when the player starts spectating **Returns:** Returning a non-null value overrides default behavior ```csharp object OnPlayerSpectate(BasePlayer player, string spectateFilter) { Puts("OnPlayerSpectate works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerSpectateEnd` - Called when the player stops spectating **Returns:** Returning a non-null value stops the spectate from ending ```csharp object OnPlayerSpectateEnd(BasePlayer player, string spectateFilter) { Puts("OnPlayerSpectateEnd works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerTick` **Returns:** Returning a non-null value overrides default behavior ```csharp object OnPlayerTick(BasePlayer player, PlayerTick msg, bool wasPlayerStalled) { Puts("OnPlayerTick works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerViolation` - Called when the player triggers an anti-hack violation **Returns:** Returning a non-null value overrides default behavior ```csharp object OnPlayerViolation(BasePlayer player, AntiHackType type, float amount) { Puts("OnPlayerViolation works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerVoice` - Called when the player uses the in-game voice chat **Returns:** Returning a non-null value overrides default behavior ```csharp object OnPlayerVoice(BasePlayer player, Byte[] data) { Puts("OnPlayerVoice works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnPlayerWound` - Called when the player is about to go down to the 'wounded' state - source might be null, check it before use **Returns:** Returning a non-null value cancels the wounded state ```csharp object OnPlayerWound(BasePlayer player, HitInfo info) { Puts("OnPlayerWound works!"); return null; } ``` Tags: `player` · uMod last updated 2022-01-17 ### `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 **Returns:** Returning a non-null value cancels the update ```csharp object OnRunPlayerMetabolism(PlayerMetabolism metabolism, BasePlayer player, float delta) { Puts("OnRunPlayerMetabolism works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnUserApprove` - Used by RustCore and abstracted into CanClientLogin **Returns:** Returning a non-null value overrides default behavior, plugin should call Reject if it does this ```csharp object OnUserApprove(Network.Connection connection) { Puts("OnUserApprove works!"); return null; } ``` Tags: `user`, `player` · uMod last updated 2021-05-08 ### `OnDefaultItemsReceive` - Called when a player is about to receive default items **Returns:** Returning a non-null value overrides default behavior ```csharp object OnDefaultItemsReceive(PlayerInventory inventory) { Puts("OnDefaultItemsReceive works!"); return null; } ``` Tags: `default`, `player` · uMod last updated 2021-05-08 ### `OnDefaultItemsReceived` - Called after a player has received default items **Returns:** Returning a non-null value overrides default behavior ```csharp void OnDefaultItemsReceived(PlayerInventory inventory) { Puts("OnDefaultItemsReceived works!"); } ``` Tags: `default`, `player` · uMod last updated 2021-05-08 ### `OnAnalysisComplete` - Called right after a player completes a survey crater analysis **Returns:** No return behavior ```csharp void OnAnalysisComplete(SurveyCrater surveyCrater, BasePlayer player) { Puts("OnAnalysisComplete works!"); } ``` Tags: `analysis`, `player` · uMod last updated 2021-05-08 ### `OnNpcConversationStart` - Called when a player tries to start a conversation with an NPC **Returns:** Returning a non-null value overrides default behavior ```csharp object OnNpcConversationStart(NPCTalking npcTalking, BasePlayer player, ConversationData conversationData) { Puts("OnNpcConversationStart works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnNpcConversationRespond` - Called when a player chooses an NPC conversation response **Returns:** Returning a non-null value overrides default behavior ```csharp object OnNpcConversationRespond(NPCTalking npcTalking, BasePlayer player, ConversationData conversationData, ConversationData.ResponseNode responseNode) { Puts("OnNpcConversationRespond works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnNpcConversationEnded` - Called right after a player has ended an NPC conversation **Returns:** No return behavior ```csharp void OnNpcConversationEnded(NPCTalking npcTalking, BasePlayer player) { Puts("OnNpcConversationEnded works!"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnNpcConversationResponded` - Called right after a player's chosen NPC conversation response has been processed **Returns:** No return behavior ```csharp void OnNpcConversationResponded(NPCTalking npcTalking, BasePlayer player, ConversationData conversationData, ConversationData.ResponseNode responseNode) { Puts("OnNpcConversationResponded works!"); } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnNetworkGroupEntered` - Called after a player has entered a network group **Returns:** No return behavior ```csharp void OnNetworkGroupEntered(BasePlayer player, Network.Visibility.Group group) { Puts("OnNetworkGroupEntered works!"); } ``` Tags: `network`, `player` · uMod last updated 2021-05-08 ### `OnNetworkGroupLeft` - Called after a player has left a network group **Returns:** No return behavior ```csharp void OnNetworkGroupLeft(BasePlayer player, Network.Visibility.Group group) { Puts("OnNetworkGroupLeft works!"); } ``` Tags: `network`, `player` · uMod last updated 2021-05-08 ### `OnDemoRecordingStart` - Called right before a demo of a player starts recording **Returns:** Returning a non-null value overrides default behavior ```csharp object OnDemoRecordingStart(string filename, BasePlayer player) { Puts("OnDemoRecordingStart works!"); return null; } ``` Tags: `demo`, `player` · uMod last updated 2021-05-08 ### `OnDemoRecordingStarted` - Called after a demo of a player has started recording **Returns:** No return behavior ```csharp void OnDemoRecordingStarted(string filename, BasePlayer player) { Puts("OnDemoRecordingStarted works!"); } ``` Tags: `demo`, `player` · uMod last updated 2021-05-08 ### `OnDemoRecordingStop` - Called right before a demo of a player stops recording **Returns:** Returning a non-null value overrides default behavior ```csharp object OnDemoRecordingStop(string filename, BasePlayer player) { Puts("OnDemoRecordingStop works!"); return null; } ``` Tags: `demo`, `player` · uMod last updated 2021-05-08 ### `OnDemoRecordingStopped` - Called after a demo of a player has stopped recording **Returns:** No return behavior ```csharp void OnDemoRecordingStopped(string filename, BasePlayer player) { Puts("OnDemoRecordingStopped works!"); } ``` Tags: `demo`, `player` · uMod last updated 2021-05-08 ### `OnLootNetworkUpdate` - Called when a player is trying to loot a container or a container they are looting has changed its contents **Returns:** Returning a non-null value overrides default behavior ```csharp object OnLootNetworkUpdate(PlayerLoot loot) { Puts("OnLootNetworkUpdate works!"); return null; } ``` Tags: `loot`, `player` · uMod last updated 2021-05-08 ### `OnInventoryNetworkUpdate` - Called after a player's inventory contents have changed, before it is sent over the network to one or more clients **Returns:** Returning a non-null value overrides default behavior ```csharp object OnInventoryNetworkUpdate(PlayerInventory inventory, ItemContainer container, ProtoBuf.UpdateItemContainer updateItemContainer, PlayerInventory.Type type, PlayerInventory.PlayerInventory.NetworkInventoryMode networkInventoryMode) { Puts("OnInventoryNetworkUpdate works!"); return null; } ``` Tags: `inventory`, `player` · uMod last updated 2024-02-02 ### `OnPlayerAddModifiers` - Called after a player consumes an item such as tea that is about to apply modifiers **Returns:** Returning a non-null value overrides default behavior (prevents the modifiers from being applied) ```csharp object OnPlayerAddModifiers(BasePlayer player, Item item, ItemModConsumable consumable) { Puts("OnPlayerAddModifiers works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnThreatLevelUpdate` - Called when a player's threat level is about to be updated **Returns:** Returning a non-null value cancels default behavior ```csharp object OnThreatLevelUpdate(BasePlayer player) { Puts("OnThreatLevelUpdate works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `CanUseGesture` - Called when a player attempts to use a gesture **Returns:** Returning true or false overrides default behavior ```csharp bool? CanUseGesture(BasePlayer player, GestureConfig gesture) { Puts("CanUseGesture works!"); return null; } ``` Tags: `player` · uMod last updated 2021-05-08 ### `OnCentralizedBanCheck` - Called when a player is about to be checked in the centralized ban database **Returns:** Returning a non-null value cancels default behavior ```csharp object OnCentralizedBanCheck(Network.Connection connection) { Puts("OnCentralizedBanCheck works!"); return null; } ``` Tags: `user`, `player` · uMod last updated 2021-06-12 ### `OnClientCommand` - Useful for intercepting players' commands before their handling - Called before OnPlayerCommand and OnUserCommand **Returns:** Returning a non-null value overrides default behavior ```csharp object OnClientCommand(Connection connection, string command) { Puts("OnClientCommand works!"); return null; } ``` Tags: `user`, `player` · uMod last updated 2021-06-12 ### `OnCorpsePopulate` - Called when an NPC player corpse is about to be populated with loot **Returns:** Returning a BaseCorpse overrides default behavior ```csharp BaseCorpse OnCorpsePopulate(BasePlayer npcPlayer, BaseCorpse corpse) { Puts("OnCorpsePopulate works!"); return null; } ``` Tags: `player` · uMod last updated 2021-06-12 ### `CanSetRelationship` - Called when a player's relationship with another is about to be updated **Returns:** Returning true or false overrides default behavior ```csharp bool? CanSetRelationship(BasePlayer player, BasePlayer otherPlayer, RelationshipManager.RelationshipType relationshipType, int weight) { Puts("CanSetRelationship works!"); return null; } ``` Tags: `player` · uMod last updated 2022-04-20 --- ## Entity Hooks *The generic `BaseEntity` graph — spawn, kill, damage, mount, loot, flags. Anything in the world that is not specifically an item.* 140 hooks: [`CanBradleyApcTarget`](#canbradleyapctarget), [`CanEntityBeHostile`](#canentitybehostile), [`CanSamSiteShoot`](#cansamsiteshoot), [`OnBuildingPrivilege`](#onbuildingprivilege), [`OnButtonPress`](#onbuttonpress), [`OnDieselEngineToggle`](#ondieselenginetoggle), [`OnDieselEngineToggled`](#ondieselenginetoggled), [`OnEntityMarkHostile`](#onentitymarkhostile), [`OnEntityStabilityCheck`](#onentitystabilitycheck), [`OnExcavatorGather`](#onexcavatorgather), [`OnExcavatorMiningToggled`](#onexcavatorminingtoggled), [`OnExcavatorResourceSet`](#onexcavatorresourceset), [`OnHelicopterStrafeEnter`](#onhelicopterstrafeenter), [`OnHorseHitch`](#onhorsehitch), [`OnHorseLead`](#onhorselead), [`OnInputUpdate`](#oninputupdate), [`OnMlrsFire`](#onmlrsfire), [`OnMlrsFired`](#onmlrsfired), [`OnNpcDestinationSet`](#onnpcdestinationset), [`OnNpcPlayerResume`](#onnpcplayerresume), [`OnNpcStopMoving`](#onnpcstopmoving), [`OnOutputUpdate`](#onoutputupdate), [`OnReactiveTargetReset`](#onreactivetargetreset), [`OnSamSiteTarget`](#onsamsitetarget), [`OnShopAcceptClick`](#onshopacceptclick), [`OnShopCancelClick`](#onshopcancelclick), [`OnShopCompleteTrade`](#onshopcompletetrade), [`OnSupplyDropLanded`](#onsupplydroplanded), [`OnTurretAssign`](#onturretassign), [`OnTurretAssigned`](#onturretassigned), [`OnWireClear`](#onwireclear), [`OnWireConnect`](#onwireconnect), [`CanHelicopterDropCrate`](#canhelicopterdropcrate), [`OnEngineLoadoutRefresh`](#onengineloadoutrefresh), [`CanHelicopterStrafe`](#canhelicopterstrafe), [`CanHelicopterStrafeTarget`](#canhelicopterstrafetarget), [`CanHelicopterTarget`](#canhelicoptertarget), [`CanHelicopterUseNapalm`](#canhelicopterusenapalm), [`CanNetworkTo`](#cannetworkto), [`OnHelicopterRetire`](#onhelicopterretire), [`CanNpcAttack`](#cannpcattack), [`CanNpcEat`](#cannpceat), [`CanRecycle`](#canrecycle), [`OnAirdrop`](#onairdrop), [`OnBradleyApcInitialize`](#onbradleyapcinitialize), [`OnBradleyApcHunt`](#onbradleyapchunt), [`OnBradleyApcPatrol`](#onbradleyapcpatrol), [`OnContainerDropItems`](#oncontainerdropitems), [`OnCrateDropped`](#oncratedropped), [`OnCrateHack`](#oncratehack), [`OnCrateHackEnd`](#oncratehackend), [`OnCrateLanded`](#oncratelanded), [`OnEntityDeath`](#onentitydeath), [`OnEntityDismounted`](#onentitydismounted), [`OnEntityEnter`](#onentityenter), [`OnEntityGroundMissing`](#onentitygroundmissing), [`OnEntityKill`](#onentitykill), [`OnEntityLeave`](#onentityleave), [`OnEntityMounted`](#onentitymounted), [`OnEntitySpawned`](#onentityspawned), [`OnEntityTakeDamage`](#onentitytakedamage), [`OnFireBallDamage`](#onfireballdamage), [`OnFireBallSpread`](#onfireballspread), [`OnFlameExplosion`](#onflameexplosion), [`OnHelicopterAttack`](#onhelicopterattack), [`OnHelicopterDropCrate`](#onhelicopterdropcrate), [`OnHelicopterDropDoorOpen`](#onhelicopterdropdooropen), [`OnHelicopterKilled`](#onhelicopterkilled), [`OnHelicopterOutOfCrates`](#onhelicopteroutofcrates), [`OnHelicopterTarget`](#onhelicoptertarget), [`OnLiftUse`](#onliftuse), [`OnLootSpawn`](#onlootspawn), [`OnNpcTargetSense`](#onnpctargetsense), [`OnNpcTarget`](#onnpctarget), [`OnItemRecycle`](#onitemrecycle), [`OnOvenCook`](#onovencook), [`OnOvenCooked`](#onovencooked), [`OnOvenToggle`](#onoventoggle), [`OnRecyclerToggle`](#onrecyclertoggle), [`OnResourceDepositCreated`](#onresourcedepositcreated), [`OnShopCompleteTrade`](#onshopcompletetrade-1), [`OnTurretAuthorize`](#onturretauthorize), [`OnTurretClearList`](#onturretclearlist), [`OnTurretDeauthorize`](#onturretdeauthorize), [`OnTurretModeToggle`](#onturretmodetoggle), [`OnTurretShutdown`](#onturretshutdown), [`OnTurretStartup`](#onturretstartup), [`OnTurretTarget`](#onturrettarget), [`OnTurretToggle`](#onturrettoggle), [`OnBigWheelWin`](#onbigwheelwin), [`OnBigWheelLoss`](#onbigwheelloss), [`OnSolarPanelSunUpdate`](#onsolarpanelsunupdate), [`OnBookmarkControl`](#onbookmarkcontrol), [`OnBookmarkControlStarted`](#onbookmarkcontrolstarted), [`OnBookmarkDelete`](#onbookmarkdelete), [`OnBookmarkAdd`](#onbookmarkadd), [`OnBookmarksSendControl`](#onbookmarkssendcontrol), [`OnBookmarkControlEnd`](#onbookmarkcontrolend), [`OnBookmarkControlEnded`](#onbookmarkcontrolended), [`OnRfBroadcasterAdd`](#onrfbroadcasteradd), [`OnRfBroadcasterAdded`](#onrfbroadcasteradded), [`OnRfBroadcasterRemove`](#onrfbroadcasterremove), [`OnRfBroadcasterRemoved`](#onrfbroadcasterremoved), [`OnRfListenerAdd`](#onrflisteneradd), [`OnRfListenerAdded`](#onrflisteneradded), [`OnRfListenerRemove`](#onrflistenerremove), [`OnRfFrequencyChange`](#onrffrequencychange), [`OnRfFrequencyChanged`](#onrffrequencychanged), [`OnRfListenerRemoved`](#onrflistenerremoved), [`OnSleepingBagDestroy`](#onsleepingbagdestroy), [`OnNetworkSubscriptionsUpdate`](#onnetworksubscriptionsupdate), [`OnSleepingBagDestroyed`](#onsleepingbagdestroyed), [`OnBookmarkInput`](#onbookmarkinput), [`OnEntityControl`](#onentitycontrol), [`OnTurretRotate`](#onturretrotate), [`OnCounterTargetChange`](#oncountertargetchange), [`OnCounterModeToggle`](#oncountermodetoggle), [`OnSwitchToggle`](#onswitchtoggle), [`OnSwitchToggled`](#onswitchtoggled), [`OnEntityDestroy`](#onentitydestroy), [`OnElevatorButtonPress`](#onelevatorbuttonpress), [`OnElevatorCall`](#onelevatorcall), [`OnElevatorMove`](#onelevatormove), [`CanSwapToSeat`](#canswaptoseat), [`OnRidableAnimalClaim`](#onridableanimalclaim), [`OnRidableAnimalClaimed`](#onridableanimalclaimed), [`OnEntitySaved`](#onentitysaved), [`OnEntitySnapshot`](#onentitysnapshot), [`OnEntityFlagsNetworkUpdate`](#onentityflagsnetworkupdate), [`OnIORefCleared`](#oniorefcleared), [`OnSupplyDropDropped`](#onsupplydropdropped), [`OnCargoPlaneSignaled`](#oncargoplanesignaled), [`OnWaterPurify`](#onwaterpurify), [`OnWaterPurified`](#onwaterpurified), [`OnSleepingBagValidCheck`](#onsleepingbagvalidcheck), [`OnCCTVDirectionChange`](#oncctvdirectionchange), [`OnWaterCollect`](#onwatercollect), [`OnLiquidVesselFill`](#onliquidvesselfill), [`OnLockerSwap`](#onlockerswap), [`CanLockerAcceptItem`](#canlockeracceptitem) ### `CanBradleyApcTarget` - Called when an APC targets an entity **Returns:** Returning true or false overrides default behavior ```csharp bool CanBradleyApcTarget(BradleyAPC apc, BaseEntity entity) { Puts("CanBradleyApcTarget works!"); return true; } ``` Tags: `bradley`, `entity` · uMod last updated 2021-05-08 ### `CanEntityBeHostile` - Useful for overriding hostility of an entity **Returns:** Returning a non-null value overrides default behavior ```csharp object CanEntityBeHostile(BaseCombatEntity entity) { Puts("CanEntityBeHostile works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `CanSamSiteShoot` - Useful for canceling the shoot of SamSite **Returns:** Returning a non-null value cancels default behavior ```csharp object CanSamSiteShoot(SamSite samSite) { Puts("CanSamSiteShoot works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnBuildingPrivilege` - Useful for overriding a building privilege on specific entities and etc. **Returns:** Returning BuildingPrivlidge value overrides default behavior ```csharp BuildingPrivlidge OnBuildingPrivilege(BaseEntity entity, OBB obb) { Puts($"Getting a building privilege for {entity.ShortPrefabName}!"); return null; } ``` Tags: `building`, `entity` · uMod last updated 2021-05-08 ### `OnButtonPress` - Called when a player is trying to press a button **Returns:** Returning a non-null value cancels default behavior ```csharp object OnButtonPress(PressButton button, BasePlayer player) { Puts("OnButtonPress works!"); return null; } ``` Tags: `button`, `entity` · uMod last updated 2021-05-08 ### `OnDieselEngineToggle` - Called when a player is trying to toggle diesel engine **Returns:** Returning a non-null value cancels default behavior ```csharp object OnDieselEngineToggle(DieselEngine engine, BasePlayer player) { Puts("OnDieselEngineToggle works!"); return null; } ``` Tags: `diesel`, `entity` · uMod last updated 2022-09-12 ### `OnDieselEngineToggled` - Called when diesel engine is toggled **Returns:** No return behavior ```csharp void OnDieselEngineToggled(DieselEngine engine) { Puts("OnDieselEngineToggled works!"); } ``` Tags: `diesel`, `entity` · uMod last updated 2021-05-08 ### `OnEntityMarkHostile` - Useful for denying marking the entity hostile **Returns:** Returning a non-null value cancels default behavior ```csharp object OnEntityMarkHostile(BaseCombatEntity entity, float duration) { Puts("OnEntityMarkHostile works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnEntityStabilityCheck` - Called when stability of an entity is checked **Returns:** Returning a non-null value cancels default behavior ```csharp object OnEntityStabilityCheck(StabilityEntity entity) { Puts("OnEntityStabilityCheck works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnExcavatorGather` - Called right before moving gathered resource to container **Returns:** Returning a non-null value cancels default behavior ```csharp object OnExcavatorGather(ExcavatorArm arm, Item item) { Puts("OnExcavatorGather works!"); return null; } ``` Tags: `excavator`, `entity` · uMod last updated 2021-05-08 ### `OnExcavatorMiningToggled` - Called when excavator mining arm is toggled **Returns:** No return behavior ```csharp void OnExcavatorMiningToggled(ExcavatorArm arm) { Puts("OnExcavatorMiningToggled works!"); } ``` Tags: `excavator`, `entity` · uMod last updated 2021-05-08 ### `OnExcavatorResourceSet` - Called when a player is trying to set a new resource target **Returns:** Returning a non-null value cancels default behavior ```csharp object OnExcavatorResourceSet(ExcavatorArm arm, string resourceName, BasePlayer player) { Puts("OnExcavatorResourceSet works!"); return null; } ``` Tags: `excavator`, `entity` · uMod last updated 2021-05-08 ### `OnHelicopterStrafeEnter` - Called when helicopter is entering strafe **Returns:** Returning a non-null value cancels default behavior ```csharp object OnHelicopterStrafeEnter(PatrolHelicopterAI helicopter, Vector3 strafePosition) { Puts("OnHelicopterStrafeEnter works!"); return null; } ``` Tags: `helicopter`, `entity` · uMod last updated 2021-05-08 ### `OnHorseHitch` - Called just before setting the hitch **Returns:** Returning a non-null value overrides default behavior ```csharp object OnHorseHitch(RidableHorse horse, HitchTrough hitch) { Puts("OnHorseHitch works!"); return null; } ``` Tags: `horse`, `entity` · uMod last updated 2021-05-08 ### `OnHorseLead` - Called when a player tries to lead a horse **Returns:** Returning a non-null value overrides default behavior ```csharp object OnHorseLead(BaseRidableAnimal animal, BasePlayer player) { Puts($"{player.displayName} tries to lead {animal.ShortPrefabName}"); return null; } ``` Tags: `horse`, `entity` · uMod last updated 2022-01-08 ### `OnInputUpdate` - Called when an input of IOEntity is updated **Returns:** Returning a non-null value cancels default behavior ```csharp object OnInputUpdate(IOEntity entity, int inputAmount, int slot) { Puts("OnInputUpdate works!"); return null; } ``` Tags: `input`, `entity` · uMod last updated 2021-05-08 ### `OnMlrsFire` - Called just before the MLRS is fired. **Returns:** Returning a non-null value overrides default behaviour. ```csharp object OnMlrsFire(MLRS mlrs, BasePlayer player) { Puts("OnMlrsFire works!"); return null; } ``` Tags: `mlrs`, `entity` · uMod last updated 2022-06-21 ### `OnMlrsFired` - Called just after the MLRS has been fired. **Returns:** No return behaviour. ```csharp void OnMlrsFired(MLRS mlrs, BasePlayer player) { Puts("OnMlrsFired works!"); } ``` Tags: `mlrs`, `entity` · uMod last updated 2022-06-21 ### `OnNpcDestinationSet` - Useful for canceling the destination change on NPCs **Returns:** Returning a non-null value cancels default behavior ```csharp object OnNpcDestinationSet(NPCPlayerApex npc, Vector3 newPosition) { Puts("OnNpcDestinationSet works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnNpcPlayerResume` - Useful for canceling the invoke of TryForceToNavmesh **Returns:** Returning a non-null value cancels default behavior ```csharp object OnNpcPlayerResume(NPCPlayerApex npc) { Puts("OnNpcPlayerResume works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnNpcStopMoving` - Useful for denying the move stop of NPCs **Returns:** Returning a non-null value cancels default behavior ```csharp object OnNpcStopMoving(NPCPlayerApex npc) { Puts("OnNpcStopMoving works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnOutputUpdate` - Called when outputs of IOEntity are updated **Returns:** Returning a non-null value cancels default behavior ```csharp object OnOutputUpdate(IOEntity entity) { Puts("OnOutputUpdate works!"); return null; } ``` Tags: `output`, `entity` · uMod last updated 2021-05-08 ### `OnReactiveTargetReset` - Called after the reactive target is reset **Returns:** No return behaviour ```csharp void OnReactiveTargetReset(ReactiveTarget target) { Puts("OnReactiveTargetReset works!"); } ``` Tags: `reactive`, `entity` · uMod last updated 2021-05-08 ### `OnSamSiteTarget` - Called before last target visible time is updated **Returns:** Returning a non-null value cancels default behavior ```csharp object OnSamSiteTarget(SamSite samSite, BaseCombatEntity target) { Puts("OnSamSiteTarget works!"); return null; } ``` Tags: `entity` · uMod last updated 2022-02-03 ### `OnShopAcceptClick` - Called when a player is trying to accept a trade in ShopFront **Returns:** Returning a non-null value cancels default behavior ```csharp object OnShopAcceptClick(ShopFront entity, BasePlayer player) { Puts("OnShopAcceptClick works!"); return null; } ``` Tags: `shop`, `entity` · uMod last updated 2021-05-08 ### `OnShopCancelClick` - Called when a player is cancelling a trade **Returns:** Returning a non-null value cancels default behavior ```csharp object OnShopCancelClick(ShopFront entity, BasePlayer player) { Puts("OnShopCancelClick works!"); return null; } ``` Tags: `shop`, `entity` · uMod last updated 2021-05-08 ### `OnShopCompleteTrade` - Called before the trade is completed in ShopFront **Returns:** Returning a non-null value cancels default behavior ```csharp object OnShopCompleteTrade(ShopFront entity) { Puts("OnShopCompleteTrade works!"); return null; } ``` Tags: `shop`, `entity` · uMod last updated 2021-05-08 ### `OnSupplyDropLanded` - Called after Supply Drop has landed **Returns:** No return behavior ```csharp void OnSupplyDropLanded(SupplyDrop entity) { Puts("OnSupplyDropLanded works!"); } ``` Tags: `supply`, `entity` · uMod last updated 2021-05-08 ### `OnTurretAssign` - Called when a player attempts to authorize another player on a turret **Returns:** Returning a non-null value cancels default behavior ```csharp object OnTurretAssign(AutoTurret turret, ulong targetId, BasePlayer initiator) { Puts("{targetId} has been authorized on a turret by {initiator.displayName}"); return null; } ``` Tags: `turret`, `player`, `entity` · uMod last updated 2022-07-01 ### `OnTurretAssigned` - Called when a player has been authorized on a turret by another player **Returns:** No return behaviour ```csharp void OnTurretAssigned(AutoTurret turret, ulong targetId, BasePlayer initiator) { Puts($"{targetId} has been authorized on a turret by {initiator.displayName}); } ``` Tags: `turret`, `player`, `entity` · uMod last updated 2022-07-01 ### `OnWireClear` - Useful for preventing clearing wires **Returns:** Returning a non-null value cancels default behavior ```csharp object OnWireClear(BasePlayer player, IOEntity entity1, int connected, IOEntity entity2, bool flag) { Puts("OnWireClear works!"); return null; } ``` Tags: `wire`, `entity` · uMod last updated 2021-05-08 ### `OnWireConnect` - Useful for preventing a wire to connect **Returns:** Returning a non-null value cancels default behavior ```csharp object OnWireConnect(BasePlayer player, IOEntity entity1, int inputs, IOEntity entity2, int outputs) { Puts("OnWireConnect works!"); return null; } ``` Tags: `wire`, `entity` · uMod last updated 2021-05-08 ### `CanHelicopterDropCrate` - Called when a CH47 helicopter attempts to drop a crate **Returns:** Returning true or false overrides default behavior ```csharp bool CanHelicopterDropCrate(CH47HelicopterAIController heli) { Puts("CanHelicopterDropCrate works!"); return true; } ``` Tags: `helicopter`, `entity` · uMod last updated 2021-05-08 ### `OnEngineLoadoutRefresh` - Called before engine loadout data is refreshed **Returns:** Returning a non-null value overrides default behaviour ```csharp object OnEngineLoadoutRefresh(EngineStorage storage) { Puts("OnEngineLoadoutRefresh works!"); return null; } ``` Tags: `engine`, `entity` · uMod last updated 2021-05-08 ### `CanHelicopterStrafe` - Called when a patrol helicopter attempts to strafe **Returns:** Returning true or false overrides default behavior ```csharp bool CanHelicopterStrafe(PatrolHelicopterAI heli) { Puts("CanHelicopterStrafe works!"); return true; } ``` Tags: `helicopter`, `entity` · uMod last updated 2021-05-08 ### `CanHelicopterStrafeTarget` - Called when a patrol helicopter attempts to target a player to attack while strafing **Returns:** Returning true or false overrides default behavior ```csharp bool CanHelicopterStrafeTarget(PatrolHelicopterAI entity, BasePlayer target) { Puts("CanHelicopterStrafeTarget works!"); return true; } ``` Tags: `helicopter`, `entity` · uMod last updated 2021-05-08 ### `CanHelicopterTarget` - Called when a patrol helicopter attempts to target a player to attack **Returns:** Returning true or false overrides default behavior ```csharp bool CanHelicopterTarget(PatrolHelicopterAI heli, BasePlayer player) { Puts("CanHelicopterTarget works!"); return true; } ``` Tags: `helicopter`, `entity` · uMod last updated 2021-05-08 ### `CanHelicopterUseNapalm` - Called when a patrol helicopter attempts to use napalm **Returns:** Returning true or false overrides default behavior ```csharp bool CanHelicopterUseNapalm(PatrolHelicopterAI heli) { Puts("CanHelicopterUseNapalm works!"); return true; } ``` Tags: `helicopter`, `entity` · uMod last updated 2021-05-08 ### `CanNetworkTo` - Called when an entity attempts to network with a player - For better performance, avoid using heavy calculations in this hook. **Returns:** Returning true or false overrides default behavior ```csharp bool CanNetworkTo(BaseNetworkable entity, BasePlayer target) { Puts("CanNetworkTo works!"); return true; } ``` Tags: `network`, `entity` · uMod last updated 2021-05-08 ### `OnHelicopterRetire` - Called before the patrol helicopter starts leaving the map. **Returns:** Returning a non-null value overrides default behaviour. ```csharp object OnHelicopterRetire(PatrolHelicopterAI helicopter) { Puts("OnHelicopterRetire works!"); return null; } ``` Tags: `helicopter`, `entity` · uMod last updated 2022-01-23 ### `CanNpcAttack` - Called when a NPC attempts to attack another entity **Returns:** Returning true or false overrides default behavior ```csharp bool CanNpcAttack(BaseNpc npc, BaseEntity target) { Puts("CanNpcAttack works!"); return true; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `CanNpcEat` - Called when a NPC attempts to eat another entity **Returns:** Returning true or false overrides default behavior ```csharp bool CanNpcEat(BaseNpc npc, BaseEntity target) { Puts("CanNpcEat works!"); return true; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `CanRecycle` - Called when the recycler attempts to recycle an item **Returns:** Returning true or false overrides default behavior ```csharp bool CanRecycle(Recycler recycler, Item item) { Puts("CanRecycle works!"); return true; } ``` Tags: `recycle`, `entity` · uMod last updated 2021-05-08 ### `OnAirdrop` - Called when an airdrop has been called **Returns:** No return behavior ```csharp void OnAirdrop(CargoPlane plane, Vector3 dropPosition) { Puts("OnAirdrop works!"); } ``` Tags: `airdrop`, `entity` · uMod last updated 2021-05-08 ### `OnBradleyApcInitialize` - Called when an APC initializes **Returns:** Returning a non-null value overrides default behavior ```csharp object OnBradleyApcInitialize(BradleyAPC apc) { Puts("OnBradleyApcInitialize works!"); return null; } ``` Tags: `bradley`, `entity` · uMod last updated 2021-05-08 ### `OnBradleyApcHunt` - Called when an APC starts hunting **Returns:** Returning a non-null value overrides default behavior ```csharp object OnBradleyApcHunt(BradleyAPC apc) { Puts("OnBradleyApcHunt works!"); return null; } ``` Tags: `bradley`, `entity` · uMod last updated 2021-05-08 ### `OnBradleyApcPatrol` - Called when an APC is starts patrolling **Returns:** Returning a non-null value overrides default behavior ```csharp object OnBradleyApcPatrol(BradleyAPC apc) { Puts("OnBradleyApcPatrol works!"); return null; } ``` Tags: `bradley`, `entity` · uMod last updated 2021-05-08 ### `OnContainerDropItems` - Called when a container is destroyed and all items are about to be dropped **Returns:** Returning a non-null value overrides default behavior ```csharp object OnContainerDropItems(ItemContainer container) { Puts("OnContainerDropItems works!"); return null; } ``` Tags: `container`, `entity` · uMod last updated 2021-05-08 ### `OnCrateDropped` - Called when a locked crate from the CH47 (Chinook) has dropped **Returns:** No return behavior ```csharp void OnCrateDropped(HackableLockedCrate crate) { Puts("OnCrateDropped works!"); } ``` Tags: `crate`, `entity` · uMod last updated 2021-05-08 ### `OnCrateHack` - Called when a player starts hacking a locked crate **Returns:** No return behavior ```csharp void OnCrateHack(HackableLockedCrate crate) { Puts("OnCrateHack works!"); } ``` Tags: `crate`, `entity` · uMod last updated 2021-05-08 ### `OnCrateHackEnd` - Called when a player stops hacking a locked crate **Returns:** No return behavior ```csharp void OnCrateHackEnd(HackableLockedCrate crate) { Puts("OnCrateHackEnd works!"); } ``` Tags: `crate`, `entity` · uMod last updated 2021-05-08 ### `OnCrateLanded` - Called when a locked crate from the CH47 (Chinook) has landed **Returns:** No return behavior ```csharp void OnCrateLanded(HackableLockedCrate crate) { Puts("OnCrateLanded works!"); } ``` Tags: `crate`, `entity` · uMod last updated 2021-05-08 ### `OnEntityDeath` - HitInfo might be null, check it before use - Editing hitInfo has no effect because the death has already happened **Returns:** No return behavior ```csharp void OnEntityDeath(BaseCombatEntity entity, HitInfo info) { Puts("OnEntityDeath works!"); } ``` Tags: `entity` · uMod last updated 2022-01-17 ### `OnEntityDismounted` - Called when an entity is dismounted by a player **Returns:** No return behavior ```csharp void OnEntityDismounted(BaseMountable entity, BasePlayer player) { Puts("OnEntityDismounted works!"); } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnEntityEnter` - Called when an entity enters a trigger (water area, radiation zone, hurt zone, etc.) **Returns:** No return behavior ```csharp void OnEntityEnter(TriggerBase trigger, BaseEntity entity) { Puts("OnEntityEnter works!"); } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnEntityGroundMissing` - Called when an entity (sleepingbag, sign, furnace,...) is going to be destroyed because the buildingblock it is on was removed **Returns:** Returning a non-null value overrides default behavior ```csharp object OnEntityGroundMissing(BaseEntity entity) { Puts("OnEntityGroundMissing works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnEntityKill` - Called when an entity is destroyed **Returns:** Returning a non-null value overrides default behavior ```csharp object OnEntityKill(BaseNetworkable entity) { Puts("OnEntityKill works!"); return null; } ``` Tags: `entity` · uMod last updated 2023-04-11 ### `OnEntityLeave` - Called when an entity leaves a trigger (water area, radiation zone, hurt zone, etc.) **Returns:** No return behavior ```csharp void OnEntityLeave(TriggerBase trigger, BaseEntity entity) { Puts("OnEntityLeave works!"); } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnEntityMounted` - Called when an entity is mounted by a player **Returns:** No return behavior ```csharp void OnEntityMounted(BaseMountable entity, BasePlayer player) { Puts("OnEntityMounted works!"); } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnEntitySpawned` - Called after any networked entity has spawned (including trees) **Returns:** No return behavior ```csharp void OnEntitySpawned(BaseNetworkable entity) { Puts("OnEntitySpawned works!"); } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `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 **Returns:** *(not stated upstream)* ```csharp object OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info) { Puts("OnEntityTakeDamage works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnFireBallDamage` - Called when a fire ball does damage to another entity **Returns:** No return behavior ```csharp void OnFireBallDamage(FireBall fire, BaseCombatEntity entity, HitInfo info) { Puts("OnFireBallDamage works!"); } ``` Tags: `fire`, `entity` · uMod last updated 2021-05-08 ### `OnFireBallSpread` - Called when a fire ball fire spreads **Returns:** No return behavior ```csharp void OnFireBallSpread(FireBall ball, BaseEntity fire) { Puts("OnFireBallSpread works!"); } ``` Tags: `fire`, `entity` · uMod last updated 2021-05-08 ### `OnFlameExplosion` - Called when a flame explodes **Returns:** No return behavior ```csharp void OnFlameExplosion(FlameExplosive explosive, BaseEntity flame) { Puts("OnFlameExplosion works!"); } ``` Tags: `flame`, `entity` · uMod last updated 2021-05-08 ### `OnHelicopterAttack` - Called when a CH47 helicopter is being attacked **Returns:** Returning a non-null value overrides default behavior ```csharp object OnHelicopterAttack(CH47HelicopterAIController heli) { Puts("OnHelicopterAttack works!"); return null; } ``` Tags: `helicopter`, `entity` · uMod last updated 2022-09-12 ### `OnHelicopterDropCrate` - Called when a CH47 helicopter is dropping a crate **Returns:** Returning a non-null value overrides default behavior ```csharp object OnHelicopterDropCrate(CH47HelicopterAIController heli) { Puts("OnHelicopterDropCrate works!"); return null; } ``` Tags: `helicopter`, `entity` · uMod last updated 2021-05-08 ### `OnHelicopterDropDoorOpen` - Called when a CH47 helicopter is opening its drop door **Returns:** Returning a non-null value overrides default behavior ```csharp object OnHelicopterDropDoorOpen(CH47HelicopterAIController heli) { Puts("OnHelicopterDropDoorOpen works!"); return null; } ``` Tags: `helicopter`, `entity` · uMod last updated 2021-05-08 ### `OnHelicopterKilled` - Called when a CH47 helicopter is going to be killed **Returns:** Returning a non-null value overrides default behavior ```csharp object OnHelicopterKilled(CH47HelicopterAIController heli) { Puts("OnHelicopterKilled works!"); return null; } ``` Tags: `helicopter`, `entity` · uMod last updated 2021-05-08 ### `OnHelicopterOutOfCrates` - Called when a CH47 helicopter runs out of crates **Returns:** Returning true or false overrides default behavior ```csharp bool? OnHelicopterOutOfCrates(CH47HelicopterAIController heli) { Puts("OnHelicopterOutOfCrates works!"); return null; } ``` Tags: `helicopter`, `entity` · uMod last updated 2021-08-14 ### `OnHelicopterTarget` - Called when a helicopter turret attempts to target an entity **Returns:** Returning a non-null value overrides default behavior ```csharp object OnHelicopterTarget(HelicopterTurret turret, BaseCombatEntity entity) { Puts("OnHelicopterTarget works!"); return null; } ``` Tags: `helicopter`, `entity` · uMod last updated 2021-05-08 ### `OnLiftUse` - Called when a player calls a lift or procedural lift **Returns:** Returning a non-null value overrides default behavior ```csharp object OnLiftUse(Lift lift, BasePlayer player) { Puts("OnLiftUse works!"); return null; } ``` ```csharp object OnLiftUse(ProceduralLift lift, BasePlayer player) { Puts("OnLiftUse works!"); return null; } ``` Tags: `lift`, `entity` · uMod last updated 2021-05-08 ### `OnLootSpawn` - Called when loot spawns in a container **Returns:** Returning a non-null value overrides default behavior ```csharp object OnLootSpawn(LootContainer container) { Puts("OnLootSpawn works!"); return null; } ``` Tags: `loot`, `entity` · uMod last updated 2021-05-08 ### `OnNpcTargetSense` - Called when an NPC becomes aware of another entity **Returns:** Returning a non-null value overrides default behavior ```csharp object OnNpcTargetSense(BaseEntity owner, BaseEntity entity, AIBrainSenses brainSenses) { Puts("OnNpcTargetSense works!"); return null; } ``` Tags: `entity` · uMod last updated 2023-04-23 ### `OnNpcTarget` - Called when an NPC targets another entity **Returns:** Returning a non-null value overrides default behavior ```csharp object OnNpcTarget(BaseEntity npc, BaseEntity entity) { Puts("OnNpcTarget works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnItemRecycle` - Called when an item is recycled in a recycler **Returns:** Returning a non-null value overrides default behavior ```csharp object OnItemRecycle(Item item, Recycler recycler) { Puts("OnItemRecycle works!"); return null; } ``` Tags: `recycle`, `entity` · uMod last updated 2022-09-12 ### `OnOvenCook` - Called before an oven cooks an item **Returns:** Returning a non-null value overrides default behavior ```csharp object OnOvenCook(BaseOven oven, Item item) { Puts("OnOvenCook works!"); return null; } ``` Tags: `oven`, `entity` · uMod last updated 2021-05-08 ### `OnOvenCooked` - Called after an oven cooks an item **Returns:** No return behavior ```csharp void OnOvenCooked(BaseOven oven, Item item, BaseEntity slot) { Puts("OnOvenCooked works!"); } ``` Tags: `oven`, `entity` · uMod last updated 2021-05-08 ### `OnOvenToggle` - Called when an oven (Campfire, Furnace,...) is turned on or off **Returns:** Returning a non-null value overrides default behavior ```csharp object OnOvenToggle(BaseOven oven, BasePlayer player) { Puts("OnOvenToggle works!"); return null; } ``` Tags: `oven`, `entity` · uMod last updated 2021-05-08 ### `OnRecyclerToggle` - Called when a recycler is turned on or off **Returns:** Returning a non-null value overrides default behavior ```csharp object OnRecyclerToggle(Recycler recycler, BasePlayer player) { Puts("OnRecyclerToggle works!"); return null; } ``` Tags: `recycler`, `entity` · uMod last updated 2021-05-08 ### `OnResourceDepositCreated` - Called when a resource deposit has been created **Returns:** No return behavior ```csharp void OnResourceDepositCreated(ResourceDepositManager.ResourceDeposit deposit) { Puts("OnResourceDepositCreated works!"); } ``` Tags: `resource`, `entity` · uMod last updated 2021-05-08 ### `OnShopCompleteTrade` - Called when a shopfront trade is complete **Returns:** Returning a non-null value overrides default behavior ```csharp object OnShopCompleteTrade(ShopFront shop, BasePlayer customer) { Puts("OnShopCompleteTrade works!"); return null; } ``` Tags: `shop`, `entity` · uMod last updated 2021-05-08 ### `OnTurretAuthorize` - Called when a player attempts to authorize on a turret **Returns:** Returning a non-null value overrides default behavior ```csharp object OnTurretAuthorize(AutoTurret turret, BasePlayer player) { Puts("OnTurretAuthorize works!"); return null; } ``` Tags: `turret`, `entity` · uMod last updated 2021-05-08 ### `OnTurretClearList` - Called when a player attempts to clear an autoturret's authorized list **Returns:** Returning a non-null value overrides default behavior ```csharp object OnTurretClearList(AutoTurret turret, BasePlayer player) { Puts("OnTurretClearList works!"); return null; } ``` Tags: `turret`, `entity` · uMod last updated 2021-05-08 ### `OnTurretDeauthorize` - Called when a player is deauthorized on an autoturret **Returns:** Returning a non-null value overrides default behavior ```csharp object OnTurretDeauthorize(AutoTurret turret, BasePlayer player) { Puts("OnTurretDeauthorize works!"); return null; } ``` Tags: `turret`, `entity` · uMod last updated 2021-05-08 ### `OnTurretModeToggle` - Called when the mode of an autoturrent is toggled **Returns:** No return behavior ```csharp void OnTurretModeToggle(AutoTurret turret) { Puts("OnTurretModeToggle works!"); } ``` Tags: `turret`, `entity` · uMod last updated 2021-05-08 ### `OnTurretShutdown` - Called when an autoturret is shut down **Returns:** Returning a non-null value overrides default behavior ```csharp object OnTurretShutdown(AutoTurret turret) { Puts("OnTurretShutdown works!"); return null; } ``` Tags: `turret`, `entity` · uMod last updated 2021-05-08 ### `OnTurretStartup` - Called when an autoturret starts up **Returns:** Returning a non-null value overrides default behavior ```csharp object OnTurretStartup(AutoTurret turret) { Puts("OnTurretStartup works!"); return null; } ``` Tags: `turret`, `entity` · uMod last updated 2021-05-08 ### `OnTurretTarget` - Called when an autoturret attempts to target an entity **Returns:** Returning a non-null value overrides default behavior ```csharp object OnTurretTarget(AutoTurret turret, BaseCombatEntity entity) { Puts("OnTurretTarget works!"); return null; } ``` Tags: `turret`, `entity` · uMod last updated 2021-05-08 ### `OnTurretToggle` - Called when an autoturret toggles powerstate (on/off) **Returns:** Returning a non-null value overrides default behavior ```csharp object OnTurretToggle(AutoTurret turret) { Puts("OnTurretToggle works!"); return null; } ``` Tags: `turret`, `entity` · uMod last updated 2021-05-08 ### `OnBigWheelWin` - Called before multiplier is applied. **Returns:** Returning non-null value overrides default behaviour. ```csharp object OnBigWheelWin(BigWheelGame bigWheel, Item scrap, BigWheelBettingTerminal terminal, int multiplier) { Puts("OnBigWheelWin works!"); return null; } ``` Tags: `entity` · uMod last updated 2022-06-05 ### `OnBigWheelLoss` - Called when a specific item is lost on the big wheel game **Returns:** No return behavior ```csharp void OnBigWheelLoss(BigWheelGame wheel, Item item) { Puts("OnBigWheelLoss works!"); } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnSolarPanelSunUpdate` - Called when a solar panel updates the amount of energy it is getting from the sun **Returns:** Returning a non-null value overrides default behavior ```csharp object OnSolarPanelSunUpdate(SolarPanel panel, int currentEnergy) { Puts("OnSolarPanelSunUpdate works!"); return null; } ``` Tags: `solar`, `entity` · uMod last updated 2021-05-08 ### `OnBookmarkControl` - Called when a player tries to select a bookmark at a computer station **Returns:** Returning a non-null value overrides default behavior ```csharp object OnBookmarkControl(ComputerStation computerStation, BasePlayer player, string bookmarkName, IRemoteControllable remoteControllable) { Puts("OnBookmarkControl works!"); return null; } ``` Tags: `bookmark`, `entity` · uMod last updated 2021-05-08 ### `OnBookmarkControlStarted` - Called after a player has selected a bookmark at a computer station **Returns:** No return behavior ```csharp void OnBookmarkControlStarted(ComputerStation computerStation, BasePlayer player, string bookmarkName, IRemoteControllable remoteControllable) { Puts("OnBookmarkControlStarted works!"); } ``` Tags: `bookmark`, `entity` · uMod last updated 2021-05-08 ### `OnBookmarkDelete` - Called when a player tries to delete a bookmark at a computer station **Returns:** Returning a non-null value overrides default behavior ```csharp object OnBookmarkDelete(ComputerStation computerStation, BasePlayer player, string bookmarkName) { Puts("OnBookmarkDelete works!"); return null; } ``` Tags: `bookmark`, `entity` · uMod last updated 2021-05-08 ### `OnBookmarkAdd` - Called when a player tries to add a bookmark at a computer station **Returns:** Returning a non-null value overrides default behavior ```csharp object OnBookmarkAdd(ComputerStation computerStation, BasePlayer player, string bookmarkName) { Puts("OnBookmarkAdd works!"); return null; } ``` Tags: `bookmark`, `entity` · uMod last updated 2021-05-08 ### `OnBookmarksSendControl` - Called when a player is being sent a list of bookmarks for a computer station **Returns:** Returning a non-null value overrides default behavior ```csharp object OnBookmarksSendControl(ComputerStation computerStation, BasePlayer player, string bookmarks) { Puts("OnBookmarksSendControl works!"); return null; } ``` Tags: `bookmarks`, `entity` · uMod last updated 2021-05-08 ### `OnBookmarkControlEnd` - Called when a player tries to stop viewing/controlling an entity at a computer station **Returns:** Returning a non-null value overrides default behavior ```csharp object OnBookmarkControlEnd(ComputerStation computerStation, BasePlayer player, BaseEntity controlledEntity) { Puts("OnBookmarkControlEnd works!"); return null; } ``` Tags: `bookmark`, `entity` · uMod last updated 2021-05-08 ### `OnBookmarkControlEnded` - Called after a player has stopped viewing/controlling an entity at a computer station **Returns:** No return behavior ```csharp void OnBookmarkControlEnded(ComputerStation computerStation, BasePlayer player, BaseEntity controlledEntity) { Puts("OnBookmarkControlEnded works!"); } ``` Tags: `bookmark`, `entity` · uMod last updated 2021-05-08 ### `OnRfBroadcasterAdd` - Called right before an object starts broadcasting an RF frequency **Returns:** Returning a non-null value overrides default behavior ```csharp object OnRfBroadcasterAdd(IRFObject obj, int frequency) { Puts("OnRfBroadcasterAdd works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnRfBroadcasterAdded` - Called right after an object has started broadcasting an RF frequency **Returns:** No return behavior ```csharp void OnRfBroadcasterAdded(IRFObject obj, int frequency) { Puts("OnRfBroadcasterAdded works!"); } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnRfBroadcasterRemove` - Called right before an object stops broadasting an RF frequency **Returns:** Returning a non-null value overrides default behavior ```csharp object OnRfBroadcasterRemove(IRFObject obj, int frequency) { Puts("OnRfBroadcasterRemove works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnRfBroadcasterRemoved` - Called right after an object has stopped broadcasting an RF frequency **Returns:** No return behavior ```csharp void OnRfBroadcasterRemoved(IRFObject obj, int frequency) { Puts("OnRfBroadcasterRemoved works!"); } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnRfListenerAdd` - Called right before an object starts listening to an RF frequency **Returns:** Returning a non-null value overrides default behavior ```csharp object OnRfListenerAdd(IRFObject obj, int frequency) { Puts("OnRfListenerAdd works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnRfListenerAdded` - Called right after an object has started listening to an RF frequency **Returns:** No return behavior ```csharp void OnRfListenerAdded(IRFObject obj, int frequency) { Puts("OnRfListenerAdded works!"); } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnRfListenerRemove` - Called right before an object stops listening to an RF frequency **Returns:** Returning a non-null value overrides default behavior ```csharp object OnRfListenerRemove(IRFObject obj, int frequency) { Puts("OnRfListenerRemove works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnRfFrequencyChange` - Called when a player tries to change the frequency of an RF broadcaster or receiver - Useful for preventing particular reserved frequencies from being selected **Returns:** Returning a non-null value overrides default behavior ```csharp object OnRfFrequencyChange(IRFObject obj, int frequency, BasePlayer player) { Puts("OnRfFrequencyChange works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnRfFrequencyChanged` - Called after a player has changed the frequency of an RF broadcaster or receiver **Returns:** No return behavior ```csharp void OnRfFrequencyChanged(IRFObject obj, int frequency, BasePlayer player) { Puts("OnRfFrequencyChanged works!"); } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnRfListenerRemoved` - Called right after an object has stopped listening to an RF frequency **Returns:** No return behavior ```csharp void OnRfListenerRemoved(IRFObject obj, int frequency) { Puts("OnRfListenerRemoved works!"); } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnSleepingBagDestroy` - Called when a player tries to remove a sleeping bag from their respawn screen **Returns:** Returning a non-null value overrides default behavior ```csharp object OnSleepingBagDestroy(SleepingBag sleepingBag, BasePlayer player) { Puts("OnSleepingBagDestroy works!"); return null; } ``` Tags: `sleeping`, `entity` · uMod last updated 2021-05-08 ### `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`) - 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 **Returns:** Returning a non-null value prevents Rust from applying the proposed subscription changes ```csharp object OnNetworkSubscriptionsUpdate(Network.Networkable networkable, List groupsToAdd, List groupsToRemove) { Puts("OnNetworkSubscriptionsUpdate works!"); } ``` Tags: `network`, `player` · uMod last updated 2023-08-11 ### `OnSleepingBagDestroyed` - Called after a player removes a sleeping bag from their respawn screen **Returns:** No return behavior ```csharp void OnSleepingBagDestroyed(SleepingBag sleepingBag, BasePlayer player) { Puts("OnSleepingBagDestroyed works!"); } ``` Tags: `sleeping`, `entity` · uMod last updated 2022-01-17 ### `OnBookmarkInput` - Called when input is received from a player who is using a computer station with a bookmark selected **Returns:** Returning a non-null value overrides default behavior ```csharp object OnBookmarkInput(ComputerStation computerStation, BasePlayer player, InputState inputState) { Puts("OnBookmarkInput works!"); return null; } ``` Tags: `bookmark`, `entity` · uMod last updated 2021-05-08 ### `OnEntityControl` - Called when a player tries to remote control an entity **Returns:** Returning true or false overrides default behavior ```csharp object OnEntityControl(IRemoteControllable entity) { Puts("OnEntityControl works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnTurretRotate` - Called when a player tries to rotate an auto turret **Returns:** Returning a non-null value overrides default behavior ```csharp object OnTurretRotate(AutoTurret turret, BasePlayer player) { Puts("OnTurretRotate works!"); return null; } ``` Tags: `turret`, `entity` · uMod last updated 2021-05-08 ### `OnCounterTargetChange` - Called when a player tries to change the target number of a power counter **Returns:** Returning a non-null value overrides default behavior ```csharp object OnCounterTargetChange(PowerCounter counter, BasePlayer player, int targetNumber) { Puts("OnCounterTargetChange works!"); return null; } ``` Tags: `counter`, `entity` · uMod last updated 2021-05-08 ### `OnCounterModeToggle` - Called when a player ties to toggle a power counter between modes **Returns:** Returning a non-null value overrides default behavior ```csharp object OnCounterModeToggle(PowerCounter counter, BasePlayer player, bool mode) { Puts("OnCounterModeToggle works!"); return null; } ``` Tags: `counter`, `entity` · uMod last updated 2021-05-08 ### `OnSwitchToggle` - Called when a player tries to switch and ElectricSwitch or FuelGenerator **Returns:** Returning a non-null value cancels default behavior ```csharp object OnSwitchToggle(IOEntity entity, BasePlayer player) { Puts("OnSwitchToggle works!"); return null; } ``` Tags: `switch`, `entity` · uMod last updated 2021-05-08 ### `OnSwitchToggled` - Called right after a player switches an ElectricSwitch or FuelGenerator **Returns:** No return behavior ```csharp void OnSwitchToggled(IOEntity entity, BasePlayer player) { Puts("OnSwitchToggled works!"); } ``` Tags: `switch`, `entity` · uMod last updated 2021-05-08 ### `OnEntityDestroy` - Called right before a CH47Helicopter or BradleyAPC is destroyed **Returns:** Returning a non-null value overrides default behavior ```csharp object OnEntityDestroy(BaseCombatEntity entity) { Puts("OnEntityDestroy works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnElevatorButtonPress` - Called when a player presses a button on an elevator lift **Returns:** Returning a non-null value overrides default behavior ```csharp object OnElevatorButtonPress(ElevatorLift lift, BasePlayer player, Elevator.Direction direction, bool toTopOrBottom) { Puts("OnElevatorButtonPress works!"); return null; } ``` Tags: `elevator`, `entity` · uMod last updated 2021-05-08 ### `OnElevatorCall` - Called when an elevator lift is called to a specific floor by electricity **Returns:** Returning a non-null value overrides default behavior ```csharp object OnElevatorCall(Elevator elevator, Elevator topElevator) { Puts("OnElevatorCall works!"); return null; } ``` Tags: `elevator`, `entity` · uMod last updated 2021-05-08 ### `OnElevatorMove` - Called right before an elevator starts moving to the target floor **Returns:** Returning a non-null value overrides default behavior ```csharp object OnElevatorMove(Elevator topElevator, int targetFloor) { Puts("OnElevatorMove works!"); return null; } ``` Tags: `elevator`, `entity` · uMod last updated 2021-05-08 ### `CanSwapToSeat` - Called when a player tries to switch seats, to determine whether each seat is eligible to be swapped to **Returns:** Returning true or false overrides default behavior ```csharp bool CanSwapToSeat(BasePlayer player, BaseMountable mountable) { Puts("CanSwapToSeat works!"); return true; } ``` Tags: `swap`, `entity` · uMod last updated 2021-05-08 ### `OnRidableAnimalClaim` - Called when a player tries to claim a horse **Returns:** Returning a non-null value overrides default behavior ```csharp object OnRidableAnimalClaim(BaseRidableAnimal animal, BasePlayer player) { Puts("OnRidableAnimalClaim works!"); return null; } ``` Tags: `ridable`, `entity` · uMod last updated 2021-05-08 ### `OnRidableAnimalClaimed` - Called after a player has claimed a horse **Returns:** No return behavior ```csharp void OnRidableAnimalClaimed(BaseRidableAnimal animal, BasePlayer player) { Puts("OnRidableAnimalClaimed works!"); } ``` Tags: `ridable`, `entity` · uMod last updated 2021-05-08 ### `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 **Returns:** No return behavior ```csharp void OnEntitySaved(BaseNetworkable entity, BaseNetworkable.SaveInfo saveInfo) { Puts("OnEntitySaved works!"); } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnEntitySnapshot` - Called when an entity snapshot is about to be sent to a client connection **Returns:** Returning a non-null value overrides default behavior ```csharp object OnEntitySnapshot(BaseNetworkable entity, Connection connection) { Puts("OnEntitySnapshot works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnEntityFlagsNetworkUpdate` - Called after an entity's flags have been updated on the server, before they are sent over the network **Returns:** Returning a non-null value overrides default behavior ```csharp object OnEntityFlagsNetworkUpdate(BaseEntity entity) { Puts("OnEntityFlagsNetworkUpdate works!"); return null; } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `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 **Returns:** No return behavior ```csharp void OnIORefCleared(IOEntity.IORef ioRef, IOEntity ioEntity) { Puts("OnIORefCleared works!"); } ``` Tags: `entity` · uMod last updated 2021-05-08 ### `OnSupplyDropDropped` - Called right after a cargo plane has dropped a supply drop **Returns:** No return behavior ```csharp void OnSupplyDropDropped(SupplyDrop supplyDrop, CargoPlane cargoPlane) { Puts("OnSupplyDropDropped works!"); } ``` Tags: `supply`, `entity` · uMod last updated 2021-05-08 ### `OnCargoPlaneSignaled` - Called right after a supply signal has called a cargo plane **Returns:** No return behavior ```csharp void OnCargoPlaneSignaled(CargoPlane cargoPlane, SupplySignal supplySignal) { Puts("OnCargoPlaneSignaled works!"); } ``` Tags: `cargo`, `entity` · uMod last updated 2021-05-08 ### `OnWaterPurify` - Called when salt water is about to be converted to fresh water in a water purifier **Returns:** Returning a non-null value cancels default behavior ```csharp object OnWaterPurify(WaterPurifier waterPurifier, float timeCooked) { Puts("OnWaterPurify works!"); return null; } ``` Tags: `item` · uMod last updated 2021-05-08 ### `OnWaterPurified` - Called after salt water has been converted to fresh water in a water purifier **Returns:** No return behavior ```csharp void OnWaterPurified(WaterPurifier waterPurifier, float timeCooked) { Puts("OnWaterPurified works!"); } ``` Tags: `item` · uMod last updated 2021-05-08 ### `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 **Returns:** Returning true or false overrides default behavior ```csharp bool? OnSleepingBagValidCheck(SleepingBag bag, ulong targetPlayerID, bool ignoreTimers) { Puts("OnSleepingBagValidCheck works!"); return null; } ``` Tags: `item` · uMod last updated 2021-06-12 ### `OnCCTVDirectionChange` - Called when a player attempts to change the direction of a CCTV camera to face them **Returns:** Returning a non-null value cancels default behavior ```csharp object OnCCTVDirectionChange(CCTV_RC camera, BasePlayer player) { Puts("OnCCTVDirectionChange works!"); return null; } ``` Tags: `entity` · uMod last updated 2022-01-24 ### `OnWaterCollect` - Called when a water catcher is about to collect water **Returns:** Returning a non-null value cancels default behavior ```csharp object OnWaterCollect(WaterCatcher waterCatcher) { Puts("OnWaterCollect works!"); return null; } ``` Tags: `entity`, `item` · uMod last updated 2021-07-03 ### `OnLiquidVesselFill` - Called when a player is attempting to fill a liquid vessel **Returns:** Returning a non-null value cancels default behavior ```csharp object OnLiquidVesselFill(BaseLiquidVessel liquidVessel, BasePlayer player, LiquidContainer facingLiquidContainer) { Puts("OnLiquidVesselFill works!"); return null; } ``` Tags: `entity`, `item` · uMod last updated 2021-07-03 ### `OnLockerSwap` - Called when a player clicks the "Swap" button while viewing a locker interface **Returns:** Returning non-null value overrides default behavior ```csharp object OnLockerSwap(Locker locker, int startIndex, BasePlayer player) { Puts("OnLockerSwap works!"); return null; } ``` Tags: `entity`, `locker` · uMod last updated 2023-12-10 ### `CanLockerAcceptItem` - Called before an item is attempted to be placed inside a locker **Returns:** Returning true or false overrides default behavior ```csharp object CanLockerAcceptItem(Locker locker, Item item, int targetPos) { Puts("CanLockerAcceptItem works!"); return null; } ``` Tags: `entity`, `locker` · uMod last updated 2023-12-10 --- ## Item Hooks *Item stacks and containers: add, remove, split, stack, move, repair, research, craft, use.* 43 hooks: [`CanAcceptItem`](#canacceptitem), [`CanDropActiveItem`](#candropactiveitem), [`OnBackpackDrop`](#onbackpackdrop), [`OnCardSwipe`](#oncardswipe), [`OnItemRemove`](#onitemremove), [`OnMapImageUpdated`](#onmapimageupdated), [`CanCombineDroppedItem`](#cancombinedroppeditem), [`CanMoveItem`](#canmoveitem), [`CanStackItem`](#canstackitem), [`OnFuelConsume`](#onfuelconsume), [`OnFuelConsumed`](#onfuelconsumed), [`OnFindBurnable`](#onfindburnable), [`OnHealingItemUse`](#onhealingitemuse), [`OnItemAction`](#onitemaction), [`OnItemAddedToContainer`](#onitemaddedtocontainer), [`OnItemCraft`](#onitemcraft), [`OnItemCraftCancelled`](#onitemcraftcancelled), [`OnItemCraftFinished`](#onitemcraftfinished), [`OnItemDeployed`](#onitemdeployed), [`OnItemDropped`](#onitemdropped), [`OnItemPickup`](#onitempickup), [`OnItemRemovedFromContainer`](#onitemremovedfromcontainer), [`OnItemRepair`](#onitemrepair), [`OnItemResearch`](#onitemresearch), [`OnItemResearched`](#onitemresearched), [`OnResearchCostDetermine`](#onresearchcostdetermine), [`OnItemSplit`](#onitemsplit), [`OnItemUpgrade`](#onitemupgrade), [`OnItemUse`](#onitemuse), [`OnLoseCondition`](#onlosecondition), [`OnMaxStackable`](#onmaxstackable), [`OnTrapArm`](#ontraparm), [`OnTrapDisarm`](#ontrapdisarm), [`OnTrapSnapped`](#ontrapsnapped), [`OnTrapTrigger`](#ontraptrigger), [`OnBonusItemDrop`](#onbonusitemdrop), [`OnBonusItemDropped`](#onbonusitemdropped), [`OnItemRefill`](#onitemrefill), [`OnItemLock`](#onitemlock), [`OnItemUnlock`](#onitemunlock), [`OnItemSubmit`](#onitemsubmit), [`OnItemStacked`](#onitemstacked), [`OnIngredientsCollect`](#oningredientscollect) ### `CanAcceptItem` - Called when attempting to put an item in a container **Returns:** Returning CanAcceptResult value overrides default behavior ```csharp ItemContainer.CanAcceptResult? CanAcceptItem(ItemContainer container, Item item, int targetPos) { Puts("CanAcceptItem works!"); return null; } ``` Tags: `accept`, `item` · uMod last updated 2021-05-08 ### `CanDropActiveItem` - Called when a player attempts to drop their active item **Returns:** Returning true or false overrides default behavior ```csharp bool CanDropActiveItem(BasePlayer player) { Puts("CanDropActiveItem works!"); return true; } ``` Tags: `drop`, `item` · uMod last updated 2021-05-08 ### `OnBackpackDrop` - Called just before a backpack is dropped from a player on death. **Returns:** Return non-null to override default behaviour. ```csharp object OnBackpackDrop(Item backpack, BasePlayer player) { Puts("OnBackpackDrop works!"); return null; } ``` Tags: `rust` · uMod last updated 2024-05-08 ### `OnCardSwipe` - Called when a player is trying to swipe a card **Returns:** Returning a non-null value cancels default behavior ```csharp object OnCardSwipe(CardReader cardReader, Keycard card, BasePlayer player) { Puts("OnCardSwipe works!"); return null; } ``` Tags: `card`, `item` · uMod last updated 2021-05-08 ### `OnItemRemove` - Called before an item is destroyed **Returns:** Return a non-null value stop item from being destroyed ```csharp // Example that stops item from being destroyed object OnItemRemove(Item item) { Puts("OnItemRemove works!"); return null; } ``` ```csharp // Example that does not stop item from being destroyed void OnItemRemove(Item item) { Puts("OnItemRemove works!"); } ``` Tags: `item` · uMod last updated 2022-01-17 ### `OnMapImageUpdated` - Called when player updates map item's image - Useful for executing any action when map image is updated **Returns:** No return behavior ```csharp void OnMapImageUpdated() { Puts("OnMapImageUpdated works!"); } ``` Tags: `item` · uMod last updated 2021-05-08 ### `CanCombineDroppedItem` - Called when an item is dropped on another item **Returns:** Returning a non-null value overwrites command arguments ```csharp object CanCombineDroppedItem(DroppedItem item, DroppedItem targetItem) { Puts("CanCombineDroppedItem works!"); return null; } ``` Tags: `combine`, `item` · uMod last updated 2021-05-08 ### `CanMoveItem` - Called when moving an item from one inventory slot to another **Returns:** Returning a non-null value overrides default behavior ```csharp object CanMoveItem(Item item, PlayerInventory playerLoot, ItemContainerId targetContainer, int targetSlot, int amount, ItemMoveModifier itemMoveModifier) { Puts("CanMoveItem works!"); return null; } ``` Tags: `move`, `item` · uMod last updated 2024-02-02 ### `CanStackItem` - Called when moving an item onto another item **Returns:** Returning true or false overrides default behavior ```csharp bool CanStackItem(Item item, Item targetItem) { Puts("CanStackItem works!"); return true; } ``` Tags: `stack`, `item` · uMod last updated 2021-05-08 ### `OnFuelConsume` - Called right before fuel is used (furnace, lanterns, camp fires, etc.) **Returns:** Returning a non-null value overrides default behavior ```csharp object OnFuelConsume(BaseOven oven, Item fuel, ItemModBurnable burnable) { Puts("OnFuelConsume works!"); return null; } ``` Tags: `fuel`, `item` · uMod last updated 2021-05-08 ### `OnFuelConsumed` - Called after fuel is used (furnace, lanterns, camp fires, etc.) **Returns:** No return behavior ```csharp void OnFuelConsumed(BaseOven oven, Item fuel, ItemModBurnable burnable) { Puts("OnFuelConsumed works!"); } ``` Tags: `fuel`, `item` · uMod last updated 2021-05-08 ### `OnFindBurnable` - Called when looking for fuel for the oven **Returns:** Returning an Item overrides default behavior ```csharp Item OnFindBurnable(BaseOven oven) { Puts("OnFindBurnable works!"); return null; } ``` Tags: `find`, `item` · uMod last updated 2022-10-05 ### `OnHealingItemUse` - Called when a player attempts to use a medical tool **Returns:** Returning a non-null value overrides default behavior ```csharp object OnHealingItemUse(MedicalTool tool, BasePlayer player) { Puts("OnHealingItemUse works!"); return null; } ``` Tags: `healing`, `item` · uMod last updated 2021-05-08 ### `OnItemAction` - Called when a button is clicked on an item in the inventory (drop, unwrap, ...) **Returns:** Returning a non-null value overrides default behavior ```csharp object OnItemAction(Item item, string action, BasePlayer player) { Puts("OnItemAction works!"); return null; } ``` Tags: `item` · uMod last updated 2021-05-08 ### `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 **Returns:** No return behavior ```csharp void OnItemAddedToContainer(ItemContainer container, Item item) { Puts("OnItemAddedToContainer works!"); } ``` Tags: `item` · uMod last updated 2021-05-08 ### `OnItemCraft` - Called just before an item is added to the crafting queue **Returns:** Returning true or false overrides default behavior ```csharp object OnItemCraft(ItemCraftTask task, BasePlayer player, Item item) { Puts("OnItemCraft works!"); return null; } ``` Tags: `item` · uMod last updated 2023-10-11 ### `OnItemCraftCancelled` - Called before an item has been crafted **Returns:** No return behavior ```csharp void OnItemCraftCancelled(ItemCraftTask task) { Puts("OnItemCraftCancelled works!"); } ``` Tags: `item` · uMod last updated 2021-05-08 ### `OnItemCraftFinished` - Called right after an item has been crafted **Returns:** No return behavior ```csharp void OnItemCraftFinished(ItemCraftTask task, Item item) { Puts("OnItemCraftFinished works!"); } ``` Tags: `item` · uMod last updated 2021-05-08 ### `OnItemDeployed` - Called right after an item has been deployed **Returns:** No return behavior ```csharp void OnItemDeployed(Deployer deployer, BaseEntity entity, BaseEntity slotEntity) { Puts("OnItemDeployed works!"); } ``` Tags: `item` · uMod last updated 2021-05-08 ### `OnItemDropped` - Called right after an item has been dropped **Returns:** No return behavior ```csharp void OnItemDropped(Item item, BaseEntity entity) { Puts("OnItemDropped works!"); } ``` Tags: `item` · uMod last updated 2021-05-08 ### `OnItemPickup` - Called right after an item has been picked up **Returns:** Returning a non-null value overrides default behavior ```csharp object OnItemPickup(Item item, BasePlayer player) { Puts("OnItemPickup works!"); return null; } ``` Tags: `item` · uMod last updated 2021-05-08 ### `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 **Returns:** No return behavior ```csharp void OnItemRemovedFromContainer(ItemContainer container, Item item) { Puts("OnItemRemovedFromContainer works!"); } ``` Tags: `item` · uMod last updated 2021-05-08 ### `OnItemRepair` - Called right before an item is repaired **Returns:** Returning a non-null value overrides default behavior ```csharp object OnItemRepair(BasePlayer player, Item item) { Puts("OnItemRepair works!"); return null; } ``` Tags: `item` · uMod last updated 2021-07-21 ### `OnItemResearch` - Called right before a player begins to research an item **Returns:** No return behavior ```csharp void OnItemResearch(ResearchTable table, Item targetItem, BasePlayer player) { Puts("OnItemResearch works!"); } ``` Tags: `item` · uMod last updated 2021-05-08 ### `OnItemResearched` - Called right before a player finishes researching an item **Returns:** Returning a float will affect if researching is successful or not ```csharp float OnItemResearched(ResearchTable table, float chance) { Puts("OnItemResearched works!"); return 1; } ``` Tags: `item` · uMod last updated 2021-05-08 ### `OnResearchCostDetermine` - Called when an item is being scrapped at a research table or when a blueprint is being unlocked in a tech tree **Returns:** Returning a numeric value (int) overrides the default value ```csharp object OnResearchCostDetermine(Item item, ResearchTable researchTable) { Puts("OnResearchCostDetermine works!"); return null; } ``` ```csharp object OnResearchCostDetermine(ItemDefinition itemDefinition) { Puts("OnResearchCostDetermine works!"); return null; } ``` Tags: `research`, `item` · uMod last updated 2021-05-08 ### `OnItemSplit` - Called right before an item is split into multiple stacks **Returns:** Returning an Item overrides default behavior ```csharp Item OnItemSplit(Item item, int amount) { Puts("OnItemSplit works!"); return null; } ``` Tags: `item` · uMod last updated 2021-05-08 ### `OnItemUpgrade` - Called right before an item is upgraded **Returns:** No return behavior ```csharp void OnItemUpgrade(Item item, Item upgraded, BasePlayer player) { Puts("OnItemUpgrade works!"); } ``` Tags: `item` · uMod last updated 2021-05-08 ### `OnItemUse` - Called when an item is used **Returns:** Returning an int overrides the amount consumed. ```csharp int OnItemUse(Item item, int amountToUse) { Puts("OnItemUse works!"); return amountToUse; } ``` Tags: `item` · uMod last updated 2022-07-27 ### `OnLoseCondition` - Called right before the condition of the item is modified **Returns:** No return behavior ```csharp void OnLoseCondition(Item item, ref float amount) { Puts("OnLoseCondition works!"); } ``` Tags: `lose`, `item` · uMod last updated 2021-05-08 ### `OnMaxStackable` - Called when an items max stackable is calculated **Returns:** Returning a numeric value (int) overrides the default value ```csharp int OnMaxStackable(Item item) { Puts("OnMaxStackable works!"); return 1; } ``` Tags: `item` · uMod last updated 2021-05-08 ### `OnTrapArm` - Called when the player arms a bear trap **Returns:** Returning a non-null value overrides default behavior ```csharp object OnTrapArm(BearTrap trap, BasePlayer player) { Puts("OnTrapArm works!"); return null; } ``` Tags: `trap`, `item` · uMod last updated 2021-05-08 ### `OnTrapDisarm` - Called when the player disarms a land mine **Returns:** Returning a non-null value overrides default behavior ```csharp object OnTrapDisarm(Landmine trap, BasePlayer player) { Puts("OnTrapDisarm works!"); return null; } ``` Tags: `trap`, `item` · uMod last updated 2021-05-08 ### `OnTrapSnapped` - Called when a trap is triggered by a game object **Returns:** No return behavior ```csharp void OnTrapSnapped(BaseTrapTrigger trap, GameObject go) { Puts("OnTrapSnapped works!"); } ``` Tags: `trap`, `item` · uMod last updated 2021-05-08 ### `OnTrapTrigger` - Called when a trap is triggered by a game object **Returns:** Returning a non-null value overrides default behavior ```csharp object OnTrapTrigger(BaseTrap trap, GameObject go) { Puts("OnTrapTrigger works!"); return null; } ``` Tags: `trap`, `item` · uMod last updated 2021-05-08 ### `OnBonusItemDrop` - Called when a loot container is about to drop bonus scrap for a player who has a corresponding tea buff **Returns:** Returning a non-null value overrides default behavior ```csharp object OnBonusItemDrop(Item item, BasePlayer player) { Puts("OnBonusItemDrop works!"); return null; } ``` Tags: `bonus`, `item` · uMod last updated 2021-05-08 ### `OnBonusItemDropped` - Called after a loot container has dropped bonus scrap for a player who has a corresponding tea buff **Returns:** No return behavior ```csharp void OnBonusItemDropped(Item item, BasePlayer player) { Puts("OnBonusItemDropped works!"); } ``` Tags: `bonus`, `item` · uMod last updated 2021-05-08 ### `OnItemRefill` - Called right before an item such as a diving tank is repaired without using a repair bench **Returns:** Returning a non-null value overrides default behavior ```csharp object OnItemRefill(Item item, BasePlayer player) { Puts("OnItemRefill works!"); return null; } ``` Tags: `item` · uMod last updated 2021-05-08 ### `OnItemLock` - Called right before an item is locked, such as in a modular car inventory **Returns:** Returning a non-null value overrides default behavior ```csharp object OnItemLock(Item item) { Puts("OnItemLock works!"); return null; } ``` Tags: `item` · uMod last updated 2021-05-08 ### `OnItemUnlock` - Called right before an item is unlocked, such as in a modular car inventory **Returns:** Returning a non-null value overrides default behavior ```csharp object OnItemUnlock(Item item) { Puts("OnItemUnlock works!"); return null; } ``` Tags: `item` · uMod last updated 2021-05-08 ### `OnItemSubmit` - Called when a player submits an item into a mailbox or dropbox **Returns:** Returning a non-null value cancels default behavior ```csharp object OnItemSubmit(Item item, Mailbox mailbox, BasePlayer player) { Puts("OnItemSubmit works!"); return null; } ``` Tags: `item` · uMod last updated 2021-05-08 ### `OnItemStacked` - Called after an item has been stacked **Returns:** No return behavior ```csharp void OnItemStacked(Item destinationItem, Item sourceItem, ItemContainer destinationContainer) { Puts("OnItemStacked works!"); } ``` Tags: `item` · uMod last updated 2021-05-08 ### `OnIngredientsCollect` - Called when ingredients are about to be collected for crafting an item **Returns:** Returning a non-null value cancels default behavior ```csharp bool? OnIngredientsCollect(ItemCrafter itemCrafter, ItemBlueprint blueprint, ItemCraftTask task, int amount, BasePlayer player) { Puts("OnIngredientsCollect works!"); return null; } ``` Tags: `craft` · uMod last updated 2021-06-12 --- ## Resource Hooks *Gathering and node dispensers — ore, trees, corpses, collectibles, quarries.* 12 hooks: [`CanTakeCutting`](#cantakecutting), [`OnCollectiblePickup`](#oncollectiblepickup), [`OnGrowableGathered`](#ongrowablegathered), [`OnQuarryToggled`](#onquarrytoggled), [`OnRemoveDying`](#onremovedying), [`OnGrowableGather`](#ongrowablegather), [`OnDispenserBonus`](#ondispenserbonus), [`OnDispenserGather`](#ondispensergather), [`OnQuarryEnabled`](#onquarryenabled), [`OnTreeMarkerHit`](#ontreemarkerhit), [`OnQuarryGather`](#onquarrygather), [`OnSurveyGather`](#onsurveygather) ### `CanTakeCutting` - Called when a player is trying to take a cutting (clone) of a GrowableEntity **Returns:** Returning a non-null value cancels default behavior ```csharp object CanTakeCutting(BasePlayer player, GrowableEntity entity) { Puts("CanTakeCutting works!"); return null; } ``` Tags: `take`, `resource` · uMod last updated 2022-01-24 ### `OnCollectiblePickup` - Called when the player collects an item **Returns:** Returning a non-null value overrides default behavior ```csharp object OnCollectiblePickup(CollectibleEntity collectible, BasePlayer player) { Puts("OnCollectiblePickup works!"); return null; } ``` Tags: `collectible`, `resource` · uMod last updated 2022-08-14 ### `OnGrowableGathered` - Called before the player receives an item from gathering a growable entity **Returns:** No return behavior ```csharp void OnGrowableGathered(GrowableEntity plant, Item item, BasePlayer player) { Puts($"{player.displayName} has gathered {item.info.shortname} x {item.amount}."); } ``` Tags: `growable`, `resource` · uMod last updated 2021-05-08 ### `OnQuarryToggled` - Called when a quarry has just been toggled **Returns:** No return behavior ```csharp void OnQuarryToggled(MiningQuarry quarry, BasePlayer player) { Puts($"{player.displayName} has toggled a quarry"); } ``` Tags: `quarry`, `resource` · uMod last updated 2021-05-08 ### `OnRemoveDying` - Called when a player is trying to harvest a dying growable entity **Returns:** Returning a non-null value overrides default behavior ```csharp object OnRemoveDying(GrowableEntity plant, BasePlayer player) { Puts("OnRemoveDying works!"); return null; } ``` Tags: `remove`, `resource` · uMod last updated 2021-05-08 ### `OnGrowableGather` - Called when the player gathers a growable entity **Returns:** Returning a non-null value overrides default behavior ```csharp object OnGrowableGather(GrowableEntity plant, BasePlayer player) { Puts("OnGrowableGather works!"); return null; } ``` Tags: `growable`, `resource` · uMod last updated 2021-05-08 ### `OnDispenserBonus` - Called before the player is given a bonus item for gathering **Returns:** Returning an Item replaces the existing Item ```csharp void OnDispenserBonus(ResourceDispenser dispenser, BasePlayer player, Item item) { Puts("OnDispenserBonus works!"); } ``` Tags: `dispenser`, `resource` · uMod last updated 2021-10-19 ### `OnDispenserGather` - Called before the player is given items from a resource **Returns:** Returning a non-null value overrides default behavior ```csharp object OnDispenserGather(ResourceDispenser dispenser, BasePlayer player, Item item) { Puts("OnDispenserGather works!"); return null; } ``` Tags: `dispenser`, `resource` · uMod last updated 2023-05-04 ### `OnQuarryEnabled` - Called when a mining quarry is turned on/enabled **Returns:** No return behavior ```csharp void OnQuarryEnabled(MiningQuarry quarry) { Puts("OnQuarryEnabled works!"); } ``` Tags: `quarry`, `resource` · uMod last updated 2021-05-08 ### `OnTreeMarkerHit` - Called when a player hits a tree with a tool (rock, hatchet, etc.) **Returns:** Returning true or false overrides default behaviour ```csharp bool? OnTreeMarkerHit(TreeEntity tree, HitInfo info) { Puts("OnTreeMarkerHit works!"); return null; } ``` Tags: `resource`, `tree` · uMod last updated 2022-04-11 ### `OnQuarryGather` - Called before items are gathered from a quarry **Returns:** No return behavior ```csharp void OnQuarryGather(MiningQuarry quarry, Item item) { Puts("OnQuarryGather works!"); } ``` Tags: `quarry`, `resource` · uMod last updated 2021-05-08 ### `OnSurveyGather` - Called before items are gathered from a survey charge **Returns:** No return behavior ```csharp void OnSurveyGather(SurveyCharge survey, Item item) { Puts("OnSurveyGather works!"); } ``` Tags: `survey`, `resource` · uMod last updated 2021-05-08 --- ## Structure Hooks *Building blocks: placement, upgrade, demolish, rotate, stability, doors and locks.* 15 hooks: [`OnCodeEntered`](#oncodeentered), [`OnCupboardAuthorize`](#oncupboardauthorize), [`OnCupboardClearList`](#oncupboardclearlist), [`OnCupboardDeauthorize`](#oncupboarddeauthorize), [`OnDoorClosed`](#ondoorclosed), [`OnDoorOpened`](#ondooropened), [`OnDoorKnocked`](#ondoorknocked), [`OnEntityBuilt`](#onentitybuilt), [`OnHammerHit`](#onhammerhit), [`OnStructureDemolish`](#onstructuredemolish), [`OnStructureRepair`](#onstructurerepair), [`OnStructureRotate`](#onstructurerotate), [`OnStructureUpgrade`](#onstructureupgrade), [`OnConstructionPlace`](#onconstructionplace), [`OnBuildingSplit`](#onbuildingsplit) ### `OnCodeEntered` - Called when the player has entered a code in a codelock **Returns:** Returning a non-null value overrides default behavior ```csharp object OnCodeEntered(CodeLock codeLock, BasePlayer player, string code) { Puts("OnCodeEntered works!"); return null; } ``` Tags: `code`, `structure` · uMod last updated 2021-05-08 ### `OnCupboardAuthorize` - Called when a cupboard attempts to authorize a player **Returns:** Returning a non-null value overrides default behavior ```csharp object OnCupboardAuthorize(BuildingPrivlidge privilege, BasePlayer player) { Puts("OnCupboardAuthorize works!"); return null; } ``` Tags: `cupboard`, `structure` · uMod last updated 2021-05-08 ### `OnCupboardClearList` - Called when an attempt is made to clear a cupboard authorized list **Returns:** Returning a non-null value overrides default behavior ```csharp object OnCupboardClearList(BuildingPrivlidge privilege, BasePlayer player) { Puts("OnCupboardClearList works!"); return null; } ``` Tags: `cupboard`, `structure` · uMod last updated 2021-05-08 ### `OnCupboardDeauthorize` - Called when a cupboard attempts to deauthorize a player **Returns:** Returning a non-null value overrides default behavior ```csharp object OnCupboardDeauthorize(BuildingPrivlidge privilege, BasePlayer player) { Puts("OnCupboardDeauthorize works!"); return null; } ``` Tags: `cupboard`, `structure` · uMod last updated 2021-05-08 ### `OnDoorClosed` - Called when the player closed a door **Returns:** No return behavior ```csharp void OnDoorClosed(Door door, BasePlayer player) { Puts("OnDoorClosed works!"); } ``` Tags: `door`, `structure` · uMod last updated 2021-05-08 ### `OnDoorOpened` - Called when the player opened a door **Returns:** No return behavior ```csharp void OnDoorOpened(Door door, BasePlayer player) { Puts("OnDoorOpened works!"); } ``` Tags: `door`, `structure` · uMod last updated 2021-05-08 ### `OnDoorKnocked` - Called when the player knocks on a door **Returns:** No return behavior ```csharp void OnDoorKnocked(Door door, BasePlayer player) { Puts("OnDoorKnocked works!"); } ``` Tags: `door`, `structure` · uMod last updated 2021-05-08 ### `OnEntityBuilt` - Called when any structure is built (walls, ceilings, stairs, etc.) **Returns:** No return behavior ```csharp void OnEntityBuilt(Planner plan, GameObject go) { Puts("OnEntityBuilt works!"); } ``` Tags: `entity`, `structure` · uMod last updated 2021-05-08 ### `OnHammerHit` - Called when the player has hit something with a hammer **Returns:** Returning a non-null value overrides default behavior ```csharp object OnHammerHit(BasePlayer player, HitInfo info) { Puts("OnHammerHit works!"); return null; } ``` Tags: `hammer`, `structure` · uMod last updated 2021-05-08 ### `OnStructureDemolish` - Called when the player selects Demolish or DemolishImmediate from the BuildingBlock or BaseCombatEntity menu **Returns:** Returning a non-null value overrides default behavior ```csharp object OnStructureDemolish(BaseCombatEntity entity, BasePlayer player, bool immediate) { Puts("OnStructureDemolish works!"); return null; } ``` Tags: `structure` · uMod last updated 2021-05-08 ### `OnStructureRepair` - Called when the player repairs a BuildingBlock or BaseCombatEntity **Returns:** Returning a non-null value cancels repair ```csharp object OnStructureRepair(BaseCombatEntity entity, BasePlayer player) { Puts("OnStructureRepair works!"); return null; } ``` Tags: `structure` · uMod last updated 2021-05-08 ### `OnStructureRotate` - Called when the player rotates a BuildingBlock or BaseCombatEntity **Returns:** Returning a non-null value cancels rotate ```csharp object OnStructureRotate(BaseCombatEntity entity, BasePlayer player) { Puts("OnStructureRotate works!"); return null; } ``` Tags: `structure` · uMod last updated 2021-05-08 ### `OnStructureUpgrade` - Called when the player upgrades the grade of a BuildingBlock or BaseCombatEntity **Returns:** Returning a non-null value overrides default behavior ```csharp object OnStructureUpgrade(BaseCombatEntity entity, BasePlayer player, BuildingGrade.Enum grade) { Puts("OnStructureUpgrade works!"); return null; } ``` Tags: `structure` · uMod last updated 2021-05-08 ### `OnConstructionPlace` - Called when a player tries to place a building block **Returns:** Returning a non-null value overrides default behavior ```csharp object OnConstructionPlace(BaseEntity entity, Construction component, Construction.Target constructionTarget, BasePlayer player) { Puts("OnConstructionPlace works!"); return null; } ``` Tags: `construction`, `structure` · uMod last updated 2021-05-08 ### `OnBuildingSplit` - Called when a building is split into two **Returns:** No return behavior ```csharp void OnBuildingSplit(BuildingManager.Building building, uint newBuildingId) { Puts("OnBuildingSplit works!"); } ``` Tags: `building`, `structure` · uMod last updated 2022-09-11 --- ## Terrain Hooks *Terrain/map topology.* 1 hook: [`OnTerrainInitialized`](#onterraininitialized) ### `OnTerrainInitialized` - Called after the terrain generation process has completed **Returns:** No return behavior ```csharp void OnTerrainInitialized() { Puts("OnTerrainInitialized works!"); } ``` Tags: `terrain` · uMod last updated 2021-05-08 --- ## Vending Hooks *Vending machines and the shop/trade flow, including the marketplace and drone deliveries.* 16 hooks: [`CanAdministerVending`](#canadministervending), [`OnGiveSoldItem`](#ongivesolditem), [`OnTakeCurrencyItem`](#ontakecurrencyitem), [`OnVendingShopRename`](#onvendingshoprename), [`CanUseVending`](#canusevending), [`CanVendingAcceptItem`](#canvendingacceptitem), [`OnAddVendingOffer`](#onaddvendingoffer), [`OnBuyVendingItem`](#onbuyvendingitem), [`OnDeleteVendingOffer`](#ondeletevendingoffer), [`OnOpenVendingAdmin`](#onopenvendingadmin), [`OnVendingShopOpened`](#onvendingshopopened), [`OnRefreshVendingStock`](#onrefreshvendingstock), [`OnRotateVendingMachine`](#onrotatevendingmachine), [`OnToggleVendingBroadcast`](#ontogglevendingbroadcast), [`OnVendingTransaction`](#onvendingtransaction), [`OnNpcGiveSoldItem`](#onnpcgivesolditem) ### `CanAdministerVending` - Called when a player attempts to administer a vending machine **Returns:** Returning true or false overrides default behavior ```csharp bool CanAdministerVending(BasePlayer player, VendingMachine machine) { Puts("CanAdministerVending works!"); return true; } ``` Tags: `administer`, `vending` · uMod last updated 2021-05-08 ### `OnGiveSoldItem` - Called before a sold item is given **Returns:** Returning a non-null value cancels default behavior ```csharp object OnGiveSoldItem(NPCVendingMachine vending, Item soldItem, BasePlayer buyer) { Puts("OnGiveSoldItem works!"); return null; } ``` ```csharp object OnGiveSoldItem(VendingMachine vending, Item soldItem, BasePlayer buyer) { Puts("OnGiveSoldItem works!"); return null; } ``` Tags: `give`, `vending` · uMod last updated 2022-01-17 ### `OnTakeCurrencyItem` - Called before currency item is taken **Returns:** Returning a non-null value cancels default behavior ```csharp object OnTakeCurrencyItem(VendingMachine vending, Item item) { Puts("OnTakeCurrencyItem works!"); return null; } ``` Tags: `take`, `vending` · uMod last updated 2021-05-08 ### `OnVendingShopRename` - Called when a player tries to rename vending shop **Returns:** Returning a non-null value cancels default behavior ```csharp object OnVendingShopRename(VendingMachine vending, string newName, BasePlayer player) { Puts("OnVendingShopRename works!"); return null; } ``` Tags: `vending` · uMod last updated 2021-05-08 ### `CanUseVending` - Called when a player attempts to use a vending machine **Returns:** Returning true or false overrides default behavior ```csharp bool CanUseVending(BasePlayer player, VendingMachine machine) { Puts("CanUseVending works!"); return true; } ``` Tags: `vending` · uMod last updated 2022-09-11 ### `CanVendingAcceptItem` - Called when a player attempts to administer a vending machine **Returns:** Returning true or false overrides default behavior ```csharp bool CanVendingAcceptItem(VendingMachine vending, Item item, int targetPos) { Puts("CanVendingAcceptItem works!"); return true; } ``` Tags: `vending` · uMod last updated 2021-05-08 ### `OnAddVendingOffer` - Called when a sell order/offer is added to a vending machine **Returns:** No return behavior ```csharp void OnAddVendingOffer(VendingMachine machine, ProtoBuf.VendingMachine.SellOrder sellOrder) { Puts("OnAddVendingOffer works!"); } ``` Tags: `vending` · uMod last updated 2021-05-08 ### `OnBuyVendingItem` - Called when a player buys an item from a vending machine **Returns:** Returning a non-null value overrides default behavior ```csharp object OnBuyVendingItem(VendingMachine machine, BasePlayer player, int sellOrderId, int numberOfTransactions) { Puts("OnBuyVendingItem works!"); return null; } ``` Tags: `vending` · uMod last updated 2021-05-08 ### `OnDeleteVendingOffer` - Called when a sell order/offer is deleted from a vending machine **Returns:** No return behavior ```csharp void OnDeleteVendingOffer(VendingMachine machine, int offerId) { Puts("OnDeleteVendingOffer works!"); } ``` Tags: `delete`, `vending` · uMod last updated 2021-05-08 ### `OnOpenVendingAdmin` - Called when a player opens the admin ui for a vending machine **Returns:** No return behavior ```csharp void OnOpenVendingAdmin(VendingMachine machine, BasePlayer player) { Puts("OnOpenVendingAdmin works!"); } ``` Tags: `open`, `vending` · uMod last updated 2021-05-08 ### `OnVendingShopOpened` - Called when a player opens the customer ui for a vending machine **Returns:** No return behavior ```csharp void OnVendingShopOpened(VendingMachine machine, BasePlayer player) { Puts("OnVendingShopOpened works!"); } ``` Tags: `open`, `vending` · uMod last updated 2022-09-12 ### `OnRefreshVendingStock` - Called when the stock on a vending machine is updated **Returns:** No return behavior ```csharp void OnRefreshVendingStock(VendingMachine machine, Item item) { Puts("OnRefreshVendingStock works!"); } ``` Tags: `refresh`, `vending` · uMod last updated 2021-05-08 ### `OnRotateVendingMachine` - Called when a player attempts to rotate a vending machine **Returns:** Returning a non-null value overrides default behavior ```csharp object OnRotateVendingMachine(VendingMachine machine, BasePlayer player) { Puts("OnRotateVendingMachine works!"); return null; } ``` Tags: `rotate`, `vending` · uMod last updated 2021-05-08 ### `OnToggleVendingBroadcast` - Called when a player toggles the broadcasting of the vending machine **Returns:** No return behavior ```csharp void OnToggleVendingBroadcast(VendingMachine machine, BasePlayer player) { Puts("OnToggleVendingBroadcast works!"); } ``` Tags: `toggle`, `vending` · uMod last updated 2021-05-08 ### `OnVendingTransaction` - Called when a player attempts to buy an item from a vending machine **Returns:** Returning true or false overrides default behavior ```csharp bool OnVendingTransaction(VendingMachine machine, BasePlayer buyer, int sellOrderId, int numberOfTransactions) { Puts("OnVendingTransaction works!"); return true; } ``` Tags: `vending` · uMod last updated 2021-05-08 ### `OnNpcGiveSoldItem` - Called before a non-player controlled vending machine (at outpost etc.) gives the player the item they purchased. **Returns:** Returning a non-null value overrides default behaviour. ```csharp object OnNpcGiveSoldItem(NPCVendingMachine machine, Item soldItem, BasePlayer buyer) { Puts("OnNpcGiveSoldItem works!"); return null; } ``` Tags: `vending` · uMod last updated 2021-05-10 --- ## Weapon Hooks *Firing, reloading, throwing, melee swings, projectile and trap behaviour.* 16 hooks: [`CanCreateWorldProjectile`](#cancreateworldprojectile), [`CanExplosiveStick`](#canexplosivestick), [`OnAmmoUnload`](#onammounload), [`OnExplosiveDud`](#onexplosivedud), [`OnExplosiveFuseSet`](#onexplosivefuseset), [`OnProjectileRicochet`](#onprojectilericochet), [`OnWorldProjectileCreate`](#onworldprojectilecreate), [`OnExplosiveDropped`](#onexplosivedropped), [`OnExplosiveThrown`](#onexplosivethrown), [`OnFlameThrowerBurn`](#onflamethrowerburn), [`OnMeleeThrown`](#onmeleethrown), [`OnMagazineReload`](#onmagazinereload), [`OnWeaponReload`](#onweaponreload), [`OnRocketLaunched`](#onrocketlaunched), [`OnAmmoSwitch`](#onammoswitch), [`OnWeaponFired`](#onweaponfired) ### `CanCreateWorldProjectile` - Called when the item creates a projectile in the world **Returns:** Returning a non-null value overrides default behavior ```csharp object CanCreateWorldProjectile(HitInfo info, ItemDefinition itemDef) { Puts("CanCreateWorldProjectile works!"); return null; } ``` Tags: `create`, `weapon` · uMod last updated 2021-05-08 ### `CanExplosiveStick` - Called when a Timed Explosive is attempting to stick to another entity **Returns:** Returning a non-null value overwrites the default behavior ```csharp object CanExplosiveStick(TimedExplosive explosive, BaseEntity entity) { Puts("CanExplosiveStick works!"); return null; } ``` Tags: `explosive`, `weapon` · uMod last updated 2023-07-12 ### `OnAmmoUnload` - Called when a player is trying to unload ammo **Returns:** Returning a non-null value cancels default behavior ```csharp object OnAmmoUnload(BaseProjectile projectile, Item item, BasePlayer player) { Puts("OnAmmoUnload works!"); return null; } ``` Tags: `ammo`, `weapon` · uMod last updated 2021-05-08 ### `OnExplosiveDud` - Called when explosive tries to become dud **Returns:** Returning a non-null value cancels default behavior ```csharp object OnExplosiveDud(DudTimedExplosive explosive) { Puts("OnExplosiveDud works!"); return null; } ``` Tags: `explosive`, `weapon` · uMod last updated 2021-05-08 ### `OnExplosiveFuseSet` - Called when a fuse of an explosive is set **Returns:** Returning a non-null value overwrites fuse length ```csharp object OnExplosiveFuseSet(TimedExplosive explosive, float fuseLength) { Puts("OnExplosiveFuseSet works!"); return null; } ``` Tags: `explosive`, `weapon` · uMod last updated 2021-05-08 ### `OnProjectileRicochet` - Called when a player's weapon projectile ricochets **Returns:** Returning a non-null value overrides default behavior ```csharp object OnProjectileRicochet(BasePlayer player, PlayerProjectileRicochet ricochet) { Puts("OnProjectileRicochet works!"); return null; } ``` Tags: `projectile`, `weapon` · uMod last updated 2021-05-08 ### `OnWorldProjectileCreate` - Called when a projectile is created **Returns:** Returning a non-null value overrides default behavior ```csharp object OnWorldProjectileCreate(HitInfo hitInfo, Item item) { Puts("OnWorldProjectileCreate works!"); return null; } ``` Tags: `create`, `weapon` · uMod last updated 2023-04-16 ### `OnExplosiveDropped` - Called when the player drops an explosive item (C4, grenade, ...) **Returns:** No return behavior ```csharp void OnExplosiveDropped(BasePlayer player, BaseEntity entity, ThrownWeapon item) { Puts("OnExplosiveDropped works!"); } ``` Tags: `explosive`, `weapon` · uMod last updated 2021-05-08 ### `OnExplosiveThrown` - Called when the player throws an explosive item (C4, grenade, ...) **Returns:** No return behavior ```csharp void OnExplosiveThrown(BasePlayer player, BaseEntity entity, ThrownWeapon item) { Puts("OnExplosiveThrown works!"); } ``` Tags: `explosive`, `weapon` · uMod last updated 2021-05-08 ### `OnFlameThrowerBurn` - Called when the burn from a flame thrower spreads **Returns:** No return behavior ```csharp void OnFlameThrowerBurn(FlameThrower thrower, BaseEntity flame) { Puts("OnFlameThrowerBurn works!"); } ``` Tags: `flame`, `weapon` · uMod last updated 2021-05-08 ### `OnMeleeThrown` - Called when the player throws a melee item (axe, rock, ...) **Returns:** No return behavior ```csharp void OnMeleeThrown(BasePlayer player, Item item) { Puts("OnMeleeThrown works!"); } ``` Tags: `melee`, `weapon` · uMod last updated 2021-05-08 ### `OnMagazineReload` - Called when the player reloads a magazine **Returns:** Returning a non-null value overrides default behavior ```csharp object OnMagazineReload(BaseProjectile weapon, IAmmoContainer desiredAmount, BasePlayer player) { Puts("OnMagazineReload works!"); return null; } ``` Tags: `reload`, `weapon` · uMod last updated 2023-09-24 ### `OnWeaponReload` - Called when the player reloads a weapon **Returns:** Returning a non-null value overrides default behavior ```csharp object OnWeaponReload(BaseProjectile weapon, BasePlayer player) { Puts("OnWeaponReload works!"); return null; } ``` Tags: `reload`, `weapon` · uMod last updated 2022-09-12 ### `OnRocketLaunched` - Called when the player launches a rocket **Returns:** No return behavior ```csharp void OnRocketLaunched(BasePlayer player, BaseEntity entity) { Puts("OnRocketLaunched works!"); } ``` Tags: `rocket`, `weapon` · uMod last updated 2021-05-08 ### `OnAmmoSwitch` - Called when the player starts to switch the ammo in a weapon **Returns:** Returning a non-null value overrides default behavior ```csharp object OnAmmoSwitch(BaseProjectile weapon, BasePlayer player) { Puts("OnAmmoSwitch works!"); return null; } ``` Tags: `switch`, `weapon` · uMod last updated 2023-10-11 ### `OnWeaponFired` - Called when the player fires a weapon **Returns:** No return behavior ```csharp void OnWeaponFired(BaseProjectile projectile, BasePlayer player, ItemModProjectile mod, ProtoBuf.ProjectileShoot projectiles) { Puts("OnWeaponFired works!"); } ``` Tags: `weapon` · uMod last updated 2021-05-08 --- ## Vehicle Hooks *Boats, cars, horses, helicopters, trains, submarines — fuel, engines, mounting, pushing.* 22 hooks: [`CanUseHelicopter`](#canusehelicopter), [`OnBoatPathGenerate`](#onboatpathgenerate), [`OnVehicleModuleMove`](#onvehiclemodulemove), [`OnEngineStart`](#onenginestart), [`OnEngineStarted`](#onenginestarted), [`OnEngineStop`](#onenginestop), [`OnEngineStopped`](#onenginestopped), [`OnEngineStatsRefresh`](#onenginestatsrefresh), [`OnEngineStatsRefreshed`](#onenginestatsrefreshed), [`OnVehicleModuleSelect`](#onvehiclemoduleselect), [`OnVehicleModuleSelected`](#onvehiclemoduleselected), [`OnVehicleModuleDeselected`](#onvehiclemoduledeselected), [`OnHotAirBalloonToggle`](#onhotairballoontoggle), [`OnHotAirBalloonToggled`](#onhotairballoontoggled), [`OnVehicleModulesAssign`](#onvehiclemodulesassign), [`OnVehicleModulesAssigned`](#onvehiclemodulesassigned), [`OnVehiclePush`](#onvehiclepush), [`CanCheckFuel`](#cancheckfuel), [`CanUseFuel`](#canusefuel), [`OnFuelCheck`](#onfuelcheck), [`OnFuelAmountCheck`](#onfuelamountcheck), [`OnFuelItemCheck`](#onfuelitemcheck) ### `CanUseHelicopter` - Useful for denying to mount a CH47 helicopter **Returns:** Returning a non-null value cancels default behavior ```csharp object CanUseHelicopter(BasePlayer player, CH47HelicopterAIController helicopter) { Puts("CanUseHelicopter works!"); return null; } ``` Tags: `vehicle` · uMod last updated 2021-05-08 ### `OnBoatPathGenerate` - Called when generating ocean patrol path for CargoShip **Returns:** Returning a List overrides default behavior ```csharp List OnBoatPathGenerate() { Puts("OnBoatPathGenerate works!"); return null; } ``` Tags: `boat`, `vehicle` · uMod last updated 2021-08-14 ### `OnVehicleModuleMove` - Called when a player tries to move a vehicle module item that is currently on a vehicle **Returns:** Returning a non-null value overrides default behavior ```csharp object OnVehicleModuleMove(BaseVehicleModule module, BaseModularVehicle vehicle, BasePlayer player) { Puts("OnVehicleModuleMove works!"); return null; } ``` Tags: `vehicle` · uMod last updated 2021-05-08 ### `OnEngineStart` - Called when a player tries to start a vehicle engine **Returns:** Returning a non-null value overrides default behavior ```csharp object OnEngineStart(BaseVehicle vehicle, BasePlayer driver) { Puts("OnEngineStart works!"); return null; } ``` Tags: `engine`, `vehicle` · uMod last updated 2021-05-08 ### `OnEngineStarted` - Called right after a vehicle engine has started **Returns:** No return behavior ```csharp void OnEngineStarted(BaseVehicle vehicle, BasePlayer driver) { Puts("OnEngineStarted works!"); } ``` Tags: `engine`, `vehicle` · uMod last updated 2021-05-08 ### `OnEngineStop` - Called when a vehicle engine is about to stop **Returns:** Returning a non-null value overrides default behavior ```csharp object OnEngineStop(BaseVehicle vehicle) { Puts("OnEngineStop works!"); return null; } ``` Tags: `engine`, `vehicle` · uMod last updated 2021-05-08 ### `OnEngineStopped` - Called right after a vehicle engine has stopped **Returns:** No return behavior ```csharp void OnEngineStopped(BaseVehicle vehicle) { Puts("OnEngineStopped works!"); } ``` Tags: `engine`, `vehicle` · uMod last updated 2021-05-08 ### `OnEngineStatsRefresh` - Called right before the stats of a modular car engine are refreshed **Returns:** Returning a non-null value overrides default behavior ```csharp object OnEngineStatsRefresh(VehicleModuleEngine engineModule, EngineStorage engineStorage) { Puts("OnEngineStatsRefresh works!"); return null; } ``` Tags: `engine`, `vehicle` · uMod last updated 2021-05-08 ### `OnEngineStatsRefreshed` - Called right after the stats of a modular car engine are refreshed **Returns:** No return behavior ```csharp void OnEngineStatsRefreshed(VehicleModuleEngine engineModule, EngineStorage engineStorage) { Puts("OnEngineStatsRefreshed works!"); } ``` Tags: `engine`, `vehicle` · uMod last updated 2021-05-08 ### `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 **Returns:** Returning a non-null value overrides default behavior ```csharp object OnVehicleModuleSelect(Item moduleItem, ModularCarGarage carLift, BasePlayer player) { Puts("OnVehicleModuleSelect works!"); return null; } ``` Tags: `vehicle` · uMod last updated 2021-05-08 ### `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 **Returns:** No return behavior ```csharp void OnVehicleModuleSelected(Item moduleItem, ModularCarGarage carLift, BasePlayer player) { Puts("OnVehicleModuleSelected works!"); } ``` Tags: `vehicle` · uMod last updated 2021-05-08 ### `OnVehicleModuleDeselected` - Called right after a player deselects a vehicle module item in a car's inventory **Returns:** No return behavior ```csharp void OnVehicleModuleDeselected(ModularCarGarage carLift, BasePlayer player) { Puts("OnVehicleModuleDeselected works!"); } ``` Tags: `vehicle` · uMod last updated 2021-05-08 ### `OnHotAirBalloonToggle` - Called when a player tries to toggle a hot air balloon on or off **Returns:** Returning a non-null value overrides default behavior ```csharp object OnHotAirBalloonToggle(HotAirBalloon balloon, BasePlayer player) { Puts("OnHotAirBalloonToggle works!"); return null; } ``` Tags: `vehicle` · uMod last updated 2021-05-08 ### `OnHotAirBalloonToggled` - Called right after a player has toggled a hot air balloon on or off **Returns:** No return behavior ```csharp void OnHotAirBalloonToggled(HotAirBalloon balloon, BasePlayer player) { Puts("OnHotAirBalloonToggled works!"); } ``` Tags: `vehicle` · uMod last updated 2021-05-08 ### `OnVehicleModulesAssign` - Called right after a modular car has spawned, but before module items are added to its inventory from a preset **Returns:** Returning a non-null value overrides default behavior ```csharp object OnVehicleModulesAssign(ModularCar car, ItemModVehicleModule[] modulePreset) { Puts("OnVehicleModulesAssign works!"); return null; } ``` Tags: `vehicle` · uMod last updated 2021-05-08 ### `OnVehicleModulesAssigned` - Called right after a car has spawned and its module inventory has been filled with module items from a preset **Returns:** No return behavior ```csharp void OnVehicleModulesAssigned(ModularCar car, ItemModVehicleModule[] modulePreset) { Puts("OnVehicleModulesAssigned works!"); } ``` Tags: `vehicle` · uMod last updated 2021-05-08 ### `OnVehiclePush` - Called when a player tries to push a vehicle **Returns:** Returning a non-null value overrides default behavior ```csharp object OnVehiclePush(BaseVehicle vehicle, BasePlayer player) { Puts("OnVehiclePush works!"); return null; } ``` Tags: `vehicle` · uMod last updated 2021-05-08 ### `CanCheckFuel` - Called when a player tries to loot a vehicle's fuel container **Returns:** Returning true or false overrides default behavior ```csharp object CanCheckFuel(EntityFuelSystem fuelSystem, StorageContainer fuelContainer, BasePlayer player) { Puts("CanCheckFuel works!"); return null; } ``` Tags: `check`, `vehicle` · uMod last updated 2021-05-08 ### `CanUseFuel` - Called before a vehicle fuel system consumes fuel **Returns:** Returning true or false overrides default behavior ```csharp object CanUseFuel(EntityFuelSystem fuelSystem, StorageContainer fuelContainer, float currentSeconds, float fuelPerSecond) { Puts("CanUseFuel works!"); return null; } ``` Tags: `vehicle` · uMod last updated 2021-05-08 ### `OnFuelCheck` - Called when determining whether a vehicle has sufficient fuel **Returns:** Returning true or false overrides default behavior ```csharp object OnFuelCheck(EntityFuelSystem fuelSystem) { Puts("OnFuelCheck works!"); return null; } ``` Tags: `fuel`, `vehicle` · uMod last updated 2021-05-08 ### `OnFuelAmountCheck` - Called when the amount of fuel in a vehicle is being determined **Returns:** Returning a numeric value (int) overrides the default value ```csharp object OnFuelAmountCheck(EntityFuelSystem fuelSystem, Item fuelItem) { Puts("OnFuelAmountCheck works!"); return null; } ``` Tags: `fuel`, `vehicle` · uMod last updated 2021-05-08 ### `OnFuelItemCheck` - Called when determining which item should be used to fuel a vehicle **Returns:** Returning an Item overrides default behavior ```csharp object OnFuelItemCheck(EntityFuelSystem fuelSystem, StorageContainer fuelContainer) { Puts("OnFuelItemCheck works!"); return null; } ``` Tags: `fuel`, `vehicle` · uMod last updated 2021-05-08 --- ## Team Hooks *Rust's built-in team/party system: create, invite, join, leave, promote, disband.* 12 hooks: [`OnTeamAcceptInvite`](#onteamacceptinvite), [`OnTeamCreate`](#onteamcreate), [`OnTeamCreated`](#onteamcreated), [`OnTeamDisband`](#onteamdisband), [`OnTeamDisbanded`](#onteamdisbanded), [`OnTeamInvite`](#onteaminvite), [`OnTeamKick`](#onteamkick), [`OnTeamLeave`](#onteamleave), [`OnTeamPromote`](#onteampromote), [`OnTeamRejectInvite`](#onteamrejectinvite), [`OnTeamUpdate`](#onteamupdate), [`OnTeamUpdated`](#onteamupdated) ### `OnTeamAcceptInvite` - Useful for canceling team invitation acceptation **Returns:** Returning a non-null value cancels default behavior ```csharp object OnTeamAcceptInvite(RelationshipManager.PlayerTeam team, BasePlayer player) { Puts("OnTeamAcceptInvite works!"); return null; } ``` Tags: `team` · uMod last updated 2021-05-08 ### `OnTeamCreate` - Useful for canceling team creation **Returns:** Returning a non-null value cancels default behavior ```csharp object OnTeamCreate(BasePlayer player) { Puts("OnTeamCreate works!"); return null; } ``` Tags: `team` · uMod last updated 2021-05-08 ### `OnTeamCreated` - Called after a team was created **Returns:** No return behavior ```csharp void OnTeamCreated(BasePlayer player, RelationshipManager.PlayerTeam team) { Puts("OnTeamCreated works!"); } ``` Tags: `team` · uMod last updated 2021-05-08 ### `OnTeamDisband` - Useful for canceling team disbandment **Returns:** Returning a non-null value cancels default behavior ```csharp object OnTeamDisband(RelationshipManager.PlayerTeam team) { Puts("OnTeamDisband works!"); return null; } ``` Tags: `team` · uMod last updated 2021-05-08 ### `OnTeamDisbanded` - Called when the team was disbanded **Returns:** No return behavior ```csharp void OnTeamDisbanded(RelationshipManager.PlayerTeam team) { Puts("OnTeamDisbanded works!"); } ``` Tags: `team` · uMod last updated 2021-05-08 ### `OnTeamInvite` - Useful for canceling an invitation **Returns:** Returning a non-null value cancels default behavior ```csharp object OnTeamInvite(BasePlayer inviter, BasePlayer target) { Puts($"{inviter.displayName} invited {target.displayName} to his team"); return null; } ``` Tags: `team` · uMod last updated 2021-05-08 ### `OnTeamKick` - Useful for canceling kick of the player from the team **Returns:** Returning a non-null value cancels default behavior ```csharp object OnTeamKick(RelationshipManager.PlayerTeam team, BasePlayer player, ulong target) { Puts("OnTeamKick works!"); return null; } ``` Tags: `team` · uMod last updated 2021-05-08 ### `OnTeamLeave` - Useful for canceling the leave from the team **Returns:** Returning a non-null value cancels default behavior ```csharp object OnTeamLeave(RelationshipManager.PlayerTeam team, BasePlayer player) { Puts("OnTeamLeave works!"); return null; } ``` Tags: `team` · uMod last updated 2021-05-08 ### `OnTeamPromote` - Useful for canceling player's promotion in the team **Returns:** Returning a non-null value cancels default behavior ```csharp object OnTeamPromote(RelationshipManager.PlayerTeam team, BasePlayer newLeader) { Puts("OnTeamPromote works!"); return null; } ``` Tags: `team` · uMod last updated 2021-05-08 ### `OnTeamRejectInvite` - Useful for canceling the invitation rejection **Returns:** Returning a non-null value cancels default behavior ```csharp object OnTeamRejectInvite(BasePlayer rejector, RelationshipManager.PlayerTeam team) { Puts("OnTeamRejectInvite works!"); return null; } ``` Tags: `team` · uMod last updated 2021-05-08 ### `OnTeamUpdate` - Called when player's team is updated **Returns:** Returning a non-null value cancels default behavior ```csharp object OnTeamUpdate(ulong currentTeam, ulong newTeam, BasePlayer player) { Puts("OnTeamUpdate works!"); return null; } ``` Tags: `team` · uMod last updated 2021-05-08 ### `OnTeamUpdated` - Called before sending team info to player **Returns:** Returning a non-null value cancels default behavior ```csharp object OnTeamUpdated(ulong currentTeam, PlayerTeam playerTeam, BasePlayer player) { Puts("OnTeamUpdate works!"); return null; } ``` Tags: `team` · uMod last updated 2021-05-08 --- ## World Hooks *World-level generation events.* 1 hook: [`OnWorldPrefabSpawned`](#onworldprefabspawned) ### `OnWorldPrefabSpawned` - Called when a world prefab was spawned **Returns:** No return behavior ```csharp void OnWorldPrefabSpawned(GameObject gameObject, string category) { Puts("OnWorldPrefabSpawned works!"); } ``` Tags: `world` · uMod last updated 2021-05-08 --- ## Fishing Hooks *The fishing minigame.* 4 hooks: [`CanCatchFish`](#cancatchfish), [`OnFishCatch`](#onfishcatch), [`OnFishCaught`](#onfishcaught), [`OnFishingStopped`](#onfishingstopped) ### `CanCatchFish` - Called before a fish is caught **Returns:** Returning true or false overrides default behavior ```csharp bool? CanCatchFish(BasePlayer player, BaseFishingRod rod, Item item) { Puts("can we catch em fishes?"); return null; } ``` Tags: `player`, `item`, `fishing` · uMod last updated 2021-12-15 ### `OnFishCatch` - Called after a fish is caught, before the item is given **Returns:** Returning a non-null value overrides default behavior ```csharp Item OnFishCatch(Item item, BaseFishingRod rod, BasePlayer player) { Puts($"{player.displayName} has just caught {item.amount} x {item.info.shortname}!"); return null; } ``` Tags: `player`, `item`, `fishing` · uMod last updated 2021-12-15 ### `OnFishCaught` - Called after a fish is caught **Returns:** No return behavior ```csharp void OnFishCaught(ItemDefinition definition, BaseFishingRod rod, BasePlayer player) { Puts($"A fish ({definition.shortname}) has just been caught by {player.displayName}!"); } ``` Tags: `player`, `item`, `fishing` · uMod last updated 2021-12-15 ### `OnFishingStopped` - Called just after the fishing minigame has been stopped. **Returns:** No return behaviour ```csharp void OnFishingStopped(BaseFishingRod rod, BaseFishingRod.FailReason reason) { Puts("OnFishingStopped works!"); } ``` Tags: `fishing` · uMod last updated 2022-06-25 --- ## Electronic Hooks *The electricity graph.* 2 hooks: [`OnExcavatorSuppliesRequest`](#onexcavatorsuppliesrequest), [`OnExcavatorSuppliesRequested`](#onexcavatorsuppliesrequested) ### `OnExcavatorSuppliesRequest` - Called just after the excavator supply computer is triggered, before the plane is spawned. **Returns:** Returning non-null overrides default behaviour. ```csharp object OnExcavatorSuppliesRequest(ExcavatorSignalComputer computer, BasePlayer player) { Puts("OnExcavatorSuppliesRequest works!"); return null; } ``` uMod last updated 2023-06-04 ### `OnExcavatorSuppliesRequested` - Called after the excavator signal computer was triggered, just after the supply plane is spawned. **Returns:** *(not stated upstream)* ```csharp void OnExcavatorSuppliesRequested(ExcavatorSignalComputer computer, BasePlayer player, BaseEntity cargoPlane) { Puts("OnExcavatorSuppliesRequested works!"); } ``` uMod last updated 2023-06-04 --- ## Clan Hooks *The first-party clan system (distinct from Team).* 7 hooks: [`OnClanColorChanged`](#onclancolorchanged), [`OnClanCreated`](#onclancreated), [`OnClanDisbanded`](#onclandisbanded), [`OnClanLogoChanged`](#onclanlogochanged), [`OnClanMemberAdded`](#onclanmemberadded), [`OnClanMemberKicked`](#onclanmemberkicked), [`OnClanMemberLeft`](#onclanmemberleft) ### `OnClanColorChanged` - Called after a player changes a clan color **Returns:** No return behavior ```csharp void OnClanColorChanged(LocalClan clan, Color32 color, ulong steamId) { Puts("OnClanColorChanged works!"); } ``` Tags: `clan` · uMod last updated 2023-08-11 ### `OnClanCreated` - Called after a player has created a clan **Returns:** No return behavior ```csharp void OnClanCreated(LocalClan clan, ulong steamId) { Puts("OnClanCreated works!"); } ``` Tags: `clan` · uMod last updated 2023-08-11 ### `OnClanDisbanded` - Called after a player disbands a clan **Returns:** No return behavior ```csharp void OnClanDisbanded(LocalClan clan, ulong steamId) { Puts("OnClanDisbanded works!"); } ``` Tags: `clan` · uMod last updated 2023-08-11 ### `OnClanLogoChanged` - Called after a player changes a clan logo **Returns:** No return behavior ```csharp void OnClanLogoChanged(LocalClan clan, byte[] logo, ulong steamId) { Puts("OnClanLogoChanged works!"); } ``` Tags: `clan` · uMod last updated 2023-08-11 ### `OnClanMemberAdded` - Called after a player has accepted a clan invite **Returns:** No return behavior ```csharp void OnClanMemberAdded(long clanId, ulong steamId) { Puts("OnClanMemberAdded works!"); } ``` Tags: `clan` · uMod last updated 2023-08-11 ### `OnClanMemberKicked` - Called after a player has kicked another player from a clan **Returns:** No return behavior ```csharp void OnClanMemberKicked(LocalClan clan, ulong steamId, ulong bySteamId) { Puts("OnClanMemberKicked works!"); } ``` Tags: `clan` · uMod last updated 2023-08-11 ### `OnClanMemberLeft` - Called after a player has voluntarily left a clan **Returns:** No return behavior ```csharp void OnClanMemberLeft(LocalClan clan, ulong steamId) { Puts("OnClanMemberLeft works!"); } ``` Tags: `clan` · uMod last updated 2023-08-11 --- ## Plugin Hooks *Plugin lifecycle inside Oxide itself — `Loaded`, `Unload`, and compilation.* 4 hooks: [`Loaded`](#loaded), [`LoadDefaultConfig`](#loaddefaultconfig), [`Unload`](#unload), [`LoadDefaultMessages`](#loaddefaultmessages) ### `Loaded` - Called when a plugin has finished loading - Other plugins may or may not be present, dependant on load order **Returns:** No return behavior ```csharp void Loaded() { Puts("Loaded works!"); } ``` uMod last updated 2018-08-20 ### `LoadDefaultConfig` - Called when the config for a plugin should be initialized - Only called if the config file does not already exist **Returns:** No return behavior ```csharp protected override void LoadDefaultConfig() { Puts("Default configuration created"); } ``` uMod last updated 2018-08-20 ### `Unload` - Called when a plugin is being unloaded **Returns:** No return behavior ```csharp void Unload() { Puts("Save data, nullify static variables, etc."); } ``` uMod last updated 2018-09-02 ### `LoadDefaultMessages` - Called when the localization for a plugin should be registered **Returns:** No return behavior ```csharp protected override void LoadDefaultMessages() { lang.RegisterMessages(new Dictionary { ["Example"] = "This is an example message!", ["AnotherExample"] = "Here is another example" }, this); } ``` uMod last updated 2018-11-05 --- ## Sign Hooks *Sign painting, updating and locking.* 3 hooks: [`OnSignLocked`](#onsignlocked), [`OnSignUpdated`](#onsignupdated), [`OnSpinWheel`](#onspinwheel) ### `OnSignLocked` - Called after the player has locked a sign or photo frame **Returns:** No return behavior ```csharp void OnSignLocked(Signage sign, BasePlayer player) { Puts("OnSignLocked works!"); } ``` ```csharp void OnSignLocked(PhotoFrame photoFrame, BasePlayer player) { Puts("OnSignLocked works!"); } ``` Tags: `sign` · uMod last updated 2021-05-08 ### `OnSignUpdated` - Called after the player has changed the text on a sign or updated a photo frame **Returns:** No return behavior ```csharp void OnSignUpdated(Signage sign, BasePlayer player, int textureIndex) { Puts("OnSignUpdated works!"); } ``` ```csharp void OnSignUpdated(PhotoFrame photoFrame, BasePlayer player) { Puts("OnSignUpdated works!"); } ``` ```csharp void OnSignUpdated(CarvablePumpkin pumpkin, BasePlayer player) { Puts("OnSignUpdated works!"); } ``` Tags: `sign` · uMod last updated 2022-04-18 ### `OnSpinWheel` - Called when the player spins a spinner wheel **Returns:** No return behavior ```csharp void OnSpinWheel(BasePlayer player, SpinnerWheel wheel) { Puts("OnSpinWheel works!"); } ``` Tags: `spin`, `sign` · uMod last updated 2021-05-08 --- ## TechTree Hooks *Tech tree node unlocks and their prerequisites.* 4 hooks: [`CanUnlockTechTreeNode`](#canunlocktechtreenode), [`CanUnlockTechTreeNodePath`](#canunlocktechtreenodepath), [`OnTechTreeNodeUnlock`](#ontechtreenodeunlock), [`OnTechTreeNodeUnlocked`](#ontechtreenodeunlocked) ### `CanUnlockTechTreeNode` - Called when a player is attempting to unlock a blueprint in a tech tree - Useful for bypassing unlock requirements or disallowing particular blueprints from being unlocked **Returns:** Returning true or false overrides default behavior ```csharp object CanUnlockTechTreeNode(BasePlayer player, TechTreeData.NodeInstance node, TechTreeData techTree) { Puts("CanUnlockTechTreeNode works!"); return null; } ``` Tags: `unlock`, `techtree` · uMod last updated 2021-05-08 ### `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 - Useful for customizing prerequisites without conflicting with the `CanPlayerUnlock` hook **Returns:** Returning true or false overrides default behavior ```csharp object CanUnlockTechTreeNodePath(BasePlayer player, TechTreeData.NodeInstance node, TechTreeData techTree) { Puts("CanUnlockTechTreeNodePath works!"); return null; } ``` Tags: `unlock`, `techtree` · uMod last updated 2021-05-08 ### `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 - 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) **Returns:** Returning a non-null value overrides default behavior ```csharp object OnTechTreeNodeUnlock(Workbench workbench, TechTreeData.NodeInstance node, BasePlayer player) { Puts("OnTechTreeNodeUnlock works!"); return null; } ``` Tags: `tech`, `techtree` · uMod last updated 2021-05-08 ### `OnTechTreeNodeUnlocked` - Called after a player has unlocked a blueprint in a tech tree - Useful for automatically unlocking blueprints for team members **Returns:** No return behavior ```csharp void OnTechTreeNodeUnlocked(Workbench workbench, TechTreeData.NodeInstance node, BasePlayer player) { Puts("OnTechTreeNodeUnlocked works!"); } ``` Tags: `tech`, `techtree` · uMod last updated 2021-05-08 --- ## Phone Hooks *In-game telephones: dialling, answering, voicemail, directory.* 12 hooks: [`OnPhoneDial`](#onphonedial), [`CanReceiveCall`](#canreceivecall), [`OnPhoneAnswer`](#onphoneanswer), [`OnPhoneAnswered`](#onphoneanswered), [`OnPhoneCallStart`](#onphonecallstart), [`OnPhoneCallStarted`](#onphonecallstarted), [`OnPhoneDialFail`](#onphonedialfail), [`OnPhoneDialFailed`](#onphonedialfailed), [`OnPhoneDialTimeout`](#onphonedialtimeout), [`OnPhoneDialTimedOut`](#onphonedialtimedout), [`OnPhoneNameUpdate`](#onphonenameupdate), [`OnPhoneNameUpdated`](#onphonenameupdated) ### `OnPhoneDial` - Called when a player places a phone call **Returns:** Returning a non-null value overrides default behavior ```csharp object OnPhoneDial(PhoneController callerPhone, PhoneController receiverPhone, BasePlayer player) { Puts("OnPhoneDial works!"); return null; } ``` Tags: `phone` · uMod last updated 2021-05-08 ### `CanReceiveCall` - Called when a player tries to place a phone call **Returns:** Returning true or false overrides default behavior ```csharp object CanReceiveCall(PhoneController receiverPhone) { Puts("CanReceiveCall works!"); return null; } ``` Tags: `receive`, `phone` · uMod last updated 2021-05-08 ### `OnPhoneAnswer` - Called when a player tries to answer a phone call **Returns:** Returning a non-null value overrides default behavior ```csharp object OnPhoneAnswer(PhoneController receiverPhone, PhoneController callerPhone) { Puts("OnPhoneAnswer works!"); return null; } ``` Tags: `phone` · uMod last updated 2021-05-08 ### `OnPhoneAnswered` - Called right after a player has answered a phone call **Returns:** No return behavior ```csharp void OnPhoneAnswered(PhoneController receiverPhone, PhoneController callerPhone) { Puts("OnPhoneAnswered works!"); } ``` Tags: `phone` · uMod last updated 2021-05-08 ### `OnPhoneCallStart` - Called after a phone has been answered, right before voice communication is established **Returns:** Returning a non-null value overrides default behavior ```csharp object OnPhoneCallStart(PhoneController phone, PhoneController otherPhone, BasePlayer player) { Puts("OnPhoneCallStart works!"); return null; } ``` Tags: `phone` · uMod last updated 2021-05-08 ### `OnPhoneCallStarted` - Called right after a phone call has been answered and voice communication has been established **Returns:** *(not stated upstream)* ```csharp void OnPhoneCallStarted(PhoneController phone, PhoneController otherPhone, BasePlayer player) { Puts("OnPhoneCallStarted works!"); } ``` Tags: `phone` · uMod last updated 2021-05-08 ### `OnPhoneDialFail` - Called when a phone call is about to end or fail to start **Returns:** Returning a non-null value overrides default behavior ```csharp object OnPhoneDialFail(PhoneController phone, Telephone.DialFailReason reason, BasePlayer player) { Puts("OnPhoneDialFail works!"); return null; } ``` Tags: `phone` · uMod last updated 2021-05-08 ### `OnPhoneDialFailed` - Called after a phone call has ended or failed to start **Returns:** No return behavior ```csharp void OnPhoneDialFailed(PhoneController phone, Telephone.DialFailReason reason, BasePlayer player) { Puts("OnPhoneDialFailed works!"); } ``` Tags: `phone` · uMod last updated 2021-05-08 ### `OnPhoneDialTimeout` - Called when a phone is about to automatically hang up because the receiver phone wasn't answered in time **Returns:** Returning a non-null value overrides default behavior ```csharp object OnPhoneDialTimeout(PhoneController callerPhone, PhoneController receiverPhone, BasePlayer player) { Puts("OnPhoneDialTimeout works!"); return null; } ``` Tags: `phone` · uMod last updated 2021-05-08 ### `OnPhoneDialTimedOut` - Called right after a phone was automatically hung up because the receiver phone wasn't answered in time **Returns:** No return behavior ```csharp void OnPhoneDialTimedOut(PhoneController callerPhone, PhoneController receiverPhone, BasePlayer player) { Puts("OnPhoneDialTimedOut works!"); } ``` Tags: `phone` · uMod last updated 2021-05-08 ### `OnPhoneNameUpdate` - Called when a player tries to update a phone name **Returns:** Returning a non-null value overrides default behavior ```csharp object OnPhoneNameUpdate(PhoneController phoneController, string name, BasePlayer player) { Puts("OnPhoneNameUpdate works!"); return null; } ``` Tags: `phone` · uMod last updated 2021-05-08 ### `OnPhoneNameUpdated` - Called after a player has updated a phone name **Returns:** No return behavior ```csharp void OnPhoneNameUpdated(PhoneController phoneController, string name, BasePlayer player) { Puts("OnPhoneNameUpdated works!"); } ``` Tags: `phone` · uMod last updated 2021-05-08 --- ## Permission Hooks *uMod's own permission/group system (Covalence) — grants, revokes, group membership.* 8 hooks: [`OnPermissionRegistered`](#onpermissionregistered), [`OnGroupPermissionGranted`](#ongrouppermissiongranted), [`OnGroupPermissionRevoked`](#ongrouppermissionrevoked), [`OnGroupCreated`](#ongroupcreated), [`OnGroupDeleted`](#ongroupdeleted), [`OnGroupRankSet`](#ongrouprankset), [`OnGroupTitleSet`](#ongrouptitleset), [`OnGroupParentSet`](#ongroupparentset) ### `OnPermissionRegistered` - Called when a permission has been registered **Returns:** No return behavior ```csharp void OnPermissionRegistered(string name, Plugin owner) { Puts($"Permission '{name}' has been registered {(owner != null ? $"for {owner.Title}" : "")}"); } ``` Tags: `permission` · uMod last updated 2021-05-08 ### `OnGroupPermissionGranted` - Called when a permission has been granted to a group **Returns:** No return behavior ```csharp void OnGroupPermissionGranted(string name, string perm) { Puts($"Group '{name}' granted permission: {perm}"); } ``` Tags: `group`, `permission` · uMod last updated 2021-05-08 ### `OnGroupPermissionRevoked` - Called when a permission has been revoked from a group **Returns:** No return behavior ```csharp void OnGroupPermissionRevoked(string name, string perm) { Puts($"Group '{name}' revoked permission: {perm}"); } ``` Tags: `group`, `permission` · uMod last updated 2021-05-08 ### `OnGroupCreated` - Called when a group has been created successfully **Returns:** No return behavior ```csharp void OnGroupCreated(string name) { Puts($"Group '{name}' has been created!"); } ``` Tags: `group`, `permission` · uMod last updated 2021-05-08 ### `OnGroupDeleted` - Called when a group has been deleted successfully **Returns:** No return behavior ```csharp void OnGroupDeleted(string name) { Puts($"Group '{name}' has been deleted!"); } ``` Tags: `group`, `permission` · uMod last updated 2021-05-08 ### `OnGroupRankSet` - Called when a group rank has been updated **Returns:** No return behavior ```csharp void OnGroupRankSet(string name, int rank) { Puts($"Rank '{rank}' set on group '{name}'"); } ``` Tags: `group`, `permission` · uMod last updated 2021-05-08 ### `OnGroupTitleSet` - Called when a group title has been updated **Returns:** No return behavior ```csharp void OnGroupTitleSet(string name, string title) { Puts($"Title '{title}' set on group '{name}'"); } ``` Tags: `group`, `permission` · uMod last updated 2021-05-08 ### `OnGroupParentSet` - Called when a group parent has been updated **Returns:** No return behavior ```csharp void OnGroupParentSet(string name, string parent) { Puts($"Parent '{parent}' set on group '{name}'"); } ``` Tags: `group`, `permission` · uMod last updated 2021-05-08 --- Generated from uMod's own hook data (`umod.org/documentation/games/rust.json`), scraped 2026-09-15. 477 hooks.