ADd player speed hook

This commit is contained in:
asofold 2012-08-10 18:45:02 +02:00
parent 637a0795b2
commit 9896ead526
5 changed files with 109 additions and 32 deletions

View File

@ -22,10 +22,12 @@ STACK
!add check type and permission hooks, also for worldguard regions.
VERSION HISTORY
---------------------------
(5.2.0)
- (add) Add hook to set player speed (simple).
(5.1.0)
- (add) Hook for Citizens 2 .

View File

@ -12,6 +12,7 @@ import me.asofold.bpl.cncp.config.compatlayer.CompatConfig;
import me.asofold.bpl.cncp.config.compatlayer.NewConfig;
import me.asofold.bpl.cncp.hooks.Hook;
import me.asofold.bpl.cncp.hooks.generic.HookPlayerClass;
import me.asofold.bpl.cncp.hooks.generic.HookSetSpeed;
import me.asofold.bpl.cncp.setttings.Settings;
import me.asofold.bpl.cncp.utils.Utils;
@ -39,6 +40,8 @@ public class CompatNoCheatPlus extends JavaPlugin implements Listener {
private final HookPlayerClass hookPlayerClass = new HookPlayerClass();
private HookSetSpeed hookSetSpeed = null;
/**
* Flag if plugin is enabled.
*/
@ -122,6 +125,14 @@ public class CompatNoCheatPlus extends JavaPlugin implements Listener {
* Add standard hooks if available.
*/
private void addAvailableHooks() {
try{
hookSetSpeed = new me.asofold.bpl.cncp.hooks.generic.HookSetSpeed();
hookSetSpeed.setFlySpeed(settings.flySpeed);
hookSetSpeed.setWalkSpeed(settings.walkSpeed);
hookSetSpeed.init();
addHook(hookSetSpeed);
}
catch (Throwable t){}
try{
addHook(new me.asofold.bpl.cncp.hooks.citizens2.HookCitizens2());
}
@ -140,7 +151,7 @@ public class CompatNoCheatPlus extends JavaPlugin implements Listener {
// Settings:
settings.clear();
reloadSettings();
loadSettings();
// Register own listener:
final PluginManager pm = getServer().getPluginManager();
pm.registerEvents(this, this);
@ -168,7 +179,7 @@ public class CompatNoCheatPlus extends JavaPlugin implements Listener {
return hooks;
}
public boolean reloadSettings() {
public boolean loadSettings() {
final Set<String> oldForceEnableLater = new LinkedHashSet<String>();
oldForceEnableLater.addAll(settings.forceEnableLater);
// Read and apply config to settings:
@ -182,6 +193,11 @@ public class CompatNoCheatPlus extends JavaPlugin implements Listener {
hookPlayerClass.setExemptAll(settings.exemptAllPlayerClassNames);
hookPlayerClass.setPlayerClassName(settings.playerClassName);
hookPlayerClass.setCheckSuperClass(settings.exemptSuperClass);
// Set hookSetSpeed properties (for future purposes):
if (hookSetSpeed != null){
hookSetSpeed.setFlySpeed(settings.flySpeed);
hookSetSpeed.setWalkSpeed(settings.walkSpeed);
}
// Re-enable plugins that were not yet on the list:
Server server = getServer();
Logger logger = server.getLogger();

View File

@ -0,0 +1,79 @@
package me.asofold.bpl.cncp.hooks.generic;
import me.asofold.bpl.cncp.hooks.AbstractHook;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import fr.neatmonster.nocheatplus.checks.CheckType;
public class HookSetSpeed extends AbstractHook implements Listener{
private float flySpeed = 1.0f;
private float walkSpeed = 1.0f;
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 "0.0";
}
@Override
public CheckType[] getCheckTypes() {
return new CheckType[0];
}
@Override
public Listener[] getListeners() {
return new Listener[]{this} ;
}
@Override
public final boolean onCheckFailure(final CheckType checkType, final Player player) {
// UNUSED :)
return false;
}
public float getFlySpeed() {
return flySpeed;
}
public void setFlySpeed(float flySpeed) {
this.flySpeed = flySpeed;
}
public float getWalkSpeed() {
return walkSpeed;
}
public void setWalkSpeed(float walkSpeed) {
this.walkSpeed = walkSpeed;
}
public final void setSpeed(final Player player){
player.setWalkSpeed(walkSpeed);
player.setFlySpeed(flySpeed);
}
final void onPlayerJoin(final PlayerJoinEvent event){
setSpeed(event.getPlayer());
}
}

View File

@ -1,25 +0,0 @@
package me.asofold.bpl.cncp.setttings;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import me.asofold.bpl.cncp.hooks.Hook;
/**
* Check group specific lists of hooks.
* @author mc_dev
*
*/
public final class GroupHooks {
/**
* Hooks that want all.
*/
public final ArrayList<Hook> all = new ArrayList<Hook>();
/**
* Hooks that want a certain check.<br>
*/
public final Map<String , ArrayList<Hook>> byCheck = new HashMap<String, ArrayList<Hook>>(10);
}

View File

@ -13,13 +13,14 @@ public class Settings {
public Set<String> forceEnableLater = new LinkedHashSet<String>();
public Set<String> loadPlugins = new LinkedHashSet<String>();
public Set<String> exemptPlayerClassNames = new HashSet<String>();
public boolean exemptAllPlayerClassNames = true;
public String playerClassName = "CraftPlayer";
public boolean exemptSuperClass = true;
public boolean exemptSuperClass = true;
public float flySpeed = 1.0f;
public float walkSpeed = 1.0f;
/**
* TODO: I don't like this too much :)
*/
public static Set<String> preventAddHooks = new HashSet<String>();
public static CompatConfig getDefaultConfig(){
@ -31,6 +32,8 @@ public class Settings {
cfg.set("hooks.player-class.exempt-all", ref.exemptAllPlayerClassNames);
cfg.set("hooks.player-class.class-name", ref.playerClassName);
cfg.set("hooks.player-class.super-class", ref.exemptSuperClass);
cfg.set("hooks.set-speed.fly-speed", ref.flySpeed);
cfg.set("hooks.set-speed.walk-speed", ref.walkSpeed);
cfg.set("hooks.prevent-add", new LinkedList<String>());
return cfg;
}
@ -49,6 +52,8 @@ public class Settings {
exemptAllPlayerClassNames = cfg.getBoolean("hooks.player-class.exempt-all", ref.exemptAllPlayerClassNames);
playerClassName = cfg.getString("hooks.player-class.class-name", ref.playerClassName);
exemptSuperClass = cfg.getBoolean("hooks.player-class.super-class", ref.exemptSuperClass);
flySpeed = cfg.getDouble("hooks.set-speed.fly-speed", (double) ref.flySpeed).floatValue();
walkSpeed = cfg.getDouble("hooks.set-speed.walk-speed", (double) ref.walkSpeed).floatValue();
ConfigUtil.readStringSetFromList(cfg, "hooks.prevent-add", preventAddHooks, true, true, false);
return true;
}