geforkt von Mirrors/Paper
Fix Sending Chunks to Client - Fixes #1504
Vanilla has some screwy logic that doesn't send a chunk until it has been post processed. This is an issue as post processing doesn't occur until all neighbor chunks have been loaded. This can reduce view distance while generating terrain, but also cause bugs where chunks are never sent to the client. This fix always sends chunks to the client, and simply updates the client anytime post processing is triggered with the new chunk data.
Dieser Commit ist enthalten in:
Ursprung
1b331d8534
Commit
aa463a9b85
64
Spigot-Server-Patches/Fix-Sending-Chunks-to-Client.patch
Normale Datei
64
Spigot-Server-Patches/Fix-Sending-Chunks-to-Client.patch
Normale Datei
@ -0,0 +1,64 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Aikar <aikar@aikar.co>
|
||||
Date: Sat, 29 Sep 2018 01:18:16 -0400
|
||||
Subject: [PATCH] Fix Sending Chunks to Client
|
||||
|
||||
Vanilla has some screwy logic that doesn't send a chunk until
|
||||
it has been post processed. This is an issue as post processing
|
||||
doesn't occur until all neighbor chunks have been loaded.
|
||||
|
||||
This can reduce view distance while generating terrain, but also
|
||||
cause bugs where chunks are never sent to the client.
|
||||
|
||||
This fix always sends chunks to the client, and simply updates
|
||||
the client anytime post processing is triggered with the new chunk data.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
||||
index 895eb60854..350479dc68 100644
|
||||
--- a/src/main/java/net/minecraft/server/Chunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
||||
@@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess {
|
||||
}
|
||||
|
||||
public boolean isReady() {
|
||||
- return this.C.a(ChunkStatus.POSTPROCESSED);
|
||||
+ return true; // Paper - Always send chunks
|
||||
}
|
||||
|
||||
public boolean v() {
|
||||
@@ -0,0 +0,0 @@ public class Chunk implements IChunkAccess {
|
||||
com.google.common.base.Preconditions.checkState(this.h.isEmpty(), "Pending tiles not empty"); // CraftBukkit
|
||||
this.a(ChunkStatus.POSTPROCESSED);
|
||||
this.m.a(this);
|
||||
+ // Paper start - resend chunk after post process
|
||||
+ PlayerChunk playerChunk = ((WorldServer) world).getPlayerChunkMap().getChunk(locX, locZ);
|
||||
+ if (playerChunk != null) {
|
||||
+ playerChunk.done = false;
|
||||
+ playerChunk.sendAll();
|
||||
+ }
|
||||
+ // Paper end
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunk.java b/src/main/java/net/minecraft/server/PlayerChunk.java
|
||||
index 61de438fdf..fca88c3018 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunk.java
|
||||
@@ -0,0 +0,0 @@ public class PlayerChunk {
|
||||
private int dirtyCount;
|
||||
private int h;
|
||||
private long i;
|
||||
- private boolean done;
|
||||
+ boolean done; // Paper - package-private
|
||||
|
||||
// CraftBukkit start - add fields
|
||||
// You know the drill, https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/browse
|
||||
@@ -0,0 +0,0 @@ public class PlayerChunk {
|
||||
}
|
||||
}
|
||||
|
||||
+ public boolean sendAll() { return b(); } // Paper - OBFHELPER
|
||||
public boolean b() {
|
||||
if (this.done) {
|
||||
return true;
|
||||
--
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren