Skip to content

Commit b1ac25f

Browse files
Respect x-ray permission in World#refreshChunk (#7214)
Co-authored-by: stonar96 <minecraft.stonar96@gmail.com>
1 parent 71fe3c6 commit b1ac25f

13 files changed

+57
-34
lines changed

patches/server/0355-Anti-Xray.patch

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1615,6 +1615,29 @@ index 669e4b41cf0751afb67d94b6a511bcfd18ce7ef4..3ff85d9d8518db712ca1d2977a5865da
16151615
}
16161616

16171617
@Override
1618+
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
1619+
index 0edb08a391f806e56ed1bd4812eb9c9d2b966bd7..6bdf3679ea9461475b139a0622857b1dc56ea5b2 100644
1620+
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
1621+
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
1622+
@@ -401,11 +401,16 @@ public class CraftWorld extends CraftRegionAccessor implements World {
1623+
List<ServerPlayer> playersInRange = playerChunk.playerProvider.getPlayers(playerChunk.getPos(), false);
1624+
if (playersInRange.isEmpty()) return;
1625+
1626+
- ClientboundLevelChunkWithLightPacket refreshPacket = new ClientboundLevelChunkWithLightPacket(chunk, this.world.getLightEngine(), null, null, true);
1627+
+ // Paper start - Anti-Xray - Bypass
1628+
+ Map<Object, ClientboundLevelChunkWithLightPacket> refreshPackets = new HashMap<>();
1629+
for (ServerPlayer player : playersInRange) {
1630+
if (player.connection == null) continue;
1631+
1632+
- player.connection.send(refreshPacket);
1633+
+ Boolean shouldModify = chunk.getLevel().chunkPacketBlockController.shouldModify(player, chunk);
1634+
+ player.connection.send(refreshPackets.computeIfAbsent(shouldModify, s -> { // Use connection to prevent creating firing event
1635+
+ return new ClientboundLevelChunkWithLightPacket(chunk, this.world.getLightEngine(), null, null, true, (Boolean) s);
1636+
+ }));
1637+
+ // Paper end
1638+
}
1639+
});
1640+
});
16181641
diff --git a/src/main/java/org/bukkit/craftbukkit/generator/OldCraftChunkData.java b/src/main/java/org/bukkit/craftbukkit/generator/OldCraftChunkData.java
16191642
index 960405935e395a31c0300773c41413801cf0d290..6f6bf950cd15b34031618782c82824cf0b191ff8 100644
16201643
--- a/src/main/java/org/bukkit/craftbukkit/generator/OldCraftChunkData.java

patches/server/0450-Add-Plugin-Tickets-to-API-Chunk-Methods.patch

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ wants it to collect even faster, they can restore that setting back to 1 instead
2222
Not adding it to .getType() though to keep behavior consistent with vanilla for performance reasons.
2323

2424
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
25-
index d4d8eee914f71d9a33feda82ef54cb0c40b0e60c..28a04d21801a9bb1e4311e6da28eae26283a2e36 100644
25+
index 8c61da70f609cd8cd5939cd12edc118d65fc734a..017e351e14a6a3a4c711df84f81936c296da13e1 100644
2626
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
2727
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
2828
@@ -359,7 +359,7 @@ public final class CraftServer implements Server {
@@ -44,7 +44,7 @@ index d4d8eee914f71d9a33feda82ef54cb0c40b0e60c..28a04d21801a9bb1e4311e6da28eae26
4444
this.printSaveWarning = false;
4545
console.autosavePeriod = this.configuration.getInt("ticks-per.autosave");
4646
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
47-
index 0edb08a391f806e56ed1bd4812eb9c9d2b966bd7..b50a05ada2e759cfdeb2af036337bf5ed5b60b7d 100644
47+
index 6bdf3679ea9461475b139a0622857b1dc56ea5b2..3c3959240c72fe705db5ee79cf8faaaddd361ee9 100644
4848
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
4949
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
5050
@@ -277,8 +277,21 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -79,7 +79,7 @@ index 0edb08a391f806e56ed1bd4812eb9c9d2b966bd7..b50a05ada2e759cfdeb2af036337bf5e
7979
}
8080

8181
return true;
82-
@@ -423,9 +436,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
82+
@@ -428,9 +441,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
8383
org.spigotmc.AsyncCatcher.catchOp("chunk load"); // Spigot
8484
// Paper start - Optimize this method
8585
ChunkPos chunkPos = new ChunkPos(x, z);
@@ -93,7 +93,7 @@ index 0edb08a391f806e56ed1bd4812eb9c9d2b966bd7..b50a05ada2e759cfdeb2af036337bf5e
9393
if (immediate == null) {
9494
immediate = world.getChunkSource().chunkMap.getUnloadingChunk(x, z);
9595
}
96-
@@ -433,7 +449,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
96+
@@ -438,7 +454,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
9797
if (!(immediate instanceof ImposterProtoChunk) && !(immediate instanceof net.minecraft.world.level.chunk.LevelChunk)) {
9898
return false; // not full status
9999
}
@@ -102,7 +102,7 @@ index 0edb08a391f806e56ed1bd4812eb9c9d2b966bd7..b50a05ada2e759cfdeb2af036337bf5e
102102
world.getChunk(x, z); // make sure we're at ticket level 32 or lower
103103
return true;
104104
}
105-
@@ -459,7 +475,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
105+
@@ -464,7 +480,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
106106
// we do this so we do not re-read the chunk data on disk
107107
}
108108

