Fix player invulnerability
This commit is contained in:
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);
|
||||
|
||||
Reference in new issue
Block a user