From 54bb1f3d13d7b36e3d23615e6dc28b19dad1f2f1 Mon Sep 17 00:00:00 2001 From: Valaphee The Meerkat <32491319+valaphee@users.noreply.github.com> Date: Wed, 6 Sep 2023 20:19:51 +0200 Subject: [PATCH] Remove blockstate version (#4011) * Remove blockstate version * Regr, add comment why version tag is removed --- .../geyser/entity/type/ItemFrameEntity.java | 3 +-- .../populator/BlockRegistryPopulator.java | 16 +++++++--------- .../populator/CustomBlockRegistryPopulator.java | 6 ++---- .../geyser/registry/type/BlockMappings.java | 2 -- 4 files changed, 10 insertions(+), 17 deletions(-) diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java index eb9329bcd..295972200 100644 --- a/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java +++ b/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java @@ -83,8 +83,7 @@ public class ItemFrameEntity extends Entity { super(session, entityId, geyserId, uuid, definition, position, motion, yaw, pitch, headYaw); NbtMapBuilder blockBuilder = NbtMap.builder() - .putString("name", this.definition.entityType() == EntityType.GLOW_ITEM_FRAME ? "minecraft:glow_frame" : "minecraft:frame") - .putInt("version", session.getBlockMappings().getBlockStateVersion()); + .putString("name", this.definition.entityType() == EntityType.GLOW_ITEM_FRAME ? "minecraft:glow_frame" : "minecraft:frame"); NbtMapBuilder statesBuilder = NbtMap.builder() .putInt("facing_direction", direction.ordinal()) .putByte("item_frame_map_bit", (byte) 0) diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java index d3a72d017..49b3b6b7a 100644 --- a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java +++ b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java @@ -147,6 +147,7 @@ public final class BlockRegistryPopulator { vanillaBlockStates = new ArrayList<>(blockPalette.getList("blocks", NbtType.COMPOUND)); for (int i = 0; i < vanillaBlockStates.size(); i++) { NbtMapBuilder builder = vanillaBlockStates.get(i).toBuilder(); + builder.remove("version"); // Remove all nbt tags which are not needed for differentiating states builder.remove("name_hash"); // Quick workaround - was added in 1.19.20 builder.remove("network_id"); // Added in 1.19.80 - ???? builder.putCompound("states", statesInterner.intern((NbtMap) builder.remove("states"))); @@ -157,7 +158,6 @@ public final class BlockRegistryPopulator { } catch (Exception e) { throw new AssertionError("Unable to get blocks from runtime block states", e); } - int stateVersion = vanillaBlockStates.get(0).getInt("version"); List customBlockProperties = new ArrayList<>(); List customBlockStates = new ArrayList<>(); @@ -166,7 +166,7 @@ public final class BlockRegistryPopulator { if (BlockRegistries.CUSTOM_BLOCKS.get().length != 0) { for (CustomBlockData customBlock : BlockRegistries.CUSTOM_BLOCKS.get()) { customBlockProperties.add(CustomBlockRegistryPopulator.generateBlockPropertyData(customBlock, protocolVersion)); - CustomBlockRegistryPopulator.generateCustomBlockStates(customBlock, customBlockStates, customExtBlockStates, stateVersion); + CustomBlockRegistryPopulator.generateCustomBlockStates(customBlock, customBlockStates, customExtBlockStates); } blockStates.addAll(customBlockStates); GeyserImpl.getInstance().getLogger().debug("Added " + customBlockStates.size() + " custom block states to v" + protocolVersion + " palette."); @@ -237,7 +237,7 @@ public final class BlockRegistryPopulator { javaRuntimeId++; Map.Entry entry = blocksIterator.next(); String javaId = entry.getKey(); - GeyserBedrockBlock vanillaBedrockDefinition = blockStateOrderedMap.get(buildBedrockState(entry.getValue(), stateVersion, stateMapper)); + GeyserBedrockBlock vanillaBedrockDefinition = blockStateOrderedMap.get(buildBedrockState(entry.getValue(), stateMapper)); GeyserBedrockBlock bedrockDefinition; CustomBlockState blockStateOverride = BlockRegistries.CUSTOM_BLOCK_STATE_OVERRIDES.get(javaRuntimeId); @@ -245,7 +245,7 @@ public final class BlockRegistryPopulator { bedrockDefinition = vanillaBedrockDefinition; if (bedrockDefinition == null) { throw new RuntimeException("Unable to find " + javaId + " Bedrock runtime ID! Built NBT tag: \n" + - palette.getKey().key() + buildBedrockState(entry.getValue(), stateVersion, stateMapper)); + palette.getKey().key() + buildBedrockState(entry.getValue(), stateMapper)); } } else { bedrockDefinition = customBlockStateDefinitions.get(blockStateOverride); @@ -341,8 +341,7 @@ public final class BlockRegistryPopulator { } }); - BlockRegistries.BLOCKS.register(palette.getKey().valueInt(), builder.blockStateVersion(stateVersion) - .bedrockRuntimeMap(bedrockRuntimeMap) + BlockRegistries.BLOCKS.register(palette.getKey().valueInt(), builder.bedrockRuntimeMap(bedrockRuntimeMap) .javaToBedrockBlocks(javaToBedrockBlocks) .javaToVanillaBedrockBlocks(javaToVanillaBedrockBlocks) .stateDefinitionMap(blockStateOrderedMap) @@ -579,11 +578,10 @@ public final class BlockRegistryPopulator { return blockStateSet; } - private static NbtMap buildBedrockState(JsonNode node, int blockStateVersion, BiFunction statesMapper) { + private static NbtMap buildBedrockState(JsonNode node, BiFunction statesMapper) { NbtMapBuilder tagBuilder = NbtMap.builder(); String bedrockIdentifier = node.get("bedrock_identifier").textValue(); - tagBuilder.putString("name", bedrockIdentifier) - .putInt("version", blockStateVersion); + tagBuilder.putString("name", bedrockIdentifier); NbtMapBuilder statesBuilder = NbtMap.builder(); diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/CustomBlockRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/CustomBlockRegistryPopulator.java index 504db753d..ca9d40ef6 100644 --- a/core/src/main/java/org/geysermc/geyser/registry/populator/CustomBlockRegistryPopulator.java +++ b/core/src/main/java/org/geysermc/geyser/registry/populator/CustomBlockRegistryPopulator.java @@ -199,10 +199,9 @@ public class CustomBlockRegistryPopulator { * * @param customBlock the custom block data to generate states for * @param blockStates the list of NBT maps to append the custom block states to - * @param customExtBlockStates the list of custom block states to append the custom block states to - * @param stateVersion the state version to use for the custom block states + * @param customExtBlockStates the list of custom block states to append the custom block states to */ - static void generateCustomBlockStates(CustomBlockData customBlock, List blockStates, List customExtBlockStates, int stateVersion) { + static void generateCustomBlockStates(CustomBlockData customBlock, List blockStates, List customExtBlockStates) { int totalPermutations = 1; for (CustomBlockProperty property : customBlock.properties().values()) { totalPermutations *= property.values().size(); @@ -219,7 +218,6 @@ public class CustomBlockRegistryPopulator { blockStates.add(NbtMap.builder() .putString("name", customBlock.identifier()) - .putInt("version", stateVersion) .putCompound("states", states) .build()); customExtBlockStates.add(new GeyserCustomBlockState(customBlock, states)); diff --git a/core/src/main/java/org/geysermc/geyser/registry/type/BlockMappings.java b/core/src/main/java/org/geysermc/geyser/registry/type/BlockMappings.java index 3c33ea097..80be3fbce 100644 --- a/core/src/main/java/org/geysermc/geyser/registry/type/BlockMappings.java +++ b/core/src/main/java/org/geysermc/geyser/registry/type/BlockMappings.java @@ -46,8 +46,6 @@ public class BlockMappings implements DefinitionRegistry { BlockDefinition bedrockWater; BlockDefinition bedrockMovingBlock; - int blockStateVersion; - GeyserBedrockBlock[] javaToBedrockBlocks; GeyserBedrockBlock[] javaToVanillaBedrockBlocks;