Garry's Mod Logo
Changes Header

Changes

What’s changed in Garry's Mod in each patch.

add_circle

Features

  • Added GetTimeoutInfo() - returns bool IsTimingOut, float GetTimeSinceLastReceived
  • Added Panel.IsModal
  • Added Panel.IsPopup
  • Added "previewurl" to steamworks.FileInfo, meant as a replacement to previewid
  • Vector.Mul can multiply vector by vector now
  • Added PLAYER.MaxArmor (player classes)
  • Added basic support for bone followers on "anim" type SENTs - Added Entity.CreateBoneFollowers, Entity.UpdateBoneFollowers, Entity.DestroyBoneFollowers (All serverside only)
  • "anim" type sents will render their physics object with vcollide_wireframe if there exists one clientside (yellow for clientside physics object, green for model index vcollide)
  • Added GM:PreRegisterSENT
  • Added GM:PreRegisterSWEP
  • list.Add now returns the index the object was placed at (Community Contribution)
  • Added ITexture.GetNumAnimationFrames()
  • Added ENTITY:GetPreferredCarryAngles( ply ) ("anim" type SENTS only)
  • Added Player argument to GM:GetPreferredCarryAngles
  • Added serverlist.PingServer (menu state)
  • Added input.GetAnalogValue( AnalogAxis )
  • Added ANALOG_* enums
  • Added OnRequestFullUpdate serverside game event ( has all the same data as player_connect_client event, save for bot field )
  • Added .xml, .csv, .jpeg, .mp3, .wav and .ogg file formats to file.Write whitelist
  • Added ErrorNoHaltWithStack
  • Added OnPlayerPhysicsPickup and OnPlayerPhysicsDrop hooks, which handle +use physics pickup
  • Added optional argument to IGMODAudioSteam.SetTime - helps reduce the lag when seeking large MP3 files
  • Added NPC.SetSquad
  • Added NPC.GetSquad,
  • Added NPC.IsSquadLeader
  • Added NPC.GetNearestSquadMember
  • Added ai.GetSquadLeader
  • Added ai.GetSquadMemberCount
  • Added ai.GetSquadMembers
  • Added NPC:GetIdealActivity
  • Added NPC:SetIdealActivity
  • Added ENTITY:OnMovementFailed
  • Added ENTITY:OnMovementComplete
  • Added ENTITY:OnChangeActiveWeapon( old, new )
arrow_circle_up

Improvements

  • Added activator & caller arguments to Entity.Fire, both default to NULL
  • Switched base_entity:TriggerOutput to use Entity.Fire so it uses the internal engine event queue system
  • Switched vgui.Create missing element warning to ErrorNoHalt
  • Made GetPhysicsAttacker's first argument default to 1
  • ENT:HandleAnimEvent can now return true to suppress the default action
  • DProperties handles non existing panel types more properly
  • Panel.KillFocus on EditablePanel now actually kills focus
  • Disallowed DoModal on non Popup panels to prevent bricking the game
  • Player.ConCommand blocked message is now an ErrorNoHalt like RunConsoleCommand
  • "connect" console command is now completely blocked on server realm
  • ENT.Initialize for clientside only entities now acts similarly to networked entities (no longer is automatically called, tied to Entity.Spawn)
  • Lua created materials (CreateMaterial) are now cleaned up on map shutdown
  • Removed prefix restrictions from util.IsValidModel
  • Allowed weapons with a CalcView function to work with player_manager view overrides (fixes taunt camera for SWEPs with a custom CalcView)
  • net.WriteData's length argument is now optional, will ErrorNoHalt when given incorrect length
  • More strict type checking for Entity.SetMaterial
  • ErrorNoHalt when file.Open is given incorrect read/write mode (used to silently fail)
  • Added an ErrorNoHalt when giving net.WriteData not enough data
  • SANDBOX:PlayerSpawn* hooks should consistently no longer receive NULL players
  • net.ReadData errorNoHalts about invalid length (<0, or above 64k)
  • halo library no longer tries to render entities that are set to not to draw
  • Added "volume_sfx" and "snd_musicvolume" to convar blacklist
  • Replaced the wiki link in the "Calling net.Start with unpooled message name!" error with "(Did you forget to call util.AddNetworkString serverside?)"
  • Better argument type checking for Compile/RunString(Ex)
  • Display a nicer message when Compile/RunString(Ex) are trying to run bytecode
  • AddCSLuaFile now displays an error message instead of silently failing when it refuses to add a file with bad symbols to the Lua datapack
