Skip to content

Releases: marchellcx/LabExtended

Version 1.3.0.1

Choose a tag to compare

@marchellcx marchellcx released this 25 Mar 15:27

This version adds support for server version 14.2.6
I will no longer be maintaining this project (other than bug fixes / game updates) as I'm working on a much bigger and cleaner version of this.

UPDATE - 27/03/2026 19:04

  • Fixed rubberbanding due to sprint speed not being synced
  • Fixed servers crashing due to the PlayerLeaving event being executed on a background thread

Changes

  • Added a config option used to override player's IP addresses with their token request IP - useful if you need a proxy to connect to your server.
  • ExPlayer.preauthData is not a ConcurrentDictionary<string, string> due to pre-auth moving to it's own thread.

Installation

Put 0LabExtended.dll to your server's plugins directory (do not modify the name of the assembly)

Dependencies

Version 1.3.0

Choose a tag to compare

@marchellcx marchellcx released this 14 Jan 20:36

Version 1.3.0 brings support for server versions up to 14.2.5 with these changes:

Additions

  • Added a utility class FileUtils which allows developers to safely load JSON and/or YAML files with the ability to save corrupted files instead of rewriting them.
  • Cleanup of the ExMap class
  • Added method ExMap.GetPocketExitPosition() which selects the best possible exit position for a specific player using the base-game position system.
    • This also adds method ExMap.GetSafePosition() which returns a random safe position inside a room for a specific player with a possible FacilityZone filter
  • Added method tokens to commands which can be used to invoke "methods" inside a command to convert target results, some implemented examples include getting a player from a raycast: rayToPlayer(castRay(distance,mask))
  • Changes to the CustomPlayerEffect class and it's subtypes
  • SettingsMenus now have an overridable Priority property which dictates the order in which they are shown.

Fixes

  • Fixed a NullReferenceException that could occur if an InteractableToy instance was destroyed while a player was still interacting with it.
  • Fixed a NullReferenceException in Scp939VisibiityPatch that could occur when someone playing as SCP-939 came in contact with a Flamingo
  • Fixed a NullReferenceException in ExPlayer.Get() when getting a player by a general string identifier being thrown if an unverified player with a null UserId property is encountered.
  • Fixed the CommandBase.Read() method not clearing up the active command runner after completing, resulting in no more input being processed until the player rejoins.
  • Fixed doors locked by SCP-079 not unlocking until a server restart due to an outdated patch that wasn't starting the unlock stopwatch.
  • Updated SettingsTextArea to use new entry update messages which should no longer disconnect the player.

Changes

  • Reworked the CustomGamemode class and state tracking, removed the queue mechanism.
  • WeightUtils.GetRandomIndex() will now ignore items with a weight of 0 or less.
  • Reverted commands to use reflection invoke instead of expression delegates as they started failing for commands with high parameter counts.
  • Added a patch that synchronizes isKinematic property of pickups if they are added to the ExMap.FrozenPickups collection.
    • Using the FreezePickup() and UnfreezePickup() extensions will automatically manage adding pickups to this collection.
  • Improved log source detection for source-less log overloads.
  • Added NwPluginAPI's color formatting to command responses, allowing them to be formatted the same way as console logs.
  • MapUtilities which were used for dynamic map positions have been removed.
  • The custom RoleSync and PositionSync APIs were removed as they were causing too much trouble that I was unable to track down.

Installation

Put 0LabExtended.dll to your server's plugins directory (do not modify the name of the assembly)

Dependencies

Version 1.2.3

Choose a tag to compare

@marchellcx marchellcx released this 15 Dec 16:16

Changes

  • Added support for game version 14.2.3
  • Added ExPlayer.IsVisibleInPlayerList which can be used to hide a specific player from the player list.

Installation

Put 0LabExtended.dll to your server's plugins directory (do not modify the name of the assembly)

Dependencies

Version 1.2.1

Choose a tag to compare

