mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-04 18:12:09 +01:00
Fix chunk sending when the computed time overflows (#8833)
This commit is contained in:
parent
7569191fed
commit
96fd31b762
1 changed files with 6 additions and 6 deletions
|
@ -1309,7 +1309,7 @@ index 0000000000000000000000000000000000000000..99f49b5625cf51d6c97640553cf5c420
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java
|
diff --git a/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..0b060183429f4c72ec767075538477b4302bbf0d
|
index 0000000000000000000000000000000000000000..e77972c4c264100ffdd824bfa2dac58dbbc6d678
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java
|
+++ b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java
|
||||||
@@ -0,0 +1,1128 @@
|
@@ -0,0 +1,1128 @@
|
||||||
|
@ -1404,7 +1404,7 @@ index 0000000000000000000000000000000000000000..0b060183429f4c72ec767075538477b4
|
||||||
+
|
+
|
||||||
+ final int priorityCompare = Double.compare(holder1 == null ? Double.MAX_VALUE : holder1.priority, holder2 == null ? Double.MAX_VALUE : holder2.priority);
|
+ final int priorityCompare = Double.compare(holder1 == null ? Double.MAX_VALUE : holder1.priority, holder2 == null ? Double.MAX_VALUE : holder2.priority);
|
||||||
+
|
+
|
||||||
+ final int lastLoadTimeCompare = Long.compare(p1.lastChunkLoad, p2.lastChunkLoad);
|
+ final int lastLoadTimeCompare = Long.compare(p1.lastChunkLoad - p2.lastChunkLoad, 0);
|
||||||
+
|
+
|
||||||
+ if ((holder1 == null || holder2 == null || lastLoadTimeCompare == 0 || holder1.priority < 0.0 || holder2.priority < 0.0) && priorityCompare != 0) {
|
+ if ((holder1 == null || holder2 == null || lastLoadTimeCompare == 0 || holder1.priority < 0.0 || holder2.priority < 0.0) && priorityCompare != 0) {
|
||||||
+ return priorityCompare;
|
+ return priorityCompare;
|
||||||
|
@ -1429,7 +1429,7 @@ index 0000000000000000000000000000000000000000..0b060183429f4c72ec767075538477b4
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ final int timeCompare = Long.compare(p1.nextChunkSendTarget, p2.nextChunkSendTarget);
|
+ final int timeCompare = Long.compare(p1.nextChunkSendTarget - p2.nextChunkSendTarget, 0);
|
||||||
+ if (timeCompare != 0) {
|
+ if (timeCompare != 0) {
|
||||||
+ return timeCompare;
|
+ return timeCompare;
|
||||||
+ }
|
+ }
|
||||||
|
@ -1835,14 +1835,14 @@ index 0000000000000000000000000000000000000000..0b060183429f4c72ec767075538477b4
|
||||||
+ private static long nextChunkSend;
|
+ private static long nextChunkSend;
|
||||||
+ private void trySendChunks() {
|
+ private void trySendChunks() {
|
||||||
+ final long time = System.nanoTime();
|
+ final long time = System.nanoTime();
|
||||||
+ if (time < nextChunkSend) {
|
+ if (nextChunkSend - time > 0) {
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+ // drain entries from wait queue
|
+ // drain entries from wait queue
|
||||||
+ while (!this.chunkSendWaitQueue.isEmpty()) {
|
+ while (!this.chunkSendWaitQueue.isEmpty()) {
|
||||||
+ final PlayerLoaderData data = this.chunkSendWaitQueue.first();
|
+ final PlayerLoaderData data = this.chunkSendWaitQueue.first();
|
||||||
+
|
+
|
||||||
+ if (data.nextChunkSendTarget > time) {
|
+ if (data.nextChunkSendTarget - time > 0) {
|
||||||
+ break;
|
+ break;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
@ -1914,7 +1914,7 @@ index 0000000000000000000000000000000000000000..0b060183429f4c72ec767075538477b4
|
||||||
+ });
|
+ });
|
||||||
+
|
+
|
||||||
+ nextChunkSend = this.getMaxSendAddend() + time;
|
+ nextChunkSend = this.getMaxSendAddend() + time;
|
||||||
+ if (time < nextChunkSend) {
|
+ if (nextChunkSend - time > 0) {
|
||||||
+ break;
|
+ break;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
|
|
Loading…
Reference in a new issue