From 969e94975ecba37277b3abaf735b1efaf07f8a44 Mon Sep 17 00:00:00 2001 From: Chomp Date: Thu, 5 Jun 2025 13:52:27 +0100 Subject: [PATCH] Fixed hideout `OnUpdate` not triggering correctly --- .../Callbacks/HideoutCallbacks.cs | 17 +++++++++++++---- .../Controllers/HideoutController.cs | 3 ++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Libraries/SPTarkov.Server.Core/Callbacks/HideoutCallbacks.cs b/Libraries/SPTarkov.Server.Core/Callbacks/HideoutCallbacks.cs index 995d49f9..e34d22ca 100644 --- a/Libraries/SPTarkov.Server.Core/Callbacks/HideoutCallbacks.cs +++ b/Libraries/SPTarkov.Server.Core/Callbacks/HideoutCallbacks.cs @@ -6,24 +6,33 @@ using SPTarkov.Server.Core.Models.Eft.Hideout; using SPTarkov.Server.Core.Models.Eft.ItemEvent; using SPTarkov.Server.Core.Models.Spt.Config; using SPTarkov.Server.Core.Servers; +using SPTarkov.Server.Core.Utils; namespace SPTarkov.Server.Core.Callbacks; [Injectable(TypePriority = OnUpdateOrder.HideoutCallbacks)] public class HideoutCallbacks( HideoutController _hideoutController, - ConfigServer _configServer + ConfigServer _configServer, + TimeUtil _timeUtil ) : IOnUpdate { private readonly HideoutConfig _hideoutConfig = _configServer.GetConfig(); + private long _lastRunOnUpdateTimestamp = long.MaxValue; - public Task OnUpdate(long timeSinceLastRun) + public Task OnUpdate(long secondsSinceLastRun) { - if (timeSinceLastRun > _hideoutConfig.RunIntervalSeconds) + if (_timeUtil.GetTimeStamp() <= _lastRunOnUpdateTimestamp + _hideoutConfig.RunIntervalSeconds) { - _hideoutController.Update(); + // Not enough time has passed since last run, exit early + return Task.CompletedTask; } + _hideoutController.Update(); + + // Store last completion time for later use + _lastRunOnUpdateTimestamp = _timeUtil.GetTimeStamp(); + return Task.CompletedTask; } diff --git a/Libraries/SPTarkov.Server.Core/Controllers/HideoutController.cs b/Libraries/SPTarkov.Server.Core/Controllers/HideoutController.cs index e502e1b1..f4000420 100644 --- a/Libraries/SPTarkov.Server.Core/Controllers/HideoutController.cs +++ b/Libraries/SPTarkov.Server.Core/Controllers/HideoutController.cs @@ -1550,7 +1550,8 @@ public class HideoutController( } /// - /// Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event + /// Called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event + /// Updates hideout craft times /// public void Update() {