@marchellcx marchellcx released this 02 Nov 15:52

Changes

  • Added support for game version 14.2.2

Breaking

  • Reworked the Custom Roles API

Fixes

  • Fixes the rare local server player timeout
    • Still not sure whats the cause of this, needs a bit more monitoring
  • Fixes the ambiguous property name exception in command parameters

Installation

Put 0LabExtended.dll to your server's plugins directory (do not modify the name of the assembly)

Dependencies

Version 1.1.0

Choose a tag to compare

@marchellcx marchellcx released this 24 Oct 17:43

Changes

Non-breaking

  • Added missing prefabs
    • CullingParent
  • Added new events
    • Networking-related events
      • MirrorAddingObserverEventArgs & MirrorAddedObserverEventArgs
      • MirrorRemovingObserverEventArgs & MirrorRemovedObserverEventArgs
      • BehaviourSerializingEventArgs & BehaviourSerializedEventArgs
      • SendingRpcEventArgs & SentRpcEventArgs
      • SettingSyncVarEventArgs & SetSyncVarEventArgs
    • Map-related
      • ProjectileActivatingEventArgs & ProjectileActivatedEventArgs
  • Round-related
    • AssignedRolesEventArgs
    • LateJoinSettingRoleEventArgs & LateJoinSetRoleEventArgs
      • This event will be called for every player that joins after the round starts.
  • Player-related
    • RefreshingCustomInfo
      • This event is called every frame while the player's info area flag is enabled.
    • PlayerRefreshingModifiersEventArgs
    • NpcVerified, HostVerified
      • Dummy and Host players will no longer trigger the Verified event.
    • NpcJoined and HostJoined
      • Dummy and Host players will no longer trigger the Joined event.
    • Scp049CancelledRessurectionEventArgs
  • Added new player toggles
    • HasUnlimitedStamina
  • Added a RoleTypeId property to RoleContainer which provides the role the player was assigned after joining late.
  • Added YAML-serializable Unity objects
    • YamlColor
  • Added a new feature called VanillaAdapter which prevents plugins from overriding settings of other plugins (and also groups all settings made by a specific plugin under one header)
  • Removed patch which provided MoreEffectiveCoroutines exception logs
  • The ApiPatcher class now logs the real amount of patches when patching ´LabExtended`
  • Added some LabAPI fixes
    • Fixed LabAPI hanging the server startup if a plugin with a null RequiredApiVersion property is loaded
    • Fixed LabAPI complaining about missing wrappers more than once

Breaking

  • Removed the audio API
  • Removed and reworked the old Custom Items API
  • Removed and reworked the old FileStorage API
    • File storage now no longer depends on players and handles sharing much better.
  • Modified events
    • Networking-related events
      • MirrorEvents.Spawning & MirrorEvents.Spawned now use the MirrorIdentityEventArgs class
      • MirrorEvents.Destroying & MirrorEvents.Destroyed now use the MirrorDestroyingIdentityEventArgs and MirrorDestroyedIdentityEventArgs classes
  • Removed events
    • Scp049AttemptingRessurectionEventArgs
    • Scp049SensingTargetEventArgs
  • CustomAmmoStorage was removed and merged with AmmoContainer
  • ItemTracker was removed
  • Event Scp3114Strangling was removed in favor of LabAPI
  • CustomEffects namespace was changed to Custom.Effects
  • CustomVoice namespace was changed to Custom.Voice
  • Modified constructor overloads of the CommandOverload attribute to include permissions (yes, you can now use per-overload permissions)

Installation

Put 0LabExtended.dll to your server's plugins directory (do not modify the name of the assembly)

Dependencies

Version 1.0.0

Choose a tag to compare

@marchellcx marchellcx released this 26 Sep 13:30

It seems like forever since I started this project ..

Installation

Put 0LabExtended.dll to your server's plugins directory (do not modify the name of the assembly)

Dependencies