diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java index 91c98b71fb7..c353ffbc792 100644 --- a/Essentials/src/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/com/earth2me/essentials/ISettings.java @@ -185,6 +185,8 @@ public interface ISettings extends IConf { boolean cancelAfkOnInteract(); + boolean sleepIgnoresAfkPlayers(); + boolean isAfkListName(); String getAfkListName(); diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index 2c069c825fc..79623f75020 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -494,6 +494,7 @@ public void reloadConfig() { cancelAfkOnInteract = _cancelAfkOnInteract(); cancelAfkOnMove = _cancelAfkOnMove(); getFreezeAfkPlayers = _getFreezeAfkPlayers(); + sleepIgnoresAfkPlayers = _sleepIgnoresAfkPlayers(); afkListName = _getAfkListName(); isAfkListName = !afkListName.equalsIgnoreCase("none"); itemSpawnBl = _getItemSpawnBlacklist(); @@ -893,6 +894,17 @@ private boolean _cancelAfkOnInteract() { return config.getBoolean("cancel-afk-on-interact", true); } + private boolean sleepIgnoresAfkPlayers; + + @Override + public boolean sleepIgnoresAfkPlayers() { + return sleepIgnoresAfkPlayers; + } + + private boolean _sleepIgnoresAfkPlayers() { + return config.getBoolean("sleep-ignores-afk-players", true); + } + private String afkListName; private boolean isAfkListName; diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java index f1e2d491145..07ce643a223 100644 --- a/Essentials/src/com/earth2me/essentials/User.java +++ b/Essentials/src/com/earth2me/essentials/User.java @@ -465,7 +465,7 @@ public void setAfk(final boolean set) { return; } - this.getBase().setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") ? true : set); + this.getBase().setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") || set && ess.getSettings().sleepIgnoresAfkPlayers()); if (set && !isAfk()) { afkPosition = this.getLocation(); this.afkSince = System.currentTimeMillis(); diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index c28cc5fbdd9..2dc9606aa1f 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -405,6 +405,11 @@ cancel-afk-on-interact: true # Disable this to reduce server lag. cancel-afk-on-move: 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. +sleep-ignores-afk-players: true + # Set the player's list name when they are AFK. This is none by default which specifies that Essentials # should not interfere with the AFK player's list name. # You may use color codes, use {USERNAME} the player's name or {PLAYER} for the player's displayname.