From 69e29a19f36d6eae97dc98ef967171a4c1dc4bee Mon Sep 17 00:00:00 2001 From: Sarah O'Reilly Date: Mon, 14 Dec 2020 20:59:46 -0800 Subject: [PATCH] Enable per-rank afk kick limits (issue 3648) --- .../com/earth2me/essentials/ISettings.java | 6 ++++- .../com/earth2me/essentials/Settings.java | 24 +++++++++++++++++-- .../java/com/earth2me/essentials/User.java | 2 +- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/ISettings.java b/Essentials/src/main/java/com/earth2me/essentials/ISettings.java index 2a2c4ffb973..920f55c48d9 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/main/java/com/earth2me/essentials/ISettings.java @@ -191,7 +191,11 @@ public interface ISettings extends IConf { long getAutoAfk(); - long getAutoAfkKick(); + long getAutoAfkKick(User user); + + long getAutoAfkKick(String set); + + Set getAfkLimits(); boolean getFreezeAfkPlayers(); diff --git a/Essentials/src/main/java/com/earth2me/essentials/Settings.java b/Essentials/src/main/java/com/earth2me/essentials/Settings.java index a78222edd5e..99ec0eb5f7d 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Settings.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Settings.java @@ -943,8 +943,28 @@ public long getAutoAfk() { } @Override - public long getAutoAfkKick() { - return config.getLong("auto-afk-kick", -1); + public long getAutoAfkKick(final User user) { + long limit = -1; + final Set limitList = getAfkLimits(); + if (limitList != null) { + for (String set : limitList) { + if (user.isAuthorized("essentials.auto-afk-kick." + set)) { + limit = getAutoAfkKick(set); + } + } + } + return limit; + } + + @Override + public long getAutoAfkKick(final String set) { + return config.getLong("auto-afk-kick." + set, config.getLong("auto-afk-kick.default", -1)); + } + + @Override + public Set getAfkLimits() { + final ConfigurationSection section = config.getConfigurationSection("auto-afk-kick"); + return section == null ? null : section.getKeys(false); } @Override diff --git a/Essentials/src/main/java/com/earth2me/essentials/User.java b/Essentials/src/main/java/com/earth2me/essentials/User.java index d8de3fbbeae..8c0ba8d0a99 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/User.java +++ b/Essentials/src/main/java/com/earth2me/essentials/User.java @@ -674,7 +674,7 @@ public void checkActivity() { return; } - final long autoafkkick = ess.getSettings().getAutoAfkKick(); + final long autoafkkick = ess.getSettings().getAutoAfkKick(this); if (autoafkkick > 0 && lastActivity > 0 && (lastActivity + (autoafkkick * 1000)) < System.currentTimeMillis() && !isAuthorized("essentials.kick.exempt")