{
  "name": "Gamemode Hooks",
  "description": "Every GM hook, with the realm it actually runs in. Filter by realm before you write the hook: a HUD hook on a server never fires, and that is most of what goes wrong the first time.",
  "platform": "Garry's Mod",
  "url": "https://devtoolsgg.com/gmod/list/hooks",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "attribution": "Compiled by https://devtoolsgg.com",
  "sources": [
    {
      "name": "Garry's Mod Wiki",
      "url": "https://wiki.facepunch.com/gmod/GM_Hooks"
    }
  ],
  "columns": [
    {
      "key": "name",
      "label": "Hook"
    },
    {
      "key": "realm",
      "label": "Realm"
    },
    {
      "key": "description",
      "label": "What it does"
    }
  ],
  "count": 267,
  "rows": [
    {
      "name": "GM:AcceptInput",
      "realm": "server",
      "description": "Called when a map I/O event occurs."
    },
    {
      "name": "GM:AddDeathNotice",
      "realm": "client",
      "description": "Adds a death notice entry."
    },
    {
      "name": "GM:AdjustMouseSensitivity",
      "realm": "client",
      "description": "Allows you to adjust the mouse sensitivity."
    },
    {
      "name": "GM:AllowPlayerPickup",
      "realm": "server",
      "description": "Called when a player tries to pick up something using the \"use\" key, return to override."
    },
    {
      "name": "GM:CalcMainActivity",
      "realm": "shared",
      "description": "This hook is used to calculate animations for a player."
    },
    {
      "name": "GM:CalcVehicleView",
      "realm": "client",
      "description": "Called from GM:CalcView when player is in driving a vehicle."
    },
    {
      "name": "GM:CalcView",
      "realm": "client",
      "description": "Allows override of the default view."
    },
    {
      "name": "GM:CalcViewModelView",
      "realm": "client",
      "description": "Allows overriding the position and angle of the viewmodel."
    },
    {
      "name": "GM:CanCreateUndo",
      "realm": "server",
      "description": "Called whenever a players tries to create an undo."
    },
    {
      "name": "GM:CanEditVariable",
      "realm": "server",
      "description": "Called when a variable is about to be edited on an Entity (called by `Edit Properties...` menu), to determine if the edit should be permitted."
    },
    {
      "name": "GM:CanExitVehicle",
      "realm": "server",
      "description": "Determines if the player can exit the vehicle on their own."
    },
    {
      "name": "GM:CanPlayerEnterVehicle",
      "realm": "server",
      "description": "Determines whether or not a given player player can enter the given vehicle."
    },
    {
      "name": "GM:CanPlayerSuicide",
      "realm": "server",
      "description": "Determines if the player can kill themselves using the `kill` or `explode` console commands."
    },
    {
      "name": "GM:CanPlayerUnfreeze",
      "realm": "server",
      "description": "Determines if the player can unfreeze the entity."
    },
    {
      "name": "GM:CanProperty",
      "realm": "shared",
      "description": "Controls if a properties can be used or not."
    },
    {
      "name": "GM:CanUndo",
      "realm": "server",
      "description": "Called whenever a players tries to undo."
    },
    {
      "name": "GM:CaptureVideo",
      "realm": "menu",
      "description": "Called each frame to record demos to video using IVideoWriter."
    },
    {
      "name": "GM:ChatText",
      "realm": "client",
      "description": "Called when a message is printed to the chat box."
    },
    {
      "name": "GM:ChatTextChanged",
      "realm": "client",
      "description": "Called whenever the content of the user's chat input box is changed."
    },
    {
      "name": "GM:CheckPassword",
      "realm": "server",
      "description": "Called when a **non local player** connects to allow the Lua system to check the password."
    },
    {
      "name": "GM:ClientSignOnStateChanged",
      "realm": "shared",
      "description": "Called when a player's sign on state changes."
    },
    {
      "name": "GM:CloseDermaMenus",
      "realm": "client, menu",
      "description": "Called when derma menus are closed with Global.CloseDermaMenus."
    },
    {
      "name": "GM:CreateClientsideRagdoll",
      "realm": "client",
      "description": "Called whenever an entity becomes a clientside ragdoll."
    },
    {
      "name": "GM:CreateEntityRagdoll",
      "realm": "server",
      "description": "Called when a serverside ragdoll of an entity has been created."
    },
    {
      "name": "GM:CreateMove",
      "realm": "client",
      "description": "Allows you to change the players movements before they're sent to the server."
    },
    {
      "name": "GM:CreateTeams",
      "realm": "shared",
      "description": "Teams are created within this hook using team.SetUp."
    },
    {
      "name": "GM:DoAnimationEvent",
      "realm": "shared",
      "description": "Called upon an animation event, this is the ideal place to call player animation functions such as Player:AddVCDSequenceToGestureSlot, Player:AnimRestartGesture and so on."
    },
    {
      "name": "GM:DoPlayerDeath",
      "realm": "server",
      "description": "Handles the player's death."
    },
    {
      "name": "GM:DrawDeathNotice",
      "realm": "client",
      "description": "This hook is called every frame to draw all of the current death notices."
    },
    {
      "name": "GM:DrawMonitors",
      "realm": "client",
      "description": "Called every frame before drawing the in-game monitors ( Breencast, in-game TVs, etc ), but doesn't seem to be doing anything, trying to render 2D or 3D elements fail."
    },
    {
      "name": "GM:DrawOverlay",
      "realm": "client, menu",
      "description": "Called after all other 2D draw hooks are called."
    },
    {
      "name": "GM:DrawPhysgunBeam",
      "realm": "client",
      "description": "Allows you to override physgun effects rendering."
    },
    {
      "name": "GM:EndEntityDriving",
      "realm": "shared",
      "description": "Called right before an entity stops driving."
    },
    {
      "name": "GM:EntityEmitSound",
      "realm": "shared",
      "description": "Called whenever a sound has been played."
    },
    {
      "name": "GM:EntityFireBullets",
      "realm": "shared",
      "description": "Called every time a bullet is about to be fired from an entity, which allows to completely modify the bullet structure before the bullet is actually fired."
    },
    {
      "name": "GM:EntityKeyValue",
      "realm": "shared",
      "description": "Called when a key-value pair is set on an entity on map spawn."
    },
    {
      "name": "GM:EntityNetworkedVarChanged",
      "realm": "shared",
      "description": "Called when an NW2Var is changed."
    },
    {
      "name": "GM:EntityRemoved",
      "realm": "shared",
      "description": "Called right before removal of an entity."
    },
    {
      "name": "GM:EntityTakeDamage",
      "realm": "server",
      "description": "Called when an entity is about to take damage."
    },
    {
      "name": "GM:FindUseEntity",
      "realm": "shared",
      "description": "This hook polls the entity the player use action should be applied to."
    },
    {
      "name": "GM:FinishChat",
      "realm": "client",
      "description": "Runs when user cancels/finishes typing."
    },
    {
      "name": "GM:FinishMove",
      "realm": "shared",
      "description": "Called after GM:Move, applies all the changes from the CMoveData to the player."
    },
    {
      "name": "GM:ForceDermaSkin",
      "realm": "client",
      "description": "Called to allow override of the default Derma skin for all panels."
    },
    {
      "name": "GM:GUIMouseDoublePressed",
      "realm": "client",
      "description": "Called when the mouse has been double clicked on any panel derived from CGModBase, such as the panel used by gui.EnableScreenClicker and the panel used by Panel:ParentToHUD."
    },
    {
      "name": "GM:GUIMousePressed",
      "realm": "client",
      "description": "Called whenever a players presses a mouse key on the context menu in Sandbox or on any panel derived from CGModBase, such as the panel used by gui.EnableScreenClicker and the panel used by Panel:Pa..."
    },
    {
      "name": "GM:GUIMouseReleased",
      "realm": "client",
      "description": "Called whenever a players releases a mouse key on the context menu in Sandbox or on any panel derived from CGModBase, such as the panel used by gui.EnableScreenClicker and the panel used by Panel:P..."
    },
    {
      "name": "GM:GameContentChanged",
      "realm": "shared, menu",
      "description": "Called when game content has been changed, for example an addon or a mountable game was (un)mounted."
    },
    {
      "name": "GM:GetDeathNoticeEntityName",
      "realm": "server",
      "description": "An internal function used to get an untranslated string to show in the kill feed as the entity's name."
    },
    {
      "name": "GM:GetFallDamage",
      "realm": "server",
      "description": "Called when a player takes damage from falling, allows to override the damage."
    },
    {
      "name": "GM:GetGameDescription",
      "realm": "shared",
      "description": "Called when the game(server) needs to update the text shown in the server browser as the gamemode."
    },
    {
      "name": "GM:GetMotionBlurValues",
      "realm": "client",
      "description": "Allows you to modify the Source Engine's motion blur shaders."
    },
    {
      "name": "GM:GetPreferredCarryAngles",
      "realm": "server",
      "description": "Called to determine preferred carry angles for the entity."
    },
    {
      "name": "GM:GetTeamColor",
      "realm": "client",
      "description": "Returns the color for the given entity's team."
    },
    {
      "name": "GM:GetTeamNumColor",
      "realm": "client",
      "description": "Returns the team color for the given team index."
    },
    {
      "name": "GM:GrabEarAnimation",
      "realm": "shared",
      "description": "Override this hook to disable/change ear-grabbing in your gamemode."
    },
    {
      "name": "GM:GravGunOnDropped",
      "realm": "server",
      "description": "Called when an entity is released by a gravity gun."
    },
    {
      "name": "GM:GravGunOnPickedUp",
      "realm": "server",
      "description": "Called when an entity is picked up by a gravity gun."
    },
    {
      "name": "GM:GravGunPickupAllowed",
      "realm": "server",
      "description": "Called every tick to poll whether a player is allowed to pick up an entity with the gravity gun or not."
    },
    {
      "name": "GM:GravGunPunt",
      "realm": "shared",
      "description": "Called when an entity is about to be punted with the gravity gun (primary fire)."
    },
    {
      "name": "GM:HUDAmmoPickedUp",
      "realm": "client",
      "description": "Called when the client has picked up ammo."
    },
    {
      "name": "GM:HUDDrawPickupHistory",
      "realm": "client",
      "description": "Renders the HUD pick-up history."
    },
    {
      "name": "GM:HUDDrawScoreBoard",
      "realm": "client",
      "description": "Called every frame to render the scoreboard."
    },
    {
      "name": "GM:HUDDrawTargetID",
      "realm": "client",
      "description": "Called from GM:HUDPaint to draw player info when you hover over a player with your crosshair or mouse."
    },
    {
      "name": "GM:HUDItemPickedUp",
      "realm": "client",
      "description": "Called when an item has been picked up."
    },
    {
      "name": "GM:HUDPaint",
      "realm": "client",
      "description": "Called whenever the HUD should be drawn."
    },
    {
      "name": "GM:HUDPaintBackground",
      "realm": "client",
      "description": "Called before GM:HUDPaint when the HUD background is being drawn."
    },
    {
      "name": "GM:HUDShouldDraw",
      "realm": "client",
      "description": "Called when the Gamemode is about to draw a given element on the client's HUD (heads-up display)."
    },
    {
      "name": "GM:HUDWeaponPickedUp",
      "realm": "client",
      "description": "Called when a weapon has been picked up."
    },
    {
      "name": "GM:HandlePlayerArmorReduction",
      "realm": "server",
      "description": "Called to handle player armor reduction, when player receives damage."
    },
    {
      "name": "GM:HandlePlayerDriving",
      "realm": "shared",
      "description": "Allows to override player driving animations."
    },
    {
      "name": "GM:HandlePlayerDucking",
      "realm": "shared",
      "description": "Allows to override player crouch animations."
    },
    {
      "name": "GM:HandlePlayerJumping",
      "realm": "shared",
      "description": "Called every frame by the player model animation system."
    },
    {
      "name": "GM:HandlePlayerLanding",
      "realm": "shared",
      "description": "Called every frame by the player model animation system."
    },
    {
      "name": "GM:HandlePlayerNoClipping",
      "realm": "shared",
      "description": "Allows to override player noclip animations."
    },
    {
      "name": "GM:HandlePlayerSwimming",
      "realm": "shared",
      "description": "Allows to override player swimming animations."
    },
    {
      "name": "GM:HandlePlayerVaulting",
      "realm": "shared",
      "description": "Allows to override player flying ( in mid-air, not noclipping ) animations."
    },
    {
      "name": "GM:HideTeam",
      "realm": "client",
      "description": "Hides the team selection panel."
    },
    {
      "name": "GM:InitPostEntity",
      "realm": "shared",
      "description": "Called after all the entities are initialized."
    },
    {
      "name": "GM:Initialize",
      "realm": "shared",
      "description": "Called after the gamemode loads and starts."
    },
    {
      "name": "GM:InputMouseApply",
      "realm": "client",
      "description": "Allows you to modify the supplied User Command with mouse input."
    },
    {
      "name": "GM:IsSpawnpointSuitable",
      "realm": "server",
      "description": "Check if a player can spawn at a certain spawnpoint."
    },
    {
      "name": "GM:KeyPress",
      "realm": "shared",
      "description": "Called whenever a player pressed a key included within the IN keys."
    },
    {
      "name": "GM:KeyRelease",
      "realm": "shared",
      "description": "Runs when a IN key was released by a player."
    },
    {
      "name": "GM:LoadGModSave",
      "realm": "server",
      "description": "Called from `gm_load` when the game should load a map."
    },
    {
      "name": "GM:LoadGModSaveFailed",
      "realm": "menu",
      "description": "Called while an addon from the Steam workshop is downloading."
    },
    {
      "name": "GM:MenuStart",
      "realm": "menu",
      "description": "Called when `menu.lua` has finished loading."
    },
    {
      "name": "GM:MouthMoveAnimation",
      "realm": "shared",
      "description": "Override this gamemode function to disable mouth movement when talking on voice chat."
    },
    {
      "name": "GM:Move",
      "realm": "shared",
      "description": "The Move hook is called for you to manipulate the player's MoveData."
    },
    {
      "name": "GM:NeedsDepthPass",
      "realm": "client",
      "description": "Returning true in this hook will cause it to render depth buffers defined with render.GetResolvedFullFrameDepth."
    },
    {
      "name": "GM:NetworkEntityCreated",
      "realm": "client",
      "description": "Called when an entity has been created over the network."
    },
    {
      "name": "GM:NetworkIDValidated",
      "realm": "server",
      "description": "Called when a player's SteamID has been validated by Steam."
    },
    {
      "name": "GM:NotifyShouldTransmit",
      "realm": "client",
      "description": "Called whenever this entity changes its transmission state for this Global.LocalPlayer, such as exiting or re entering the [PVS (Potential Visibility Set)](https://developer.valvesoftware.com/wiki/..."
    },
    {
      "name": "GM:OnAchievementAchieved",
      "realm": "client",
      "description": "Called when a player has achieved an achievement."
    },
    {
      "name": "GM:OnChatTab",
      "realm": "client",
      "description": "Called when the local player presses TAB while having their chatbox opened."
    },
    {
      "name": "GM:OnCleanup",
      "realm": "client",
      "description": "Called when the player cleans up something."
    },
    {
      "name": "GM:OnClientLuaError",
      "realm": "server",
      "description": "Called on the server when a Lua error occurs on a client and is sent to the server."
    },
    {
      "name": "GM:OnCloseCaptionEmit",
      "realm": "client",
      "description": "Called when a caption/subtitle has been emitted to the closed caption box."
    },
    {
      "name": "GM:OnContextMenuClose",
      "realm": "client",
      "description": "Called when the context menu keybind (+menu_context) is released, which by default is C."
    },
    {
      "name": "GM:OnContextMenuOpen",
      "realm": "client",
      "description": "Called when the context menu keybind (`+menu_context`) is pressed, which by default is C ."
    },
    {
      "name": "GM:OnCrazyPhysics",
      "realm": "shared",
      "description": "Called when the crazy physics detection detects an entity with crazy physics, i.e."
    },
    {
      "name": "GM:OnDamagedByExplosion",
      "realm": "server",
      "description": "Called when a player has been hurt by an explosion."
    },
    {
      "name": "GM:OnEntityCreated",
      "realm": "shared",
      "description": "Called as soon as the entity is created."
    },
    {
      "name": "GM:OnEntityWaterLevelChanged",
      "realm": "server",
      "description": "Called when the Entity:WaterLevel of an entity is changed."
    },
    {
      "name": "GM:OnGamemodeLoaded",
      "realm": "shared",
      "description": "Called when the gamemode is loaded."
    },
    {
      "name": "GM:OnLuaError",
      "realm": "shared, menu",
      "description": "Called when a Lua error occurs."
    },
    {
      "name": "GM:OnNPCDropItem",
      "realm": "server",
      "description": "Called whenever an NPC drops an item upon its death, such as health kits, armor batteries, etc."
    },
    {
      "name": "GM:OnNPCKilled",
      "realm": "server",
      "description": "Called whenever an NPC is killed."
    },
    {
      "name": "GM:OnNotifyAddonConflict",
      "realm": "menu",
      "description": "Called when a Addon Conflict occurs, only works in the Menu realm."
    },
    {
      "name": "GM:OnPauseMenuBlockedTooManyTimes",
      "realm": "menu",
      "description": "Called when the main menu has been blocked by GM:OnPauseMenuShow four times in a small interval."
    },
    {
      "name": "GM:OnPauseMenuShow",
      "realm": "client",
      "description": "Called when the pause menu is attempting to be opened."
    },
    {
      "name": "GM:OnPermissionsChanged",
      "realm": "menu",
      "description": "Called when a permission gets Granted or Revoked."
    },
    {
      "name": "GM:OnPhysgunFreeze",
      "realm": "server",
      "description": "Called when a player freezes an entity with the physgun."
    },
    {
      "name": "GM:OnPhysgunPickup",
      "realm": "server",
      "description": "Called to when a player has successfully picked up an entity with their Physics Gun."
    },
    {
      "name": "GM:OnPhysgunReload",
      "realm": "server",
      "description": "Called when a player reloads with the physgun."
    },
    {
      "name": "GM:OnPlayerChangedTeam",
      "realm": "server",
      "description": "Use GM:PlayerChangedTeam instead, which works for every Player:SetTeam call."
    },
    {
      "name": "GM:OnPlayerChat",
      "realm": "client",
      "description": "Called whenever a player sends a chat message."
    },
    {
      "name": "GM:OnPlayerHitGround",
      "realm": "shared",
      "description": "Called when a player makes contact with the ground after a jump or a fall."
    },
    {
      "name": "GM:OnPlayerJump",
      "realm": "shared",
      "description": "Called when a player jumps."
    },
    {
      "name": "GM:OnPlayerPhysicsDrop",
      "realm": "server",
      "description": "Called when a player +use drops an entity."
    },
    {
      "name": "GM:OnPlayerPhysicsPickup",
      "realm": "server",
      "description": "Called when a player +use pickups up an entity."
    },
    {
      "name": "GM:OnReloaded",
      "realm": "shared",
      "description": "Called when gamemode has been reloaded by auto refresh."
    },
    {
      "name": "GM:OnScreenSizeChanged",
      "realm": "client",
      "description": "Called when the player's screen resolution of the game changes."
    },
    {
      "name": "GM:OnSpawnMenuClose",
      "realm": "client",
      "description": "Called when a player releases the `+menu` bind on their keyboard, which is bound to Q by default."
    },
    {
      "name": "GM:OnSpawnMenuOpen",
      "realm": "client",
      "description": "Called when a player presses the `+menu` bind on their keyboard, which is bound to Q by default."
    },
    {
      "name": "GM:OnTextEntryGetFocus",
      "realm": "client",
      "description": "Called when a DTextEntry gets focus."
    },
    {
      "name": "GM:OnTextEntryLoseFocus",
      "realm": "client",
      "description": "Called when a DTextEntry loses focus."
    },
    {
      "name": "GM:OnUndo",
      "realm": "client",
      "description": "Called when the player undoes something."
    },
    {
      "name": "GM:OnViewModelChanged",
      "realm": "shared",
      "description": "Called when the player changes their weapon to another one - and their viewmodel model changes."
    },
    {
      "name": "GM:PhysgunDrop",
      "realm": "shared",
      "description": "Called when a player drops an entity with the Physgun."
    },
    {
      "name": "GM:PhysgunPickup",
      "realm": "shared",
      "description": "Called to determine if a player should be able to pick up an entity with the Physics Gun."
    },
    {
      "name": "GM:PlayerAmmoChanged",
      "realm": "shared",
      "description": "Called after player's reserve ammo count changes."
    },
    {
      "name": "GM:PlayerAuthed",
      "realm": "server",
      "description": "Called after the player gets their Player:UniqueID set for the first time."
    },
    {
      "name": "GM:PlayerBindPress",
      "realm": "client",
      "description": "Runs when a bind has been pressed."
    },
    {
      "name": "GM:PlayerButtonDown",
      "realm": "shared",
      "description": "Called when a player presses a button."
    },
    {
      "name": "GM:PlayerButtonUp",
      "realm": "shared",
      "description": "Called when a player releases a button."
    },
    {
      "name": "GM:PlayerCanHearPlayersVoice",
      "realm": "server",
      "description": "Decides whether a player can hear another player using voice chat."
    },
    {
      "name": "GM:PlayerCanJoinTeam",
      "realm": "server",
      "description": "Returns whether or not a player is allowed to join a team This hook will not work with hook.Add and it is only called manually from GM:PlayerJoinTeam by the base gamemode"
    },
    {
      "name": "GM:PlayerCanPickupItem",
      "realm": "server",
      "description": "Returns whether or not a player is allowed to pick an item up."
    },
    {
      "name": "GM:PlayerCanPickupWeapon",
      "realm": "server",
      "description": "Returns whether or not a player is allowed to pick up a weapon."
    },
    {
      "name": "GM:PlayerCanSeePlayersChat",
      "realm": "server",
      "description": "Returns whether or not the player can see the other player's chat."
    },
    {
      "name": "GM:PlayerChangedTeam",
      "realm": "server",
      "description": "Called when a player has changed team using Player:SetTeam."
    },
    {
      "name": "GM:PlayerCheckLimit",
      "realm": "shared",
      "description": "Called whenever a player is about to spawn something to see if they hit a limit for whatever they are spawning."
    },
    {
      "name": "GM:PlayerClassChanged",
      "realm": "client",
      "description": "Called whenever a player's class is changed on the server-side with player_manager.SetPlayerClass."
    },
    {
      "name": "GM:PlayerConnect",
      "realm": "shared",
      "description": "Executes when a player connects to the server."
    },
    {
      "name": "GM:PlayerDeath",
      "realm": "server",
      "description": "Called when a player is killed by Player:Kill or any other normal means."
    },
    {
      "name": "GM:PlayerDeathSound",
      "realm": "server",
      "description": "Returns whether or not the default death sound should be muted."
    },
    {
      "name": "GM:PlayerDeathThink",
      "realm": "server",
      "description": "Called every think while the player is dead."
    },
    {
      "name": "GM:PlayerDisconnected",
      "realm": "server",
      "description": "Called when a player leaves the server."
    },
    {
      "name": "GM:PlayerDriveAnimate",
      "realm": "shared",
      "description": "Called to update the player's animation during a drive."
    },
    {
      "name": "GM:PlayerDroppedWeapon",
      "realm": "server",
      "description": "Called when a weapon is dropped by a player via Player:DropWeapon."
    },
    {
      "name": "GM:PlayerEndVoice",
      "realm": "client",
      "description": "Called when player stops using voice chat."
    },
    {
      "name": "GM:PlayerEnteredVehicle",
      "realm": "server",
      "description": "Called when a player enters a vehicle."
    },
    {
      "name": "GM:PlayerFireAnimationEvent",
      "realm": "client",
      "description": "Called before firing clientside animation events on a player model."
    },
    {
      "name": "GM:PlayerFootstep",
      "realm": "shared",
      "description": "Called whenever a player steps."
    },
    {
      "name": "GM:PlayerFrozeObject",
      "realm": "server",
      "description": "Called when a player freezes an object."
    },
    {
      "name": "GM:PlayerHandleAnimEvent",
      "realm": "server",
      "description": "Called before firing serverside animation events on the player models."
    },
    {
      "name": "GM:PlayerHurt",
      "realm": "server",
      "description": "Called when a player gets hurt."
    },
    {
      "name": "GM:PlayerInitialSpawn",
      "realm": "server",
      "description": "Called when the player spawns for the first time."
    },
    {
      "name": "GM:PlayerJoinTeam",
      "realm": "server",
      "description": "Makes the player join a specified team."
    },
    {
      "name": "GM:PlayerLeaveVehicle",
      "realm": "server",
      "description": "Called when a player leaves a vehicle for any reason, including Player:ExitVehicle."
    },
    {
      "name": "GM:PlayerLoadout",
      "realm": "server",
      "description": "Called to give players the default set of weapons."
    },
    {
      "name": "GM:PlayerNoClip",
      "realm": "shared",
      "description": "Called when a player tries to switch noclip mode."
    },
    {
      "name": "GM:PlayerPostThink",
      "realm": "shared",
      "description": "Called after the player's think, just after GM:FinishMove."
    },
    {
      "name": "GM:PlayerRequestTeam",
      "realm": "server",
      "description": "Request a player to join the team."
    },
    {
      "name": "GM:PlayerSay",
      "realm": "server",
      "description": "Called when a player dispatched a chat message."
    },
    {
      "name": "GM:PlayerSelectSpawn",
      "realm": "server",
      "description": "Called to determine a spawn point for a player to spawn at."
    },
    {
      "name": "GM:PlayerSelectTeamSpawn",
      "realm": "server",
      "description": "Find a team spawn point entity for this player."
    },
    {
      "name": "GM:PlayerSetHandsModel",
      "realm": "server",
      "description": "Called whenever view model hands needs setting a model."
    },
    {
      "name": "GM:PlayerSetModel",
      "realm": "server",
      "description": "Called whenever a player spawns and must choose a model."
    },
    {
      "name": "GM:PlayerShouldTakeDamage",
      "realm": "server",
      "description": "Returns true if the player should take damage from the given attacker."
    },
    {
      "name": "GM:PlayerShouldTaunt",
      "realm": "server",
      "description": "Allows to suppress player taunts."
    },
    {
      "name": "GM:PlayerSilentDeath",
      "realm": "server",
      "description": "Called when the player is killed by Player:KillSilent."
    },
    {
      "name": "GM:PlayerSpawn",
      "realm": "server",
      "description": "Called whenever a player spawns, including respawns."
    },
    {
      "name": "GM:PlayerSpawnAsSpectator",
      "realm": "server",
      "description": "Called to spawn the player as a spectator."
    },
    {
      "name": "GM:PlayerSpray",
      "realm": "server",
      "description": "Determines if the player can spray using the `impulse 201` console command."
    },
    {
      "name": "GM:PlayerStartTaunt",
      "realm": "server",
      "description": "Called when player starts taunting."
    },
    {
      "name": "GM:PlayerStartVoice",
      "realm": "client",
      "description": "Called when a player starts using voice chat."
    },
    {
      "name": "GM:PlayerStepSoundTime",
      "realm": "shared",
      "description": "Allows you to override the time between footsteps."
    },
    {
      "name": "GM:PlayerSwitchFlashlight",
      "realm": "server",
      "description": "Called whenever a player attempts to either turn on or off their flashlight, returning false will deny the change."
    },
    {
      "name": "GM:PlayerSwitchWeapon",
      "realm": "shared",
      "description": "Called when a player attempts to switch their weapon."
    },
    {
      "name": "GM:PlayerTick",
      "realm": "shared",
      "description": "The Move hook is called for you to manipulate the player's CMoveData."
    },
    {
      "name": "GM:PlayerTraceAttack",
      "realm": "shared",
      "description": "Called when a player has been hit by a trace and damaged (such as from a bullet)."
    },
    {
      "name": "GM:PlayerUnfrozeObject",
      "realm": "server",
      "description": "Called when a player unfreezes an object."
    },
    {
      "name": "GM:PlayerUse",
      "realm": "server",
      "description": "Triggered when the player presses use on an object."
    },
    {
      "name": "GM:PopulateMenuBar",
      "realm": "client",
      "description": "Called when it's time to populate the context menu menu bar at the top."
    },
    {
      "name": "GM:PostCleanupMap",
      "realm": "shared",
      "description": "Called right after the map has cleaned up (usually because game.CleanUpMap was called) See also GM:PreCleanupMap."
    },
    {
      "name": "GM:PostDraw2DSkyBox",
      "realm": "client",
      "description": "Called right after the 2D skybox has been drawn - allowing you to draw over it."
    },
    {
      "name": "GM:PostDrawEffects",
      "realm": "client",
      "description": "Called after rendering effects."
    },
    {
      "name": "GM:PostDrawHUD",
      "realm": "client",
      "description": "Called after GM:PreDrawHUD, GM:HUDPaintBackground and GM:HUDPaint but before GM:DrawOverlay."
    },
    {
      "name": "GM:PostDrawOpaqueRenderables",
      "realm": "client",
      "description": "Called after drawing opaque entities."
    },
    {
      "name": "GM:PostDrawPlayerHands",
      "realm": "client",
      "description": "Called after the player hands are drawn."
    },
    {
      "name": "GM:PostDrawSkyBox",
      "realm": "client",
      "description": "Called after drawing the 3D skybox."
    },
    {
      "name": "GM:PostDrawTranslucentRenderables",
      "realm": "client",
      "description": "Called after all translucent entities are drawn."
    },
    {
      "name": "GM:PostDrawViewModel",
      "realm": "client",
      "description": "Called after view model is drawn."
    },
    {
      "name": "GM:PostEntityFireBullets",
      "realm": "shared",
      "description": "Called every time a bullet pellet (i.e."
    },
    {
      "name": "GM:PostEntityTakeDamage",
      "realm": "server",
      "description": "Called when an entity receives a damage event, after passing damage filters, etc."
    },
    {
      "name": "GM:PostGamemodeLoaded",
      "realm": "shared",
      "description": "Called after the gamemode has loaded."
    },
    {
      "name": "GM:PostPlayerDeath",
      "realm": "server",
      "description": "Called right after GM:DoPlayerDeath, GM:PlayerDeath and GM:PlayerSilentDeath."
    },
    {
      "name": "GM:PostPlayerDraw",
      "realm": "client",
      "description": "Called after a given player in your [PVS (Potential Visibility Set)](https://developer.valvesoftware.com/wiki/PVS \"PVS - Valve Developer Community\") was drawn."
    },
    {
      "name": "GM:PostProcessPermitted",
      "realm": "client",
      "description": "Allows you to suppress post processing effect drawing."
    },
    {
      "name": "GM:PostRender",
      "realm": "client",
      "description": "Called after the frame has been rendered."
    },
    {
      "name": "GM:PostRenderVGUI",
      "realm": "client",
      "description": "Called after the VGUI has been drawn."
    },
    {
      "name": "GM:PostUndo",
      "realm": "server",
      "description": "Called just after performing an undo."
    },
    {
      "name": "GM:PreCleanupMap",
      "realm": "shared",
      "description": "Called right before the map cleans up (usually because game.CleanUpMap was called) See also GM:PostCleanupMap."
    },
    {
      "name": "GM:PreDrawEffects",
      "realm": "client",
      "description": "Called just after GM:PreDrawViewModel and can technically be considered as a \"PostDrawAllViewModels\"."
    },
    {
      "name": "GM:PreDrawHUD",
      "realm": "client",
      "description": "Called just after GM:PostDrawEffects (duplicate of it)."
    },
    {
      "name": "GM:PreDrawHalos",
      "realm": "client",
      "description": "Called before rendering the halos."
    },
    {
      "name": "GM:PreDrawOpaqueRenderables",
      "realm": "client",
      "description": "Called before all opaque entities are drawn."
    },
    {
      "name": "GM:PreDrawPlayerHands",
      "realm": "client",
      "description": "Called before the player hands are drawn."
    },
    {
      "name": "GM:PreDrawSkyBox",
      "realm": "client",
      "description": "Called before the 3D sky box is drawn."
    },
    {
      "name": "GM:PreDrawTranslucentRenderables",
      "realm": "client",
      "description": "Called before all the translucent entities are drawn."
    },
    {
      "name": "GM:PreDrawViewModel",
      "realm": "client",
      "description": "Called before the view model has been drawn."
    },
    {
      "name": "GM:PreDrawViewModels",
      "realm": "client",
      "description": "Called just before all view models (there are 3 per player, see Player:GetViewModel) and entities with `RENDERGROUP_VIEWMODEL` are drawn."
    },
    {
      "name": "GM:PreGamemodeLoaded",
      "realm": "shared",
      "description": "Called before the gamemode is loaded."
    },
    {
      "name": "GM:PrePlayerDraw",
      "realm": "client",
      "description": "Called before the player is drawn."
    },
    {
      "name": "GM:PreRegisterSENT",
      "realm": "shared",
      "description": "Called by scripted_ents.Register."
    },
    {
      "name": "GM:PreRegisterSWEP",
      "realm": "shared",
      "description": "Called when a Scripted Weapon (SWEP) is about to be registered, allowing addons to alter the weapon's SWEP table with custom data for later usage."
    },
    {
      "name": "GM:PreRender",
      "realm": "client",
      "description": "Called before the renderer is about to start rendering the next frame."
    },
    {
      "name": "GM:PreUndo",
      "realm": "server",
      "description": "Called just before performing an undo."
    },
    {
      "name": "GM:PreventScreenClicks",
      "realm": "client",
      "description": "This will prevent IN_ATTACK from sending to server when player tries to shoot from C menu."
    },
    {
      "name": "GM:PropBreak",
      "realm": "shared",
      "description": "Called when a prop has been destroyed."
    },
    {
      "name": "GM:RenderScene",
      "realm": "client",
      "description": "Render the scene."
    },
    {
      "name": "GM:RenderScreenspaceEffects",
      "realm": "client",
      "description": "Used to render post processing effects."
    },
    {
      "name": "GM:Restored",
      "realm": "shared",
      "description": "Called when the game is reloaded from a Source Engine save system ( not the Sandbox saves or dupes )."
    },
    {
      "name": "GM:Saved",
      "realm": "shared",
      "description": "Called when the game is saved using the Source Engine save system (not the Sandbox saves or dupes)."
    },
    {
      "name": "GM:ScaleNPCDamage",
      "realm": "server",
      "description": "Called when an NPC takes damage."
    },
    {
      "name": "GM:ScalePlayerDamage",
      "realm": "shared",
      "description": "This hook allows you to change how much damage a player receives when one takes damage to a specific body part."
    },
    {
      "name": "GM:ScoreboardHide",
      "realm": "client",
      "description": "Called when player released the scoreboard button ( TAB by default)."
    },
    {
      "name": "GM:ScoreboardShow",
      "realm": "client",
      "description": "Called when player presses the scoreboard button ( TAB by default)."
    },
    {
      "name": "GM:SendDeathNotice",
      "realm": "server",
      "description": "An internal function used to send a death notice event to all clients."
    },
    {
      "name": "GM:SetPlayerSpeed",
      "realm": "shared",
      "description": "Sets player run and sprint speeds."
    },
    {
      "name": "GM:SetupMove",
      "realm": "shared",
      "description": "SetupMove is called before the engine process movements."
    },
    {
      "name": "GM:SetupPlayerVisibility",
      "realm": "server",
      "description": "Allows you to add extra positions to the player's [PVS (Potential Visibility Set)](https://developer.valvesoftware.com/wiki/PVS \"PVS - Valve Developer Community\")."
    },
    {
      "name": "GM:SetupSkyboxFog",
      "realm": "client",
      "description": "Allows you to use render.Fog* functions to manipulate skybox fog."
    },
    {
      "name": "GM:SetupWorldFog",
      "realm": "client",
      "description": "Allows you to use render.Fog* functions to manipulate world fog."
    },
    {
      "name": "GM:ShouldCollide",
      "realm": "shared",
      "description": "Called to decide whether a pair of entities should collide with each other."
    },
    {
      "name": "GM:ShouldDrawLocalPlayer",
      "realm": "client",
      "description": "Called to determine if the Global.LocalPlayer should be drawn."
    },
    {
      "name": "GM:ShowHelp",
      "realm": "server",
      "description": "Called when a player executes `gm_showhelp` console command."
    },
    {
      "name": "GM:ShowSpare1",
      "realm": "server",
      "description": "Called when a player executes `gm_showspare1` console command ( Default bind is F3 )."
    },
    {
      "name": "GM:ShowSpare2",
      "realm": "server",
      "description": "Called when a player executes `gm_showspare2` console command ( Default bind is F4 )."
    },
    {
      "name": "GM:ShowTeam",
      "realm": "server",
      "description": "Called when a player executes `gm_showteam` console command."
    },
    {
      "name": "GM:ShutDown",
      "realm": "shared",
      "description": "Called whenever the Lua environment is about to be shut down, for example on map change, or when the server is going to shut down."
    },
    {
      "name": "GM:SpawnMenuCreated",
      "realm": "client",
      "description": "Called when the Spawnmenu is Created."
    },
    {
      "name": "GM:SpawniconGenerated",
      "realm": "client",
      "description": "Called when spawn icon is generated."
    },
    {
      "name": "GM:StartChat",
      "realm": "client",
      "description": "Runs when the user tries to open the chat box."
    },
    {
      "name": "GM:StartCommand",
      "realm": "shared",
      "description": "Allows you to change the players inputs before they are processed by the server."
    },
    {
      "name": "GM:StartEntityDriving",
      "realm": "shared",
      "description": "Called right before an entity starts driving."
    },
    {
      "name": "GM:StartGame",
      "realm": "menu",
      "description": "Called when you start a new game via the menu."
    },
    {
      "name": "GM:Think",
      "realm": "shared, menu",
      "description": "Called every rendered frame on client, except when the game is paused."
    },
    {
      "name": "GM:Tick",
      "realm": "shared",
      "description": "Called every game tick."
    },
    {
      "name": "GM:TranslateActivity",
      "realm": "shared",
      "description": "Isn't called when CalcMainActivity returns a valid override sequence id Allows you to translate player activities."
    },
    {
      "name": "GM:UpdateAnimation",
      "realm": "shared",
      "description": "Animation updates (pose params etc) should be done here."
    },
    {
      "name": "GM:VGUIMousePressAllowed",
      "realm": "client",
      "description": "Called when user clicks on a VGUI panel."
    },
    {
      "name": "GM:VGUIMousePressed",
      "realm": "client, menu",
      "description": "Called when a mouse button is pressed on a VGUI element or menu."
    },
    {
      "name": "GM:VariableEdited",
      "realm": "server",
      "description": "Called when a variable is edited on an Entity (called by Edit Properties..."
    },
    {
      "name": "GM:VehicleMove",
      "realm": "shared",
      "description": "Called when you are driving a vehicle."
    },
    {
      "name": "GM:WeaponEquip",
      "realm": "server",
      "description": "Called as a weapon entity is picked up by a player."
    },
    {
      "name": "GM:WorkshopDownloadFile",
      "realm": "menu",
      "description": "Called when an addon from the Steam workshop begins downloading."
    },
    {
      "name": "GM:WorkshopDownloadProgress",
      "realm": "menu",
      "description": "Called while an addon from the Steam workshop is downloading."
    },
    {
      "name": "GM:WorkshopDownloadTotals",
      "realm": "menu",
      "description": "Called after GM:WorkshopStart."
    },
    {
      "name": "GM:WorkshopDownloadedFile",
      "realm": "menu",
      "description": "Called when an addon from the Steam workshop finishes downloading."
    },
    {
      "name": "GM:WorkshopEnd",
      "realm": "menu",
      "description": "Called when downloading content from Steam workshop ends."
    },
    {
      "name": "GM:WorkshopExtractProgress",
      "realm": "menu",
      "description": "Called while an addon from the Steam workshop is extracting."
    },
    {
      "name": "GM:WorkshopStart",
      "realm": "menu",
      "description": "Called when downloading content from Steam workshop begins."
    },
    {
      "name": "GM:WorkshopSubscriptionsChanged",
      "realm": "menu",
      "description": "Called when UGC subscription status changes."
    },
    {
      "name": "GM:WorkshopSubscriptionsMessage",
      "realm": "menu",
      "description": "Called when a Workshop Message is received?."
    },
    {
      "name": "GM:WorkshopSubscriptionsProgress",
      "realm": "menu",
      "description": "Called by the engine when the game initially fetches subscriptions to be displayed on the bottom of the main menu screen."
    }
  ]
}