@@ -111,7 +111,7 @@ index 0edb08a391f806e56ed1bd4812eb9c9d2b966bd7..b50a05ada2e759cfdeb2af036337bf5e
111111
world.getChunkSource().getChunk(x, z, ChunkStatus.FULL, true);
112112
return true;
113113
// Paper end
114-
@@ -1979,6 +1995,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
114+
@@ -1984,6 +2000,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
115115

116116
return this.world.getChunkSource().getChunkAtAsynchronously(x, z, gen, urgent).thenComposeAsync((either) -> {
117117
net.minecraft.world.level.chunk.LevelChunk chunk = (net.minecraft.world.level.chunk.LevelChunk) either.left().orElse(null);

patches/server/0465-Implement-Chunk-Priority-Urgency-System-for-Chunks.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1177,10 +1177,10 @@ index b9ad77606d88d7ca41c0070063b8599ecc048422..0388b89a5f67ebaf344de53464922dad
11771177
org.bukkit.event.world.ChunkUnloadEvent unloadEvent = new org.bukkit.event.world.ChunkUnloadEvent(this.bukkitChunk, this.isUnsaved());
11781178
server.getPluginManager().callEvent(unloadEvent);
11791179
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
1180-
index b50a05ada2e759cfdeb2af036337bf5ed5b60b7d..03d2ff6e1595453d57b42da1b508da813f73b2bf 100644
1180+
index 3c3959240c72fe705db5ee79cf8faaaddd361ee9..3571f8406630c268b8a6ad48d2f4351e2f8fc617 100644
11811181
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
11821182
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
1183-
@@ -1993,6 +1993,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
1183+
@@ -1998,6 +1998,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
11841184
return future;
11851185
}
11861186

patches/server/0475-Add-missing-strikeLighting-call-to-World-spigot-stri.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ Subject: [PATCH] Add missing strikeLighting call to
66

77

88
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
9-
index 03d2ff6e1595453d57b42da1b508da813f73b2bf..e9353aa51d24e06c3bd67417215cdfb0c97a6d60 100644
9+
index 3571f8406630c268b8a6ad48d2f4351e2f8fc617..198ddc0747470313e4cbab132a8e523155cfe0c1 100644
1010
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
1111
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
12-
@@ -2088,6 +2088,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
12+
@@ -2093,6 +2093,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
1313
lightning.moveTo( loc.getX(), loc.getY(), loc.getZ() );
1414
lightning.visualOnly = true;
1515
lightning.isSilent = isSilent;

patches/server/0561-Added-WorldGameRuleChangeEvent.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ index 74e10d581f8c1b0b026d8f940194971efbdef434..798afc145c54306fcf0838d8daef2bdf
6464

6565
public int get() {
6666
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
67-
index 8a5bb077ffb2e88bea813fd89023f2d057526417..f56a0c203b7d459b7a59419d0cf8bc33002289f4 100644
67+
index c39d5dd9602fe35b4936f01089a3b2048ef0c9bf..b0e5da5c4515b580b2655cf5a9cb74d1bd9dd9a1 100644
6868
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
6969
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
70-
@@ -1798,8 +1798,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
70+
@@ -1803,8 +1803,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
7171

7272
if (!this.isGameRule(rule)) return false;
7373

@@ -82,7 +82,7 @@ index 8a5bb077ffb2e88bea813fd89023f2d057526417..f56a0c203b7d459b7a59419d0cf8bc33
8282
handle.onChanged(this.getHandle().getServer());
8383
return true;
8484
}
85-
@@ -1834,8 +1839,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
85+
@@ -1839,8 +1844,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
8686

8787
if (!this.isGameRule(rule.getName())) return false;
8888

patches/server/0630-More-World-API.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] More World API
55

66