handyman

Fixed

  • Fixed an infinite loop issue with steamworks.GetList which caused last page of workshop items to never load
  • Fixed Player.SetActiveWeapon while holding a prop with grav gun putting the prop into an invalid state
  • DMenu now better handles opening for modal panels (when it is parented to such panel manually)
  • Fixed a bug with ENT:TriggerOutput when deleting limited usage (Times > 0) outputs
  • steamworks.GetList will always return a table, even on failure. (Fixes infinite loading when loading published items but there are none)
  • Fixed color_white corruption to do with the Color tool/Duplicator system (Community Contribution)
  • Fixed entity function type consistency for Entity.ShouldPlayPickupSound, Entity.SetCreator and Entity.UnFreezable
  • Fixed "vertexlitgeneric" not doing anything as a parameter of Material(), now sets the expected shader, prevents $vertexalpha 1
  • Added additional checks for net.WriteData to prevent crashes
  • Fixed Entity.Set(Sub)Material leaking material reference count on entity removal
  • NextBot NPCs are actually considered NextBots on client
  • Fixed potential issues with serverlist.PlayerList (not canceling the request when destroyed too soon, trying to call nil objects)
  • Fixed inconsistent NEXTBOT:OnEntity(Lost)Sight behavior
  • DComboBox properly updates its text color
  • Fixed non string Lua errors not displaying properly in console
  • ProtectedCall() now displays Lua errors properly in console
  • Fixed mouse wheel events not being picked up by GM:PlayerButtonDown/Up
  • Fixed IMesh.BuildFromTriangles always counting one too many vertices
  • Fixed a crash issue with Global.Mesh when given a material with vertex format 0, now prints a warning and assumes no material set
  • Spawnicon properly initializes self.OverlayFade, and doesn't spawn errors when mods override its PANEL.Paint
  • Fixed using mixed types (strings and numbers for example) within a single DListView column creating Lua errors when sorting
  • Fixed Lua errors when giving a rope constraint an empty string as the material to use
remove_circle

Removed

  • Removed util.RelativePathToFull as it has no legitimate uses
  • Removed string.__index error [and fix false values in the string metatable not returning] (Community Contribution)
add_circle

Features

  • Added “G String” game mounting support
  • Added a confirmation window when a server tries to force connect a player to a different server
  • Added "Followed" and "Favorites" categories to dupes, saves and demos sections of main menu and the spawn menu
  • The map, gamemode & server name of the server you are joining is now shown on the default loading screen. It also now goes dark mode based on player’s local time
  • Added "Disable Sprays" checkbox to the Options menu
  • Servers that failed to respond to the info/ping requests are now shown in the server browser under "Unreachable Servers" section
  • Added "Disconnect" button to the "open URL" and "connect to a server" confirmation dialogs
  • You can now CTRL+A in console (or in any other RichText GUI element such as default chat window) to select all text
  • Added "Size" display to every addon in the Addons menu
  • Added weapon slot 7, 8, 9 and 0 binds to Options menu as some mods/gamemode might be using more than 6 weapon slots
  • Added map icons for new maps of Team Fortress 2, CS:GO and Fistful of Frags
  • Added sound effect slider to Audio Options menu. This affects all sounds except for voice chat and music, both of which have their own sliders. This allows players to configure voice chat volume separately from the sound effects volume, making the voice chat louder if master ("Game") volume is set to maximum.
arrow_circle_up

