11using CentralAuth ;
2+
23using CommandSystem ;
34
45using Footprinting ;
1213
1314using LabApi . Features . Wrappers ;
1415
15- using LabExtended . API . Enums ;
1616using LabExtended . API . Containers ;
17+
1718using LabExtended . API . Custom . Voice ;
1819
20+ using LabExtended . API . Enums ;
21+
1922using LabExtended . API . Hints ;
2023using LabExtended . API . Hints . Elements . Personal ;
2124
2932using LabExtended . Core . Pooling . Pools ;
3033
3134using LabExtended . Events ;
35+ using LabExtended . Events . Player ;
36+
3237using LabExtended . Extensions ;
3338
3439using LabExtended . Utilities ;
3540using LabExtended . Utilities . FileStorage ;
36-
41+ using LabExtended . Utilities . Update ;
3742using LiteNetLib ;
3843
3944using Mirror ;
4449using NorthwoodLib . Pools ;
4550
4651using PlayerRoles ;
47- using PlayerRoles . Spectating ;
4852using PlayerRoles . FirstPersonControl ;
53+ using PlayerRoles . Spectating ;
4954
5055using RemoteAdmin ;
5156using RemoteAdmin . Communication ;
5762using UserSettings . ServerSpecific ;
5863
5964using VoiceChat ;
60- using LabExtended . Utilities . Update ;
61- using LabExtended . Events . Player ;
6265
6366#pragma warning disable CS8602 // Dereference of a possibly null reference.
6467#pragma warning disable CS8604 // Possible null reference argument.
@@ -71,6 +74,8 @@ namespace LabExtended.API;
7174[ CommandPropertyAlias ( "player" ) ]
7275public class ExPlayer : Player , IDisposable
7376{
77+ internal static PlayerUpdateComponent playerUpdate = PlayerUpdateComponent . Create ( ) ;
78+
7479 internal static Dictionary < string , string > preauthData = new ( byte . MaxValue ) ;
7580 internal static ExPlayer ? host ;
7681
@@ -586,7 +591,7 @@ public ExPlayer(ReferenceHub referenceHub, SwitchContainer toggles) : base(refer
586591 Toggles . IsVisibleInRemoteAdmin = false ;
587592 }
588593
589- PlayerUpdateHelper . OnUpdate += Internal_Update ;
594+ playerUpdate . OnUpdate += RefreshModifiers ;
590595
591596 InternalEvents . HandlePlayerJoin ( this ) ;
592597 }
@@ -1387,7 +1392,7 @@ public string ToLogString()
13871392 /// <inheritdoc cref="IDisposable.Dispose"/>
13881393 public void Dispose ( )
13891394 {
1390- PlayerUpdateHelper . OnUpdate -= Internal_Update ;
1395+ playerUpdate . OnUpdate -= RefreshModifiers ;
13911396
13921397 if ( host != null && host == this )
13931398 host = null ;
@@ -1493,59 +1498,44 @@ public void Dispose()
14931498 Rotation = null ! ;
14941499 }
14951500
1496- private void Internal_Update ( )
1501+ private void RefreshModifiers ( )
14971502 {
1498- if ( ReferenceHub != null )
1499- {
1500- Internal_RefreshModifiers ( this ) ;
1501- }
1502- else
1503- {
1504- PlayerUpdateHelper . OnUpdate -= Internal_Update ;
1505- }
1506- }
1503+ var inventory = ReferenceHub . inventory ;
15071504
1508- private static void Internal_RefreshModifiers ( ExPlayer player )
1509- {
1510- var inventory = player . ReferenceHub . inventory ;
1505+ inventory . _staminaModifier = 1f ;
15111506
1512- if ( inventory != null )
1513- {
1514- inventory . _staminaModifier = 1f ;
1507+ inventory . _movementMultiplier = 1f ;
1508+ inventory . _movementLimiter = float . MaxValue ;
15151509
1516- inventory . _movementMultiplier = 1f ;
1517- inventory . _movementLimiter = float . MaxValue ;
1510+ inventory . _sprintingDisabled = false ;
15181511
1519- inventory . _sprintingDisabled = false ;
1512+ foreach ( var pair in inventory . UserInventory . Items )
1513+ {
1514+ var mobilityController = pair . Value . GetMobilityController ( ) ;
15201515
1521- foreach ( var pair in inventory . UserInventory . Items )
1516+ if ( mobilityController is IStaminaModifier staminaModifier
1517+ && staminaModifier . StaminaModifierActive )
15221518 {
1523- var mobilityController = pair . Value . GetMobilityController ( ) ;
1524-
1525- if ( mobilityController is IStaminaModifier staminaModifier
1526- && staminaModifier . StaminaModifierActive )
1527- {
1528- inventory . _staminaModifier *= staminaModifier . StaminaUsageMultiplier ;
1529- inventory . _sprintingDisabled |= staminaModifier . SprintingDisabled ;
1530- }
1519+ inventory . _staminaModifier *= staminaModifier . StaminaUsageMultiplier ;
1520+ inventory . _sprintingDisabled |= staminaModifier . SprintingDisabled ;
1521+ }
15311522
1532- if ( mobilityController is IMovementSpeedModifier movementSpeedModifier
1533- && movementSpeedModifier . MovementModifierActive )
1534- {
1535- inventory . _movementLimiter = Mathf . Min ( inventory . _movementLimiter , movementSpeedModifier . MovementSpeedLimit ) ;
1536- inventory . _movementMultiplier *= movementSpeedModifier . MovementSpeedMultiplier ;
1537- }
1523+ if ( mobilityController is IMovementSpeedModifier movementSpeedModifier
1524+ && movementSpeedModifier . MovementModifierActive )
1525+ {
1526+ inventory . _movementLimiter = Mathf . Min ( inventory . _movementLimiter , movementSpeedModifier . MovementSpeedLimit ) ;
1527+ inventory . _movementMultiplier *= movementSpeedModifier . MovementSpeedMultiplier ;
15381528 }
1529+ }
15391530
1540- var refreshingEventArgs = new PlayerRefreshingModifiersEventArgs ( player , inventory . _staminaModifier , inventory . _movementMultiplier ,
1541- inventory . _movementLimiter ) ;
1531+ var refreshingEventArgs = new PlayerRefreshingModifiersEventArgs ( this , inventory . _staminaModifier , inventory . _movementMultiplier ,
1532+ inventory . _movementLimiter ) ;
15421533
1543- ExPlayerEvents . OnRefreshingModifiers ( refreshingEventArgs ) ;
1534+ ExPlayerEvents . OnRefreshingModifiers ( refreshingEventArgs ) ;
15441535
1545- inventory . _staminaModifier = refreshingEventArgs . StaminaUsageMultiplier ;
1546- inventory . _movementMultiplier = refreshingEventArgs . MovementSpeedMultiplier ;
1547- inventory . _movementLimiter = refreshingEventArgs . MovementSpeedLimiter ;
1548- }
1536+ inventory . Network_syncStaminaModifier = refreshingEventArgs . StaminaUsageMultiplier ;
1537+ inventory . Network_syncMovementMultiplier = refreshingEventArgs . MovementSpeedMultiplier ;
1538+ inventory . Network_syncMovementLimiter = refreshingEventArgs . MovementSpeedLimiter ;
15491539 }
15501540
15511541 private static ReferenceHub SpawnHiddenDummy ( string nick )
0 commit comments