77
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
8-
index f56a0c203b7d459b7a59419d0cf8bc33002289f4..f759c29be097095d757120528edb72f91ed7f054 100644
8+
index b0e5da5c4515b580b2655cf5a9cb74d1bd9dd9a1..cda29b242989153f32f8f1a87d5cfd5dc9b2f599 100644
99
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
1010
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
11-
@@ -1967,6 +1967,65 @@ public class CraftWorld extends CraftRegionAccessor implements World {
11+
@@ -1972,6 +1972,65 @@ public class CraftWorld extends CraftRegionAccessor implements World {
1212
return (nearest == null) ? null : new Location(this, nearest.getX(), nearest.getY(), nearest.getZ());
1313
}
1414

patches/server/0656-Add-cause-to-Weather-ThunderChangeEvents.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,10 @@ index 1bd338c7860adf3b846cd6caa33312b3269ac3ef..95635cc7367b757d149bb2c81326a041
9595
if (weather.isCancelled()) {
9696
return;
9797
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
98-
index f759c29be097095d757120528edb72f91ed7f054..83e54e62d54e140cef5234396f40796b12ac8355 100644
98+
index cda29b242989153f32f8f1a87d5cfd5dc9b2f599..19e4abd0175a19e75521b5adc9ea47bb00abf3c9 100644
9999
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
100100
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
101-
@@ -1189,7 +1189,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
101+
@@ -1194,7 +1194,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
102102

103103
@Override
104104
public void setStorm(boolean hasStorm) {
@@ -107,7 +107,7 @@ index f759c29be097095d757120528edb72f91ed7f054..83e54e62d54e140cef5234396f40796b
107107
this.setWeatherDuration(0); // Reset weather duration (legacy behaviour)
108108
this.setClearWeatherDuration(0); // Reset clear weather duration (reset "/weather clear" commands)
109109
}
110-
@@ -1211,7 +1211,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
110+
@@ -1216,7 +1216,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
111111

112112
@Override
113113
public void setThundering(boolean thundering) {

patches/server/0711-Add-methods-to-find-targets-for-lightning-strikes.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ index 384222f321f1678803d62187b76bf3dee1970c0c..b10c0099ba0691cb167e78b8decafe39
2929
blockposition1 = blockposition1.above(2);
3030
}
3131
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
32-
index f30286bb421d7467304c7a8c506c458f14b65f14..f69882f1c90682566dc27653a6afcf67b2ed624b 100644
32+
index cff763bd0ac8dff62c8d6e7ad94fc0e453df7abe..31110d739f0b3436461c267a62db1d592f4904a2 100644
3333
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
3434
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
35-
@@ -703,6 +703,23 @@ public class CraftWorld extends CraftRegionAccessor implements World {
35+
@@ -708,6 +708,23 @@ public class CraftWorld extends CraftRegionAccessor implements World {
3636
return (LightningStrike) lightning.getBukkitEntity();
3737
}
3838

patches/server/0733-Add-paper-mobcaps-and-paper-playermobcaps.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ index ce6051531f021bf20851bc5ab763e732ee10427d..87d1f5b2717fc82203b5674ac0bf2704
293293
public static void spawnCategoryForChunk(MobCategory group, ServerLevel world, LevelChunk chunk, NaturalSpawner.SpawnPredicate checker, NaturalSpawner.AfterSpawnCallback runner) {
294294
spawnCategoryForChunk(group, world, chunk, checker, runner, Integer.MAX_VALUE, null);
295295
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
296-
index 0bf0bdc72c85bbf726fa86a778c8bcf5ed534be0..c99a522c7839b2a9cf131913172baabfc0658eeb 100644
296+
index 674154ae0ceb8da37e41be69179b546ab2872be5..c0427bfe4f93b501aaacb66c131d2736dce6b5e0 100644
297297
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
298298
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
299299
@@ -2149,6 +2149,11 @@ public final class CraftServer implements Server {
@@ -309,10 +309,10 @@ index 0bf0bdc72c85bbf726fa86a778c8bcf5ed534be0..c99a522c7839b2a9cf131913172baabf
309309
}
310310

311311
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
312-
index f69882f1c90682566dc27653a6afcf67b2ed624b..05352f89399d7c90ff029984889bddd73c31a7d1 100644
312+
index 31110d739f0b3436461c267a62db1d592f4904a2..f316bd615b2801365c0c2d23521ba471ed320968 100644
313313
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
314314
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
315-
@@ -1718,9 +1718,14 @@ public class CraftWorld extends CraftRegionAccessor implements World {
315+
@@ -1723,9 +1723,14 @@ public class CraftWorld extends CraftRegionAccessor implements World {
316316
Validate.notNull(spawnCategory, "SpawnCategory cannot be null");
317317
Validate.isTrue(CraftSpawnCategory.isValidForLimits(spawnCategory), "SpawnCategory." + spawnCategory + " are not supported.");
318318

patches/server/0853-Replace-player-chunk-loader-system.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2120,10 +2120,10 @@ index 72b5d63127fbcd2913309f2c3c438b88728b4673..f667dafd44b6652788d3367cbbc76eef
21202120

21212121
@Nullable
21222122
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
2123-
index 7b5e099f73dae3846a1190523e769530ffac2f28..dc9a98d2aa894b2ff9b032d1d0707ad493bdca29 100644
2123+
index bde90fa06a77e403ee97f2ed3b9fd1d6e5a4af81..d09e7a0470799acbca59723444fbf03f6e9593d7 100644
21242124
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
21252125
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
2126-
@@ -2214,43 +2214,56 @@ public class CraftWorld extends CraftRegionAccessor implements World {
2126+
@@ -2219,43 +2219,56 @@ public class CraftWorld extends CraftRegionAccessor implements World {
21272127
// Spigot start
21282128
@Override
21292129
public int getViewDistance() {

0 commit comments

Comments
 (0)