From 040947b6d35a926dbd540f00df38dc84b7457fe1 Mon Sep 17 00:00:00 2001 From: asofold Date: Mon, 12 Nov 2012 09:04:43 +0100 Subject: [PATCH] Make NCP listeners identifiable by implementing ComponentWithName (adding NCPListener, CheckListener). --- .../neatmonster/nocheatplus/NoCheatPlus.java | 3 +- .../nocheatplus/checks/CheckListener.java | 29 +++++++++++++++++++ .../checks/blockbreak/BlockBreakListener.java | 9 ++++-- .../blockinteract/BlockInteractListener.java | 10 +++++-- .../checks/blockplace/BlockPlaceListener.java | 9 ++++-- .../nocheatplus/checks/chat/ChatListener.java | 6 ++-- .../checks/combined/CombinedListener.java | 6 ++-- .../checks/fight/FightListener.java | 9 ++++-- .../checks/inventory/InventoryListener.java | 9 ++++-- .../checks/moving/MovingListener.java | 10 +++++-- .../nocheatplus/components/NCPListener.java | 17 +++++++++++ .../hooks/NCPExemptionManager.java | 3 +- .../nocheatplus/players/DataManager.java | 8 ++++- 13 files changed, 107 insertions(+), 21 deletions(-) create mode 100644 src/fr/neatmonster/nocheatplus/checks/CheckListener.java create mode 100644 src/fr/neatmonster/nocheatplus/components/NCPListener.java diff --git a/src/fr/neatmonster/nocheatplus/NoCheatPlus.java b/src/fr/neatmonster/nocheatplus/NoCheatPlus.java index 0623c4f7..a02aa158 100644 --- a/src/fr/neatmonster/nocheatplus/NoCheatPlus.java +++ b/src/fr/neatmonster/nocheatplus/NoCheatPlus.java @@ -40,6 +40,7 @@ import fr.neatmonster.nocheatplus.command.CommandHandler; import fr.neatmonster.nocheatplus.command.INotifyReload; import fr.neatmonster.nocheatplus.components.ComponentWithName; import fr.neatmonster.nocheatplus.components.INeedConfig; +import fr.neatmonster.nocheatplus.components.NCPListener; import fr.neatmonster.nocheatplus.components.NameSetPermState; import fr.neatmonster.nocheatplus.components.NoCheatPlusAPI; import fr.neatmonster.nocheatplus.components.PermStateReceiver; @@ -606,7 +607,7 @@ public class NoCheatPlus extends JavaPlugin implements NoCheatPlusAPI { * @return */ private Listener getCoreListener() { - return new Listener() { + return new NCPListener() { @SuppressWarnings("unused") @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerLogin(final PlayerLoginEvent event) { diff --git a/src/fr/neatmonster/nocheatplus/checks/CheckListener.java b/src/fr/neatmonster/nocheatplus/checks/CheckListener.java new file mode 100644 index 00000000..9cf4bf34 --- /dev/null +++ b/src/fr/neatmonster/nocheatplus/checks/CheckListener.java @@ -0,0 +1,29 @@ +package fr.neatmonster.nocheatplus.checks; + +import fr.neatmonster.nocheatplus.components.NCPListener; + +/** + * This class provides naming etc for registration with ListenerManager. + * For listeners registered by NoCheatPlus only. + * @author mc_dev + * + */ +public class CheckListener extends NCPListener{ + + /** Check group / type which this listener is for. */ + protected final CheckType checkType; + + public CheckListener(){ + this(null); + } + + public CheckListener(CheckType checkType){ + this.checkType = checkType; + } + + @Override + public String getComponentName() { + final String part = super.getComponentName(); + return checkType == null ? part : part + "_" + checkType.name(); + } +} diff --git a/src/fr/neatmonster/nocheatplus/checks/blockbreak/BlockBreakListener.java b/src/fr/neatmonster/nocheatplus/checks/blockbreak/BlockBreakListener.java index dfbae276..5a4fdd1e 100644 --- a/src/fr/neatmonster/nocheatplus/checks/blockbreak/BlockBreakListener.java +++ b/src/fr/neatmonster/nocheatplus/checks/blockbreak/BlockBreakListener.java @@ -6,13 +6,14 @@ import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockDamageEvent; import org.bukkit.event.player.PlayerAnimationEvent; import org.bukkit.event.player.PlayerInteractEvent; +import fr.neatmonster.nocheatplus.checks.CheckListener; +import fr.neatmonster.nocheatplus.checks.CheckType; import fr.neatmonster.nocheatplus.checks.inventory.Items; import fr.neatmonster.nocheatplus.permissions.Permissions; import fr.neatmonster.nocheatplus.utilities.BlockProperties; @@ -40,7 +41,7 @@ import fr.neatmonster.nocheatplus.utilities.TickTask; * * @see BlockBreakEvent */ -public class BlockBreakListener implements Listener { +public class BlockBreakListener extends CheckListener { /** The direction check. */ private final Direction direction = new Direction(); @@ -61,6 +62,10 @@ public class BlockBreakListener implements Listener { private final WrongBlock wrongBlock = new WrongBlock(); private boolean isInstaBreak = false; + + public BlockBreakListener(){ + super(CheckType.BLOCKBREAK); + } /** * We listen to BlockBreak events for obvious reasons. diff --git a/src/fr/neatmonster/nocheatplus/checks/blockinteract/BlockInteractListener.java b/src/fr/neatmonster/nocheatplus/checks/blockinteract/BlockInteractListener.java index efd560f3..36487620 100644 --- a/src/fr/neatmonster/nocheatplus/checks/blockinteract/BlockInteractListener.java +++ b/src/fr/neatmonster/nocheatplus/checks/blockinteract/BlockInteractListener.java @@ -4,10 +4,12 @@ import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; +import fr.neatmonster.nocheatplus.checks.CheckListener; +import fr.neatmonster.nocheatplus.checks.CheckType; + /* * M#"""""""'M dP dP M""M dP dP * ## mmmm. `M 88 88 M M 88 88 @@ -30,13 +32,17 @@ import org.bukkit.event.player.PlayerInteractEvent; * * @see BlockInteractEvent */ -public class BlockInteractListener implements Listener { +public class BlockInteractListener extends CheckListener { /** The direction check. */ private final Direction direction = new Direction(); /** The reach check. */ private final Reach reach = new Reach(); + + public BlockInteractListener(){ + super(CheckType.BLOCKINTERACT); + } /** * We listen to PlayerInteractEvent events for obvious reasons. diff --git a/src/fr/neatmonster/nocheatplus/checks/blockplace/BlockPlaceListener.java b/src/fr/neatmonster/nocheatplus/checks/blockplace/BlockPlaceListener.java index f59fc64e..7b5d07a5 100644 --- a/src/fr/neatmonster/nocheatplus/checks/blockplace/BlockPlaceListener.java +++ b/src/fr/neatmonster/nocheatplus/checks/blockplace/BlockPlaceListener.java @@ -7,7 +7,6 @@ import org.bukkit.block.BlockFace; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.ProjectileLaunchEvent; @@ -15,6 +14,8 @@ import org.bukkit.event.player.PlayerAnimationEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; +import fr.neatmonster.nocheatplus.checks.CheckListener; +import fr.neatmonster.nocheatplus.checks.CheckType; import fr.neatmonster.nocheatplus.checks.combined.Combined; import fr.neatmonster.nocheatplus.checks.combined.Improbable; import fr.neatmonster.nocheatplus.permissions.Permissions; @@ -42,7 +43,7 @@ import fr.neatmonster.nocheatplus.utilities.BlockProperties; * * @see BlockPlaceEvent */ -public class BlockPlaceListener implements Listener { +public class BlockPlaceListener extends CheckListener { /** The direction check. */ private final Direction direction = new Direction(); @@ -58,6 +59,10 @@ public class BlockPlaceListener implements Listener { /** The speed check. */ private final Speed speed = new Speed(); + + public BlockPlaceListener(){ + super(CheckType.BLOCKPLACE); + } /** * We listen to BlockPlace events for obvious reasons. diff --git a/src/fr/neatmonster/nocheatplus/checks/chat/ChatListener.java b/src/fr/neatmonster/nocheatplus/checks/chat/ChatListener.java index 268edf95..68a018f0 100644 --- a/src/fr/neatmonster/nocheatplus/checks/chat/ChatListener.java +++ b/src/fr/neatmonster/nocheatplus/checks/chat/ChatListener.java @@ -4,7 +4,6 @@ import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.PlayerChangedWorldEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; @@ -12,6 +11,7 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerLoginEvent.Result; +import fr.neatmonster.nocheatplus.checks.CheckListener; import fr.neatmonster.nocheatplus.checks.CheckType; import fr.neatmonster.nocheatplus.command.CommandUtil; import fr.neatmonster.nocheatplus.command.INotifyReload; @@ -36,7 +36,7 @@ import fr.neatmonster.nocheatplus.utilities.ds.prefixtree.SimpleCharPrefixTree; * * @see ChatEvent */ -public class ChatListener implements Listener, INotifyReload { +public class ChatListener extends CheckListener implements INotifyReload { // Checks. @@ -66,8 +66,8 @@ public class ChatListener implements Listener, INotifyReload { /** Commands to be handled as chat. */ private final SimpleCharPrefixTree chatCommands = new SimpleCharPrefixTree(); - public ChatListener(){ + super(CheckType.CHAT); ConfigFile config = ConfigManager.getConfigFile(); initFilters(config); // (text inits in constructor.) diff --git a/src/fr/neatmonster/nocheatplus/checks/combined/CombinedListener.java b/src/fr/neatmonster/nocheatplus/checks/combined/CombinedListener.java index 950b528f..bea7f502 100644 --- a/src/fr/neatmonster/nocheatplus/checks/combined/CombinedListener.java +++ b/src/fr/neatmonster/nocheatplus/checks/combined/CombinedListener.java @@ -7,13 +7,14 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerToggleSneakEvent; import org.bukkit.event.player.PlayerToggleSprintEvent; +import fr.neatmonster.nocheatplus.checks.CheckListener; +import fr.neatmonster.nocheatplus.checks.CheckType; import fr.neatmonster.nocheatplus.utilities.TickTask; /** @@ -21,11 +22,12 @@ import fr.neatmonster.nocheatplus.utilities.TickTask; * @author mc_dev * */ -public class CombinedListener implements Listener { +public class CombinedListener extends CheckListener { protected final Improbable improbable; public CombinedListener(){ + super(CheckType.COMBINED); this.improbable = new Improbable(); } diff --git a/src/fr/neatmonster/nocheatplus/checks/fight/FightListener.java b/src/fr/neatmonster/nocheatplus/checks/fight/FightListener.java index 79cfbbb0..757bcb57 100644 --- a/src/fr/neatmonster/nocheatplus/checks/fight/FightListener.java +++ b/src/fr/neatmonster/nocheatplus/checks/fight/FightListener.java @@ -5,7 +5,6 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.Player; 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.entity.EntityDamageEvent.DamageCause; @@ -14,6 +13,8 @@ import org.bukkit.event.player.PlayerAnimationEvent; import org.bukkit.event.player.PlayerToggleSprintEvent; import org.bukkit.inventory.ItemStack; +import fr.neatmonster.nocheatplus.checks.CheckListener; +import fr.neatmonster.nocheatplus.checks.CheckType; import fr.neatmonster.nocheatplus.checks.combined.Combined; import fr.neatmonster.nocheatplus.checks.combined.Improbable; import fr.neatmonster.nocheatplus.checks.inventory.Items; @@ -35,7 +36,7 @@ import fr.neatmonster.nocheatplus.utilities.TickTask; * * @see FightEvent */ -public class FightListener implements Listener { +public class FightListener extends CheckListener { /** The angle check. */ private final Angle angle = new Angle(); @@ -63,6 +64,10 @@ public class FightListener implements Listener { /** The speed check. */ private final Speed speed = new Speed(); + + public FightListener(){ + super(CheckType.FIGHT); + } /** * A player attacked something with DamageCause ENTITY_ATTACK. That's most likely what we want to really check. diff --git a/src/fr/neatmonster/nocheatplus/checks/inventory/InventoryListener.java b/src/fr/neatmonster/nocheatplus/checks/inventory/InventoryListener.java index 5816f342..5b6b7b87 100644 --- a/src/fr/neatmonster/nocheatplus/checks/inventory/InventoryListener.java +++ b/src/fr/neatmonster/nocheatplus/checks/inventory/InventoryListener.java @@ -7,7 +7,6 @@ import org.bukkit.entity.Item; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.entity.EntityShootBowEvent; import org.bukkit.event.entity.FoodLevelChangeEvent; @@ -19,6 +18,8 @@ import org.bukkit.event.player.PlayerItemHeldEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; +import fr.neatmonster.nocheatplus.checks.CheckListener; +import fr.neatmonster.nocheatplus.checks.CheckType; import fr.neatmonster.nocheatplus.checks.combined.Combined; import fr.neatmonster.nocheatplus.checks.combined.Improbable; @@ -45,7 +46,7 @@ import fr.neatmonster.nocheatplus.checks.combined.Improbable; * * @see InventoryEvent */ -public class InventoryListener implements Listener { +public class InventoryListener extends CheckListener { /** The drop check. */ private final Drop drop = new Drop(); @@ -60,6 +61,10 @@ public class InventoryListener implements Listener { private final InstantEat instantEat = new InstantEat(); protected final Items items = new Items(); + + public InventoryListener(){ + super(CheckType.INVENTORY); + } /** * We listen to EntityShootBow events for the InstantBow check. diff --git a/src/fr/neatmonster/nocheatplus/checks/moving/MovingListener.java b/src/fr/neatmonster/nocheatplus/checks/moving/MovingListener.java index 84d95914..05a25981 100644 --- a/src/fr/neatmonster/nocheatplus/checks/moving/MovingListener.java +++ b/src/fr/neatmonster/nocheatplus/checks/moving/MovingListener.java @@ -15,7 +15,6 @@ import org.bukkit.entity.Player; import org.bukkit.entity.Vehicle; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; @@ -36,6 +35,7 @@ import org.bukkit.event.vehicle.VehicleMoveEvent; import org.bukkit.util.Vector; import fr.neatmonster.nocheatplus.NoCheatPlus; +import fr.neatmonster.nocheatplus.checks.CheckListener; import fr.neatmonster.nocheatplus.checks.CheckType; import fr.neatmonster.nocheatplus.checks.combined.Combined; import fr.neatmonster.nocheatplus.checks.combined.CombinedData; @@ -70,9 +70,9 @@ import fr.neatmonster.nocheatplus.utilities.PlayerLocation; * * @see MovingEvent */ -public class MovingListener implements Listener { +public class MovingListener extends CheckListener{ - private static final class MoveInfo{ + private static final class MoveInfo{ public final PlayerLocation from = new PlayerLocation(); public final PlayerLocation to = new PlayerLocation(); public final BlockCache cache = new BlockCache(); @@ -116,6 +116,10 @@ public class MovingListener implements Listener { * TODO: Not sure this is needed by contract, might be better due to cascading events in case of actions. */ private final List parkedInfo = new ArrayList(10); + + public MovingListener() { + super(CheckType.MOVING); + } /** * A workaround for players placing blocks below them getting pushed off the block by NoCheatPlus. diff --git a/src/fr/neatmonster/nocheatplus/components/NCPListener.java b/src/fr/neatmonster/nocheatplus/components/NCPListener.java new file mode 100644 index 00000000..43563725 --- /dev/null +++ b/src/fr/neatmonster/nocheatplus/components/NCPListener.java @@ -0,0 +1,17 @@ +package fr.neatmonster.nocheatplus.components; + +import org.bukkit.event.Listener; + +/** + * Registers with default name "NoCheatPlus_Listener". + * @author mc_dev + * + */ +public abstract class NCPListener implements Listener, ComponentWithName { + + @Override + public String getComponentName() { + return "NoCheatPlus_Listener"; + } + +} diff --git a/src/fr/neatmonster/nocheatplus/hooks/NCPExemptionManager.java b/src/fr/neatmonster/nocheatplus/hooks/NCPExemptionManager.java index 75ea2fdc..b1247f3b 100644 --- a/src/fr/neatmonster/nocheatplus/hooks/NCPExemptionManager.java +++ b/src/fr/neatmonster/nocheatplus/hooks/NCPExemptionManager.java @@ -15,6 +15,7 @@ import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerQuitEvent; import fr.neatmonster.nocheatplus.checks.CheckType; +import fr.neatmonster.nocheatplus.components.NCPListener; /* * M"""""""`YM MM'""""'YMM MM"""""""`YM MM""""""""`M dP oo @@ -119,7 +120,7 @@ public class NCPExemptionManager { * @return the listener */ public static Listener getListener() { - return new Listener() { + return new NCPListener() { @SuppressWarnings("unused") @EventHandler(priority = EventPriority.LOWEST) public void onPlayerJoin(final PlayerJoinEvent event) { diff --git a/src/fr/neatmonster/nocheatplus/players/DataManager.java b/src/fr/neatmonster/nocheatplus/players/DataManager.java index 5724add1..46df6707 100644 --- a/src/fr/neatmonster/nocheatplus/players/DataManager.java +++ b/src/fr/neatmonster/nocheatplus/players/DataManager.java @@ -32,6 +32,7 @@ import fr.neatmonster.nocheatplus.checks.inventory.InventoryConfig; import fr.neatmonster.nocheatplus.checks.moving.MovingConfig; import fr.neatmonster.nocheatplus.command.INotifyReload; import fr.neatmonster.nocheatplus.components.ComponentRegistry; +import fr.neatmonster.nocheatplus.components.ComponentWithName; import fr.neatmonster.nocheatplus.components.IHaveCheckType; import fr.neatmonster.nocheatplus.components.INeedConfig; import fr.neatmonster.nocheatplus.components.IRemoveData; @@ -48,7 +49,7 @@ import fr.neatmonster.nocheatplus.hooks.APIUtils; * @author mc_dev * */ -public class DataManager implements Listener, INotifyReload, INeedConfig, ComponentRegistry{ +public class DataManager implements Listener, INotifyReload, INeedConfig, ComponentRegistry, ComponentWithName{ protected static DataManager instance = null; @@ -328,4 +329,9 @@ public class DataManager implements Listener, INotifyReload, INeedConfig, Compon lastLogout.clear(); executionHistories.clear(); } + + @Override + public String getComponentName() { + return "NoCheatPlus_DataManager"; + } }