From 7dc2ca35d615a43f4c6e37fd5bd3e01a6b969c63 Mon Sep 17 00:00:00 2001 From: Kevin Ludwig <32491319+valaphee@users.noreply.github.com> Date: Mon, 28 Nov 2022 18:46:07 +0100 Subject: [PATCH 1/4] Fully strip formatting from chat and commands (#3417) --- .../geyser/inventory/AnvilContainer.java | 2 +- .../BedrockCommandRequestTranslator.java | 11 +++++----- .../bedrock/BedrockTextTranslator.java | 16 +------------- .../translator/text/MessageTranslator.java | 22 +++++++++++++++++++ .../chat/MessageTranslatorTest.java | 1 + 5 files changed, 30 insertions(+), 22 deletions(-) diff --git a/core/src/main/java/org/geysermc/geyser/inventory/AnvilContainer.java b/core/src/main/java/org/geysermc/geyser/inventory/AnvilContainer.java index 141f2b6f2..471aff8b2 100644 --- a/core/src/main/java/org/geysermc/geyser/inventory/AnvilContainer.java +++ b/core/src/main/java/org/geysermc/geyser/inventory/AnvilContainer.java @@ -76,7 +76,7 @@ public class AnvilContainer extends Container { String originalName = ItemUtils.getCustomName(getInput().getNbt()); String plainOriginalName = MessageTranslator.convertToPlainText(originalName, session.locale()); - String plainNewName = MessageTranslator.convertToPlainText(rename, session.locale()); + String plainNewName = MessageTranslator.convertToPlainText(rename); if (!plainOriginalName.equals(plainNewName)) { // Strip out formatting since Java Edition does not allow it correctRename = plainNewName; diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockCommandRequestTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockCommandRequestTranslator.java index 3301f7b9f..24fc8396f 100644 --- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockCommandRequestTranslator.java +++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockCommandRequestTranslator.java @@ -29,6 +29,7 @@ import com.nukkitx.protocol.bedrock.packet.CommandRequestPacket; import org.geysermc.common.PlatformType; import org.geysermc.geyser.GeyserImpl; import org.geysermc.geyser.session.GeyserSession; +import org.geysermc.geyser.text.ChatColor; import org.geysermc.geyser.translator.protocol.PacketTranslator; import org.geysermc.geyser.translator.protocol.Translator; import org.geysermc.geyser.translator.text.MessageTranslator; @@ -38,16 +39,14 @@ public class BedrockCommandRequestTranslator extends PacketTranslator { @Override public void translate(GeyserSession session, TextPacket packet) { - String message = packet.getMessage(); - - // The order here is important - strip out illegal characters first, then check if it's blank - // (in case the message is blank after removing) - if (message.indexOf(ChatColor.ESCAPE) != -1) { - // Filter out all escape characters - Java doesn't let you type these - StringBuilder builder = new StringBuilder(); - for (int i = 0; i < message.length(); i++) { - char c = message.charAt(i); - if (c != ChatColor.ESCAPE) { - builder.append(c); - } - } - message = builder.toString(); - } + String message = MessageTranslator.convertToPlainText(packet.getMessage()); if (message.isBlank()) { // Java Edition (as of 1.17.1) just doesn't pass on these messages, so... we won't either! diff --git a/core/src/main/java/org/geysermc/geyser/translator/text/MessageTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/text/MessageTranslator.java index 10b1bbc5a..1b267823a 100644 --- a/core/src/main/java/org/geysermc/geyser/translator/text/MessageTranslator.java +++ b/core/src/main/java/org/geysermc/geyser/translator/text/MessageTranslator.java @@ -201,6 +201,28 @@ public class MessageTranslator { return GSON_SERIALIZER.serialize(component); } + + /** + * Convert legacy format message to plain text + * + * @param message Message to convert + * @return The plain text of the message + */ + public static String convertToPlainText(String message) { + char[] input = message.toCharArray(); + char[] output = new char[input.length]; + int outputSize = 0; + for (int i = 0, inputLength = input.length; i < inputLength; i++) { + char c = input[i]; + if (c == ChatColor.ESCAPE) { + i++; + } else { + output[outputSize++] = c; + } + } + return new String(output, 0, outputSize); + } + /** * Convert JSON and legacy format message to plain text * diff --git a/core/src/test/java/org/geysermc/geyser/network/translators/chat/MessageTranslatorTest.java b/core/src/test/java/org/geysermc/geyser/network/translators/chat/MessageTranslatorTest.java index 6a280ea57..e83c6f73d 100644 --- a/core/src/test/java/org/geysermc/geyser/network/translators/chat/MessageTranslatorTest.java +++ b/core/src/test/java/org/geysermc/geyser/network/translators/chat/MessageTranslatorTest.java @@ -85,6 +85,7 @@ public class MessageTranslatorTest { @Test public void convertToPlainText() { Assert.assertEquals("JSON message is not handled properly", "Many colors here", MessageTranslator.convertToPlainText("{\"extra\":[{\"color\":\"red\",\"text\":\"M\"},{\"color\":\"gold\",\"text\":\"a\"},{\"color\":\"yellow\",\"text\":\"n\"},{\"color\":\"green\",\"text\":\"y \"},{\"color\":\"aqua\",\"text\":\"c\"},{\"color\":\"dark_purple\",\"text\":\"o\"},{\"color\":\"red\",\"text\":\"l\"},{\"color\":\"gold\",\"text\":\"o\"},{\"color\":\"yellow\",\"text\":\"r\"},{\"color\":\"green\",\"text\":\"s \"},{\"color\":\"aqua\",\"text\":\"h\"},{\"color\":\"dark_purple\",\"text\":\"e\"},{\"color\":\"red\",\"text\":\"r\"},{\"color\":\"gold\",\"text\":\"e\"}],\"text\":\"\"}", "en_US")); + Assert.assertEquals("Legacy formatted message is not handled properly (Colors)", "Many colors here", MessageTranslator.convertToPlainText("§cM§6a§en§ay §bc§5o§cl§6o§er§as §bh§5e§cr§6e")); Assert.assertEquals("Legacy formatted message is not handled properly (Colors)", "Many colors here", MessageTranslator.convertToPlainText("§cM§6a§en§ay §bc§5o§cl§6o§er§as §bh§5e§cr§6e", "en_US")); Assert.assertEquals("Legacy formatted message is not handled properly (Style)", "Obf Bold Strikethrough Underline Italic Reset", MessageTranslator.convertToPlainText("§kObf §lBold §mStrikethrough §nUnderline §oItalic §rReset", "en_US")); Assert.assertEquals("Valid lenient JSON is not handled properly", "Strange", MessageTranslator.convertToPlainText("§rStrange", "en_US")); From 8f968230485f90e3eaa5109344bfd8ac0529b101 Mon Sep 17 00:00:00 2001 From: RednedEpic Date: Mon, 28 Nov 2022 20:53:17 -0600 Subject: [PATCH 2/4] Add support for Bedrock 1.19.50 (560) --- README.md | 2 +- .../geysermc/geyser/entity/type/Entity.java | 14 +- .../type/player/SessionPlayerEntity.java | 4 +- .../geysermc/geyser/network/GameProtocol.java | 15 +- .../populator/BlockRegistryPopulator.java | 11 +- .../populator/ItemRegistryPopulator.java | 5 +- .../geyser/session/GeyserSession.java | 185 +- ...BedrockInventoryTransactionTranslator.java | 26 +- .../JavaPlayerCombatKillTranslator.java | 2 +- .../geysermc/geyser/util/DimensionUtils.java | 18 + .../bedrock/block_palette.1_19_0.nbt | Bin 46005 -> 0 bytes .../bedrock/block_palette.1_19_50.nbt | Bin 0 -> 74726 bytes .../bedrock/creative_items.1_19_0.json | 5437 ----------------- ...19_10.json => creative_items.1_19_50.json} | 1482 ++--- .../bedrock/runtime_item_states.1_19_0.json | 4530 -------------- ....json => runtime_item_states.1_19_50.json} | 168 +- gradle/libs.versions.toml | 4 +- 17 files changed, 1058 insertions(+), 10845 deletions(-) delete mode 100644 core/src/main/resources/bedrock/block_palette.1_19_0.nbt create mode 100644 core/src/main/resources/bedrock/block_palette.1_19_50.nbt delete mode 100644 core/src/main/resources/bedrock/creative_items.1_19_0.json rename core/src/main/resources/bedrock/{creative_items.1_19_10.json => creative_items.1_19_50.json} (83%) delete mode 100644 core/src/main/resources/bedrock/runtime_item_states.1_19_0.json rename core/src/main/resources/bedrock/{runtime_item_states.1_19_10.json => runtime_item_states.1_19_50.json} (97%) diff --git a/README.md b/README.md index a28ba8eb0..f5051ed04 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ The ultimate goal of this project is to allow Minecraft: Bedrock Edition users t Special thanks to the DragonProxy project for being a trailblazer in protocol translation and for all the team members who have joined us here! -### Currently supporting Minecraft Bedrock 1.19.0 - 1.19.40 and Minecraft Java 1.19.1/1.19.2. +### Currently supporting Minecraft Bedrock 1.19.20 - 1.19.50 and Minecraft Java 1.19.1/1.19.2. ## Setting Up Take a look [here](https://wiki.geysermc.org/geyser/setup/) for how to set up Geyser. diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java b/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java index c4046bcf3..dbbdba05a 100644 --- a/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java +++ b/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java @@ -44,6 +44,8 @@ import lombok.Setter; import net.kyori.adventure.text.Component; import org.geysermc.geyser.entity.EntityDefinition; import org.geysermc.geyser.entity.GeyserDirtyMetadata; +import org.geysermc.geyser.entity.type.player.SessionPlayerEntity; +import org.geysermc.geyser.network.GameProtocol; import org.geysermc.geyser.session.GeyserSession; import org.geysermc.geyser.translator.text.MessageTranslator; import org.geysermc.geyser.util.EntityUtils; @@ -353,10 +355,14 @@ public class Entity { public void setFlags(ByteEntityMetadata entityMetadata) { byte xd = entityMetadata.getPrimitiveValue(); setFlag(EntityFlag.ON_FIRE, ((xd & 0x01) == 0x01) && !getFlag(EntityFlag.FIRE_IMMUNE)); // Otherwise immune entities sometimes flicker onfire - setFlag(EntityFlag.SNEAKING, (xd & 0x02) == 0x02); - setFlag(EntityFlag.SPRINTING, (xd & 0x08) == 0x08); - // Swimming is ignored here and instead we rely on the pose - setFlag(EntityFlag.GLIDING, (xd & 0x80) == 0x80); + // As of 1.19.50, the client does not want the sprinting, sneaking or gliding set on itself + if (!GameProtocol.supports1_19_50(session) || !(this instanceof SessionPlayerEntity sessionPlayer) || sessionPlayer.getSession() != session) { + setFlag(EntityFlag.SNEAKING, (xd & 0x02) == 0x02); + setFlag(EntityFlag.SPRINTING, (xd & 0x08) == 0x08); + + // Swimming is ignored here and instead we rely on the pose + setFlag(EntityFlag.GLIDING, (xd & 0x80) == 0x80); + } setInvisible((xd & 0x20) == 0x20); } diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java index 74b95b73c..be1eca2c3 100644 --- a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java +++ b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java @@ -116,7 +116,9 @@ public class SessionPlayerEntity extends PlayerEntity { @Override public void setFlags(ByteEntityMetadata entityMetadata) { super.setFlags(entityMetadata); - session.setSwimmingInWater((entityMetadata.getPrimitiveValue() & 0x10) == 0x10 && getFlag(EntityFlag.SPRINTING)); + + byte flags = entityMetadata.getPrimitiveValue(); + session.setSwimmingInWater((flags & 0x10) == 0x10 && (flags & 0x08) == 0x08); refreshSpeed = true; } diff --git a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java index 7bba6bb89..d10111fee 100644 --- a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java +++ b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java @@ -34,6 +34,7 @@ import com.nukkitx.protocol.bedrock.v544.Bedrock_v544; import com.nukkitx.protocol.bedrock.v545.Bedrock_v545; import com.nukkitx.protocol.bedrock.v554.Bedrock_v554; import com.nukkitx.protocol.bedrock.v557.Bedrock_v557; +import com.nukkitx.protocol.bedrock.v560.Bedrock_v560; import org.geysermc.geyser.session.GeyserSession; import java.util.ArrayList; @@ -48,7 +49,7 @@ public final class GameProtocol { * Default Bedrock codec that should act as a fallback. Should represent the latest available * release of the game that Geyser supports. */ - public static final BedrockPacketCodec DEFAULT_BEDROCK_CODEC = Bedrock_v557.V557_CODEC; + public static final BedrockPacketCodec DEFAULT_BEDROCK_CODEC = Bedrock_v560.V560_CODEC; /** * A list of all supported Bedrock versions that can join Geyser */ @@ -61,9 +62,6 @@ public final class GameProtocol { private static final PacketCodec DEFAULT_JAVA_CODEC = MinecraftCodec.CODEC; static { - SUPPORTED_BEDROCK_CODECS.add(Bedrock_v527.V527_CODEC.toBuilder() - .minecraftVersion("1.19.0/1.19.2") - .build()); SUPPORTED_BEDROCK_CODECS.add(Bedrock_v534.V534_CODEC.toBuilder() .minecraftVersion("1.19.10/1.19.11") .build()); @@ -74,6 +72,7 @@ public final class GameProtocol { SUPPORTED_BEDROCK_CODECS.add(Bedrock_v554.V554_CODEC.toBuilder() .minecraftVersion("1.19.30/1.19.31") .build()); + SUPPORTED_BEDROCK_CODECS.add(Bedrock_v557.V557_CODEC); SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC); } @@ -93,14 +92,14 @@ public final class GameProtocol { /* Bedrock convenience methods to gatekeep features and easily remove the check on version removal */ - public static boolean supports1_19_10(GeyserSession session) { - return session.getUpstream().getProtocolVersion() >= Bedrock_v534.V534_CODEC.getProtocolVersion(); - } - public static boolean supports1_19_30(GeyserSession session) { return session.getUpstream().getProtocolVersion() >= Bedrock_v554.V554_CODEC.getProtocolVersion(); } + public static boolean supports1_19_50(GeyserSession session) { + return session.getUpstream().getProtocolVersion() >= Bedrock_v560.V560_CODEC.getProtocolVersion(); + } + /** * Gets the {@link PacketCodec} for Minecraft: Java Edition. * 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 afc79082a..cbab03990 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 @@ -31,6 +31,7 @@ import com.google.common.collect.ImmutableMap; import com.nukkitx.nbt.*; import com.nukkitx.protocol.bedrock.v527.Bedrock_v527; import com.nukkitx.protocol.bedrock.v544.Bedrock_v544; +import com.nukkitx.protocol.bedrock.v560.Bedrock_v560; import it.unimi.dsi.fastutil.ints.IntOpenHashSet; import it.unimi.dsi.fastutil.ints.IntSet; import it.unimi.dsi.fastutil.objects.Object2IntMap; @@ -73,13 +74,9 @@ public final class BlockRegistryPopulator { private static void registerBedrockBlocks() { BiFunction emptyMapper = (bedrockIdentifier, statesBuilder) -> null; ImmutableMap, BiFunction> blockMappers = ImmutableMap., BiFunction>builder() - .put(ObjectIntPair.of("1_19_0", Bedrock_v527.V527_CODEC.getProtocolVersion()), (bedrockIdentifier, statesBuilder) -> { - if (bedrockIdentifier.equals("minecraft:muddy_mangrove_roots")) { - statesBuilder.remove("pillar_axis"); - } - return null; - }) - .put(ObjectIntPair.of("1_19_20", Bedrock_v544.V544_CODEC.getProtocolVersion()), emptyMapper).build(); + .put(ObjectIntPair.of("1_19_20", Bedrock_v544.V544_CODEC.getProtocolVersion()), emptyMapper) + .put(ObjectIntPair.of("1_19_50", Bedrock_v560.V560_CODEC.getProtocolVersion()), emptyMapper) + .build(); for (Map.Entry, BiFunction> palette : blockMappers.entrySet()) { NbtList blocksTag; 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 f928361cc..4b218aa7d 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 @@ -37,6 +37,7 @@ import com.nukkitx.protocol.bedrock.data.SoundEvent; import com.nukkitx.protocol.bedrock.data.inventory.ComponentItemData; import com.nukkitx.protocol.bedrock.data.inventory.ItemData; import com.nukkitx.protocol.bedrock.packet.StartGamePacket; +import com.nukkitx.protocol.bedrock.v560.Bedrock_v560; import it.unimi.dsi.fastutil.ints.*; import com.nukkitx.protocol.bedrock.v527.Bedrock_v527; import com.nukkitx.protocol.bedrock.v534.Bedrock_v534; @@ -76,10 +77,8 @@ public class ItemRegistryPopulator { public static void populate() { Map paletteVersions = new Object2ObjectOpenHashMap<>(); - paletteVersions.put("1_19_0", new PaletteVersion(Bedrock_v527.V527_CODEC.getProtocolVersion(), - Collections.singletonMap("minecraft:trader_llama_spawn_egg", "minecraft:llama_spawn_egg"))); - paletteVersions.put("1_19_10", new PaletteVersion(Bedrock_v534.V534_CODEC.getProtocolVersion(), Collections.emptyMap())); paletteVersions.put("1_19_20", new PaletteVersion(Bedrock_v544.V544_CODEC.getProtocolVersion(), Collections.emptyMap())); + paletteVersions.put("1_19_50", new PaletteVersion(Bedrock_v560.V560_CODEC.getProtocolVersion(), Collections.emptyMap())); GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap(); diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java index 51648f8a2..0d4eee1dd 100644 --- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java +++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java @@ -58,19 +58,55 @@ import com.github.steveice10.mc.protocol.packet.ingame.serverbound.player.Server import com.github.steveice10.mc.protocol.packet.login.serverbound.ServerboundCustomQueryPacket; import com.github.steveice10.packetlib.BuiltinFlags; import com.github.steveice10.packetlib.Session; -import com.github.steveice10.packetlib.event.session.*; +import com.github.steveice10.packetlib.event.session.ConnectedEvent; +import com.github.steveice10.packetlib.event.session.DisconnectedEvent; +import com.github.steveice10.packetlib.event.session.PacketErrorEvent; +import com.github.steveice10.packetlib.event.session.PacketSendingEvent; +import com.github.steveice10.packetlib.event.session.SessionAdapter; import com.github.steveice10.packetlib.packet.Packet; import com.github.steveice10.packetlib.tcp.TcpClientSession; import com.github.steveice10.packetlib.tcp.TcpSession; import com.nukkitx.math.GenericMath; -import com.nukkitx.math.vector.*; +import com.nukkitx.math.vector.Vector2f; +import com.nukkitx.math.vector.Vector2i; +import com.nukkitx.math.vector.Vector3d; +import com.nukkitx.math.vector.Vector3f; +import com.nukkitx.math.vector.Vector3i; import com.nukkitx.nbt.NbtMap; import com.nukkitx.protocol.bedrock.BedrockPacket; import com.nukkitx.protocol.bedrock.BedrockServerSession; -import com.nukkitx.protocol.bedrock.data.*; +import com.nukkitx.protocol.bedrock.data.Ability; +import com.nukkitx.protocol.bedrock.data.AbilityLayer; +import com.nukkitx.protocol.bedrock.data.AttributeData; +import com.nukkitx.protocol.bedrock.data.AuthoritativeMovementMode; +import com.nukkitx.protocol.bedrock.data.ChatRestrictionLevel; +import com.nukkitx.protocol.bedrock.data.GamePublishSetting; +import com.nukkitx.protocol.bedrock.data.GameRuleData; +import com.nukkitx.protocol.bedrock.data.GameType; +import com.nukkitx.protocol.bedrock.data.PlayerPermission; +import com.nukkitx.protocol.bedrock.data.SoundEvent; +import com.nukkitx.protocol.bedrock.data.SyncedPlayerMovementSettings; import com.nukkitx.protocol.bedrock.data.command.CommandPermission; import com.nukkitx.protocol.bedrock.data.entity.EntityFlag; -import com.nukkitx.protocol.bedrock.packet.*; +import com.nukkitx.protocol.bedrock.packet.AvailableEntityIdentifiersPacket; +import com.nukkitx.protocol.bedrock.packet.BiomeDefinitionListPacket; +import com.nukkitx.protocol.bedrock.packet.ChunkRadiusUpdatedPacket; +import com.nukkitx.protocol.bedrock.packet.ClientboundMapItemDataPacket; +import com.nukkitx.protocol.bedrock.packet.CraftingDataPacket; +import com.nukkitx.protocol.bedrock.packet.CreativeContentPacket; +import com.nukkitx.protocol.bedrock.packet.EmoteListPacket; +import com.nukkitx.protocol.bedrock.packet.GameRulesChangedPacket; +import com.nukkitx.protocol.bedrock.packet.ItemComponentPacket; +import com.nukkitx.protocol.bedrock.packet.LevelSoundEvent2Packet; +import com.nukkitx.protocol.bedrock.packet.PlayStatusPacket; +import com.nukkitx.protocol.bedrock.packet.PlayerFogPacket; +import com.nukkitx.protocol.bedrock.packet.SetTimePacket; +import com.nukkitx.protocol.bedrock.packet.StartGamePacket; +import com.nukkitx.protocol.bedrock.packet.TextPacket; +import com.nukkitx.protocol.bedrock.packet.TransferPacket; +import com.nukkitx.protocol.bedrock.packet.UpdateAbilitiesPacket; +import com.nukkitx.protocol.bedrock.packet.UpdateAdventureSettingsPacket; +import com.nukkitx.protocol.bedrock.packet.UpdateAttributesPacket; import io.netty.channel.Channel; import io.netty.channel.EventLoop; import it.unimi.dsi.fastutil.bytes.ByteArrays; @@ -127,7 +163,20 @@ import org.geysermc.geyser.registry.type.ItemMapping; import org.geysermc.geyser.registry.type.ItemMappings; import org.geysermc.geyser.session.auth.AuthData; import org.geysermc.geyser.session.auth.BedrockClientData; -import org.geysermc.geyser.session.cache.*; +import org.geysermc.geyser.session.cache.AdvancementsCache; +import org.geysermc.geyser.session.cache.BookEditCache; +import org.geysermc.geyser.session.cache.ChunkCache; +import org.geysermc.geyser.session.cache.EntityCache; +import org.geysermc.geyser.session.cache.EntityEffectCache; +import org.geysermc.geyser.session.cache.FormCache; +import org.geysermc.geyser.session.cache.LodestoneCache; +import org.geysermc.geyser.session.cache.PistonCache; +import org.geysermc.geyser.session.cache.PreferencesCache; +import org.geysermc.geyser.session.cache.SkullCache; +import org.geysermc.geyser.session.cache.TagCache; +import org.geysermc.geyser.session.cache.TeleportCache; +import org.geysermc.geyser.session.cache.WorldBorder; +import org.geysermc.geyser.session.cache.WorldCache; import org.geysermc.geyser.skin.FloodgateSkinUploader; import org.geysermc.geyser.text.GeyserLocale; import org.geysermc.geyser.text.MinecraftLocale; @@ -143,7 +192,14 @@ import java.net.ConnectException; import java.net.InetSocketAddress; import java.nio.charset.StandardCharsets; import java.time.Instant; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; @@ -1228,7 +1284,11 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource { this.pose = Pose.SNEAKING; playerEntity.setBoundingBoxHeight(1.5f); } - playerEntity.setFlag(EntityFlag.SNEAKING, sneaking); + + // As of 1.19.50, the client does not want sneaking set on itself + if (!GameProtocol.supports1_19_50(this)) { + playerEntity.setFlag(EntityFlag.SNEAKING, sneaking); + } } public void setSwimming(boolean swimming) { @@ -1628,76 +1688,40 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource { boolean spectator = gameMode == GameMode.SPECTATOR; boolean worldImmutable = gameMode == GameMode.ADVENTURE || spectator; - if (GameProtocol.supports1_19_10(this)) { - UpdateAdventureSettingsPacket adventureSettingsPacket = new UpdateAdventureSettingsPacket(); - adventureSettingsPacket.setNoMvP(false); - adventureSettingsPacket.setNoPvM(false); - adventureSettingsPacket.setImmutableWorld(worldImmutable); - adventureSettingsPacket.setShowNameTags(false); - adventureSettingsPacket.setAutoJump(true); - sendUpstreamPacket(adventureSettingsPacket); + UpdateAdventureSettingsPacket adventureSettingsPacket = new UpdateAdventureSettingsPacket(); + adventureSettingsPacket.setNoMvP(false); + adventureSettingsPacket.setNoPvM(false); + adventureSettingsPacket.setImmutableWorld(worldImmutable); + adventureSettingsPacket.setShowNameTags(false); + adventureSettingsPacket.setAutoJump(true); + sendUpstreamPacket(adventureSettingsPacket); - UpdateAbilitiesPacket updateAbilitiesPacket = new UpdateAbilitiesPacket(); - updateAbilitiesPacket.setUniqueEntityId(bedrockId); - updateAbilitiesPacket.setCommandPermission(commandPermission); - updateAbilitiesPacket.setPlayerPermission(playerPermission); + UpdateAbilitiesPacket updateAbilitiesPacket = new UpdateAbilitiesPacket(); + updateAbilitiesPacket.setUniqueEntityId(bedrockId); + updateAbilitiesPacket.setCommandPermission(commandPermission); + updateAbilitiesPacket.setPlayerPermission(playerPermission); - AbilityLayer abilityLayer = new AbilityLayer(); - Set abilities = abilityLayer.getAbilityValues(); - if (canFly || spectator) { - abilities.add(Ability.MAY_FLY); - } - - // Default stuff we have to fill in - abilities.add(Ability.BUILD); - abilities.add(Ability.MINE); - // Needed so you can drop items - abilities.add(Ability.DOORS_AND_SWITCHES); - if (gameMode == GameMode.CREATIVE) { - // Needed so the client doesn't attempt to take away items - abilities.add(Ability.INSTABUILD); - } - - if (commandPermission == CommandPermission.OPERATOR) { - // Fixes a bug? since 1.19.11 where the player can change their gamemode in Bedrock settings and - // a packet is not sent to the server. - // https://github.com/GeyserMC/Geyser/issues/3191 - abilities.add(Ability.OPERATOR_COMMANDS); - } - - if (flying || spectator) { - if (spectator && !flying) { - // We're "flying locked" in this gamemode - flying = true; - ServerboundPlayerAbilitiesPacket abilitiesPacket = new ServerboundPlayerAbilitiesPacket(true); - sendDownstreamPacket(abilitiesPacket); - } - abilities.add(Ability.FLYING); - } - - if (spectator) { - abilities.add(Ability.NO_CLIP); - } - - abilityLayer.setLayerType(AbilityLayer.Type.BASE); - abilityLayer.setFlySpeed(flySpeed); - // https://github.com/GeyserMC/Geyser/issues/3139 as of 1.19.10 - abilityLayer.setWalkSpeed(walkSpeed == 0f ? 0.01f : walkSpeed); - Collections.addAll(abilityLayer.getAbilitiesSet(), USED_ABILITIES); - - updateAbilitiesPacket.getAbilityLayers().add(abilityLayer); - sendUpstreamPacket(updateAbilitiesPacket); - return; + AbilityLayer abilityLayer = new AbilityLayer(); + Set abilities = abilityLayer.getAbilityValues(); + if (canFly || spectator) { + abilities.add(Ability.MAY_FLY); } - AdventureSettingsPacket adventureSettingsPacket = new AdventureSettingsPacket(); - adventureSettingsPacket.setUniqueEntityId(bedrockId); - adventureSettingsPacket.setCommandPermission(commandPermission); - adventureSettingsPacket.setPlayerPermission(playerPermission); + // Default stuff we have to fill in + abilities.add(Ability.BUILD); + abilities.add(Ability.MINE); + // Needed so you can drop items + abilities.add(Ability.DOORS_AND_SWITCHES); + if (gameMode == GameMode.CREATIVE) { + // Needed so the client doesn't attempt to take away items + abilities.add(Ability.INSTABUILD); + } - Set flags = adventureSettingsPacket.getSettings(); - if (canFly || spectator) { - flags.add(AdventureSetting.MAY_FLY); + if (commandPermission == CommandPermission.OPERATOR) { + // Fixes a bug? since 1.19.11 where the player can change their gamemode in Bedrock settings and + // a packet is not sent to the server. + // https://github.com/GeyserMC/Geyser/issues/3191 + abilities.add(Ability.OPERATOR_COMMANDS); } if (flying || spectator) { @@ -1707,20 +1731,21 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource { ServerboundPlayerAbilitiesPacket abilitiesPacket = new ServerboundPlayerAbilitiesPacket(true); sendDownstreamPacket(abilitiesPacket); } - flags.add(AdventureSetting.FLYING); - } - - if (worldImmutable) { - flags.add(AdventureSetting.WORLD_IMMUTABLE); + abilities.add(Ability.FLYING); } if (spectator) { - flags.add(AdventureSetting.NO_CLIP); + abilities.add(Ability.NO_CLIP); } - flags.add(AdventureSetting.AUTO_JUMP); + abilityLayer.setLayerType(AbilityLayer.Type.BASE); + abilityLayer.setFlySpeed(flySpeed); + // https://github.com/GeyserMC/Geyser/issues/3139 as of 1.19.10 + abilityLayer.setWalkSpeed(walkSpeed == 0f ? 0.01f : walkSpeed); + Collections.addAll(abilityLayer.getAbilitiesSet(), USED_ABILITIES); - sendUpstreamPacket(adventureSettingsPacket); + updateAbilitiesPacket.getAbilityLayers().add(abilityLayer); + sendUpstreamPacket(updateAbilitiesPacket); } private int getRenderDistance() { diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java index 436f26cb9..6992dada4 100644 --- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java +++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java @@ -32,12 +32,21 @@ import com.github.steveice10.mc.protocol.data.game.entity.player.Hand; import com.github.steveice10.mc.protocol.data.game.entity.player.InteractAction; import com.github.steveice10.mc.protocol.data.game.entity.player.PlayerAction; import com.github.steveice10.mc.protocol.packet.ingame.serverbound.inventory.ServerboundContainerClickPacket; -import com.github.steveice10.mc.protocol.packet.ingame.serverbound.player.*; +import com.github.steveice10.mc.protocol.packet.ingame.serverbound.player.ServerboundInteractPacket; +import com.github.steveice10.mc.protocol.packet.ingame.serverbound.player.ServerboundMovePlayerPosRotPacket; +import com.github.steveice10.mc.protocol.packet.ingame.serverbound.player.ServerboundPlayerActionPacket; +import com.github.steveice10.mc.protocol.packet.ingame.serverbound.player.ServerboundSwingPacket; +import com.github.steveice10.mc.protocol.packet.ingame.serverbound.player.ServerboundUseItemOnPacket; +import com.github.steveice10.mc.protocol.packet.ingame.serverbound.player.ServerboundUseItemPacket; import com.nukkitx.math.vector.Vector3d; import com.nukkitx.math.vector.Vector3f; import com.nukkitx.math.vector.Vector3i; import com.nukkitx.protocol.bedrock.data.LevelEventType; -import com.nukkitx.protocol.bedrock.data.inventory.*; +import com.nukkitx.protocol.bedrock.data.inventory.ContainerType; +import com.nukkitx.protocol.bedrock.data.inventory.InventoryActionData; +import com.nukkitx.protocol.bedrock.data.inventory.InventorySource; +import com.nukkitx.protocol.bedrock.data.inventory.ItemData; +import com.nukkitx.protocol.bedrock.data.inventory.LegacySetItemSlotData; import com.nukkitx.protocol.bedrock.packet.ContainerOpenPacket; import com.nukkitx.protocol.bedrock.packet.InventoryTransactionPacket; import com.nukkitx.protocol.bedrock.packet.LevelEventPacket; @@ -54,7 +63,6 @@ import org.geysermc.geyser.inventory.Inventory; import org.geysermc.geyser.inventory.PlayerInventory; import org.geysermc.geyser.inventory.click.Click; import org.geysermc.geyser.level.block.BlockStateValues; -import org.geysermc.geyser.network.GameProtocol; import org.geysermc.geyser.registry.BlockRegistries; import org.geysermc.geyser.registry.type.ItemMapping; import org.geysermc.geyser.registry.type.ItemMappings; @@ -63,7 +71,11 @@ import org.geysermc.geyser.translator.inventory.InventoryTranslator; import org.geysermc.geyser.translator.inventory.item.ItemTranslator; import org.geysermc.geyser.translator.protocol.PacketTranslator; import org.geysermc.geyser.translator.protocol.Translator; -import org.geysermc.geyser.util.*; +import org.geysermc.geyser.util.BlockUtils; +import org.geysermc.geyser.util.CooldownUtils; +import org.geysermc.geyser.util.EntityUtils; +import org.geysermc.geyser.util.InteractionResult; +import org.geysermc.geyser.util.InventoryUtils; import java.util.List; import java.util.concurrent.TimeUnit; @@ -464,10 +476,8 @@ public class BedrockInventoryTransactionTranslator extends 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 diff --git a/core/src/main/resources/bedrock/block_palette.1_19_50.nbt b/core/src/main/resources/bedrock/block_palette.1_19_50.nbt new file mode 100644 index 0000000000000000000000000000000000000000..8b53566c5c9b8439b71c1fd4de7052cfd6e86590 GIT binary patch literal 74726 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 Date: Mon, 28 Nov 2022 21:00:24 -0600 Subject: [PATCH 3/4] Actually drop 1.19.10 support & remove redundant check --- core/src/main/java/org/geysermc/geyser/entity/type/Entity.java | 2 +- .../main/java/org/geysermc/geyser/network/GameProtocol.java | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java b/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java index dbbdba05a..fff15a494 100644 --- a/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java +++ b/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java @@ -356,7 +356,7 @@ public class Entity { byte xd = entityMetadata.getPrimitiveValue(); setFlag(EntityFlag.ON_FIRE, ((xd & 0x01) == 0x01) && !getFlag(EntityFlag.FIRE_IMMUNE)); // Otherwise immune entities sometimes flicker onfire // As of 1.19.50, the client does not want the sprinting, sneaking or gliding set on itself - if (!GameProtocol.supports1_19_50(session) || !(this instanceof SessionPlayerEntity sessionPlayer) || sessionPlayer.getSession() != session) { + if (!GameProtocol.supports1_19_50(session) || !(this instanceof SessionPlayerEntity)) { setFlag(EntityFlag.SNEAKING, (xd & 0x02) == 0x02); setFlag(EntityFlag.SPRINTING, (xd & 0x08) == 0x08); diff --git a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java index d10111fee..7aa64f1f7 100644 --- a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java +++ b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java @@ -62,9 +62,6 @@ public final class GameProtocol { private static final PacketCodec DEFAULT_JAVA_CODEC = MinecraftCodec.CODEC; static { - SUPPORTED_BEDROCK_CODECS.add(Bedrock_v534.V534_CODEC.toBuilder() - .minecraftVersion("1.19.10/1.19.11") - .build()); SUPPORTED_BEDROCK_CODECS.add(Bedrock_v544.V544_CODEC); SUPPORTED_BEDROCK_CODECS.add(Bedrock_v545.V545_CODEC.toBuilder() .minecraftVersion("1.19.21/1.19.22") From 49d3254ea925ac550e33f30dd785bbbbe56eaacd Mon Sep 17 00:00:00 2001 From: RednedEpic Date: Mon, 28 Nov 2022 21:29:55 -0600 Subject: [PATCH 4/4] Use new Protocol version --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a784c0853..01b7179f3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,7 +5,7 @@ netty = "4.1.80.Final" guava = "29.0-jre" gson = "2.3.1" # Provided by Spigot 1.8.8 websocket = "1.5.1" -protocol = "2.9.14-20221129.013131-3" +protocol = "2.9.15-20221129.032348-1" raknet = "1.6.28-20220125.214016-6" mcauthlib = "d9d773e" mcprotocollib = "9f78bd5"