Fix player invulnerability

This commit is contained in:
NotAlexNoyle committed 2026-04-21 14:30:11 -04:00
1 parent a3f2a4f807
commit 3fd0ee7ef1
2 files changed
+22 -2

No files matched your search

@@ -15,6 +15,7 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerMoveEvent;
@@ -92,6 +93,27 @@ public class AfkListener implements Listener {
}
}
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onEntityDamage(EntityDamageEvent event) {
if (!(event.getEntity() instanceof Player player)) {
return;
}
SmartAfk plugin = SmartAfk.getPlugin();
AfkManager afkManager = plugin.getAfkManager();
if (!plugin.getAfkConfig().isInvulnerableDuringAfk() || !afkManager.isAfk(player)) {
return;
}
if (event instanceof EntityDamageByEntityEvent damageByEntityEvent && getAttacker(damageByEntityEvent) != null) {
afkManager.updateActivity(player);
afkManager.unsetAfk(player);
return;
}
event.setCancelled(true);
}
private Player getAttacker(EntityDamageByEntityEvent event) {
if (event.getDamager() instanceof Player player) {
return player;
@@ -22,7 +22,6 @@ public class AfkManager {
public void setAfk(Player player) {
afkPlayers.add(player.getUniqueId());
afkPositions.put(player.getUniqueId(), player.getLocation());
if (SmartAfk.getPlugin().getAfkConfig().isInvulnerableDuringAfk()) player.setInvulnerable(true);
String name = player.getName();
player.setDisplayName(AFK_PREFIX + ChatColor.RESET + name);
@@ -34,7 +33,6 @@ public class AfkManager {
public void unsetAfk(Player player) {
afkPlayers.remove(player.getUniqueId());
afkPositions.remove(player.getUniqueId());
if (SmartAfk.getPlugin().getAfkConfig().isInvulnerableDuringAfk()) player.setInvulnerable(false);
String name = player.getName();
player.setDisplayName(name);