From 796fb97618599acff6e9ad21f93c3448e4e1a1a3 Mon Sep 17 00:00:00 2001 From: Josh Roy <10731363+JRoy@users.noreply.github.com> Date: Sat, 28 May 2022 16:56:17 -0400 Subject: [PATCH 1/2] Don't progress playtime for vanished users --- .../com/earth2me/essentials/commands/Commandplaytime.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandplaytime.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandplaytime.java index 6d84c820cf3..7b0f0d195d7 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandplaytime.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandplaytime.java @@ -1,6 +1,7 @@ package com.earth2me.essentials.commands; import com.earth2me.essentials.CommandSource; +import com.earth2me.essentials.User; import com.earth2me.essentials.utils.DateUtil; import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.VersionUtil; @@ -39,9 +40,12 @@ protected void run(Server server, CommandSource sender, String commandLabel, Str if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_15_2_R01)) { throw e; } - final IUser user = getPlayer(server, sender, args, 0, true); - displayName = user.getName(); + final User user = getPlayer(server, args, 0, true, true); + displayName = user.getName(); // Vanished players will have their name as their display name playtime = Bukkit.getOfflinePlayer(user.getBase().getUniqueId()).getStatistic(PLAY_ONE_TICK); + if (user.getBase().isOnline() && user.isVanished()) { + playtime = playtime - ((System.currentTimeMillis() - user.getLastLogin()) / 50L); + } } key = "playtimeOther"; } else if (sender.isPlayer()) { From 03a0dbcc26639b61c6faaa2bc659be91679e4b8c Mon Sep 17 00:00:00 2001 From: Josh Roy <10731363+JRoy@users.noreply.github.com> Date: Mon, 30 May 2022 16:39:43 -0400 Subject: [PATCH 2/2] Use last vanish time --- Essentials/src/main/java/com/earth2me/essentials/User.java | 6 ++++++ .../com/earth2me/essentials/commands/Commandplaytime.java | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/User.java b/Essentials/src/main/java/com/earth2me/essentials/User.java index d21f91ed4d4..5b6327fc686 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/User.java +++ b/Essentials/src/main/java/com/earth2me/essentials/User.java @@ -92,6 +92,7 @@ public class User extends UserData implements Comparable, IMessageRecipien private long lastHomeConfirmationTimestamp; private Boolean toggleShout; private transient final List signCopy = Lists.newArrayList("", "", "", ""); + private transient long lastVanishTime = System.currentTimeMillis(); public User(final Player base, final IEssentials ess) { super(base, ess); @@ -964,6 +965,7 @@ public void setVanished(final boolean set) { } } setHidden(true); + lastVanishTime = System.currentTimeMillis(); ess.getVanishedPlayersNew().add(getName()); this.getBase().setMetadata("vanished", new FixedMetadataValue(ess, true)); if (isAuthorized("essentials.vanish.effect")) { @@ -1190,6 +1192,10 @@ public boolean isBaltopExempt() { return isBaltopExcludeCache(); } + public long getLastVanishTime() { + return lastVanishTime; + } + @Override public Block getTargetBlock(int maxDistance) { final Block block; diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandplaytime.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandplaytime.java index 7b0f0d195d7..8c83975e210 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandplaytime.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandplaytime.java @@ -44,7 +44,7 @@ protected void run(Server server, CommandSource sender, String commandLabel, Str displayName = user.getName(); // Vanished players will have their name as their display name playtime = Bukkit.getOfflinePlayer(user.getBase().getUniqueId()).getStatistic(PLAY_ONE_TICK); if (user.getBase().isOnline() && user.isVanished()) { - playtime = playtime - ((System.currentTimeMillis() - user.getLastLogin()) / 50L); + playtime = playtime - ((System.currentTimeMillis() - user.getLastVanishTime()) / 50L); } } key = "playtimeOther";