public void update() { runTasks(); if (networkManager != null) { long time = System.currentTimeMillis(); float lastDelta2; delta = (time - lastTickTime) / 8.0F; lastTickTime = time; if (!lagging && networkManager.waitingForPingReturn && time - networkManager.lastPacketTime > 420) { lagging = true; } if (lagging) { lagMultiplier *= 0.85F; if (lagMultiplier < 0.01F) { lagMultiplier = 0.01F; } } else { if (lagMultiplier < 1.0F) { lagMultiplier += 0.05F; if (lagMultiplier >= 1.0F) { lagMultiplier = 1.0F; } } } if (delta > 120) { delta = 120; } delta *= lagMultiplier; errorTime *= lagMultiplier; lastTicks = ticks; ticks += delta; lastDelta = (float) (Math.floor(ticks) - Math.floor(lastTicks)); lastTicks2 = ticks2; ticks2 += delta * 2; lastDelta2 = (float) (Math.floor(ticks2) - Math.floor(lastTicks2)); if (globalAlpha < 1.0F) { globalAlpha += 0.0075F * delta; if (globalAlpha > 1.0F) { globalAlpha = 1.0F; } } else if (globalAlpha > 0.0F) { globalAlpha -= 0.0075F * delta; if (globalAlpha < 0.0F) { globalAlpha = 0.0F; } } if (qsm > 1.0F) { qsm -= 0.00004F * delta; if (qsm < 1.0F) { qsm = 1.0F; } } else if (qsm < MAX_QSM) { qsm += 0.00004F; if (qsm > MAX_QSM) { qsm = MAX_QSM; } } if (player != null) { if (!networkManager.waitingForPingReturn) { if (time - networkManager.lastPingSendTime > 250) { networkManager.lastPingSendTime = time; networkManager.ping(); } } errorTime *= Math.pow(0.993, lastDelta); if (allowUserInput) { controller.update(this); float targetAngle = controller.getTargetAngle(); targetAngle %= PI_2; if (targetAngle < 0) { targetAngle += PI_2; } if (targetAngle != lastSendAngle || lastSendAngleTime == 0) { if (time - lastSendAngleTime > 100) { lastSendAngle = targetAngle; networkManager.send(new MessageSetAngle(targetAngle)); } } player.accelerating = controller.shouldAccelerate(); if (time - lastAccelerateUpdateTime > 150) { if (player.accelerating != player.wasAccelerating) { lastAccelerateUpdateTime = time; networkManager.send(new MessageAccelerate(player.accelerating)); player.wasAccelerating = player.accelerating; } } } Iterator<Entity> entityIter = entityIterator(); while (entityIter.hasNext()) { Entity entity = entityIter.next(); if (entity.updateBase(delta, lastDelta, lastDelta2)) { entityIter.remove(); } } } } else { ticks++; } }