Begin update to 1.20.5
This commit is contained in:
		
					parent
					
						
							
								73da69c09e
							
						
					
				
			
			
				commit
				
					
						47ee5579ff
					
				
			
		
					 1080 changed files with 381 additions and 528 deletions
				
			
		| 
						 | 
				
			
			@ -1,43 +0,0 @@
 | 
			
		|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
 | 
			
		||||
Date: Thu, 9 Dec 2021 00:08:11 -0800
 | 
			
		||||
Subject: [PATCH] Fix ChunkSnapshot#isSectionEmpty(int) and optimize
 | 
			
		||||
 PalettedContainer copying by not using codecs
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
 | 
			
		||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
			
		||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
 | 
			
		||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
 | 
			
		||||
@@ -0,0 +0,0 @@ public class CraftChunk implements Chunk {
 | 
			
		||||
         PalettedContainerRO<Holder<net.minecraft.world.level.biome.Biome>>[] biome = (includeBiome || includeBiomeTempRain) ? new PalettedContainer[cs.length] : null;
 | 
			
		||||
 
 | 
			
		||||
         Registry<net.minecraft.world.level.biome.Biome> iregistry = this.worldServer.registryAccess().registryOrThrow(Registries.BIOME);
 | 
			
		||||
-        Codec<PalettedContainerRO<Holder<net.minecraft.world.level.biome.Biome>>> biomeCodec = PalettedContainer.codecRO(iregistry.asHolderIdMap(), iregistry.holderByNameCodec(), PalettedContainer.Strategy.SECTION_BIOMES, iregistry.getHolderOrThrow(Biomes.PLAINS));
 | 
			
		||||
 
 | 
			
		||||
         for (int i = 0; i < cs.length; i++) {
 | 
			
		||||
-            CompoundTag data = new CompoundTag();
 | 
			
		||||
 
 | 
			
		||||
-            data.put("block_states", ChunkSerializer.BLOCK_STATE_CODEC.encodeStart(NbtOps.INSTANCE, cs[i].getStates()).get().left().get());
 | 
			
		||||
-            sectionBlockIDs[i] = ChunkSerializer.BLOCK_STATE_CODEC.parse(NbtOps.INSTANCE, data.getCompound("block_states")).get().left().get();
 | 
			
		||||
+            // Paper start - Fix ChunkSnapshot#isSectionEmpty(int); and remove codec usage
 | 
			
		||||
+            sectionEmpty[i] = cs[i].hasOnlyAir(); // fix sectionEmpty array not being filled
 | 
			
		||||
+            if (!sectionEmpty[i]) {
 | 
			
		||||
+                sectionBlockIDs[i] = cs[i].getStates().copy(); // use copy instead of round tripping with codecs
 | 
			
		||||
+            } else {
 | 
			
		||||
+                sectionBlockIDs[i] = CraftChunk.emptyBlockIDs; // use cached instance for empty block sections
 | 
			
		||||
+            }
 | 
			
		||||
+            // Paper end - Fix ChunkSnapshot#isSectionEmpty(int)
 | 
			
		||||
 
 | 
			
		||||
             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
 | 
			
		||||
@@ -0,0 +0,0 @@ public class CraftChunk implements Chunk {
 | 
			
		||||
             }
 | 
			
		||||
 
 | 
			
		||||
             if (biome != null) {
 | 
			
		||||
-                data.put("biomes", biomeCodec.encodeStart(NbtOps.INSTANCE, cs[i].getBiomes()).get().left().get());
 | 
			
		||||
-                biome[i] = biomeCodec.parse(NbtOps.INSTANCE, data.getCompound("biomes")).get().left().get();
 | 
			
		||||
+                biome[i] = ((PalettedContainer<Holder<net.minecraft.world.level.biome.Biome>>) cs[i].getBiomes()).copy(); // Paper - Perf: use copy instead of round tripping with codecs
 | 
			
		||||
             }
 | 
			
		||||
         }
 | 
			
		||||
 
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue