diff --git a/bukkit/build.gradle.kts b/bukkit/build.gradle.kts index 7426c520a..9da0bee94 100644 --- a/bukkit/build.gradle.kts +++ b/bukkit/build.gradle.kts @@ -58,6 +58,8 @@ dependencies { compileOnly("org.bstats:bstats-bukkit:${rootProject.properties["bstats_version"]}") // Aho-Corasick java implementation compileOnly("org.ahocorasick:ahocorasick:${rootProject.properties["ahocorasick_version"]}") + // authlib + compileOnly("com.mojang:authlib:${rootProject.properties["authlib_version"]}") } java { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java index 4701fca90..6b58133c5 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java @@ -156,6 +156,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes registerNMSPacketConsumer(PacketConsumers.ROTATE_HEAD, NetworkReflections.clazz$ClientboundRotateHeadPacket); registerNMSPacketConsumer(PacketConsumers.SET_ENTITY_MOTION, NetworkReflections.clazz$ClientboundSetEntityMotionPacket); registerNMSPacketConsumer(PacketConsumers.FINISH_CONFIGURATION, NetworkReflections.clazz$ClientboundFinishConfigurationPacket); + registerNMSPacketConsumer(PacketConsumers.LOGIN_FINISHED, NetworkReflections.clazz$ClientboundLoginFinishedPacket); registerS2CByteBufPacketConsumer(PacketConsumers.LEVEL_CHUNK_WITH_LIGHT, this.packetIds.clientboundLevelChunkWithLightPacket()); registerS2CByteBufPacketConsumer(PacketConsumers.SECTION_BLOCK_UPDATE, this.packetIds.clientboundSectionBlocksUpdatePacket()); registerS2CByteBufPacketConsumer(PacketConsumers.BLOCK_UPDATE, this.packetIds.clientboundBlockUpdatePacket()); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java index d156d9478..d26ce8548 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java @@ -1,6 +1,7 @@ package net.momirealms.craftengine.bukkit.plugin.network; import com.google.common.collect.Lists; +import com.mojang.authlib.GameProfile; import com.mojang.datafixers.util.Either; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; @@ -2436,4 +2437,14 @@ public class PacketConsumers { CraftEngine.instance().logger().warn("Failed to handle ClientboundFinishConfigurationPacket", e); } }; + + public static final TriConsumer LOGIN_FINISHED = (user, event, packet) -> { + try { + GameProfile gameProfile = FastNMS.INSTANCE.field$ClientboundLoginFinishedPacket$gameProfile(packet); + user.setName(gameProfile.getName()); + user.setUUID(gameProfile.getId()); + } catch (Exception e) { + CraftEngine.instance().logger().warn("Failed to handle ClientboundLoginFinishedPacket", e); + } + }; } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/NetworkReflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/NetworkReflections.java index 3992dfba5..5ab685765 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/NetworkReflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/NetworkReflections.java @@ -1554,4 +1554,11 @@ public final class NetworkReflections { throw new ReflectionInitException("Failed to initialize ServerCommonPacketListener$handleResourcePackResponse", e); } } + + public static final Class clazz$ClientboundLoginFinishedPacket = requireNonNull( + BukkitReflectionUtils.findReobfOrMojmapClass( + "network.protocol.login.PacketLoginOutSuccess", + List.of("network.protocol.login.ClientboundLoginFinishedPacket", "network.protocol.login.ClientboundGameProfilePacket") + ) + ); } diff --git a/core/build.gradle.kts b/core/build.gradle.kts index ca1fa6d89..c8ed0b117 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -63,6 +63,8 @@ dependencies { compileOnly("com.google.jimfs:jimfs:${rootProject.properties["jimfs_version"]}") // Brigadier compileOnly("com.mojang:brigadier:${rootProject.properties["mojang_brigadier_version"]}") + // authlib + compileOnly("com.mojang:authlib:${rootProject.properties["authlib_version"]}") } java { diff --git a/gradle.properties b/gradle.properties index d71f01899..11a813c70 100644 --- a/gradle.properties +++ b/gradle.properties @@ -50,12 +50,13 @@ byte_buddy_version=1.17.5 ahocorasick_version=0.6.3 snake_yaml_version=2.4 anti_grief_version=0.18 -nms_helper_version=1.0.29 +nms_helper_version=1.0.30 evalex_version=3.5.0 reactive_streams_version=1.0.4 amazon_awssdk_version=2.31.23 amazon_awssdk_eventstream_version=1.0.1 jimfs_version=1.3.0 +authlib_version=6.0.58 # Proxy settings #systemProp.socks.proxyHost=127.0.0.1