aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0935-Add-getChunkSnapshot-includeLightData-parameter.patch
diff options
context:
space:
mode:
authorJakub Zacek <[email protected]>2024-07-15 23:35:51 +0200
committerGitHub <[email protected]>2024-07-15 17:35:51 -0400
commit2cd8c461af74f0a524878dcdffba86cd105c48c6 (patch)
treeac107a76fe3d6cdd2e6ef5804ef3cba152957e4c /patches/server/0935-Add-getChunkSnapshot-includeLightData-parameter.patch
parentb57b24d549c65ddc5eb3edcc1ecc6aad2826dbd8 (diff)
downloadPaper-2cd8c461af74f0a524878dcdffba86cd105c48c6.tar.gz
Paper-2cd8c461af74f0a524878dcdffba86cd105c48c6.zip
Add OMINOUS_ITEM_SPAWNER SpawnReason (#10897)
Diffstat (limited to 'patches/server/0935-Add-getChunkSnapshot-includeLightData-parameter.patch')
-rw-r--r--patches/server/0935-Add-getChunkSnapshot-includeLightData-parameter.patch70
1 files changed, 70 insertions, 0 deletions
diff --git a/patches/server/0935-Add-getChunkSnapshot-includeLightData-parameter.patch b/patches/server/0935-Add-getChunkSnapshot-includeLightData-parameter.patch
new file mode 100644
index 0000000000..54aa35539f
--- /dev/null
+++ b/patches/server/0935-Add-getChunkSnapshot-includeLightData-parameter.patch
@@ -0,0 +1,70 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Warrior <[email protected]>
+Date: Sat, 10 Feb 2024 10:03:48 +0100
+Subject: [PATCH] Add getChunkSnapshot includeLightData parameter
+
+
+diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
+index d6eab2a0fdbafc35efa7ed5b404357391565f4f3..69c7fe5bf5b914276a9f7a0e57ce668e569d91f9 100644
+--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
++++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
+@@ -328,12 +328,21 @@ public class CraftChunk implements Chunk {
+
+ @Override
+ public ChunkSnapshot getChunkSnapshot(boolean includeMaxBlockY, boolean includeBiome, boolean includeBiomeTempRain) {
++ // Paper start - Add getChunkSnapshot includeLightData parameter
++ return getChunkSnapshot(includeMaxBlockY, includeBiome, includeBiomeTempRain, true);
++ }
++
++ @Override
++ public ChunkSnapshot getChunkSnapshot(boolean includeMaxBlockY, boolean includeBiome, boolean includeBiomeTempRain, boolean includeLightData) {
++ // Paper end - Add getChunkSnapshot includeLightData parameter
+ ChunkAccess chunk = this.getHandle(ChunkStatus.FULL);
+
+ LevelChunkSection[] cs = chunk.getSections();
+ PalettedContainer[] sectionBlockIDs = new PalettedContainer[cs.length];
+- byte[][] sectionSkyLights = new byte[cs.length][];
+- byte[][] sectionEmitLights = new byte[cs.length][];
++ // Paper start - Add getChunkSnapshot includeLightData parameter
++ byte[][] sectionSkyLights = includeLightData ? new byte[cs.length][] : null;
++ byte[][] sectionEmitLights = includeLightData ? new byte[cs.length][] : null;
++ // Paper end - Add getChunkSnapshot includeLightData parameter
+ boolean[] sectionEmpty = new boolean[cs.length];
+ PalettedContainerRO<Holder<net.minecraft.world.level.biome.Biome>>[] biome = (includeBiome || includeBiomeTempRain) ? new PalettedContainer[cs.length] : null;
+
+@@ -350,6 +359,7 @@ public class CraftChunk implements Chunk {
+ }
+ // Paper end - Fix ChunkSnapshot#isSectionEmpty(int)
+
++ if (includeLightData) { // Paper - Add getChunkSnapshot includeLightData parameter
+ LevelLightEngine lightengine = this.worldServer.getLightEngine();
+ DataLayer skyLightArray = lightengine.getLayerListener(LightLayer.SKY).getDataLayerData(SectionPos.of(this.x, chunk.getSectionYFromSectionIndex(i), this.z)); // SPIGOT-7498: Convert section index
+ if (skyLightArray == null) {
+@@ -365,6 +375,7 @@ public class CraftChunk implements Chunk {
+ sectionEmitLights[i] = new byte[2048];
+ System.arraycopy(emitLightArray.getData(), 0, sectionEmitLights[i], 0, 2048);
+ }
++ } // Paper - Add getChunkSnapshot includeLightData parameter
+
+ if (biome != null) {
+ biome[i] = ((PalettedContainer<Holder<net.minecraft.world.level.biome.Biome>>) cs[i].getBiomes()).copy(); // Paper - Perf: use copy instead of round tripping with codecs
+diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java b/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java
+index 85029f1acfdbb411d9ebdf95838d6db3898f4e58..0756b5adb3039997feadeb94afb10b596abd9424 100644
+--- a/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java
++++ b/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java
+@@ -118,6 +118,7 @@ public class CraftChunkSnapshot implements ChunkSnapshot {
+
+ @Override
+ public final int getBlockSkyLight(int x, int y, int z) {
++ Preconditions.checkState(this.skylight != null, "ChunkSnapshot created without light data. Please call getSnapshot with includeLightData=true"); // Paper - Add getChunkSnapshot includeLightData parameter
+ this.validateChunkCoordinates(x, y, z);
+
+ int off = ((y & 0xF) << 7) | (z << 3) | (x >> 1);
+@@ -126,6 +127,7 @@ public class CraftChunkSnapshot implements ChunkSnapshot {
+
+ @Override
+ public final int getBlockEmittedLight(int x, int y, int z) {
++ Preconditions.checkState(this.emitlight != null, "ChunkSnapshot created without light data. Please call getSnapshot with includeLightData=true"); // Paper - Add getChunkSnapshot includeLightData parameter
+ this.validateChunkCoordinates(x, y, z);
+
+ int off = ((y & 0xF) << 7) | (z << 3) | (x >> 1);