geforkt von Mirrors/Paper
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:
Ursprung
44e66f7e53
Commit
88a347c753
@ -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>
|
From: stonar96 <minecraft.stonar96@gmail.com>
|
||||||
Date: Mon, 20 Aug 2018 03:03:58 +0200
|
Date: Mon, 20 Aug 2018 03:03:58 +0200
|
||||||
Subject: [PATCH] Anti-Xray
|
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
|
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
|
new file mode 100644
|
||||||
index 0000000000..904544b3c3
|
index 0000000000..e3da35b6ba
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java
|
+++ b/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java
|
||||||
@@ -0,0 +1,678 @@
|
@@ -0,0 +1,684 @@
|
||||||
+package com.destroystokyo.paper.antixray;
|
+package com.destroystokyo.paper.antixray;
|
||||||
+
|
+
|
||||||
+import java.util.HashSet;
|
+import java.util.HashSet;
|
||||||
@ -267,12 +267,18 @@ index 0000000000..904544b3c3
|
|||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean onChunkPacketCreate(Chunk chunk, int chunkSectionSelector, boolean force) {
|
+ public boolean onChunkPacketCreate(Chunk chunk, int chunkSectionSelector, boolean force) {
|
||||||
+ //Load nearby chunks if necessary
|
+ //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) {
|
+ 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
|
+ //Don't create the chunk packet now, wait until nearby chunks are loaded and create it later
|
||||||
+ return false;
|
+ return false;
|
||||||
+ }
|
+ }
|
||||||
+ } else if (chunkEdgeMode == ChunkEdgeMode.LOAD || chunkEdgeMode == ChunkEdgeMode.WAIT) {
|
+ } else if (chunkEdgeMode == ChunkEdgeMode.LOAD) {
|
||||||
+ boolean missingChunk = false;
|
+ boolean missingChunk = false;
|
||||||
+ //noinspection ConstantConditions
|
+ //noinspection ConstantConditions
|
||||||
+ missingChunk |= ((WorldServer)chunk.world).getChunkProvider().getChunkAt(chunk.locX - 1, chunk.locZ, true, true, c -> {}) == null;
|
+ missingChunk |= ((WorldServer)chunk.world).getChunkProvider().getChunkAt(chunk.locX - 1, chunk.locZ, true, true, c -> {}) == null;
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren