From 90d2863f636618dc91ac6013b3f0d89dd633333c Mon Sep 17 00:00:00 2001 From: Shane Freeder Date: Mon, 21 Jan 2019 20:48:27 +0000 Subject: [PATCH] Make force actually force a load While this posed no issues in testing, this is the only behavioral difference which might explain some increased reports in missing chunks on the client --- Spigot-Server-Patches/Anti-Xray.patch | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Spigot-Server-Patches/Anti-Xray.patch b/Spigot-Server-Patches/Anti-Xray.patch index 1ca915071..5be9d97df 100644 --- a/Spigot-Server-Patches/Anti-Xray.patch +++ b/Spigot-Server-Patches/Anti-Xray.patch @@ -107,7 +107,7 @@ index 0000000000..1ba8477bf9 +} diff --git a/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java b/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java new file mode 100644 -index 0000000000..904544b3c3 +index 0000000000..e3da35b6ba --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java @@ -0,0 +0,0 @@ @@ -267,12 +267,18 @@ index 0000000000..904544b3c3 + @Override + public boolean onChunkPacketCreate(Chunk chunk, int chunkSectionSelector, boolean force) { + //Load nearby chunks if necessary -+ if (chunkEdgeMode == ChunkEdgeMode.WAIT && !force) { ++ if (force) { ++ // if forced, load NOW; ++ chunk.world.getChunkAt(chunk.locX - 1, chunk.locZ); ++ chunk.world.getChunkAt(chunk.locX + 1, chunk.locZ); ++ chunk.world.getChunkAt(chunk.locX, chunk.locZ - 1); ++ chunk.world.getChunkAt(chunk.locX, chunk.locZ + 1); ++ } else if (chunkEdgeMode == ChunkEdgeMode.WAIT && !force) { + if (chunk.world.getChunkIfLoaded(chunk.locX - 1, chunk.locZ) == null || chunk.world.getChunkIfLoaded(chunk.locX + 1, chunk.locZ) == null || chunk.world.getChunkIfLoaded(chunk.locX, chunk.locZ - 1) == null || chunk.world.getChunkIfLoaded(chunk.locX, chunk.locZ + 1) == null) { + //Don't create the chunk packet now, wait until nearby chunks are loaded and create it later + return false; + } -+ } else if (chunkEdgeMode == ChunkEdgeMode.LOAD || chunkEdgeMode == ChunkEdgeMode.WAIT) { ++ } else if (chunkEdgeMode == ChunkEdgeMode.LOAD) { + boolean missingChunk = false; + //noinspection ConstantConditions + missingChunk |= ((WorldServer)chunk.world).getChunkProvider().getChunkAt(chunk.locX - 1, chunk.locZ, true, true, c -> {}) == null;