/** * Checks hasBypass on violation only. * @param player * @param time * @param data * @param cc * @return If to cancel. */ public boolean check(final Player player, final long time, final NetData data, final NetConfig cc, final IPlayerData pData) { data.keepAliveFreq.add(time, 1f); final float first = data.keepAliveFreq.bucketScore(0); if (first > 1f) { // Trigger a violation. final double vl = Math.max(first - 1f, data.keepAliveFreq.score(1f) - data.keepAliveFreq.numberOfBuckets()); if (executeActions(player, vl, 1.0, cc.keepAliveFrequencyActions).willCancel()) { return true; } } return false; }
/** * 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 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);
fullViolation = fullScore / TickTask.getLag(data.fastPlaceBuckets.bucketDuration() * data.fastPlaceBuckets.numberOfBuckets(), true) - cc.fastPlaceLimit;
fullViol = fullScore / TickTask.getLag(data.yawFreq.bucketDuration() * data.yawFreq.numberOfBuckets(), true);
if (normal > cc.fastClickNormalLimit) { normal /= (float) TickTask.getLag(data.fastClickFreq.bucketDuration() * data.fastClickFreq.numberOfBuckets(), true);
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;