Fix queue erorr

This commit is contained in:
Axionize committed 2024-10-19 19:08:48 -04:00
1 parent e6367842ed
commit f6e2498722
2 files changed
+8 -6

No files matched your search

@@ -16,6 +16,8 @@ import me.caseload.knockbacksync.manager.PlayerDataManager;
import me.caseload.knockbacksync.player.PlayerData;
import me.caseload.knockbacksync.util.data.Pair;
import java.util.List;
public class PingReceiveListener extends PacketListenerAbstract {
// TODO supplment our own ping calculations with over keepalive sent by the server with
@Override
@@ -61,7 +63,7 @@ public class PingReceiveListener extends PacketListenerAbstract {
long receivedId = keepAlive.getId();
handlePingCalculationPackets(event, playerData, receivedId);
handlePingCalculationPackets(event, playerData, receivedId, playerData.keepaliveMap);
} else if (packetType == PacketType.Play.Client.PONG) {
WrapperPlayClientPong pong = new WrapperPlayClientPong(event);
PlayerData playerData = PlayerDataManager.getPlayerData(event.getUser().getUUID());
@@ -69,7 +71,7 @@ public class PingReceiveListener extends PacketListenerAbstract {
int id = pong.getId();
handlePingCalculationPackets(event, playerData, id);
handlePingCalculationPackets(event, playerData, id, playerData.transactionsSent);
} else if (packetType == PacketType.Play.Client.WINDOW_CONFIRMATION) {
WrapperPlayClientWindowConfirmation windowConfirmation = new WrapperPlayClientWindowConfirmation(event);
PlayerData playerData = PlayerDataManager.getPlayerData(event.getUser().getUUID());
@@ -77,12 +79,12 @@ public class PingReceiveListener extends PacketListenerAbstract {
int id = windowConfirmation.getActionId();
handlePingCalculationPackets(event, playerData, id);
handlePingCalculationPackets(event, playerData, id, playerData.transactionsSent);
}
}
private void handlePingCalculationPackets(PacketReceiveEvent event, PlayerData playerData, long id) {
long pingNanos = (System.nanoTime() - playerData.transactionsSent.poll().getSecond());
private <T extends Number> void handlePingCalculationPackets(PacketReceiveEvent event, PlayerData playerData, long id, List<Pair<T, Long>> packetSentList) {
long pingNanos = (System.nanoTime() - packetSentList.remove(0).getSecond());
double diffMillisDouble = pingNanos / 1_000_000.0;
playerData.setPreviousPing(playerData.getPing());
@@ -40,7 +40,7 @@ public class PlayerData {
public static final long PING_OFFSET = 25;
public static float TICK_RATE = 20.0F;
private static Field playerField;
public final Queue<Pair<Integer, Long>> transactionsSent = new ConcurrentLinkedQueue<>();
public final List<Pair<Integer, Long>> transactionsSent = new LinkedList<>();
public final List<Pair<Long, Long>> keepaliveMap = new LinkedList<>();
private static final short MAIN_THREAD_TRANSACTION_ID = -1;