Improvements

  • Throwing the last HL2 grenade now maintains previous/last weapon for gravity gun grenade throws
  • Limit maximum force for Thruster tool to 1e10 (from 1e35) to reduce crashing potential
  • Manually installed .gma addons now display their internal title in the Addons menu, not the filename
  • "sv_skyname" now applies changes live, without needing a map restart
  • “sv_gravity” now updates the physics gravity without needing a map restart
  • FOV in Jeep (and its reskins by addons) now matches player configuration in Options menu (Defaulted r_jeepFOV to 0 so it uses player's desired FOV)
  • Fixed r_jeepFOV not updating properly when re-entering a vehicle
  • Made the two Portal 2 DLCs also mount with Portal 2
  • ERROR spawnicons are no longer saved to disk when rendering them in the Spawnicon Editor, unless of course we are editing the icon of models/error.mdl itself
  • Sandbox Camera entity now also uses "noclip"/first person drive type, like Lamp
  • Removed the strange 10 unit distance 3rd person view from "noclip" drive type, now is true first person
  • Crouch and Jump buttons now have an effect in "noclip" and "sandbox" drive types (Hold C > Right click on entity > Drive), similar to normal player noclip
  • Ported more episodic behavior for the Gravity Gun - including being able to pick up props behind grate-type props
  • Removed max values from steam stats, they will now continue to increase after completing their associated achievements
  • Spawnmenu handles screen resolution changes better while on a map
  • Pressing CTRL while a RichText GUI element is focused will no longer reset selection, and neither will copying the text
  • Moved spawnicon queue to a convar (spawnicon_queue) which defaults to 0, and made it target 10fps not 30 when enabled
  • NPCs can now open brush doors if it’s in their way, unless the door specifically disables this
  • Added a replacement for a missing shader which fixes a bunch of Left 4 Dead 2 maps having wireframe textures in the skyboxes
  • Adjusted color of water on Left 4 Dead 2 maps
  • Added fixed versions of nuke_clouds materials for some CS:GO map skyboxes
  • Improved default Face Poser presets to not stretch faces across the whole map
  • Preset editor properly handles different convar capitalization (now forces lowercase) and handles cases where the preset contains less convars than the tool itself
handyman

Fixed

  • Fixed graphical glitches on Portal 2 maps when using flashlight (by overwriting skybox materials to have $ignorez set to 1)
  • Fixed certain lights on Portal 2 maps looking incorrect (Refract shader's $localrefract workaround)
  • Fixed Workshop addons not being able to update when joining a server after they have been already loaded by the game
  • Sprays now work in singleplayer
  • Fixed sprays not working for player slots 64-128
  • Fixed not being able to see updated spray image of a player that rejoins the server after changing their spray image until the game is restarted (Also fixes their old spray image becoming error texture)
  • Fixed Half-Life: Source scientists screaming non-stop after getting damaged
  • Fixed an issue with Vehicle duplication when there is no associated player (Community Contribution)
  • Fixed too many NPCs in a squad making new NPCs unable to shoot, which used to happen when spawning over 16 NPCs of the same type through the Spawnmenu at the same time
  • Fixed Gravity Gun sounds being audible only for its owner
  • Fixed weapons sometimes trying to play their sounds from underground, resulting them in not playing any sounds
  • Fixed the broken Gunship patrol pathing code from Half-Life 2 (without hl2_episodic 1) reaching infinite loops and hanging the game
  • Fixed default spawnlists counting as user config, which made them not restore due to a Steam bug if they are deleted
  • Fixed tp_coastal from Fistful of Frags crashing on map load
  • Fixed Faceposer's UI getting filled with 7px tall blank panels when switching Faceposer targets
error

Known Issues

  • Some Left 4 Dead 1 and 2 maps crash on map load. There is a workaround for it on the "dev" beta version of Garry's Mod, but it needs extensive testing before it can be released to public.
add_circle

Features

  • Added "Addon Presets" feature
  • Added "Toggle" keybind for Hoverball tool
  • Added "Playback rate" slider for Spawn Icon editor
  • You can now undo Weapons spawned through Spawnmenu with middle mouse click or the Creator tool (Community Contribution)
  • Hoverball now shows its "Strength" value in the tooltip
  • Dynamite now shows its "Delay" value in the tooltip
  • Added "Followed" and "Favorite" sections to Addons menu
  • Subscribing to addons with addon dependencies from in-game now displays a nice message telling you which addons you should also install with quick buttons to do so
  • Added ability to hide news in main menu (News posts younger than 7 days are still force shown)
  • Banned/invalid addons now appear in the addon list to give users a chance to uninstall them and to tell them why they are not loaded
  • Added support for the new Left 4 Dead 2 DLC
  • Added 4 map icons from the Team Fortress 2 Halloween 2020 update
  • Added "enable realistic fall damage" option to "start new game" for Sandbox
arrow_circle_up

Improvements

  • Implemented full effects for the Super Gravity Gun
  • It should no longer be possible for the Gravity Gun effects to break when overwriting Garry's Mod files
  • Gravity gun effects now look closer to how they look in Half-Life 2
  • Reduced the minimum value for Light tool brightness to -10 from 0, which makes the light dimmer (-6 in UI)
  • Improvements to prevent spawning props partially inside walls/ground
  • Translated "Unfrozen X objects" and "Undone X" (experimental) hints
  • Added default keybinds to Lamp and Light tools
  • Given Hoverball tool more sensible defaults
  • Revised Hoverball visuals and placement angles
  • Improved UGC (addons/dupes/etc) pagination: Added page number for easy sharing, now works better on extremely small screens and can go beyond page 32
  • Reduced minimum amount of UGC icons to 1 so the UGC menus are at least functional on tiny screens
  • Light tool rope attaches closer to the top of the model like expected
  • Localized Workshop subscription Download/Extraction window
  • Do not display "ServerContent" addons in Latest/Popular/Trending categories in-game
  • Updated Light tool model - color tool applies color only to parts that are meant to be colored similarly to Lamp tool models
  • Finger poser improvements: New background image, scales better with custom tool panel width, holding SHIFT should now make it easier to position fingers
  • Changing spawnicon skin/bodygroups in the spawnmenu triggers "Save Changes" button to show
  • Experimental spawnicon loading 'queue' - prevent complete freezes when opening spawnlists, load spawnicons until we reach 30 FPS or 1 per frame
handyman

Fixed

  • Fixed right clicking or middle mouse clicking on text entries in spawnmenu forcing the spawnmenu to stay hanging unable to be closed with Q
  • Fixed not being able to +use pickup hl2 grenades
  • Fixed not being able to +use pickup weapons (as in, physics pickup)
  • Weapons no longer disappear when you pick up 0 ammo from them with gmod_ammo 0
  • Fixed Half-Life 2 credits not working
  • Don't count "no workshop id" as a workshop id for server browser gamemode list, potentially hiding the install gamemode button
  • Fixed not being able to send large dupes (arm them) to server while being able to download large dupes from server. Dupe anti spam is now per-player on server and also exists on client.
  • Fixed Gravity Gun leaving held prop stuck mid air on client when the Gravity Gun is switched away too quickly
  • physcannon_mega_enabled now works as expected
  • Fixed Gravity Gun launch/punt effects coming from the wrong place in 3rd person for local player
  • Fixed "Cleanup Scripted Weapons" button only cleaning up Scripted Entities and not Weapons (now does both), Added missing translation for "#Cleaned_Sents"
  • Resizing spawnmenu Dupes/Saves tabs now properly updates the icons to fit within the new size
  • Players are no longer in the sit animation in 3rd person when exiting vehicles
  • Fixed Lamp/Light tool effects not rendering
  • Fixed Thruster not working at all if it was turned on while frozen by the Physics Gun
  • Fixed being able to "store an attack" using the Fists SWEP by switching away after pressing LMB and before the attack is performed
  • Fixed entering a vehicle while crouched saving and restoring the crouched view offset when exiting the vehicle even though the player is forced to un-crouch
  • Properly align checkbox labels in New Game settings
  • Partially resolve explosive barrels exploding when catching them and lightly touching ground after throwing
arrow_circle_up

Improvements

  • Updated Portuguese translation for TTT (Community Contribution)
add_circle

Features

  • Hammer: Allow right click on 3D view to activate FPS camera controls, on tools where right click in 3D view is not used
  • Added point_viewcontrol features from CSGO: SetTarget/SetTargetAttachment/ReturnToEyes/TeleportToView/SetTrackSpeed/SetPath inputs, "fov" "trackspeed "fov_rate" keyvalues, Set FOV spawnflag
  • Added env_sprite_clientside
  • env_projectedtexture: Added "style" and "pattern" keyvalues/inputs, SetNear/FarZ inputs and more
  • Added simple multiplayer support for color_correction_volume
  • Added info_particle_target as alias of info_target
  • Added prop_dynamic_glow as alias of prop_dynamic
arrow_circle_up

Improvements

  • Replaced a bunch of Color( 255, 255, 255 ) cases with color_white, etc
  • Hammer: Made the "Default to 15 degree rotations" setting invert what SHIFT does during rotation, not outright enable/disable it
  • Restored invalid model file header checks for VRAD
  • More descriptive error messages when Msg* functions fail to call tostring()
  • Avoid kicking players for "Connection rejected by game"
  • Crash with a nicer message on maps that have (purposefully) corrupted first lump
  • Better Orbit camera for DAdjustableModelPanel
  • Added server related steam error code translations
  • Minor improvements to PrintTable() (Community Contribution)
  • Switched steamworks.GetList to ISteamUGC
  • Better error handling for compressed map lump loading
  • The game no longer loads "Do not mount" state for unsubscribed addons
  • Combined the two loops in weapons.Register into one
  • Print a console message when game is started with -noaddons
  • Increased precision of rotation for all entities to fix prediction errors (lagginess) when walking on frozen props at not straight angles
  • Doubled maximum ammo types
handyman

Fixed

  • Fixed a crash related to shadow rendering
  • Fixed DNumberScratch's value going out of bounds of the blue background with huge values
  • Preventative fix for large Lua files causing clients to get stuck on loading or completely breaking a server with autorefresh
  • Fixed GMOD_SendToClient having inflated buffer sizes
  • Do not rebuild Derma skin on ALL panels when some single panel gets its skin set
  • Dtooltip inherits derma skin from the panel it is opened for
  • Fixed Hammer not loading vgui language files
  • Fixed certain labels/buttons in Hammer model picker being cut off
  • Fixed HLMV not being able to open VPK folders (and potentially other places not detecting VPK folders)
  • VRAD no longer crashes with invalid model versions on static props (i.e. Portal 2/CSGO models)
  • VRAD no longer bails compiling vertex lighting for static props with invalid model versions
  • VRAD now uses DX90 (used DX8 versions before) vertex format for vertex lighting of static props
  • Fixed "snap to grid" display in Hammer not updating when it should
  • Fixed "Browse" for func_instance in Hammer not filling the field properly when map .vmf is not located in the GarrysMod/garrysmod/maps folder
  • Fixed (env_)explosions not respecting the NODLIGHTS flag
  • Fixed a crash to do with built-in weapons
  • env_projectedtexture shadows can now be turned on while the projected texture is on (previously required the projected texture to be turned off)
  • Fixed hover state of DSlider's draggable "knob"
  • Overflowing serverside sound precache no longer boots you to main menu/crashes the server
  • Fixed MP3/OGG sounds being cached even when they don't exist/failed to load
  • Fixed Lua errors when thrusters are trying to use NULL particle emitters
  • Force disconnecting players to leave their current vehicle properly
  • Fixed Icon Editor erroring when editing a spawnicon which was removed (spawnmenu_reload)
  • Hammer and entity templates can now properly handle post Left 4 Dead 1 map entity Input/Output (ESC delimiter instead of a comma)
  • Fixed a crash with npc_alyx shooting on a server with no players
  • Changed bodygroups to use unsigned integers over signed integers to prevent crashing and increase the bodygroup combination limit somewhat
  • npc_combinegunship's ground attack spawnflag and inputs work now
  • trigger_teleport ejects player from a vehicle when teleporting with the "Only Players In Vehicles" spawnflag
  • Hammer: Fixed .fgd flag/array values inheritance, so spawnflags on trigger_teleport are no longer missing (possibly fixes other entities too)
  • Fixed an infinite loop with CAI_TrackPather on ep2_outland_11a (and possibly other maps/places)
remove_circle

Removed

  • Removed usage of SendLua in the undo library
  • Removed some unused variables from Sandbox entities
  • Removed internal STUDIO_TWOPASS hack for Lua entities to hopefully fix the render order issues for good
  • Rollback render.ClearDepth change for DModelPanel as it causes issues for addons