From 9f8bc9db99f82513c37c007a4b48a2b4b7e0b53b Mon Sep 17 00:00:00 2001 From: Eclipse Date: Mon, 15 Sep 2025 21:01:23 +0000 Subject: [PATCH] Bump MCPL for data palette fixes (#5818) * Update chunk loading for MCPL changes * Adjust for renames in MCPL * Bump MCPL * Rename this just because I can --- .../org/geysermc/geyser/level/physics/Direction.java | 4 ++-- .../org/geysermc/geyser/session/cache/ChunkCache.java | 5 ++--- .../geyser/session/cache/registry/JavaRegistry.java | 5 +++++ .../session/cache/registry/SimpleJavaRegistry.java | 5 +++++ .../java/level/JavaLevelChunkWithLightTranslator.java | 10 ++++++---- gradle/libs.versions.toml | 2 +- 6 files changed, 21 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/org/geysermc/geyser/level/physics/Direction.java b/core/src/main/java/org/geysermc/geyser/level/physics/Direction.java index 22326645e..d4e304f76 100644 --- a/core/src/main/java/org/geysermc/geyser/level/physics/Direction.java +++ b/core/src/main/java/org/geysermc/geyser/level/physics/Direction.java @@ -72,9 +72,9 @@ public enum Direction { return axis == Axis.X || axis == Axis.Z; } - public static @NonNull Direction fromMCPL(org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction pistonValue) { + public static @NonNull Direction fromMCPL(org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction mcpl) { for (Direction direction : VALUES) { - if (direction.mcpl == pistonValue) { + if (direction.mcpl == mcpl) { return direction; } } diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/ChunkCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/ChunkCache.java index fd9ec7ea8..464b99383 100644 --- a/core/src/main/java/org/geysermc/geyser/session/cache/ChunkCache.java +++ b/core/src/main/java/org/geysermc/geyser/session/cache/ChunkCache.java @@ -31,6 +31,7 @@ import lombok.Setter; import org.geysermc.geyser.GeyserImpl; import org.geysermc.geyser.level.block.type.Block; import org.geysermc.geyser.level.chunk.GeyserChunk; +import org.geysermc.geyser.registry.BlockRegistries; import org.geysermc.geyser.session.GeyserSession; import org.geysermc.geyser.util.MathUtils; import org.geysermc.mcprotocollib.protocol.data.game.chunk.DataPalette; @@ -89,9 +90,7 @@ public class ChunkCache { previouslyEmpty = true; if (block != Block.JAVA_AIR_ID) { // A previously empty chunk, which is no longer empty as a block has been added to it - palette = DataPalette.createForChunk(); - // Fixes the chunk assuming that all blocks is the `block` variable we are updating. /shrug - palette.getPalette().stateToId(Block.JAVA_AIR_ID); + palette = DataPalette.createForBlockState(Block.JAVA_AIR_ID, BlockRegistries.BLOCK_STATES.get().size()); chunk.sections()[(y - minY) >> 4] = palette; } else { // Nothing to update diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistry.java b/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistry.java index 8a0c4c4df..fc9c7d884 100644 --- a/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistry.java +++ b/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistry.java @@ -80,4 +80,9 @@ public interface JavaRegistry { * All values of this registry, as a list. */ List values(); + + /** + * The amount of values registered in this registry. + */ + int size(); } diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/registry/SimpleJavaRegistry.java b/core/src/main/java/org/geysermc/geyser/session/cache/registry/SimpleJavaRegistry.java index 853579813..f6c7769ca 100644 --- a/core/src/main/java/org/geysermc/geyser/session/cache/registry/SimpleJavaRegistry.java +++ b/core/src/main/java/org/geysermc/geyser/session/cache/registry/SimpleJavaRegistry.java @@ -108,6 +108,11 @@ public class SimpleJavaRegistry implements JavaRegistry { return this.values.stream().map(RegistryEntryData::data).toList(); } + @Override + public int size() { + return values.size(); + } + @Override public String toString() { return this.values.toString(); diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaLevelChunkWithLightTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaLevelChunkWithLightTranslator.java index 065b0ad36..46278e3c5 100644 --- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaLevelChunkWithLightTranslator.java +++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaLevelChunkWithLightTranslator.java @@ -53,6 +53,7 @@ import org.geysermc.geyser.level.chunk.bitarray.BitArrayVersion; import org.geysermc.geyser.level.chunk.bitarray.SingletonBitArray; import org.geysermc.geyser.registry.BlockRegistries; import org.geysermc.geyser.session.GeyserSession; +import org.geysermc.geyser.session.cache.registry.JavaRegistries; import org.geysermc.geyser.translator.level.BiomeTranslator; import org.geysermc.geyser.translator.level.block.entity.BedrockChunkWantsBlockEntityTag; import org.geysermc.geyser.translator.level.block.entity.BlockEntityTranslator; @@ -120,8 +121,9 @@ public class JavaLevelChunkWithLightTranslator extends PacketTranslator