Try to make speedhack ignore "cancelled" move events.

This commit is contained in:
Evenprime 2011-08-21 14:37:21 +02:00
parent 0284f5be3f
commit 6a7e7d239f
3 changed files with 32 additions and 1 deletions

View File

@ -3,7 +3,7 @@ name: NoCheat
author: Evenprime
main: cc.co.evenprime.bukkit.nocheat.NoCheat
version: 1.14b
version: 1.14c
softdepend: [ Permissions, CraftIRC ]

View File

@ -20,6 +20,7 @@ import cc.co.evenprime.bukkit.nocheat.config.NoCheatConfiguration;
import cc.co.evenprime.bukkit.nocheat.data.PermissionData;
import cc.co.evenprime.bukkit.nocheat.data.SpeedhackData;
import cc.co.evenprime.bukkit.nocheat.listeners.SpeedhackPlayerListener;
import cc.co.evenprime.bukkit.nocheat.listeners.SpeedhackPlayerMonitor;
/**
* Log if a player sends to many move events in a specific time frame, usually
@ -190,8 +191,11 @@ public class SpeedhackCheck extends Check {
PluginManager pm = Bukkit.getServer().getPluginManager();
Listener speedhackPlayerListener = new SpeedhackPlayerListener(this);
Listener speedhackPlayerMonitor = new SpeedhackPlayerMonitor(this);
// Register listeners for speedhack check
pm.registerEvent(Event.Type.PLAYER_MOVE, speedhackPlayerListener, Priority.High, plugin);
pm.registerEvent(Event.Type.PLAYER_MOVE, speedhackPlayerMonitor, Priority.Monitor, plugin);
pm.registerEvent(Event.Type.PLAYER_TELEPORT, speedhackPlayerListener, Priority.Monitor, plugin);
}
@ -200,4 +204,9 @@ public class SpeedhackCheck extends Check {
SpeedhackData data = plugin.getDataManager().getSpeedhackData(event.getPlayer());
resetData(data, event.getTo());
}
public void teleported(Player player) {
SpeedhackData data = plugin.getDataManager().getSpeedhackData(player);
resetData(data, player.getLocation());
}
}

View File

@ -0,0 +1,22 @@
package cc.co.evenprime.bukkit.nocheat.listeners;
import org.bukkit.event.player.PlayerListener;
import org.bukkit.event.player.PlayerMoveEvent;
import cc.co.evenprime.bukkit.nocheat.checks.SpeedhackCheck;
public class SpeedhackPlayerMonitor extends PlayerListener {
private final SpeedhackCheck check;
public SpeedhackPlayerMonitor(SpeedhackCheck check) {
this.check = check;
}
@Override
public void onPlayerMove(PlayerMoveEvent event) {
if(event.isCancelled()) {
check.teleported(event.getPlayer());
}
}
}