From 7a4a8b0490c3a5f7bcd5524a7a1ea0d87668f27e Mon Sep 17 00:00:00 2001 From: asofold Date: Wed, 17 Jan 2018 15:06:11 +0100 Subject: [PATCH] [BLEEDING] With NCP 3.16.1-SNAPSHOT: remove plugin enabling, add order. * Run from NCP 3.16.1-SNAPSHOT on exclusively. * Add default order to registration. * Add true wrapping order to hook event handlers. * Remove config features for enabling other plugins. * Remove static instance storing. Effects remain to be seen... --- CompatNoCheatPlus/plugin.yml | 2 +- CompatNoCheatPlus/pom.xml | 2 +- .../asofold/bpl/cncp/CompatNoCheatPlus.java | 183 ++++------- .../me/asofold/bpl/cncp/config/Settings.java | 111 +++---- .../cncp/hooks/generic/HookBlockBreak.java | 80 ++--- .../cncp/hooks/generic/HookBlockPlace.java | 78 ++--- .../generic/HookEntityDamageByEntity.java | 86 ++--- .../cncp/hooks/generic/HookInstaBreak.java | 281 +++++++++-------- .../hooks/generic/HookPlayerInteract.java | 74 +++-- .../bpl/cncp/hooks/generic/HookSetSpeed.java | 161 +++++----- .../bpl/cncp/hooks/mcmmo/HookmcMMO.java | 298 +++++++++--------- 11 files changed, 668 insertions(+), 688 deletions(-) diff --git a/CompatNoCheatPlus/plugin.yml b/CompatNoCheatPlus/plugin.yml index 8e46459..130b68a 100644 --- a/CompatNoCheatPlus/plugin.yml +++ b/CompatNoCheatPlus/plugin.yml @@ -3,7 +3,7 @@ main: me.asofold.bpl.cncp.CompatNoCheatPlus version: ${project.version}-s${BUILD_SERIES}-b${BUILD_NUMBER} dev-url: http://dev.bukkit.org/server-mods/compatnocheatplus-cncp/ -loadbefore: +depend: - NoCheatPlus softdepend: - mcMMO diff --git a/CompatNoCheatPlus/pom.xml b/CompatNoCheatPlus/pom.xml index a09551a..b3be648 100644 --- a/CompatNoCheatPlus/pom.xml +++ b/CompatNoCheatPlus/pom.xml @@ -54,7 +54,7 @@ fr.neatmonster nocheatplus - 3.16.0-SNAPSHOT + 3.16.1-SNAPSHOT provided diff --git a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/CompatNoCheatPlus.java b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/CompatNoCheatPlus.java index b284386..bbea373 100644 --- a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/CompatNoCheatPlus.java +++ b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/CompatNoCheatPlus.java @@ -2,29 +2,23 @@ package me.asofold.bpl.cncp; import java.io.File; import java.util.HashSet; -import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; import java.util.logging.Level; -import java.util.logging.Logger; import org.bukkit.Bukkit; -import org.bukkit.Server; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.server.PluginEnableEvent; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.scheduler.BukkitScheduler; import fr.neatmonster.nocheatplus.NCPAPIProvider; import fr.neatmonster.nocheatplus.components.registry.feature.IDisableListener; +import fr.neatmonster.nocheatplus.components.registry.order.RegistrationOrder; import fr.neatmonster.nocheatplus.hooks.NCPHook; import fr.neatmonster.nocheatplus.hooks.NCPHookManager; import me.asofold.bpl.cncp.config.Settings; @@ -39,16 +33,42 @@ import me.asofold.bpl.cncp.hooks.generic.HookInstaBreak; import me.asofold.bpl.cncp.hooks.generic.HookPlayerClass; import me.asofold.bpl.cncp.hooks.generic.HookPlayerInteract; import me.asofold.bpl.cncp.utils.TickTask2; -import me.asofold.bpl.cncp.utils.Utils; /** - * Quick attempt to provide compatibility to NoCheatPlus (by NeatMonster) for some other plugins that change the vanilla game mechanichs, for instance by fast block breaking. - * @author mc_dev + * Quick attempt to provide compatibility to NoCheatPlus (by NeatMonster) for + * some other plugins that change the vanilla game mechanichs, for instance by + * fast block breaking. + * + * @author asofold * */ -public class CompatNoCheatPlus extends JavaPlugin implements Listener { +public class CompatNoCheatPlus extends JavaPlugin { - private static CompatNoCheatPlus instance = null; + //TODO: Adjust, once NCP has order everywhere (generic + ncp-specific?). + + public static final String tagEarlyFeature = "cncp.feature.early"; + public static final String beforeTagEarlyFeature = ".*nocheatplus.*|.*NoCheatPlus.*"; + + public static final String tagLateFeature = "cncp.feature.late"; + public static final String afterTagLateFeature = "cncp.system.early.*|.*nocheatplus.*|.*NoCheatPlus.*)"; + + public static final String tagEarlySystem = "cncp.system.early"; + public static final String beforeTagEarlySystem = beforeTagEarlyFeature; // ... + + public static final RegistrationOrder defaultOrderSystemEarly = new RegistrationOrder( + tagEarlySystem, + beforeTagEarlySystem, + null); + + public static final RegistrationOrder defaultOrderFeatureEarly = new RegistrationOrder( + tagEarlyFeature, + beforeTagEarlyFeature, + "cncp.system.early.*"); + + public static final RegistrationOrder defaultOrderFeatureLate = new RegistrationOrder( + tagLateFeature, + null, + afterTagLateFeature); private final Settings settings = new Settings(); @@ -62,15 +82,6 @@ public class CompatNoCheatPlus extends JavaPlugin implements Listener { */ private static boolean enabled = false; - /** - * Experimental: static method to enable this plugin, only enables if it is not already enabled. - * @return - */ - public static boolean enableCncp(){ - if (enabled) return true; - return enablePlugin("CompatNoCheatPlus"); - } - /** * Static method to enable a plugin (might also be useful for hooks). * @param plgName @@ -104,7 +115,7 @@ public class CompatNoCheatPlus extends JavaPlugin implements Listener { * @return */ public static CompatNoCheatPlus getInstance(){ - return instance; + return CompatNoCheatPlus.getPlugin(CompatNoCheatPlus.class); } /** @@ -147,20 +158,26 @@ public class CompatNoCheatPlus extends JavaPlugin implements Listener { * @return */ public static boolean registerListeners(Hook hook) { - if (!enabled) return false; + if (!enabled) { + return false; + } Listener[] listeners = hook.getListeners(); if (listeners != null){ // attempt to register events: - PluginManager pm = Bukkit.getPluginManager(); - Plugin plg = pm.getPlugin("CompatNoCheatPlus"); - if (plg == null) return false; + Plugin plg = CompatNoCheatPlus.getPlugin(CompatNoCheatPlus.class); + if (plg == null) { + return false; + } for (Listener listener : listeners) { - pm.registerEvents(listener, plg); + NCPAPIProvider.getNoCheatPlusAPI().getEventRegistry().register(listener, + defaultOrderFeatureEarly, plg); } } return true; } + // ---- + /** * Called before loading settings, adds available hooks into a list, so they will be able to read config. */ @@ -182,11 +199,11 @@ public class CompatNoCheatPlus extends JavaPlugin implements Listener { builtinHooks.add(new me.asofold.bpl.cncp.hooks.mcmmo.HookmcMMO()); } catch (Throwable t){} -// // MagicSpells -// try{ -// builtinHooks.add(new me.asofold.bpl.cncp.hooks.magicspells.HookMagicSpells()); -// } -// catch (Throwable t){} + // // MagicSpells + // try{ + // builtinHooks.add(new me.asofold.bpl.cncp.hooks.magicspells.HookMagicSpells()); + // } + // catch (Throwable t){} // Simple generic hooks for (Hook hook : new Hook[]{ new HookPlayerClass(), @@ -223,7 +240,6 @@ public class CompatNoCheatPlus extends JavaPlugin implements Listener { @Override public void onEnable() { enabled = false; // make sure - instance = this; // (no cleanup) // Settings: @@ -231,8 +247,7 @@ public class CompatNoCheatPlus extends JavaPlugin implements Listener { setupBuiltinHooks(); loadSettings(); // Register own listener: - final PluginManager pm = getServer().getPluginManager(); - pm.registerEvents(this, this); + //NCPAPIProvider.getNoCheatPlusAPI().getEventRegistry().register(this, defaultOrderSystemEarly, this); super.onEnable(); // Add Hooks: @@ -244,32 +259,36 @@ public class CompatNoCheatPlus extends JavaPlugin implements Listener { registerListeners(hook); } - // Start ticktask 2 - getServer().getScheduler().scheduleSyncRepeatingTask(this, new TickTask2(), 1, 1); + // Register to remove hooks when NCP is disabling. + NCPAPIProvider.getNoCheatPlusAPI().addComponent(new IDisableListener(){ + @Override + public void onDisable() { + // Remove all registered cncp hooks: + unregisterNCPHooks(); + } + }); + if (!registeredHooks.isEmpty()) { + registerHooks(); + } - // Check for the NoCheatPlus plugin. - Plugin plugin = pm.getPlugin("NoCheatPlus"); - if (plugin == null) { - getLogger().severe("[CompatNoCheatPlus] The NoCheatPlus plugin is not present."); - } - else if (plugin.isEnabled()) { - getLogger().severe("[CompatNoCheatPlus] The NoCheatPlus plugin already is enabled, this might break several hooks."); - } + // Start ticktask 2 + // TODO: Replace by using TickTask ? Needs order (depend is used now)? + getServer().getScheduler().scheduleSyncRepeatingTask(this, new TickTask2(), 1, 1); // Finished. getLogger().info(getDescription().getFullName() + " is enabled. Some hooks might get registered with NoCheatPlus later on."); } public boolean loadSettings() { - final Set oldForceEnableLater = new LinkedHashSet(); - oldForceEnableLater.addAll(settings.forceEnableLater); // Read and apply config to settings: File file = new File(getDataFolder() , "cncp.yml"); CompatConfig cfg = new NewConfig(file); cfg.load(); boolean changed = false; // General settings: - if (Settings.addDefaults(cfg)) changed = true; + if (Settings.addDefaults(cfg)) { + changed = true; + } settings.fromConfig(cfg); // Settings for builtin hooks: for (Hook hook : builtinHooks){ @@ -286,51 +305,8 @@ public class CompatNoCheatPlus extends JavaPlugin implements Listener { } } // save back config if changed: - if (changed) cfg.save(); - - - - // Re-enable plugins that were not yet on the list: - Server server = getServer(); - Logger logger = server.getLogger(); - for (String plgName : settings.loadPlugins){ - try{ - if (CompatNoCheatPlus.enablePlugin(plgName)){ - System.out.println("[cncp] Ensured that the following plugin is enabled: " + plgName); - } - } - catch (Throwable t){ - logger.severe("[cncp] Failed to enable the plugin: " + plgName); - logger.severe(Utils.toString(t)); - } - } - BukkitScheduler sched = server.getScheduler(); - for (String plgName : settings.forceEnableLater){ - if (!oldForceEnableLater.remove(plgName)) oldForceEnableLater.add(plgName); - } - if (!oldForceEnableLater.isEmpty()){ - System.out.println("[cncp] Schedule task to re-enable plugins later..."); - sched.scheduleSyncDelayedTask(this, new Runnable() { - @Override - public void run() { - // (Later maybe re-enabling this plugin could be added.) - // TODO: log levels ! - for (String plgName : oldForceEnableLater){ - try{ - if (disablePlugin(plgName)){ - if (enablePlugin(plgName)) System.out.println("[cncp] Re-enabled plugin: " + plgName); - else System.out.println("[cncp] Could not re-enable plugin: "+plgName); - } - else{ - System.out.println("[cncp] Could not disable plugin (already disabled?): "+plgName); - } - } - catch(Throwable t){ - // TODO: maybe log ? - } - } - } - }); + if (changed) { + cfg.save(); } return true; @@ -340,7 +316,6 @@ public class CompatNoCheatPlus extends JavaPlugin implements Listener { public void onDisable() { unregisterNCPHooks(); // Just in case. enabled = false; - instance = null; // Set last. super.onDisable(); } @@ -382,26 +357,6 @@ public class CompatNoCheatPlus extends JavaPlugin implements Listener { return n; } - @EventHandler(priority = EventPriority.NORMAL) - void onPluginEnable(PluginEnableEvent event){ - Plugin plugin = event.getPlugin(); - if (!plugin.getName().equals("NoCheatPlus")) { - return; - } - // Register to remove hooks when NCP is disabling. - NCPAPIProvider.getNoCheatPlusAPI().addComponent(new IDisableListener(){ - @Override - public void onDisable() { - // Remove all registered cncp hooks: - unregisterNCPHooks(); - } - }); - if (registeredHooks.isEmpty()) { - return; - } - registerHooks(); - } - /* (non-Javadoc) * @see org.bukkit.plugin.java.JavaPlugin#onCommand(org.bukkit.command.CommandSender, org.bukkit.command.Command, java.lang.String, java.lang.String[]) */ diff --git a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/config/Settings.java b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/config/Settings.java index 656550c..8449c00 100644 --- a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/config/Settings.java +++ b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/config/Settings.java @@ -1,7 +1,6 @@ package me.asofold.bpl.cncp.config; import java.util.HashSet; -import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.Set; @@ -12,63 +11,57 @@ import me.asofold.bpl.cncp.config.compatlayer.ConfigUtil; import me.asofold.bpl.cncp.config.compatlayer.NewConfig; public class Settings { - public static final int configVersion = 2; - - public Set forceEnableLater = new LinkedHashSet(); - public Set loadPlugins = new LinkedHashSet(); - - public static Set preventAddHooks = new HashSet(); - - public static CompatConfig getDefaultConfig(){ - CompatConfig cfg = new NewConfig(null); - cfg.set("plugins.force-enable-later", new LinkedList()); // ConfigUtil.asList(new String[]{ "NoCheatPlus" })); - cfg.set("plugins.ensure-enable", new LinkedList()); // ConfigUtil.asList(new String[]{ "WorldGuard" })); - cfg.set("hooks.prevent-add", new LinkedList()); - cfg.set("configversion", configVersion); - return cfg; - } - - public static boolean addDefaults(CompatConfig cfg){ - boolean changed = false; - if (cfg.getInt("configversion", 0) == 0){ - cfg.remove("plugins"); - cfg.set("configversion", configVersion); - changed = true; - } - if (cfg.getInt("configversion", 0) <= 1){ - if (cfg.getDouble("hooks.set-speed.fly-speed", 0.1) != 0.1){ - changed = true; - cfg.set("hooks.set-speed.fly-speed", 0.1); - Bukkit.getLogger().warning("[cncp] Reset fly-speed for the set-speed hook to 0.1 (default) as a safety measure."); - } - if (cfg.getDouble("hooks.set-speed.walk-speed", 0.2) != 0.2){ - changed = true; - cfg.set("hooks.set-speed.walk-speed", 0.2); - Bukkit.getLogger().warning("[cncp] Reset walk-speed for the set-speed hook to 0.2 (default) as a safety measure."); - } - } - if (ConfigUtil.forceDefaults(getDefaultConfig(), cfg)) changed = true; - if (cfg.getInt("configversion", 0) != configVersion){ - cfg.set("configversion", configVersion); - changed = true; - } - return changed; - } - - public boolean fromConfig(CompatConfig cfg){ -// Settings ref = new Settings(); - - // plugins to force enabling after this plugin. - ConfigUtil.readStringSetFromList(cfg, "plugins.force-enable-later", forceEnableLater, true, true, false); - ConfigUtil.readStringSetFromList(cfg, "plugins.ensure-enable", loadPlugins, true, true, false); - - // General - ConfigUtil.readStringSetFromList(cfg, "hooks.prevent-add", preventAddHooks, true, true, false); - return true; - } + public static final int configVersion = 3; + + public static Set preventAddHooks = new HashSet(); + + public static CompatConfig getDefaultConfig(){ + CompatConfig cfg = new NewConfig(null); + cfg.set("plugins.force-enable-later", new LinkedList()); // ConfigUtil.asList(new String[]{ "NoCheatPlus" })); + cfg.set("plugins.ensure-enable", new LinkedList()); // ConfigUtil.asList(new String[]{ "WorldGuard" })); + cfg.set("hooks.prevent-add", new LinkedList()); + cfg.set("configversion", configVersion); + return cfg; + } + + public static boolean addDefaults(CompatConfig cfg){ + boolean changed = false; + if (cfg.getInt("configversion", 0) == 0){ + cfg.remove("plugins"); + cfg.set("configversion", configVersion); + changed = true; + } + if (cfg.getInt("configversion", 0) <= 1){ + if (cfg.getDouble("hooks.set-speed.fly-speed", 0.1) != 0.1){ + changed = true; + cfg.set("hooks.set-speed.fly-speed", 0.1); + Bukkit.getLogger().warning("[cncp] Reset fly-speed for the set-speed hook to 0.1 (default) as a safety measure."); + } + if (cfg.getDouble("hooks.set-speed.walk-speed", 0.2) != 0.2){ + changed = true; + cfg.set("hooks.set-speed.walk-speed", 0.2); + Bukkit.getLogger().warning("[cncp] Reset walk-speed for the set-speed hook to 0.2 (default) as a safety measure."); + } + } + if (ConfigUtil.forceDefaults(getDefaultConfig(), cfg)) changed = true; + if (cfg.getInt("configversion", 0) != configVersion){ + cfg.set("configversion", configVersion); + changed = true; + } + return changed; + } + + public boolean fromConfig(CompatConfig cfg){ + // Settings ref = new Settings(); + + + // General + ConfigUtil.readStringSetFromList(cfg, "hooks.prevent-add", preventAddHooks, true, true, false); + return true; + } + + public void clear() { + // TODO: clear something !? + } - public void clear() { - forceEnableLater.clear(); - } - } diff --git a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookBlockBreak.java b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookBlockBreak.java index 41fa045..879de0e 100644 --- a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookBlockBreak.java +++ b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookBlockBreak.java @@ -2,6 +2,7 @@ package me.asofold.bpl.cncp.hooks.generic; import java.util.Arrays; +import me.asofold.bpl.cncp.CompatNoCheatPlus; import me.asofold.bpl.cncp.config.compatlayer.CompatConfig; import org.bukkit.event.EventHandler; @@ -10,6 +11,7 @@ import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; import fr.neatmonster.nocheatplus.checks.CheckType; +import fr.neatmonster.nocheatplus.components.registry.order.RegistrationOrder.RegisterMethodWithOrder; /** * Wrap block break events to exempt players from checks by comparison of event class names. @@ -18,47 +20,49 @@ import fr.neatmonster.nocheatplus.checks.CheckType; */ public class HookBlockBreak extends ClassExemptionHook implements Listener { - public HookBlockBreak() { - super("block-break."); - defaultClasses.addAll(Arrays.asList(new String[]{ - // MachinaCraft - "ArtificialBlockBreakEvent", - // mcMMO - "FakeBlockBreakEvent", - // MagicSpells - "MagicSpellsBlockBreakEvent" - })); - } + public HookBlockBreak() { + super("block-break."); + defaultClasses.addAll(Arrays.asList(new String[]{ + // MachinaCraft + "ArtificialBlockBreakEvent", + // mcMMO + "FakeBlockBreakEvent", + // MagicSpells + "MagicSpellsBlockBreakEvent" + })); + } - @Override - public String getHookName() { - return "BlockBreak(default)"; - } + @Override + public String getHookName() { + return "BlockBreak(default)"; + } - @Override - public String getHookVersion() { - return "1.1"; - } - - @Override - public Listener[] getListeners() { - return new Listener[]{this}; - } + @Override + public String getHookVersion() { + return "1.1"; + } - @Override - public void applyConfig(CompatConfig cfg, String prefix) { - super.applyConfig(cfg, prefix); - if (classes.isEmpty()) enabled = false; - } + @Override + public Listener[] getListeners() { + return new Listener[]{this}; + } - @EventHandler(priority = EventPriority.LOWEST) - final void onBlockBreakLowest(final BlockBreakEvent event){ - checkExempt(event.getPlayer(), event.getClass(), CheckType.BLOCKBREAK); - } - - @EventHandler(priority = EventPriority.MONITOR) - final void onBlockBreakMonitor(final BlockBreakEvent event){ - checkUnexempt(event.getPlayer(), event.getClass(), CheckType.BLOCKBREAK); - } + @Override + public void applyConfig(CompatConfig cfg, String prefix) { + super.applyConfig(cfg, prefix); + if (classes.isEmpty()) enabled = false; + } + + @EventHandler(priority = EventPriority.LOWEST) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagEarlyFeature, beforeTag = CompatNoCheatPlus.beforeTagEarlyFeature) + final void onBlockBreakLowest(final BlockBreakEvent event){ + checkExempt(event.getPlayer(), event.getClass(), CheckType.BLOCKBREAK); + } + + @EventHandler(priority = EventPriority.MONITOR) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagLateFeature, afterTag = CompatNoCheatPlus.afterTagLateFeature) + final void onBlockBreakMonitor(final BlockBreakEvent event){ + checkUnexempt(event.getPlayer(), event.getClass(), CheckType.BLOCKBREAK); + } } diff --git a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookBlockPlace.java b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookBlockPlace.java index 1e2870c..bcf7256 100644 --- a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookBlockPlace.java +++ b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookBlockPlace.java @@ -2,6 +2,7 @@ package me.asofold.bpl.cncp.hooks.generic; import java.util.Arrays; +import me.asofold.bpl.cncp.CompatNoCheatPlus; import me.asofold.bpl.cncp.config.compatlayer.CompatConfig; import org.bukkit.event.EventHandler; @@ -10,6 +11,7 @@ import org.bukkit.event.Listener; import org.bukkit.event.block.BlockPlaceEvent; import fr.neatmonster.nocheatplus.checks.CheckType; +import fr.neatmonster.nocheatplus.components.registry.order.RegistrationOrder.RegisterMethodWithOrder; /** * Wrap block place events to exempt players from checks by comparison of event class names. @@ -18,45 +20,47 @@ import fr.neatmonster.nocheatplus.checks.CheckType; */ public class HookBlockPlace extends ClassExemptionHook implements Listener{ - public HookBlockPlace() { - super("block-place."); - defaultClasses.addAll(Arrays.asList(new String[]{ - // MachinaCraft - "ArtificialBlockPlaceEvent", - // MagicSpells - "MagicSpellsBlockPlaceEvent" - })); - } + public HookBlockPlace() { + super("block-place."); + defaultClasses.addAll(Arrays.asList(new String[]{ + // MachinaCraft + "ArtificialBlockPlaceEvent", + // MagicSpells + "MagicSpellsBlockPlaceEvent" + })); + } - @Override - public String getHookName() { - return "BlockPlace(default)"; - } + @Override + public String getHookName() { + return "BlockPlace(default)"; + } - @Override - public String getHookVersion() { - return "1.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; - } + @Override + public String getHookVersion() { + return "1.0"; + } - @EventHandler(priority = EventPriority.LOWEST) - final void onBlockPlaceLowest(final BlockPlaceEvent event){ - checkExempt(event.getPlayer(), event.getClass(), CheckType.BLOCKPLACE); - } - - @EventHandler(priority = EventPriority.MONITOR) - final void onBlockPlaceMonitor(final BlockPlaceEvent event){ - checkUnexempt(event.getPlayer(), event.getClass(), CheckType.BLOCKPLACE); - } + @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) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagEarlyFeature, beforeTag = CompatNoCheatPlus.beforeTagEarlyFeature) + final void onBlockPlaceLowest(final BlockPlaceEvent event){ + checkExempt(event.getPlayer(), event.getClass(), CheckType.BLOCKPLACE); + } + + @EventHandler(priority = EventPriority.MONITOR) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagLateFeature, afterTag = CompatNoCheatPlus.afterTagLateFeature) + final void onBlockPlaceMonitor(final BlockPlaceEvent event){ + checkUnexempt(event.getPlayer(), event.getClass(), CheckType.BLOCKPLACE); + } } diff --git a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookEntityDamageByEntity.java b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookEntityDamageByEntity.java index f5ba3fd..02a2ece 100644 --- a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookEntityDamageByEntity.java +++ b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookEntityDamageByEntity.java @@ -2,6 +2,7 @@ package me.asofold.bpl.cncp.hooks.generic; import java.util.Arrays; +import me.asofold.bpl.cncp.CompatNoCheatPlus; import me.asofold.bpl.cncp.config.compatlayer.CompatConfig; import org.bukkit.entity.Entity; @@ -12,55 +13,58 @@ import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageByEntityEvent; import fr.neatmonster.nocheatplus.checks.CheckType; +import fr.neatmonster.nocheatplus.components.registry.order.RegistrationOrder.RegisterMethodWithOrder; public class HookEntityDamageByEntity extends ClassExemptionHook implements - Listener { +Listener { - public HookEntityDamageByEntity() { - super("entity-damage-by-entity."); - defaultClasses.addAll(Arrays.asList(new String[] { - // CrackShot - "WeaponDamageEntityEvent", - // MagicSpells - "MagicSpellsEntityDamageByEntityEvent" })); - } + public HookEntityDamageByEntity() { + super("entity-damage-by-entity."); + defaultClasses.addAll(Arrays.asList(new String[] { + // CrackShot + "WeaponDamageEntityEvent", + // MagicSpells + "MagicSpellsEntityDamageByEntityEvent" })); + } - @Override - public String getHookName() { - return "EntityDamageByEntity(default)"; - } + @Override + public String getHookName() { + return "EntityDamageByEntity(default)"; + } - @Override - public String getHookVersion() { - return "0.0"; - } + @Override + public String getHookVersion() { + return "0.0"; + } - @Override - public Listener[] getListeners() { - return new Listener[] { this }; - } + @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; - } + @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.LOWEST) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagEarlyFeature, beforeTag = CompatNoCheatPlus.beforeTagEarlyFeature) + 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); - } - } + @EventHandler(priority = EventPriority.MONITOR) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagLateFeature, afterTag = CompatNoCheatPlus.afterTagLateFeature) + final void onDamageMonitor(final EntityDamageByEntityEvent event) { + final Entity damager = event.getDamager(); + if (damager instanceof Player) { + checkUnexempt((Player) damager, event.getClass(), CheckType.FIGHT); + } + } } diff --git a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookInstaBreak.java b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookInstaBreak.java index 38272f1..d3105b4 100644 --- a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookInstaBreak.java +++ b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookInstaBreak.java @@ -6,6 +6,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Set; +import me.asofold.bpl.cncp.CompatNoCheatPlus; import me.asofold.bpl.cncp.config.compatlayer.CompatConfig; import me.asofold.bpl.cncp.config.compatlayer.CompatConfigFactory; import me.asofold.bpl.cncp.config.compatlayer.ConfigUtil; @@ -19,153 +20,157 @@ import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockDamageEvent; import fr.neatmonster.nocheatplus.checks.CheckType; +import fr.neatmonster.nocheatplus.components.registry.order.RegistrationOrder.RegisterMethodWithOrder; import fr.neatmonster.nocheatplus.utilities.TickTask; public class HookInstaBreak extends AbstractHook implements ConfigurableHook, Listener { - - public static interface InstaExemption{ - public void addExemptNext(CheckType[] types); - public Set getExemptNext(); - } - - public static class StackEntry{ - public final CheckType[] checkTypes; - public final int tick; - public final Player player; - public boolean used = false; - public StackEntry(final Player player , final CheckType[] checkTypes){ - this.player = player; - this.checkTypes = checkTypes; - tick = TickTask.getTick(); - } - public boolean isOutdated(final int tick){ - return tick != this.tick; - } - } - - protected static InstaExemption runtime = null; - - public static void addExemptNext(final CheckType[] types){ - runtime.addExemptNext(types); - } - protected final ExemptionManager exMan = new ExemptionManager(); - - protected boolean enabled = true; - - protected final List stack = new LinkedList(); - - @Override - public String getHookName() { - return "InstaBreak(default)"; - } + public static interface InstaExemption{ + public void addExemptNext(CheckType[] types); + public Set getExemptNext(); + } - @Override - public String getHookVersion() { - return "1.0"; - } + public static class StackEntry{ + public final CheckType[] checkTypes; + public final int tick; + public final Player player; + public boolean used = false; + public StackEntry(final Player player , final CheckType[] checkTypes){ + this.player = player; + this.checkTypes = checkTypes; + tick = TickTask.getTick(); + } + public boolean isOutdated(final int tick){ + return tick != this.tick; + } + } - @Override - public void applyConfig(CompatConfig cfg, String prefix) { - enabled = cfg.getBoolean(prefix + "insta-break.enabled", true); - } + protected static InstaExemption runtime = null; - @Override - public boolean updateConfig(CompatConfig cfg, String prefix) { - CompatConfig defaults = CompatConfigFactory.getConfig(null); - defaults.set(prefix + "insta-break.enabled", true); - return ConfigUtil.forceDefaults(defaults, cfg); - } + public static void addExemptNext(final CheckType[] types){ + runtime.addExemptNext(types); + } - @Override - public boolean isEnabled() { - return enabled; - } + protected final ExemptionManager exMan = new ExemptionManager(); - @Override - public CheckType[] getCheckTypes() { - return null; - } + protected boolean enabled = true; - @Override - public Listener[] getListeners() { - runtime = new InstaExemption() { - protected final Set types = new HashSet(); - @Override - public final void addExemptNext(final CheckType[] types) { - for (int i = 0; i < types.length; i++){ - this.types.add(types[i]); - } - } - @Override - public Set getExemptNext() { - return types; - } - }; - return new Listener[]{this}; - } - - protected CheckType[] fetchTypes(){ - final Set types = runtime.getExemptNext(); - final CheckType[] a = new CheckType[types.size()]; - if (!types.isEmpty()) types.toArray(a); - types.clear(); - return a; - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = false) - public void onBlockDamage(final BlockDamageEvent event){ - checkStack(); - if (!event.isCancelled() && event.getInstaBreak()){ - stack.add(new StackEntry(event.getPlayer(), fetchTypes())); - } - else{ - runtime.getExemptNext().clear(); - } - } - - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false) - public void onBlockBreakLowest(final BlockBreakEvent event){ - checkStack(); - if (!stack.isEmpty()){ - final Player player = event.getPlayer(); - final StackEntry entry = stack.get(stack.size() - 1); - if (player.equals(entry.player)) addExemption(entry); - } - } - - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = false) - public void onBlockBreakMONITOR(final BlockBreakEvent event){ - if (!stack.isEmpty()){ - final Player player = event.getPlayer(); - final StackEntry entry = stack.get(stack.size() - 1); - if (player.equals(entry.player)) removeExemption(stack.remove(stack.size() - 1)); - } - } - - public void addExemption(final StackEntry entry){ - entry.used = true; - for (int i = 0; i < entry.checkTypes.length; i++){ - exMan.addExemption(entry.player, entry.checkTypes[i]); - } - } - - public void removeExemption(final StackEntry entry){ - if (!entry.used) return; - for (int i = 0; i < entry.checkTypes.length; i++){ - exMan.removeExemption(entry.player, entry.checkTypes[i]); - } - } - - public void checkStack(){ - if (stack.isEmpty()) return; - Iterator it = stack.iterator(); - final int tick = TickTask.getTick(); - while (it.hasNext()){ - final StackEntry entry = it.next(); - if (entry.isOutdated(tick)) it.remove(); - if (entry.used) removeExemption(entry); - } - } + protected final List stack = new LinkedList(); + + @Override + public String getHookName() { + return "InstaBreak(default)"; + } + + @Override + public String getHookVersion() { + return "1.0"; + } + + @Override + public void applyConfig(CompatConfig cfg, String prefix) { + enabled = cfg.getBoolean(prefix + "insta-break.enabled", true); + } + + @Override + public boolean updateConfig(CompatConfig cfg, String prefix) { + CompatConfig defaults = CompatConfigFactory.getConfig(null); + defaults.set(prefix + "insta-break.enabled", true); + return ConfigUtil.forceDefaults(defaults, cfg); + } + + @Override + public boolean isEnabled() { + return enabled; + } + + @Override + public CheckType[] getCheckTypes() { + return null; + } + + @Override + public Listener[] getListeners() { + runtime = new InstaExemption() { + protected final Set types = new HashSet(); + @Override + public final void addExemptNext(final CheckType[] types) { + for (int i = 0; i < types.length; i++){ + this.types.add(types[i]); + } + } + @Override + public Set getExemptNext() { + return types; + } + }; + return new Listener[]{this}; + } + + protected CheckType[] fetchTypes(){ + final Set types = runtime.getExemptNext(); + final CheckType[] a = new CheckType[types.size()]; + if (!types.isEmpty()) types.toArray(a); + types.clear(); + return a; + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = false) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagLateFeature, afterTag = CompatNoCheatPlus.afterTagLateFeature) + public void onBlockDamage(final BlockDamageEvent event){ + checkStack(); + if (!event.isCancelled() && event.getInstaBreak()){ + stack.add(new StackEntry(event.getPlayer(), fetchTypes())); + } + else{ + runtime.getExemptNext().clear(); + } + } + + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagEarlyFeature, beforeTag = CompatNoCheatPlus.beforeTagEarlyFeature) + public void onBlockBreakLowest(final BlockBreakEvent event){ + checkStack(); + if (!stack.isEmpty()){ + final Player player = event.getPlayer(); + final StackEntry entry = stack.get(stack.size() - 1); + if (player.equals(entry.player)) addExemption(entry); + } + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = false) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagLateFeature, afterTag = CompatNoCheatPlus.afterTagLateFeature) + public void onBlockBreakMONITOR(final BlockBreakEvent event){ + if (!stack.isEmpty()){ + final Player player = event.getPlayer(); + final StackEntry entry = stack.get(stack.size() - 1); + if (player.equals(entry.player)) removeExemption(stack.remove(stack.size() - 1)); + } + } + + public void addExemption(final StackEntry entry){ + entry.used = true; + for (int i = 0; i < entry.checkTypes.length; i++){ + exMan.addExemption(entry.player, entry.checkTypes[i]); + } + } + + public void removeExemption(final StackEntry entry){ + if (!entry.used) return; + for (int i = 0; i < entry.checkTypes.length; i++){ + exMan.removeExemption(entry.player, entry.checkTypes[i]); + } + } + + public void checkStack(){ + if (stack.isEmpty()) return; + Iterator it = stack.iterator(); + final int tick = TickTask.getTick(); + while (it.hasNext()){ + final StackEntry entry = it.next(); + if (entry.isOutdated(tick)) it.remove(); + if (entry.used) removeExemption(entry); + } + } } diff --git a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookPlayerInteract.java b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookPlayerInteract.java index b9ebc73..bc4dd84 100644 --- a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookPlayerInteract.java +++ b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookPlayerInteract.java @@ -1,6 +1,8 @@ package me.asofold.bpl.cncp.hooks.generic; import fr.neatmonster.nocheatplus.checks.CheckType; +import fr.neatmonster.nocheatplus.components.registry.order.RegistrationOrder.RegisterMethodWithOrder; +import me.asofold.bpl.cncp.CompatNoCheatPlus; import me.asofold.bpl.cncp.config.compatlayer.CompatConfig; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -16,43 +18,45 @@ import java.util.Arrays; */ public class HookPlayerInteract extends ClassExemptionHook implements Listener{ - public HookPlayerInteract() { - super("player-interact."); - defaultClasses.addAll(Arrays.asList(new String[]{ - // MagicSpells - "MagicSpellsPlayerInteractEvent" - })); - } + public HookPlayerInteract() { + super("player-interact."); + defaultClasses.addAll(Arrays.asList(new String[]{ + // MagicSpells + "MagicSpellsPlayerInteractEvent" + })); + } - @Override - public String getHookName() { - return "Interact(default)"; - } + @Override + public String getHookName() { + return "Interact(default)"; + } - @Override - public String getHookVersion() { - return "1.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; - } + @Override + public String getHookVersion() { + return "1.0"; + } - @EventHandler(priority = EventPriority.LOWEST) - final void onPlayerInteractLowest(final PlayerInteractEvent event){ - checkExempt(event.getPlayer(), event.getClass(), CheckType.BLOCKINTERACT); - } - - @EventHandler(priority = EventPriority.MONITOR) - final void onPlayerInteractMonitor(final PlayerInteractEvent event){ - checkUnexempt(event.getPlayer(), event.getClass(), CheckType.BLOCKINTERACT); - } + @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) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagEarlyFeature, beforeTag = CompatNoCheatPlus.beforeTagEarlyFeature) + final void onPlayerInteractLowest(final PlayerInteractEvent event){ + checkExempt(event.getPlayer(), event.getClass(), CheckType.BLOCKINTERACT); + } + + @EventHandler(priority = EventPriority.MONITOR) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagLateFeature, afterTag = CompatNoCheatPlus.afterTagLateFeature) + final void onPlayerInteractMonitor(final PlayerInteractEvent event){ + checkUnexempt(event.getPlayer(), event.getClass(), CheckType.BLOCKINTERACT); + } } diff --git a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookSetSpeed.java b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookSetSpeed.java index de9b1ed..c3e034e 100644 --- a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookSetSpeed.java +++ b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/generic/HookSetSpeed.java @@ -1,5 +1,6 @@ package me.asofold.bpl.cncp.hooks.generic; +import me.asofold.bpl.cncp.CompatNoCheatPlus; import me.asofold.bpl.cncp.config.compatlayer.CompatConfig; import me.asofold.bpl.cncp.config.compatlayer.CompatConfigFactory; import me.asofold.bpl.cncp.config.compatlayer.ConfigUtil; @@ -13,94 +14,96 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import fr.neatmonster.nocheatplus.checks.CheckType; +import fr.neatmonster.nocheatplus.components.registry.order.RegistrationOrder.RegisterMethodWithOrder; public class HookSetSpeed extends AbstractHook implements Listener, ConfigurableHook{ - - private static final float defaultFlySpeed = 0.1f; - private static final float defaultWalkSpeed = 0.2f; - - protected float flySpeed = defaultFlySpeed; - protected float walkSpeed = defaultWalkSpeed; - - protected boolean enabled = false; - -// private String allowFlightPerm = "cncp.allow-flight"; - - public HookSetSpeed() throws SecurityException, NoSuchMethodException{ - Player.class.getDeclaredMethod("setFlySpeed", float.class); - } - - public void init(){ - for (final Player player : Bukkit.getOnlinePlayers()){ - setSpeed(player); - } - } - - @Override - public String getHookName() { - return "SetSpeed(default)"; - } - @Override - public String getHookVersion() { - return "2.2"; - } + private static final float defaultFlySpeed = 0.1f; + private static final float defaultWalkSpeed = 0.2f; - @Override - public CheckType[] getCheckTypes() { - return new CheckType[0]; - } + protected float flySpeed = defaultFlySpeed; + protected float walkSpeed = defaultWalkSpeed; - @Override - public Listener[] getListeners() { - try{ - // Initialize here, at the end of enable. - init(); - } - catch (Throwable t){} - return new Listener[]{this} ; - } - - public final void setSpeed(final Player player){ -// if (allowFlightPerm.equals("") || player.hasPermission(allowFlightPerm)) player.setAllowFlight(true); - player.setWalkSpeed(walkSpeed); - player.setFlySpeed(flySpeed); - } - - @EventHandler(priority=EventPriority.LOWEST) - public final void onPlayerJoin(final PlayerJoinEvent event){ - setSpeed(event.getPlayer()); - } + protected boolean enabled = false; - @Override - public void applyConfig(CompatConfig cfg, String prefix) { - enabled = cfg.getBoolean(prefix + "set-speed.enabled", false); - flySpeed = cfg.getDouble(prefix + "set-speed.fly-speed", (double) defaultFlySpeed).floatValue(); - walkSpeed = cfg.getDouble(prefix + "set-speed.walk-speed", (double) defaultWalkSpeed).floatValue(); -// allowFlightPerm = cfg.getString(prefix + "set-speed.allow-flight-permission", ref.allowFlightPerm); - } + // private String allowFlightPerm = "cncp.allow-flight"; - @Override - public boolean updateConfig(CompatConfig cfg, String prefix) { - CompatConfig defaults = CompatConfigFactory.getConfig(null); - defaults.set(prefix + "set-speed.enabled", false); - defaults.set(prefix + "set-speed.fly-speed", defaultFlySpeed); - defaults.set(prefix + "set-speed.walk-speed", defaultWalkSpeed); -// cfg.set(prefix + "set-speed.allow-flight-permission", ref.allowFlightPerm); - return ConfigUtil.forceDefaults(defaults, cfg); - } + public HookSetSpeed() throws SecurityException, NoSuchMethodException{ + Player.class.getDeclaredMethod("setFlySpeed", float.class); + } - @Override - public boolean isEnabled() { - return enabled; - } + public void init(){ + for (final Player player : Bukkit.getOnlinePlayers()){ + setSpeed(player); + } + } -// public String getAllowFlightPerm() { -// return allowFlightPerm; -// } + @Override + public String getHookName() { + return "SetSpeed(default)"; + } -// public void setAllowFlightPerm(String allowFlightPerm) { -// this.allowFlightPerm = allowFlightPerm; -// } + @Override + public String getHookVersion() { + return "2.2"; + } + + @Override + public CheckType[] getCheckTypes() { + return new CheckType[0]; + } + + @Override + public Listener[] getListeners() { + try{ + // Initialize here, at the end of enable. + init(); + } + catch (Throwable t){} + return new Listener[]{this} ; + } + + public final void setSpeed(final Player player){ + // if (allowFlightPerm.equals("") || player.hasPermission(allowFlightPerm)) player.setAllowFlight(true); + player.setWalkSpeed(walkSpeed); + player.setFlySpeed(flySpeed); + } + + @EventHandler(priority=EventPriority.LOWEST) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagEarlyFeature, beforeTag = CompatNoCheatPlus.beforeTagEarlyFeature) + public final void onPlayerJoin(final PlayerJoinEvent event){ + setSpeed(event.getPlayer()); + } + + @Override + public void applyConfig(CompatConfig cfg, String prefix) { + enabled = cfg.getBoolean(prefix + "set-speed.enabled", false); + flySpeed = cfg.getDouble(prefix + "set-speed.fly-speed", (double) defaultFlySpeed).floatValue(); + walkSpeed = cfg.getDouble(prefix + "set-speed.walk-speed", (double) defaultWalkSpeed).floatValue(); + // allowFlightPerm = cfg.getString(prefix + "set-speed.allow-flight-permission", ref.allowFlightPerm); + } + + @Override + public boolean updateConfig(CompatConfig cfg, String prefix) { + CompatConfig defaults = CompatConfigFactory.getConfig(null); + defaults.set(prefix + "set-speed.enabled", false); + defaults.set(prefix + "set-speed.fly-speed", defaultFlySpeed); + defaults.set(prefix + "set-speed.walk-speed", defaultWalkSpeed); + // cfg.set(prefix + "set-speed.allow-flight-permission", ref.allowFlightPerm); + return ConfigUtil.forceDefaults(defaults, cfg); + } + + @Override + public boolean isEnabled() { + return enabled; + } + + // public String getAllowFlightPerm() { + // return allowFlightPerm; + // } + + // public void setAllowFlightPerm(String allowFlightPerm) { + // this.allowFlightPerm = allowFlightPerm; + // } } diff --git a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/mcmmo/HookmcMMO.java b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/mcmmo/HookmcMMO.java index 684529b..bfe9a41 100644 --- a/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/mcmmo/HookmcMMO.java +++ b/CompatNoCheatPlus/src/me/asofold/bpl/cncp/hooks/mcmmo/HookmcMMO.java @@ -1,5 +1,6 @@ package me.asofold.bpl.cncp.hooks.mcmmo; +import me.asofold.bpl.cncp.CompatNoCheatPlus; import me.asofold.bpl.cncp.config.compatlayer.CompatConfig; import me.asofold.bpl.cncp.config.compatlayer.CompatConfigFactory; import me.asofold.bpl.cncp.config.compatlayer.ConfigUtil; @@ -19,160 +20,167 @@ import com.gmail.nossr50.events.fake.FakeBlockDamageEvent; import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent; import fr.neatmonster.nocheatplus.checks.CheckType; +import fr.neatmonster.nocheatplus.components.registry.order.RegistrationOrder.RegisterMethodWithOrder; import fr.neatmonster.nocheatplus.hooks.NCPHook; public final class HookmcMMO extends AbstractHook implements Listener, ConfigurableHook { - - /** - * To let the listener access this. - * @author mc_dev - * - */ - public static interface HookFacade{ - public void damageLowest(Player player); - public void damageMonitor(Player player); - public void blockDamageLowest(Player player); - public void blockDamageMonitor(Player player); - /** - * If to cancel the event. - * @param player - * @return - */ - public boolean blockBreakLowest(Player player); - public void blockBreakMontitor(Player player); - } - - protected HookFacade ncpHook = null; - - protected boolean enabled = true; - - protected String configPrefix = "mcmmo."; - - protected boolean useInstaBreakHook = true; - - public HookmcMMO(){ - assertPluginPresent("mcMMO"); - } - - - protected final PluginGetter fetch = new PluginGetter("mcMMO"); + /** + * To let the listener access this. + * @author mc_dev + * + */ + public static interface HookFacade{ + public void damageLowest(Player player); + public void damageMonitor(Player player); + public void blockDamageLowest(Player player); + public void blockDamageMonitor(Player player); + /** + * If to cancel the event. + * @param player + * @return + */ + public boolean blockBreakLowest(Player player); + public void blockBreakMontitor(Player player); + } - protected int blocksPerSecond = 30; - + protected HookFacade ncpHook = null; - - @Override - public String getHookName() { - return "mcMMO(default)"; - } + protected boolean enabled = true; - @Override - public String getHookVersion() { - return "2.1"; - } + protected String configPrefix = "mcmmo."; - @Override - public CheckType[] getCheckTypes() { - return new CheckType[]{ - CheckType.BLOCKBREAK_FASTBREAK, CheckType.BLOCKBREAK_NOSWING, // old ones - -// CheckType.BLOCKBREAK_DIRECTION, CheckType.BLOCKBREAK_FREQUENCY, -// CheckType.BLOCKBREAK_WRONGBLOCK, CheckType.BLOCKBREAK_REACH, -// -// CheckType.FIGHT_ANGLE, CheckType.FIGHT_SPEED, // old ones -// -// CheckType.FIGHT_DIRECTION, CheckType.FIGHT_NOSWING, -// CheckType.FIGHT_REACH, - }; - } - - @Override - public Listener[] getListeners() { - fetch.fetchPlugin(); - return new Listener[]{this, fetch}; - } - - @Override - public NCPHook getNCPHook() { - if (ncpHook == null){ - ncpHook = new HookFacadeImpl(useInstaBreakHook, blocksPerSecond); - } - return (NCPHook) ncpHook; - } - - /////////////////////////// - // Damage (fight) - ////////////////////////// - - @EventHandler(priority=EventPriority.LOWEST) - final void onDamageLowest(final FakeEntityDamageByEntityEvent event){ - final Entity entity = event.getDamager(); - if (entity instanceof Player) - ncpHook.damageLowest((Player) entity); - } - - @EventHandler(priority=EventPriority.MONITOR) - final void onDamageMonitor(final FakeEntityDamageByEntityEvent event){ - final Entity entity = event.getDamager(); - if (entity instanceof Player) - ncpHook.damageMonitor((Player) entity); - } - - /////////////////////////// - // Block damage - ////////////////////////// - - @EventHandler(priority=EventPriority.LOWEST) - final void onBlockDamageLowest(final FakeBlockDamageEvent event){ - ncpHook.blockDamageLowest(event.getPlayer()); - } - - @EventHandler(priority=EventPriority.LOWEST) - final void onBlockDamageMonitor(final FakeBlockDamageEvent event){ - ncpHook.blockDamageMonitor(event.getPlayer()); - } - - /////////////////////////// - // Block break - ////////////////////////// - - @EventHandler(priority=EventPriority.LOWEST) - final void onBlockBreakLowest(final FakeBlockBreakEvent event){ - if (ncpHook.blockBreakLowest(event.getPlayer())){ - event.setCancelled(true); -// System.out.println("Cancelled for frequency."); - } - } - - @EventHandler(priority=EventPriority.MONITOR) - final void onBlockBreakLMonitor(final FakeBlockBreakEvent event){ - ncpHook.blockBreakMontitor(event.getPlayer()); - } - - ///////////////////////////////// - // Config - ///////////////////////////////// - - @Override - public void applyConfig(CompatConfig cfg, String prefix) { - enabled = cfg.getBoolean(prefix + configPrefix + "enabled", true); - useInstaBreakHook = cfg.getBoolean(prefix + configPrefix + "use-insta-break-hook", true); - blocksPerSecond = cfg.getInt(prefix + configPrefix + "clickspersecond", 20); - } + protected boolean useInstaBreakHook = true; - @Override - public boolean updateConfig(CompatConfig cfg, String prefix) { - CompatConfig defaults = CompatConfigFactory.getConfig(null); - defaults.set(prefix + configPrefix + "enabled", true); - defaults.set(prefix + configPrefix + "use-insta-break-hook", true); - defaults.set(prefix + configPrefix + "clickspersecond", 20); - return ConfigUtil.forceDefaults(defaults, cfg); - } - @Override - public boolean isEnabled() { - return enabled; - } + public HookmcMMO(){ + assertPluginPresent("mcMMO"); + } + + + protected final PluginGetter fetch = new PluginGetter("mcMMO"); + + protected int blocksPerSecond = 30; + + + + @Override + public String getHookName() { + return "mcMMO(default)"; + } + + @Override + public String getHookVersion() { + return "2.1"; + } + + @Override + public CheckType[] getCheckTypes() { + return new CheckType[]{ + CheckType.BLOCKBREAK_FASTBREAK, CheckType.BLOCKBREAK_NOSWING, // old ones + + // CheckType.BLOCKBREAK_DIRECTION, CheckType.BLOCKBREAK_FREQUENCY, + // CheckType.BLOCKBREAK_WRONGBLOCK, CheckType.BLOCKBREAK_REACH, + // + // CheckType.FIGHT_ANGLE, CheckType.FIGHT_SPEED, // old ones + // + // CheckType.FIGHT_DIRECTION, CheckType.FIGHT_NOSWING, + // CheckType.FIGHT_REACH, + }; + } + + @Override + public Listener[] getListeners() { + fetch.fetchPlugin(); + return new Listener[]{this, fetch}; + } + + @Override + public NCPHook getNCPHook() { + if (ncpHook == null){ + ncpHook = new HookFacadeImpl(useInstaBreakHook, blocksPerSecond); + } + return (NCPHook) ncpHook; + } + + /////////////////////////// + // Damage (fight) + ////////////////////////// + + @EventHandler(priority=EventPriority.LOWEST) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagEarlyFeature, beforeTag = CompatNoCheatPlus.beforeTagEarlyFeature) + final void onDamageLowest(final FakeEntityDamageByEntityEvent event){ + final Entity entity = event.getDamager(); + if (entity instanceof Player) + ncpHook.damageLowest((Player) entity); + } + + @EventHandler(priority=EventPriority.MONITOR) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagLateFeature, afterTag = CompatNoCheatPlus.afterTagLateFeature) + final void onDamageMonitor(final FakeEntityDamageByEntityEvent event){ + final Entity entity = event.getDamager(); + if (entity instanceof Player) + ncpHook.damageMonitor((Player) entity); + } + + /////////////////////////// + // Block damage + ////////////////////////// + + @EventHandler(priority=EventPriority.LOWEST) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagEarlyFeature, beforeTag = CompatNoCheatPlus.beforeTagEarlyFeature) + final void onBlockDamageLowest(final FakeBlockDamageEvent event){ + ncpHook.blockDamageLowest(event.getPlayer()); + } + + @EventHandler(priority=EventPriority.LOWEST) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagEarlyFeature, beforeTag = CompatNoCheatPlus.beforeTagEarlyFeature) + final void onBlockDamageMonitor(final FakeBlockDamageEvent event){ + ncpHook.blockDamageMonitor(event.getPlayer()); + } + + /////////////////////////// + // Block break + ////////////////////////// + + @EventHandler(priority=EventPriority.LOWEST) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagEarlyFeature, beforeTag = CompatNoCheatPlus.beforeTagEarlyFeature) + final void onBlockBreakLowest(final FakeBlockBreakEvent event){ + if (ncpHook.blockBreakLowest(event.getPlayer())){ + event.setCancelled(true); + // System.out.println("Cancelled for frequency."); + } + } + + @EventHandler(priority=EventPriority.MONITOR) + @RegisterMethodWithOrder(tag = CompatNoCheatPlus.tagLateFeature, afterTag = CompatNoCheatPlus.afterTagLateFeature) + final void onBlockBreakLMonitor(final FakeBlockBreakEvent event){ + ncpHook.blockBreakMontitor(event.getPlayer()); + } + + ///////////////////////////////// + // Config + ///////////////////////////////// + + @Override + public void applyConfig(CompatConfig cfg, String prefix) { + enabled = cfg.getBoolean(prefix + configPrefix + "enabled", true); + useInstaBreakHook = cfg.getBoolean(prefix + configPrefix + "use-insta-break-hook", true); + blocksPerSecond = cfg.getInt(prefix + configPrefix + "clickspersecond", 20); + } + + @Override + public boolean updateConfig(CompatConfig cfg, String prefix) { + CompatConfig defaults = CompatConfigFactory.getConfig(null); + defaults.set(prefix + configPrefix + "enabled", true); + defaults.set(prefix + configPrefix + "use-insta-break-hook", true); + defaults.set(prefix + configPrefix + "clickspersecond", 20); + return ConfigUtil.forceDefaults(defaults, cfg); + } + + @Override + public boolean isEnabled() { + return enabled; + } }