From f37fc3271754a67ba548dada9821ffba675b16d3 Mon Sep 17 00:00:00 2001 From: ljacqu Date: Sat, 26 Dec 2015 21:26:19 +0100 Subject: [PATCH] Simplify listener classes - Remove unused fields - Use Service methods where possible --- src/main/java/fr/xephi/authme/AuthMe.java | 8 ++-- .../authme/listener/AuthMeBlockListener.java | 47 ++----------------- .../authme/listener/AuthMeEntityListener.java | 27 +++++------ .../authme/listener/AuthMePlayerListener.java | 28 ++++------- .../listener/AuthMePlayerListener16.java | 8 +--- .../listener/AuthMePlayerListener18.java | 8 +--- .../authme/listener/ListenerService.java | 12 ++++- 7 files changed, 40 insertions(+), 98 deletions(-) diff --git a/src/main/java/fr/xephi/authme/AuthMe.java b/src/main/java/fr/xephi/authme/AuthMe.java index 443788e8..c4c2f7bb 100644 --- a/src/main/java/fr/xephi/authme/AuthMe.java +++ b/src/main/java/fr/xephi/authme/AuthMe.java @@ -362,21 +362,21 @@ public class AuthMe extends JavaPlugin { // Register event listeners pluginManager.registerEvents(new AuthMePlayerListener(this), this); - pluginManager.registerEvents(new AuthMeBlockListener(this), this); - pluginManager.registerEvents(new AuthMeEntityListener(this), this); + pluginManager.registerEvents(new AuthMeBlockListener(), this); + pluginManager.registerEvents(new AuthMeEntityListener(), this); pluginManager.registerEvents(new AuthMeServerListener(this), this); // Try to register 1.6 player listeners try { Class.forName("org.bukkit.event.player.PlayerEditBookEvent"); - pluginManager.registerEvents(new AuthMePlayerListener16(this), this); + pluginManager.registerEvents(new AuthMePlayerListener16(), this); } catch (ClassNotFoundException ignore) { } // Try to register 1.8 player listeners try { Class.forName("org.bukkit.event.player.PlayerInteractAtEntityEvent"); - pluginManager.registerEvents(new AuthMePlayerListener18(this), this); + pluginManager.registerEvents(new AuthMePlayerListener18(), this); } catch (ClassNotFoundException ignore) { } } diff --git a/src/main/java/fr/xephi/authme/listener/AuthMeBlockListener.java b/src/main/java/fr/xephi/authme/listener/AuthMeBlockListener.java index 56b7916c..9ffdd483 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMeBlockListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMeBlockListener.java @@ -1,63 +1,24 @@ package fr.xephi.authme.listener; -import fr.xephi.authme.AuthMe; -import fr.xephi.authme.util.Utils; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; -/** - */ public class AuthMeBlockListener implements Listener { - public final AuthMe instance; - - /** - * Constructor for AuthMeBlockListener. - * - * @param instance AuthMe - */ - public AuthMeBlockListener(AuthMe instance) { - this.instance = instance; - } - - /** - * Method onBlockPlace. - * - * @param event BlockPlaceEvent - */ @EventHandler(ignoreCancelled = true) public void onBlockPlace(BlockPlaceEvent event) { - if (Utils.checkAuth(event.getPlayer())) { - return; + if (ListenerService.shouldCancelEvent(event.getPlayer())) { + event.setCancelled(true); } - - // TODO: npc status can be used to bypass security!!! - if (Utils.isNPC(event.getPlayer())) { - return; - } - - event.setCancelled(true); } - /** - * Method onBlockBreak. - * - * @param event BlockBreakEvent - */ @EventHandler(ignoreCancelled = true) public void onBlockBreak(BlockBreakEvent event) { - if (Utils.checkAuth(event.getPlayer())) { - return; + if (ListenerService.shouldCancelEvent(event.getPlayer())) { + event.setCancelled(true); } - - // TODO: npc status can be used to bypass security!!! - if (Utils.isNPC(event.getPlayer())) { - return; - } - - event.setCancelled(true); } } diff --git a/src/main/java/fr/xephi/authme/listener/AuthMeEntityListener.java b/src/main/java/fr/xephi/authme/listener/AuthMeEntityListener.java index 917d8e1c..c5c0b2a6 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMeEntityListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMeEntityListener.java @@ -1,30 +1,31 @@ package fr.xephi.authme.listener; -import fr.xephi.authme.AuthMe; -import fr.xephi.authme.util.Utils; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.entity.*; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.entity.EntityInteractEvent; +import org.bukkit.event.entity.EntityRegainHealthEvent; +import org.bukkit.event.entity.EntityShootBowEvent; +import org.bukkit.event.entity.EntityTargetEvent; +import org.bukkit.event.entity.FoodLevelChangeEvent; +import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.projectiles.ProjectileSource; import java.lang.reflect.Method; import static fr.xephi.authme.listener.ListenerService.shouldCancelEvent; -/** - */ public class AuthMeEntityListener implements Listener { private static Method getShooter; private static boolean shooterIsProjectileSource; - public final AuthMe instance; - public AuthMeEntityListener(AuthMe instance) { - this.instance = instance; + public AuthMeEntityListener() { try { Method m = Projectile.class.getDeclaredMethod("getShooter"); shooterIsProjectileSource = m.getReturnType() != LivingEntity.class; @@ -113,15 +114,9 @@ public class AuthMeEntityListener implements Listener { } } - if (Utils.checkAuth(player)) { - return; + if (ListenerService.shouldCancelEvent(player)) { + event.setCancelled(true); } - - if (Utils.isNPC(player)) { - return; - } - - event.setCancelled(true); } @EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL) diff --git a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java index 3414022a..b48a08a1 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java @@ -18,8 +18,8 @@ import fr.xephi.authme.util.GeoLiteAPI; import fr.xephi.authme.util.Utils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.bukkit.GameMode; import org.bukkit.Location; -import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -49,7 +49,6 @@ import org.bukkit.event.player.PlayerShearEntityEvent; import java.util.concurrent.ConcurrentHashMap; import static fr.xephi.authme.listener.ListenerService.shouldCancelEvent; -import org.bukkit.GameMode; /** * Listener class for player's events @@ -58,7 +57,7 @@ public class AuthMePlayerListener implements Listener { public static final ConcurrentHashMap joinMessage = new ConcurrentHashMap<>(); public static final ConcurrentHashMap causeByAuthMe = new ConcurrentHashMap<>(); - public final AuthMe plugin; + private final AuthMe plugin; private final Messages m; public AuthMePlayerListener(AuthMe plugin) { @@ -401,7 +400,7 @@ public class AuthMePlayerListener implements Listener { public void onPlayerInventoryOpen(InventoryOpenEvent event) { final Player player = (Player) event.getPlayer(); - if (Utils.checkAuth(player) || Utils.isNPC(player)) { + if (!ListenerService.shouldCancelEvent(player)) { return; } event.setCancelled(true); @@ -433,17 +432,9 @@ public class AuthMePlayerListener implements Listener { @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) public void onPlayerHitPlayerEvent(EntityDamageByEntityEvent event) { - Entity damager = event.getDamager(); - if (!(damager instanceof Player)) { - return; + if (ListenerService.shouldCancelEvent(event)) { + event.setCancelled(true); } - if (Utils.checkAuth((Player) damager)) { - return; - } - if (Utils.isNPC((Player) damager)) { - return; - } - event.setCancelled(true); } @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) @@ -469,13 +460,10 @@ public class AuthMePlayerListener implements Listener { @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) public void onSignChange(SignChangeEvent event) { - if (Utils.checkAuth(event.getPlayer())) { - return; + Player player = event.getPlayer(); + if (ListenerService.shouldCancelEvent(player)) { + event.setCancelled(true); } - if (Utils.isNPC(event.getPlayer())) { - return; - } - event.setCancelled(true); } @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) diff --git a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener16.java b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener16.java index 25402c29..cdb4e82a 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener16.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener16.java @@ -1,21 +1,15 @@ package fr.xephi.authme.listener; -import fr.xephi.authme.AuthMe; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerEditBookEvent; /** + * Listener of player events for events introduced in Minecraft 1.6. */ public class AuthMePlayerListener16 implements Listener { - public final AuthMe plugin; - - public AuthMePlayerListener16(AuthMe plugin) { - this.plugin = plugin; - } - @EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL) public void onPlayerEditBook(PlayerEditBookEvent event) { if (ListenerService.shouldCancelEvent(event)) { diff --git a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener18.java b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener18.java index cfaaa65b..560f6e8b 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener18.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener18.java @@ -1,21 +1,15 @@ package fr.xephi.authme.listener; -import fr.xephi.authme.AuthMe; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerInteractAtEntityEvent; /** + * Listener of player events for events introduced in Minecraft 1.8. */ public class AuthMePlayerListener18 implements Listener { - public final AuthMe plugin; - - public AuthMePlayerListener18(AuthMe plugin) { - this.plugin = plugin; - } - @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event) { if (ListenerService.shouldCancelEvent(event)) { diff --git a/src/main/java/fr/xephi/authme/listener/ListenerService.java b/src/main/java/fr/xephi/authme/listener/ListenerService.java index 768ec905..449dec67 100644 --- a/src/main/java/fr/xephi/authme/listener/ListenerService.java +++ b/src/main/java/fr/xephi/authme/listener/ListenerService.java @@ -27,7 +27,7 @@ final class ListenerService { } Player player = (Player) entity; - return !Utils.checkAuth(player) && !Utils.isNPC(player); + return shouldCancelEvent(player); } /** @@ -38,6 +38,16 @@ final class ListenerService { */ public static boolean shouldCancelEvent(PlayerEvent event) { Player player = event.getPlayer(); + return shouldCancelEvent(player); + } + + /** + * Return, based on the player associated with the event, whether or not the event should be canceled. + * + * @param player The player to verify + * @return True if the associated event should be canceled, false otherwise + */ + public static boolean shouldCancelEvent(Player player) { return player != null && !Utils.checkAuth(player) && !Utils.isNPC(player); }