From 0fb831fdb93df50828a5e6da069bd5703e63c46d Mon Sep 17 00:00:00 2001 From: Felix Heidisch Date: Wed, 4 Jun 2025 13:59:37 +0200 Subject: [PATCH] Add is invulnerable config --- .../java/de/codecrafter/smartAfk/utils/AfkConfig.java | 6 ++++++ .../java/de/codecrafter/smartAfk/utils/AfkManager.java | 5 +++-- src/main/resources/config.yml | 10 +++++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/codecrafter/smartAfk/utils/AfkConfig.java b/src/main/java/de/codecrafter/smartAfk/utils/AfkConfig.java index 30ab4b7..860c2d4 100644 --- a/src/main/java/de/codecrafter/smartAfk/utils/AfkConfig.java +++ b/src/main/java/de/codecrafter/smartAfk/utils/AfkConfig.java @@ -17,6 +17,7 @@ public class AfkConfig { private boolean freezeAfkPlayers; private boolean cancelAfkOnMove; private boolean cancelAfkOnJump; + private boolean invulnerableDuringAfk; /** * Creates an instance of {@code TimerConfig} class. @@ -46,6 +47,7 @@ public class AfkConfig { this.freezeAfkPlayers = config.getBoolean("freeze-afk-players", true); this.cancelAfkOnJump = config.getBoolean("cancel-afk-on-jump", true); this.cancelAfkOnMove = config.getBoolean("cancel-afk-on-move", true); + this.invulnerableDuringAfk = config.getBoolean("invulnerable-during-afk", true); } public boolean isFreezeAfkPlayers() { @@ -59,4 +61,8 @@ public class AfkConfig { public boolean isCancelAfkOnMove() { return cancelAfkOnMove; } + + public boolean isInvulnerableDuringAfk() { + return invulnerableDuringAfk; + } } diff --git a/src/main/java/de/codecrafter/smartAfk/utils/AfkManager.java b/src/main/java/de/codecrafter/smartAfk/utils/AfkManager.java index d57adad..1dedac4 100644 --- a/src/main/java/de/codecrafter/smartAfk/utils/AfkManager.java +++ b/src/main/java/de/codecrafter/smartAfk/utils/AfkManager.java @@ -5,6 +5,7 @@ package de.codecrafter.smartAfk.utils; +import de.codecrafter.smartAfk.SmartAfk; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Location; @@ -20,7 +21,7 @@ public class AfkManager { public void setAfk(Player player) { afkPlayers.add(player.getUniqueId()); afkPositions.put(player.getUniqueId(), player.getLocation()); - player.setInvulnerable(true); + if (SmartAfk.getPlugin().getAfkConfig().isInvulnerableDuringAfk()) player.setInvulnerable(true); Component name = player.name(); player.displayName(AFK_PREFIX.append(name.color(NamedTextColor.WHITE))); @@ -32,7 +33,7 @@ public class AfkManager { public void unsetAfk(Player player) { afkPlayers.remove(player.getUniqueId()); afkPositions.remove(player.getUniqueId()); - player.setInvulnerable(false); + if (SmartAfk.getPlugin().getAfkConfig().isInvulnerableDuringAfk()) player.setInvulnerable(false); Component name = player.name(); player.displayName(name); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index f91ce30..af802ac 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -2,9 +2,13 @@ freeze-afk-players: true # cancel afk status if the player jumps -# only active if 'freeze-afk-players' is true +# ONLY WORKS IF 'freeze-afk-players' IS TRUE cancel-afk-on-jump: true # cancel afk status if player moves more than 3 blocks -# only active if 'freeze-afk-players' is false -cancel-afk-on-move: true \ No newline at end of file +# else use the '/afk' command +# ONLY WORKS IF 'freeze-afk-players' IS FALSE +cancel-afk-on-move: true + +# the player cannot take damage when he is afk +invulnerable-during-afk: true