From 2dea2695b9410b645e659ef3a11615c7fa39a7a6 Mon Sep 17 00:00:00 2001 From: asofold Date: Wed, 25 Dec 2013 23:41:20 +0100 Subject: [PATCH] Quick try: Add EntityDamageByEntity hook (aiming at CrackShot). --- .../asofold/bpl/cncp/CompatNoCheatPlus.java | 2 + .../generic/HookEntityDamageByEntity.java | 64 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookEntityDamageByEntity.java diff --git a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/CompatNoCheatPlus.java b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/CompatNoCheatPlus.java index 725bf5c..c4a3410 100644 --- a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/CompatNoCheatPlus.java +++ b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/CompatNoCheatPlus.java @@ -15,6 +15,7 @@ import me.asofold.bpl.cncp.hooks.Hook; import me.asofold.bpl.cncp.hooks.generic.ConfigurableHook; import me.asofold.bpl.cncp.hooks.generic.HookBlockBreak; import me.asofold.bpl.cncp.hooks.generic.HookBlockPlace; +import me.asofold.bpl.cncp.hooks.generic.HookEntityDamageByEntity; import me.asofold.bpl.cncp.hooks.generic.HookInstaBreak; import me.asofold.bpl.cncp.hooks.generic.HookPlayerClass; import me.asofold.bpl.cncp.utils.TickTask2; @@ -190,6 +191,7 @@ public class CompatNoCheatPlus extends JavaPlugin implements Listener { new HookBlockBreak(), new HookBlockPlace(), new HookInstaBreak(), + new HookEntityDamageByEntity(), }){ builtinHooks.add(hook); } diff --git a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookEntityDamageByEntity.java b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookEntityDamageByEntity.java new file mode 100644 index 0000000..412d888 --- /dev/null +++ b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookEntityDamageByEntity.java @@ -0,0 +1,64 @@ +package me.asofold.bpl.cncp.hooks.generic; + +import java.util.Arrays; + +import me.asofold.bpl.cncp.config.compatlayer.CompatConfig; + +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 fr.neatmonster.nocheatplus.checks.CheckType; + +public class HookEntityDamageByEntity extends ClassExemptionHook implements + Listener { + + public HookEntityDamageByEntity() { + super("entity-damage-by-entity."); + defaultClasses.addAll(Arrays.asList(new String[] { + // CrackShot + "WeaponDamageEntityEvent", })); + } + + @Override + public String getHookName() { + return "EntityDamageByEntity(default)"; + } + + @Override + public String getHookVersion() { + return "0.0"; + } + + @Override + public Listener[] getListeners() { + return new Listener[] { this }; + } + + @Override + public void applyConfig(CompatConfig cfg, String prefix) { + super.applyConfig(cfg, prefix); + if (classes.isEmpty()) + enabled = false; + } + + @EventHandler(priority = EventPriority.LOWEST) + final void onDamageLowest(final EntityDamageByEntityEvent event) { + final Entity damager = event.getDamager(); + if (damager instanceof Player) { + checkExempt((Player) damager, event.getClass(), CheckType.FIGHT); + } + } + + @EventHandler(priority = EventPriority.MONITOR) + final void onDamageMonitor(final EntityDamageByEntityEvent event) { + final Entity damager = event.getDamager(); + if (damager instanceof Player) { + checkUnexempt((Player) damager, event.getClass(), CheckType.FIGHT); + } + } + +}