From a8725f48d51ca2b6010b9bb889978cb17328f30c Mon Sep 17 00:00:00 2001 From: OmegaWeaponDev Date: Thu, 24 Dec 2020 12:40:05 +1030 Subject: [PATCH 1/4] Essentials - Rebase with 2.x and add Cancel Afk On Chat --- .../earth2me/essentials/EssentialsPlayerListener.java | 4 +++- .../main/java/com/earth2me/essentials/ISettings.java | 2 ++ .../main/java/com/earth2me/essentials/Settings.java | 11 +++++++++++ .../src/main/java/com/earth2me/essentials/User.java | 6 ++++++ .../net/ess3/api/events/AfkStatusChangeEvent.java | 1 + Essentials/src/main/resources/config.yml | 3 +++ 6 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java index 77e784dfe38..7222972830a 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java @@ -162,7 +162,7 @@ public void onPlayerChat(final AsyncPlayerChatEvent event) { } } - user.updateActivityOnInteract(true); + user.updateActivityOnChat(true); user.setDisplayNick(); } @@ -265,6 +265,8 @@ public void onPlayerJoin(final PlayerJoinEvent event) { } } + + private boolean hideJoinQuitMessages() { return ess.getSettings().hasJoinQuitMessagePlayerCount() && ess.getServer().getOnlinePlayers().size() > ess.getSettings().getJoinQuitMessagePlayerCount(); } diff --git a/Essentials/src/main/java/com/earth2me/essentials/ISettings.java b/Essentials/src/main/java/com/earth2me/essentials/ISettings.java index 2a2c4ffb973..8db78351707 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/main/java/com/earth2me/essentials/ISettings.java @@ -199,6 +199,8 @@ public interface ISettings extends IConf { boolean cancelAfkOnInteract(); + boolean cancelAfkOnChat(); + boolean sleepIgnoresAfkPlayers(); boolean isAfkListName(); diff --git a/Essentials/src/main/java/com/earth2me/essentials/Settings.java b/Essentials/src/main/java/com/earth2me/essentials/Settings.java index a78222edd5e..fe3e8ee05e2 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Settings.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Settings.java @@ -88,6 +88,7 @@ public class Settings implements net.ess3.api.ISettings { private boolean getFreezeAfkPlayers; private boolean cancelAfkOnMove; private boolean cancelAfkOnInteract; + private boolean cancelAfkOnChat; private boolean sleepIgnoresAfkPlayers; private String afkListName; private boolean isAfkListName; @@ -591,6 +592,7 @@ public void reloadConfig() { disableItemPickupWhileAfk = _getDisableItemPickupWhileAfk(); registerBackInListener = _registerBackInListener(); cancelAfkOnInteract = _cancelAfkOnInteract(); + cancelAfkOnChat = _cancelAfkOnChat(); cancelAfkOnMove = _cancelAfkOnMove(); getFreezeAfkPlayers = _getFreezeAfkPlayers(); sleepIgnoresAfkPlayers = _sleepIgnoresAfkPlayers(); @@ -974,6 +976,15 @@ private boolean _cancelAfkOnInteract() { return config.getBoolean("cancel-afk-on-interact", true); } + @Override + public boolean cancelAfkOnChat() { + return cancelAfkOnChat; + } + + private boolean _cancelAfkOnChat() { + return config.getBoolean("cancel-afk-on-chat", true); + } + @Override public boolean sleepIgnoresAfkPlayers() { return sleepIgnoresAfkPlayers; diff --git a/Essentials/src/main/java/com/earth2me/essentials/User.java b/Essentials/src/main/java/com/earth2me/essentials/User.java index a29fc89ade9..732e9020350 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/User.java +++ b/Essentials/src/main/java/com/earth2me/essentials/User.java @@ -668,6 +668,12 @@ public void updateActivityOnInteract(final boolean broadcast) { } } + public void updateActivityOnChat(final boolean broadcast) { + if (ess.getSettings().cancelAfkOnChat()) { + updateActivity(broadcast, AfkStatusChangeEvent.Cause.CHAT); + } + } + public void checkActivity() { // Graceful time before the first afk check call. if (System.currentTimeMillis() - lastActivity <= 10000) { diff --git a/Essentials/src/main/java/net/ess3/api/events/AfkStatusChangeEvent.java b/Essentials/src/main/java/net/ess3/api/events/AfkStatusChangeEvent.java index ab974d607ea..1e4296b89f3 100644 --- a/Essentials/src/main/java/net/ess3/api/events/AfkStatusChangeEvent.java +++ b/Essentials/src/main/java/net/ess3/api/events/AfkStatusChangeEvent.java @@ -42,6 +42,7 @@ public enum Cause { INTERACT, COMMAND, JOIN, + CHAT, QUIT, UNKNOWN } diff --git a/Essentials/src/main/resources/config.yml b/Essentials/src/main/resources/config.yml index 3ad7dc799b3..3c6749e7164 100644 --- a/Essentials/src/main/resources/config.yml +++ b/Essentials/src/main/resources/config.yml @@ -450,6 +450,9 @@ cancel-afk-on-interact: true # Disable this to reduce server lag. cancel-afk-on-move: true +# Should we automatically remove afk status when a player sends a chat message? +cancel-afk-on-chat: true + # Should AFK players be ignored when other players are trying to sleep? # When this setting is false, players won't be able to skip the night if some players are AFK. # Users with the permission node essentials.sleepingignored will always be ignored. From 885071ac93942ca0b52259b9d7a76c1ccd38b798 Mon Sep 17 00:00:00 2001 From: Josh Roy <10731363+JRoy@users.noreply.github.com> Date: Wed, 23 Dec 2020 21:29:41 -0500 Subject: [PATCH 2/4] Update EssentialsPlayerListener.java --- .../java/com/earth2me/essentials/EssentialsPlayerListener.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java index 7222972830a..41bb75015ce 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java @@ -265,8 +265,6 @@ public void onPlayerJoin(final PlayerJoinEvent event) { } } - - private boolean hideJoinQuitMessages() { return ess.getSettings().hasJoinQuitMessagePlayerCount() && ess.getServer().getOnlinePlayers().size() > ess.getSettings().getJoinQuitMessagePlayerCount(); } From 985cc3a10b4f851b596bfffc57d1dd24bb7ea4d1 Mon Sep 17 00:00:00 2001 From: Josh Roy <10731363+JRoy@users.noreply.github.com> Date: Wed, 23 Dec 2020 21:31:24 -0500 Subject: [PATCH 3/4] Update Settings.java --- .../src/main/java/com/earth2me/essentials/Settings.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/Settings.java b/Essentials/src/main/java/com/earth2me/essentials/Settings.java index fe3e8ee05e2..3a6d87d766c 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Settings.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Settings.java @@ -88,7 +88,6 @@ public class Settings implements net.ess3.api.ISettings { private boolean getFreezeAfkPlayers; private boolean cancelAfkOnMove; private boolean cancelAfkOnInteract; - private boolean cancelAfkOnChat; private boolean sleepIgnoresAfkPlayers; private String afkListName; private boolean isAfkListName; @@ -592,7 +591,6 @@ public void reloadConfig() { disableItemPickupWhileAfk = _getDisableItemPickupWhileAfk(); registerBackInListener = _registerBackInListener(); cancelAfkOnInteract = _cancelAfkOnInteract(); - cancelAfkOnChat = _cancelAfkOnChat(); cancelAfkOnMove = _cancelAfkOnMove(); getFreezeAfkPlayers = _getFreezeAfkPlayers(); sleepIgnoresAfkPlayers = _sleepIgnoresAfkPlayers(); @@ -978,10 +976,6 @@ private boolean _cancelAfkOnInteract() { @Override public boolean cancelAfkOnChat() { - return cancelAfkOnChat; - } - - private boolean _cancelAfkOnChat() { return config.getBoolean("cancel-afk-on-chat", true); } From d3937584a2604793fa771738afb806e88a5eda27 Mon Sep 17 00:00:00 2001 From: Josh Roy <10731363+JRoy@users.noreply.github.com> Date: Wed, 23 Dec 2020 21:39:33 -0500 Subject: [PATCH 4/4] Update User.java --- Essentials/src/main/java/com/earth2me/essentials/User.java | 5 ++++- 1 file changed, 4 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 732e9020350..6d399d734cf 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/User.java +++ b/Essentials/src/main/java/com/earth2me/essentials/User.java @@ -670,7 +670,10 @@ public void updateActivityOnInteract(final boolean broadcast) { public void updateActivityOnChat(final boolean broadcast) { if (ess.getSettings().cancelAfkOnChat()) { - updateActivity(broadcast, AfkStatusChangeEvent.Cause.CHAT); + //Chat happens async, make sure we have a sync context + ess.scheduleSyncDelayedTask(() -> { + updateActivity(broadcast, AfkStatusChangeEvent.Cause.CHAT); + }); } }