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
Dieser Commit ist enthalten in:
Shane Freeder 2019-01-21 20:48:27 +00:00
Ursprung 44e66f7e53
Commit 88a347c753
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: A3F61EA5A085289C

Datei anzeigen

@ -1,4 +1,4 @@
From 353e49433fc2512d8f1296ca1775822f9e0bc372 Mon Sep 17 00:00:00 2001
From d944e2981ec03a42be2deba04f02354a46df5331 Mon Sep 17 00:00:00 2001
From: stonar96 <minecraft.stonar96@gmail.com>
Date: Mon, 20 Aug 2018 03:03:58 +0200
Subject: [PATCH] Anti-Xray
@ -107,10 +107,10 @@ 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 +1,678 @@
@@ -0,0 +1,684 @@
+package com.destroystokyo.paper.antixray;
+
+import java.util.HashSet;
@ -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;