/** * Actual state. * * @param player * @param data * * @param cc * * @return If to cancel a packet event. */ public boolean check(final Player player, final NetData data, final NetConfig cc) { data.packetFrequency.add(System.currentTimeMillis(), 1f); final long fDur = data.packetFrequency.bucketDuration() * data.packetFrequency.numberOfBuckets(); double amount = data.packetFrequency.score(1f) * 1000f / (float) fDur; // if (data.debug) { // debug(player, "Basic amount: " + amount); // } if (amount > cc.packetFrequencyPacketsPerSecond) { amount /= TickTask.getLag(fDur); if (amount > cc.packetFrequencyPacketsPerSecond) { if (executeActions(player, amount - cc.packetFrequencyPacketsPerSecond, 1.0, cc.packetFrequencyActions).willCancel()) { return true; } } } return false; // Cancel state. }
final long winDur = packetFreq.bucketDuration(); final int winNum = packetFreq.numberOfBuckets(); final long totalDur = winDur * winNum; final double vBurstEPM = (double) burstFreq.score(0f) - burstEPM * (double) (burstFreq.bucketDuration() * burstFreq.numberOfBuckets()) / 60000.0; if (vBurstEPM > 0.0) { violation = Math.max(violation, vBurstEPM);
if (stScore > threshold) { if (!lag || TickTask.getLag(data.yawFreq.bucketDuration(), true) < 1.2) { stViol = stScore; fullViol = fullScore / TickTask.getLag(data.yawFreq.bucketDuration() * data.yawFreq.numberOfBuckets(), true);
fullViolation = fullScore / TickTask.getLag(data.fastPlaceBuckets.bucketDuration() * data.fastPlaceBuckets.numberOfBuckets(), true) - cc.fastPlaceLimit;
if (shortTerm > cc.fastClickShortTermLimit) { shortTerm /= (float) TickTask.getLag(data.fastClickFreq.bucketDuration(), true); if (normal > cc.fastClickNormalLimit) { normal /= (float) TickTask.getLag(data.fastClickFreq.bucketDuration() * data.fastClickFreq.numberOfBuckets(), true);
boolean violated = false; if (shortTerm * 0.8f > cc.improbableLevel / 20.0){ final float lag = pData.getCurrentWorldData().shouldAdjustToLag(type) ? TickTask.getLag(data.improbableCount.bucketDuration(), true) : 1f; if (shortTerm / lag > cc.improbableLevel / 20.0){ violation += shortTerm * 2d / lag; final float lag = pData.getCurrentWorldData().shouldAdjustToLag(type) ? TickTask.getLag(data.improbableCount.bucketDuration() * data.improbableCount.numberOfBuckets(), true) : 1f; if (full / lag > cc.improbableLevel){ violation += full / lag;