From f6e2498722fba2b2aebc9be7ac2467d8702156bc Mon Sep 17 00:00:00 2001 From: Axionize <154778082+Axionize@users.noreply.github.com> Date: Sat, 19 Oct 2024 19:08:48 -0400 Subject: [PATCH] Fix queue erorr --- .../listener/packetevents/PingReceiveListener.java | 12 +++++++----- .../me/caseload/knockbacksync/player/PlayerData.java | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/common/src/main/java/me/caseload/knockbacksync/listener/packetevents/PingReceiveListener.java b/common/src/main/java/me/caseload/knockbacksync/listener/packetevents/PingReceiveListener.java index 872e3a3..a22f9af 100644 --- a/common/src/main/java/me/caseload/knockbacksync/listener/packetevents/PingReceiveListener.java +++ b/common/src/main/java/me/caseload/knockbacksync/listener/packetevents/PingReceiveListener.java @@ -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 void handlePingCalculationPackets(PacketReceiveEvent event, PlayerData playerData, long id, List> packetSentList) { + long pingNanos = (System.nanoTime() - packetSentList.remove(0).getSecond()); double diffMillisDouble = pingNanos / 1_000_000.0; playerData.setPreviousPing(playerData.getPing()); diff --git a/common/src/main/java/me/caseload/knockbacksync/player/PlayerData.java b/common/src/main/java/me/caseload/knockbacksync/player/PlayerData.java index cf89a6f..5472a3f 100644 --- a/common/src/main/java/me/caseload/knockbacksync/player/PlayerData.java +++ b/common/src/main/java/me/caseload/knockbacksync/player/PlayerData.java @@ -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> transactionsSent = new ConcurrentLinkedQueue<>(); + public final List> transactionsSent = new LinkedList<>(); public final List> keepaliveMap = new LinkedList<>(); private static final short MAIN_THREAD_TRANSACTION_ID = -1;