diff --git a/Plan/bukkit/src/main/java/com/djrapitops/plan/addons/placeholderapi/placeholders/PlayerPlaceHolder.java b/Plan/bukkit/src/main/java/com/djrapitops/plan/addons/placeholderapi/placeholders/PlayerPlaceHolder.java index cf6556f63..ae637a8cb 100644 --- a/Plan/bukkit/src/main/java/com/djrapitops/plan/addons/placeholderapi/placeholders/PlayerPlaceHolder.java +++ b/Plan/bukkit/src/main/java/com/djrapitops/plan/addons/placeholderapi/placeholders/PlayerPlaceHolder.java @@ -23,6 +23,7 @@ import com.djrapitops.plan.delivery.domain.mutators.PlayerVersusMutator; import com.djrapitops.plan.delivery.domain.mutators.SessionsMutator; import com.djrapitops.plan.delivery.formatting.Formatter; import com.djrapitops.plan.delivery.formatting.Formatters; +import com.djrapitops.plan.gathering.cache.SessionCache; import com.djrapitops.plan.identification.ServerInfo; import com.djrapitops.plan.storage.database.DBSystem; import com.djrapitops.plan.storage.database.queries.containers.ContainerFetchQueries; @@ -161,6 +162,8 @@ public class PlayerPlaceHolder extends AbstractPlanPlaceHolder { // Checkstyle.ON: CyclomaticComplexity private PlayerContainer getPlayer(UUID playerUUID) { - return dbSystem.getDatabase().query(ContainerFetchQueries.fetchPlayerContainer(playerUUID)); + PlayerContainer player = dbSystem.getDatabase().query(ContainerFetchQueries.fetchPlayerContainer(playerUUID)); + SessionCache.getCachedSession(playerUUID).ifPresent(session -> player.putRawData(PlayerKeys.ACTIVE_SESSION, session)); + return player; } } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/gathering/cache/SessionCache.java b/Plan/common/src/main/java/com/djrapitops/plan/gathering/cache/SessionCache.java index fc9d057c4..66c401748 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/gathering/cache/SessionCache.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/gathering/cache/SessionCache.java @@ -49,9 +49,7 @@ public class SessionCache { } public static void refreshActiveSessionsState() { - for (Session session : ACTIVE_SESSIONS.values()) { - session.getValue(SessionKeys.WORLD_TIMES).ifPresent(worldTimes -> worldTimes.updateState(System.currentTimeMillis())); - } + ACTIVE_SESSIONS.values().forEach(Session::updateState); } /** @@ -61,7 +59,9 @@ public class SessionCache { * @return Optional with the session inside it if found. */ public static Optional getCachedSession(UUID playerUUID) { - return Optional.ofNullable(ACTIVE_SESSIONS.get(playerUUID)); + Optional found = Optional.ofNullable(ACTIVE_SESSIONS.get(playerUUID)); + found.ifPresent(Session::updateState); + return found; } /** diff --git a/Plan/common/src/main/java/com/djrapitops/plan/gathering/domain/Session.java b/Plan/common/src/main/java/com/djrapitops/plan/gathering/domain/Session.java index 61469ce42..b6e0528e4 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/gathering/domain/Session.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/gathering/domain/Session.java @@ -254,4 +254,8 @@ public class Session extends DynamicDataContainer implements DateHolder { ", afkTime=" + afkTime + '}'; } + + public void updateState() { + worldTimes.updateState(System.currentTimeMillis()); + } }