diff --git a/Plan/common/src/main/java/com/djrapitops/plan/placeholder/PlayerPlaceHolders.java b/Plan/common/src/main/java/com/djrapitops/plan/placeholder/PlayerPlaceHolders.java index 5ec9133e3..227b253cb 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/placeholder/PlayerPlaceHolders.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/placeholder/PlayerPlaceHolders.java @@ -148,6 +148,7 @@ public class PlayerPlaceHolders implements Placeholders { ); registerPlaytimePlaceholders(placeholders, time); + registerSessionLengethPlaceholders(placeholders, time); placeholders.register("player_favorite_server", player -> PerServerMutator.forContainer(player).favoriteServer() @@ -172,6 +173,33 @@ public class PlayerPlaceHolders implements Placeholders { registerKillPlaceholders(placeholders); } + private void registerSessionLengethPlaceholders(PlanPlaceholders placeholders, Formatter time) { + placeholders.register("player_current_session_length", + player -> time.apply(getActiveSessionLength(player).orElse(-1L))); + placeholders.register("player_current_session_length_raw", + player -> getActiveSessionLength(player).orElse(0L)); + + placeholders.register("player_latest_session_length", + player -> time.apply(getActiveSessionLength(player) + .orElseGet(() -> SessionsMutator.forContainer(player).latestSession() + .map(FinishedSession::getLength) + .orElse(-1L)))); + placeholders.register("player_latest_session_length_raw", + player -> getActiveSessionLength(player) + .orElseGet(() -> SessionsMutator.forContainer(player).latestSession() + .map(FinishedSession::getLength) + .orElse(0L))); + + placeholders.register("player_previous_session_length", + player -> time.apply(SessionsMutator.forContainer(player).previousSession() + .map(FinishedSession::getLength) + .orElse(-1L))); + placeholders.register("player_previous_session_length_raw", + player -> SessionsMutator.forContainer(player).previousSession() + .map(FinishedSession::getLength) + .orElse(0L)); + } + private boolean isAfk(PlayerContainer player) { return SessionCache.getCachedSession(player.getUnsafe(PlayerKeys.UUID)) .map(ActiveSession::getLastMovementForAfkCalculation) @@ -349,31 +377,6 @@ public class PlayerPlaceHolders implements Placeholders { .filterPlayedOnServer(serverInfo.getServerUUID()) .toPlaytime() ); - - placeholders.register("player_current_session_length", - player -> time.apply(getActiveSessionLength(player).orElse(-1L))); - placeholders.register("player_current_session_length_raw", - player -> getActiveSessionLength(player).orElse(0L)); - - placeholders.register("player_latest_session_length", - player -> time.apply(getActiveSessionLength(player) - .orElseGet(() -> SessionsMutator.forContainer(player).latestSession() - .map(FinishedSession::getLength) - .orElse(-1L)))); - placeholders.register("player_latest_session_length_raw", - player -> getActiveSessionLength(player) - .orElseGet(() -> SessionsMutator.forContainer(player).latestSession() - .map(FinishedSession::getLength) - .orElse(0L))); - - placeholders.register("player_previous_session_length", - player -> time.apply(SessionsMutator.forContainer(player).previousSession() - .map(FinishedSession::getLength) - .orElse(-1L))); - placeholders.register("player_previous_session_length_raw", - player -> SessionsMutator.forContainer(player).previousSession() - .map(FinishedSession::getLength) - .orElse(0L)); } @NotNull diff --git a/Plan/common/src/test/java/com/djrapitops/plan/placeholder/PlanPlaceholdersTest.java b/Plan/common/src/test/java/com/djrapitops/plan/placeholder/PlanPlaceholdersTest.java index c663e6f9e..15f9d0c35 100644 --- a/Plan/common/src/test/java/com/djrapitops/plan/placeholder/PlanPlaceholdersTest.java +++ b/Plan/common/src/test/java/com/djrapitops/plan/placeholder/PlanPlaceholdersTest.java @@ -1,3 +1,19 @@ +/* + * This file is part of Player Analytics (Plan). + * + * Plan is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License v3 as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Plan is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Plan. If not, see . + */ package com.djrapitops.plan.placeholder; import com.djrapitops.plan.PlanSystem;