Skip to content

Commit ffe46d1

Browse files
Separate option to cancel afk on chat from interact (EssentialsX#3863)
1 parent cf7959c commit ffe46d1

File tree

6 files changed

+21
-1
lines changed

6 files changed

+21
-1
lines changed

Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ public void onPlayerChat(final AsyncPlayerChatEvent event) {
162162
}
163163
}
164164

165-
user.updateActivityOnInteract(true);
165+
user.updateActivityOnChat(true);
166166
user.setDisplayNick();
167167
}
168168

Essentials/src/main/java/com/earth2me/essentials/ISettings.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,8 @@ public interface ISettings extends IConf {
199199

200200
boolean cancelAfkOnInteract();
201201

202+
boolean cancelAfkOnChat();
203+
202204
boolean sleepIgnoresAfkPlayers();
203205

204206
boolean isAfkListName();

Essentials/src/main/java/com/earth2me/essentials/Settings.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -984,6 +984,11 @@ private boolean _cancelAfkOnInteract() {
984984
return config.getBoolean("cancel-afk-on-interact", true);
985985
}
986986

987+
@Override
988+
public boolean cancelAfkOnChat() {
989+
return config.getBoolean("cancel-afk-on-chat", true);
990+
}
991+
987992
@Override
988993
public boolean sleepIgnoresAfkPlayers() {
989994
return sleepIgnoresAfkPlayers;

Essentials/src/main/java/com/earth2me/essentials/User.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,15 @@ public void updateActivityOnInteract(final boolean broadcast) {
668668
}
669669
}
670670

671+
public void updateActivityOnChat(final boolean broadcast) {
672+
if (ess.getSettings().cancelAfkOnChat()) {
673+
//Chat happens async, make sure we have a sync context
674+
ess.scheduleSyncDelayedTask(() -> {
675+
updateActivity(broadcast, AfkStatusChangeEvent.Cause.CHAT);
676+
});
677+
}
678+
}
679+
671680
public void checkActivity() {
672681
// Graceful time before the first afk check call.
673682
if (System.currentTimeMillis() - lastActivity <= 10000) {

Essentials/src/main/java/net/ess3/api/events/AfkStatusChangeEvent.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public enum Cause {
4242
INTERACT,
4343
COMMAND,
4444
JOIN,
45+
CHAT,
4546
QUIT,
4647
UNKNOWN
4748
}

Essentials/src/main/resources/config.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,9 @@ cancel-afk-on-interact: true
450450
# Disable this to reduce server lag.
451451
cancel-afk-on-move: true
452452

453+
# Should we automatically remove afk status when a player sends a chat message?
454+
cancel-afk-on-chat: true
455+
453456
# Should AFK players be ignored when other players are trying to sleep?
454457
# When this setting is false, players won't be able to skip the night if some players are AFK.
455458
# Users with the permission node essentials.sleepingignored will always be ignored.

0 commit comments

Comments
 (0)