From b6fdb738c22289856900a68c0562ba401f5bca2f Mon Sep 17 00:00:00 2001 From: zavdav <157126752+zavdav@users.noreply.github.com> Date: Sat, 4 Jan 2025 22:59:54 +0100 Subject: [PATCH] What was i thinking --- .../listener/FundamentalsEntityListener.java | 43 +++++++------ .../listener/FundamentalsPlayerListener.java | 63 ++++++++++--------- 2 files changed, 55 insertions(+), 51 deletions(-) diff --git a/FundamentalsCore/src/main/java/com/johnymuffin/beta/fundamentals/listener/FundamentalsEntityListener.java b/FundamentalsCore/src/main/java/com/johnymuffin/beta/fundamentals/listener/FundamentalsEntityListener.java index 1d77ee2..3cb4c31 100644 --- a/FundamentalsCore/src/main/java/com/johnymuffin/beta/fundamentals/listener/FundamentalsEntityListener.java +++ b/FundamentalsCore/src/main/java/com/johnymuffin/beta/fundamentals/listener/FundamentalsEntityListener.java @@ -20,7 +20,7 @@ public FundamentalsEntityListener(Fundamentals plugin) { public void onEntityCombust(EntityCombustEvent event) { if (event.getEntity() instanceof Player) { FundamentalsPlayer fPlayer = plugin.getPlayerMap().getPlayer((Player) event.getEntity()); - if(fPlayer.isAFK() || fPlayer.getFileGodModeStatus()){ + if (fPlayer.isAFK() || fPlayer.getFileGodModeStatus()) { event.setCancelled(true); } } @@ -29,31 +29,30 @@ public void onEntityCombust(EntityCombustEvent event) { @EventHandler public void onEntityDamage(EntityDamageEvent event) { if (event.getEntity() instanceof Player) { - FundamentalsPlayer fPlayer = plugin.getPlayerMap().getPlayer((Player) event.getEntity()); - if(fPlayer.isAFK() || fPlayer.getFileGodModeStatus()){ - final Player player = (Player) event.getEntity(); + Player player = (Player) event.getEntity(); + FundamentalsPlayer fPlayer = plugin.getPlayerMap().getPlayer(player); + if (fPlayer.isAFK() || fPlayer.getFileGodModeStatus()) { player.setFireTicks(0); player.setRemainingAir(player.getMaximumAir()); event.setCancelled(true); return; } } - if(event.getCause().equals(EntityDamageEvent.DamageCause.ENTITY_ATTACK)){ - EntityDamageByEntityEvent damageEvent = (EntityDamageByEntityEvent) event; - if(damageEvent.getDamager() != null && damageEvent.getDamager() instanceof Player){ - FundamentalsPlayer fPlayer = plugin.getPlayerMap().getPlayer((Player) damageEvent.getDamager()); - if(fPlayer.isAFK()){ - event.setCancelled(true); - } + + if (!(event instanceof EntityDamageByEntityEvent)) return; + EntityDamageByEntityEvent dmgEvent = (EntityDamageByEntityEvent) event; + + switch (event.getCause()) { + case ENTITY_ATTACK: { + if (dmgEvent.getDamager() == null || !(dmgEvent.getDamager() instanceof Player)) return; + FundamentalsPlayer fPlayer = plugin.getPlayerMap().getPlayer((Player) dmgEvent.getDamager()); + if (fPlayer.isAFK()) event.setCancelled(true); } - } else if(event.getCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)){ - EntityDamageByEntityEvent damageEvent = (EntityDamageByEntityEvent) event; - LivingEntity shooter = ((Projectile) damageEvent.getDamager()).getShooter(); - if(shooter instanceof Player){ + case PROJECTILE: { + LivingEntity shooter = ((Projectile) dmgEvent.getDamager()).getShooter(); + if (!(shooter instanceof Player)) return; FundamentalsPlayer fPlayer = plugin.getPlayerMap().getPlayer((Player) shooter); - if(fPlayer.isAFK()){ - event.setCancelled(true); - } + if (fPlayer.isAFK()) event.setCancelled(true); } } } @@ -62,7 +61,7 @@ public void onEntityDamage(EntityDamageEvent event) { public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent event) { if (event.getEntity() instanceof Player) { FundamentalsPlayer fPlayer = plugin.getPlayerMap().getPlayer((Player) event.getEntity()); - if(fPlayer.isAFK() || fPlayer.getFileGodModeStatus()){ + if (fPlayer.isAFK() || fPlayer.getFileGodModeStatus()) { event.setCancelled(true); } } @@ -72,11 +71,11 @@ public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent event) { public void onEntityTarget(EntityTargetEvent event) { if (event.getTarget() instanceof Player) { FundamentalsPlayer fPlayer = plugin.getPlayerMap().getPlayer((Player) event.getTarget()); - if(fPlayer.isVanished()){ - if(plugin.getFundamentalConfig().getConfigBoolean("settings.vanish-hidden-from-mobs")) { + if (fPlayer.isVanished()) { + if (plugin.getFundamentalConfig().getConfigBoolean("settings.vanish-hidden-from-mobs")) { event.setCancelled(true); } - } else if(fPlayer.isAFK()){ + } else if (fPlayer.isAFK()) { event.setCancelled(true); } } diff --git a/FundamentalsCore/src/main/java/com/johnymuffin/beta/fundamentals/listener/FundamentalsPlayerListener.java b/FundamentalsCore/src/main/java/com/johnymuffin/beta/fundamentals/listener/FundamentalsPlayerListener.java index 02f1268..0385b9a 100644 --- a/FundamentalsCore/src/main/java/com/johnymuffin/beta/fundamentals/listener/FundamentalsPlayerListener.java +++ b/FundamentalsCore/src/main/java/com/johnymuffin/beta/fundamentals/listener/FundamentalsPlayerListener.java @@ -21,12 +21,13 @@ import org.bukkit.event.block.Action; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.player.*; + import java.util.HashSet; import java.util.Set; -import java.util.Iterator; import java.util.UUID; import java.util.logging.Level; +import static com.johnymuffin.beta.fundamentals.FundamentalPermission.isPlayerAuthorized; import static com.johnymuffin.beta.fundamentals.util.Utils.*; public class FundamentalsPlayerListener implements Listener { @@ -177,15 +178,15 @@ public void onPlayerChat(final PlayerChatEvent event) { @EventHandler(ignoreCancelled = true) public void onPlayerCommand(PlayerCommandPreprocessEvent event) { String command = event.getMessage(); - if(plugin.getPlayerMap().getPlayer(event.getPlayer()).isAFK() && - (!command.equalsIgnoreCase("/afk") && !command.equalsIgnoreCase("/afk " + event.getPlayer().getName()))){ + if (plugin.getPlayerMap().getPlayer(event.getPlayer()).isAFK() && + (!command.equalsIgnoreCase("/afk") && !command.equalsIgnoreCase("/afk " + event.getPlayer().getName()))) { plugin.getPlayerMap().getPlayer(event.getPlayer()).updateActivity(); } UUID uuid = event.getPlayer().getUniqueId(); //Run nickname color check - if(command.toLowerCase().startsWith("/nick") || command.toLowerCase().startsWith("/nickname")) { + if (command.toLowerCase().startsWith("/nick") || command.toLowerCase().startsWith("/nickname")) { Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { @Override public void run() { @@ -200,40 +201,44 @@ public void run() { @EventHandler(ignoreCancelled = true) public void onPlayerMove(final PlayerMoveEvent event) { - if(!plugin.getPlayerMap().getPlayer(event.getPlayer().getUniqueId()).isAFK()){ - if (!((event.getFrom().getBlockX() == event.getTo().getBlockX()) && (event.getFrom().getBlockZ() == event.getTo().getBlockZ()))){ - FundamentalsPlayerMap.getInstance().getPlayer(event.getPlayer()).updateActivity(); - } + Player player = event.getPlayer(); + FundamentalsPlayer fPlayer = plugin.getPlayerMap().getPlayer(player); + Location from = event.getFrom(); + Location to = event.getTo(); + boolean playerMoved = + from.getBlockX() != to.getBlockX() || + from.getBlockY() != to.getBlockY() || + from.getBlockZ() != to.getBlockZ(); + + if (!fPlayer.isAFK()) { + if (playerMoved) fPlayer.updateActivity(); return; } - if(event.getFrom().getBlockX() == event.getTo().getBlockX() && - event.getFrom().getBlockY() == event.getTo().getBlockY() && - event.getFrom().getBlockZ() == event.getTo().getBlockZ()) return; - if(!event.getPlayer().hasPermission("fundamentals.afk") && !event.getPlayer().isOp()){ - plugin.getPlayerMap().getPlayer(event.getPlayer().getUniqueId()).updateActivity(); + if (!playerMoved) return; + + // If player can't run /afk to unfreeze, let them move + if (!isPlayerAuthorized(player, "fundamentals.afk")) { + fPlayer.updateActivity(); return; } - Location location = event.getFrom(); - location.setPitch(event.getTo().getPitch()); - location.setYaw(event.getTo().getYaw()); - if(event.getFrom().getY() > event.getTo().getY()){ - location.setY(event.getTo().getY()); - }else{ - location.setY(event.getFrom().getY()); - } - event.setTo(location); - if(!afkMovingPlayers.contains(event.getPlayer().getUniqueId())){ - afkMovingPlayers.add(event.getPlayer().getUniqueId()); - event.getPlayer().sendMessage(FundamentalsLanguage.getInstance().getMessage("moving_while_afk")); - Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, - () -> afkMovingPlayers.remove(event.getPlayer().getUniqueId()), 100); + from.setPitch(to.getPitch()); + from.setYaw(to.getYaw()); + if (from.getY() > to.getY()) from.setY(to.getY()); + event.setTo(from); + + // Notify player to run /afk + if (!afkMovingPlayers.contains(player.getUniqueId())) { + afkMovingPlayers.add(player.getUniqueId()); + player.sendMessage(FundamentalsLanguage.getInstance().getMessage("moving_while_afk")); + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> + afkMovingPlayers.remove(player.getUniqueId()), 100); } } @EventHandler(ignoreCancelled = true) - public void onPlayerPickupItem(PlayerPickupItemEvent event){ - if(plugin.getPlayerMap().getPlayer(event.getPlayer().getUniqueId()).isAFK()){ + public void onPlayerPickupItem(PlayerPickupItemEvent event) { + if (plugin.getPlayerMap().getPlayer(event.getPlayer()).isAFK()) { event.setCancelled(true); } }