From baa89cc35c4b135a9d210b1f0fe03b9f9cc5eee9 Mon Sep 17 00:00:00 2001 From: Eclipse Date: Sun, 21 Sep 2025 22:15:45 +0000 Subject: [PATCH] Target new mappings, build on Protocol without adventure --- .../kotlin/geyser.base-conventions.gradle.kts | 2 +- .../populator/BlockRegistryPopulator.java | 7 ++- .../populator/ItemRegistryPopulator.java | 13 +++-- .../conversion/Conversion843_827.java | 57 +++++++++++++++++++ core/src/main/resources/mappings | 2 +- gradle/libs.versions.toml | 6 +- 6 files changed, 75 insertions(+), 12 deletions(-) create mode 100644 core/src/main/java/org/geysermc/geyser/registry/populator/conversion/Conversion843_827.java diff --git a/build-logic/src/main/kotlin/geyser.base-conventions.gradle.kts b/build-logic/src/main/kotlin/geyser.base-conventions.gradle.kts index 107068819..d6f6f175a 100644 --- a/build-logic/src/main/kotlin/geyser.base-conventions.gradle.kts +++ b/build-logic/src/main/kotlin/geyser.base-conventions.gradle.kts @@ -26,7 +26,7 @@ dependencies { } repositories { - // mavenLocal() + mavenLocal() mavenCentral() 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 09e2718dd..47325d51d 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 @@ -59,6 +59,7 @@ import org.geysermc.geyser.level.block.type.Block; import org.geysermc.geyser.level.block.type.BlockState; import org.geysermc.geyser.level.block.type.FlowerPotBlock; import org.geysermc.geyser.registry.BlockRegistries; +import org.geysermc.geyser.registry.populator.conversion.Conversion843_827; import org.geysermc.geyser.registry.type.BlockMappings; import org.geysermc.geyser.registry.type.GeyserBedrockBlock; @@ -118,9 +119,9 @@ public final class BlockRegistryPopulator { private static void registerBedrockBlocks() { var blockMappers = ImmutableMap., Remapper>builder() - .put(ObjectIntPair.of("1_21_90", Bedrock_v818.CODEC.getProtocolVersion()), tag -> tag) - .put(ObjectIntPair.of("1_21_90", Bedrock_v819.CODEC.getProtocolVersion()), tag -> tag) - .put(ObjectIntPair.of("1_21_100", Bedrock_v827.CODEC.getProtocolVersion()), tag -> tag) + .put(ObjectIntPair.of("1_21_90", Bedrock_v818.CODEC.getProtocolVersion()), Conversion843_827::remapBlock) + .put(ObjectIntPair.of("1_21_90", Bedrock_v819.CODEC.getProtocolVersion()), Conversion843_827::remapBlock) + .put(ObjectIntPair.of("1_21_100", Bedrock_v827.CODEC.getProtocolVersion()), Conversion843_827::remapBlock) .put(ObjectIntPair.of("1_21_110", Bedrock_v843.CODEC.getProtocolVersion()), tag -> tag) // TODO conversion? .build(); diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java index 9103c61c7..15bdaac3a 100644 --- a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java +++ b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java @@ -72,6 +72,7 @@ import org.geysermc.geyser.item.type.Item; import org.geysermc.geyser.level.block.property.Properties; import org.geysermc.geyser.registry.BlockRegistries; import org.geysermc.geyser.registry.Registries; +import org.geysermc.geyser.registry.populator.conversion.Conversion843_827; import org.geysermc.geyser.registry.type.BlockMappings; import org.geysermc.geyser.registry.type.GeyserBedrockBlock; import org.geysermc.geyser.registry.type.GeyserMappingItem; @@ -104,6 +105,10 @@ public class ItemRegistryPopulator { public PaletteVersion(String version, int protocolVersion, Map javaOnlyItems) { this(version, protocolVersion, javaOnlyItems, (item, mapping) -> mapping); } + + public PaletteVersion(String version, int protocolVersion, Remapper remapper) { + this(version, protocolVersion, Collections.emptyMap(), remapper); + } } @FunctionalInterface @@ -114,10 +119,10 @@ public class ItemRegistryPopulator { public static void populate() { List paletteVersions = new ArrayList<>(6); - paletteVersions.add(new PaletteVersion("1_21_90", Bedrock_v818.CODEC.getProtocolVersion(), Map.of(Items.MUSIC_DISC_LAVA_CHICKEN, Items.MUSIC_DISC_CHIRP))); - paletteVersions.add(new PaletteVersion("1_21_93", Bedrock_v819.CODEC.getProtocolVersion())); - paletteVersions.add(new PaletteVersion("1_21_100", Bedrock_v827.CODEC.getProtocolVersion())); - paletteVersions.add(new PaletteVersion("1_21_110", Bedrock_v827.CODEC.getProtocolVersion())); // TODO fallbacks + paletteVersions.add(new PaletteVersion("1_21_90", Bedrock_v818.CODEC.getProtocolVersion(), Map.of(Items.MUSIC_DISC_LAVA_CHICKEN, Items.MUSIC_DISC_CHIRP), Conversion843_827::remapItem)); + paletteVersions.add(new PaletteVersion("1_21_93", Bedrock_v819.CODEC.getProtocolVersion(), Conversion843_827::remapItem)); + paletteVersions.add(new PaletteVersion("1_21_100", Bedrock_v827.CODEC.getProtocolVersion(), Conversion843_827::remapItem)); + paletteVersions.add(new PaletteVersion("1_21_110", Bedrock_v827.CODEC.getProtocolVersion())); GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap(); diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/conversion/Conversion843_827.java b/core/src/main/java/org/geysermc/geyser/registry/populator/conversion/Conversion843_827.java new file mode 100644 index 000000000..d14260c49 --- /dev/null +++ b/core/src/main/java/org/geysermc/geyser/registry/populator/conversion/Conversion843_827.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2025 GeyserMC. http://geysermc.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @author GeyserMC + * @link https://github.com/GeyserMC/Geyser + */ + +package org.geysermc.geyser.registry.populator.conversion; + +import org.cloudburstmc.nbt.NbtMap; +import org.cloudburstmc.nbt.NbtMapBuilder; +import org.geysermc.geyser.item.Items; +import org.geysermc.geyser.item.type.Item; +import org.geysermc.geyser.registry.type.GeyserMappingItem; + +public class Conversion843_827 { + + public static NbtMap remapBlock(NbtMap nbtMap) { + final String name = nbtMap.getString("name"); + if (name.equals("minecraft:iron_chain")) { + return ConversionHelper.withName(nbtMap, "chain"); + } else if (name.equals("minecraft:lightning_rod")) { + NbtMapBuilder statesWithoutPoweredBit = nbtMap.getCompound("states").toBuilder(); + statesWithoutPoweredBit.remove("powered_bit"); + return nbtMap.toBuilder() + .putCompound("states", statesWithoutPoweredBit.build()) + .build(); + } + + return nbtMap; + } + + public static GeyserMappingItem remapItem(Item item, GeyserMappingItem mapping) { + if (item == Items.CHAIN) { + return mapping.withBedrockIdentifier("minecraft:chain"); + } + return mapping; + } +} diff --git a/core/src/main/resources/mappings b/core/src/main/resources/mappings index 01a320f40..7a2c6ec2a 160000 --- a/core/src/main/resources/mappings +++ b/core/src/main/resources/mappings @@ -1 +1 @@ -Subproject commit 01a320f40a2392130554bbc2ac6cd41a1e08d390 +Subproject commit 7a2c6ec2a4834e1cab8598942cc362b28a839cac diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4f7da1336..4fa22e2e7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,9 +9,9 @@ netty = "4.2.3.Final" guava = "29.0-jre" gson = "2.3.1" # Provided by Spigot 1.8.8 websocket = "1.5.1" -protocol-connection = "3.0.0.Beta8-20250920.213606-5" -protocol-common = "3.0.0.Beta8-20250920.213606-5" -protocol-codec = "3.0.0.Beta8-20250920.213606-5" +protocol-connection = "3.0.0.Beta8-NO-ADVENTURE-SNAPSHOT" +protocol-common = "3.0.0.Beta8-NO-ADVENTURE-SNAPSHOT" +protocol-codec = "3.0.0.Beta8-NO-ADVENTURE-SNAPSHOT" raknet = "1.0.0.CR3-20250811.214335-20" minecraftauth = "4.1.1" mcprotocollib = "1.21.7-20250915.111046-6"