You can easily modify this to work with your server.
Code:
package org.gander.core.packet;
import org.gander.core.Session;
/**
* @author Gander
* @Date: 10-Feb-2008
* @Time: 16:59:20.
*/
public class PacketThrottleFilter {
public PacketThrottleFilter() {
this.lastPacketRecieved = System.currentTimeMillis();
this.setThrottleDelay(1500); // 1.5 seconds
}
/**
* Check's if the packet
* @param id the packetID to be nested
* @return true if the delay is less than <code>throttleDelay</code>
*/
public boolean packetThrottled(int id) {
if((id != this.lastPacketID) && (this.lastPacketID != 0)) {
return false;
}
boolean foundPacket = false;
for(int i = 0; i < throttleFilters.length; i++){
if(throttleFilters[i] == id) {
foundPacket = true;
break;
}
}
if(!foundPacket) {
return foundPacket;
}
int check = (int)(System.currentTimeMillis() - this.lastPacketRecieved);
if(check < this.throttleDelay) {
return true;
}
this.lastPacketID = id;
this.lastPacketRecieved = System.currentTimeMillis();
return false;
}
/**
* Set's the Delay to the parameter
* @param delay the delay to set the ThrottleDelay to the <code>delay</code>
*/
public void setThrottleDelay(int delay) {
this.throttleDelay = delay;
}
/**
* Get's the last packet time
* @return the last packet Time
*/
public long getLastPacketTime(){
return this.lastPacketRecieved;
}
/**
* Gets the Throttle delay
* @return An integer representing the Throttle delay
*/
public int getThrottledDelay() {
return this.throttleDelay;
}
private static final int[] throttleFilters = {185, 4, 103, 132, 252, 41, 145, 72, 122, 181, 87, 155, 192, 236, 73};
private long lastPacketRecieved;
private int throttleDelay = 0;
private int lastPacketID = 0;
}
Clues:
Code:
private PacketThrottleFilter packetThrottleFilter;
Code:
this.packetThrottleFilter = new PacketThrottleFilter()
Code:
if(this.packetThrottleFilter.packetThrottled(packeType) {
return false;
}
It will stop anyone spamming the same packet over and over again. (1.5 Second delay)
I'm not going to wipe your *** for you and tell you how to implement it, if you know how to implement it then you deserve to have it.