Class ServerLoginNetworkHandler

java.lang.Object
net.minecraft.server.network.ServerLoginNetworkHandler
All Implemented Interfaces:
class_7633, PacketListener, ServerLoginPacketListener, ServerPacketListener

public class ServerLoginNetworkHandler extends Object implements class_7633, ServerLoginPacketListener
The server login network handler.

It listens to packets on the netty event loop and is ticked on the server thread simultaneously.

Implementation Requirements:
The vanilla implementation is created by a handshake network handler. It first receives a hello packet from the client. If it is in online mode, it goes through an additional authentication process. Then it optionally sends a network compression packet. Finally, when it can accept the player (no player UUID conflicts), it will accept the player by sending a login success packet and then transitions the connection's packet listener to a ServerPlayNetworkHandler.
Mappings:
Namespace Name
official agx
intermediary net/minecraft/class_3248
named net/minecraft/server/network/ServerLoginNetworkHandler
  • Field Details

    • NEXT_AUTHENTICATOR_THREAD_ID

      private static final AtomicInteger NEXT_AUTHENTICATOR_THREAD_ID
      Mappings:
      Namespace Name Mixin selector
      official b Lagx;b:Ljava/util/concurrent/atomic/AtomicInteger;
      intermediary field_14157 Lnet/minecraft/class_3248;field_14157:Ljava/util/concurrent/atomic/AtomicInteger;
      named NEXT_AUTHENTICATOR_THREAD_ID Lnet/minecraft/server/network/ServerLoginNetworkHandler;NEXT_AUTHENTICATOR_THREAD_ID:Ljava/util/concurrent/atomic/AtomicInteger;
    • LOGGER

      static final org.slf4j.Logger LOGGER
      Mappings:
      Namespace Name Mixin selector
      official c Lagx;c:Lorg/slf4j/Logger;
      intermediary field_14166 Lnet/minecraft/class_3248;field_14166:Lorg/slf4j/Logger;
      named LOGGER Lnet/minecraft/server/network/ServerLoginNetworkHandler;LOGGER:Lorg/slf4j/Logger;
    • TIMEOUT_TICKS

      private static final int TIMEOUT_TICKS
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official d Lagx;d:I
      intermediary field_29779 Lnet/minecraft/class_3248;field_29779:I
      named TIMEOUT_TICKS Lnet/minecraft/server/network/ServerLoginNetworkHandler;TIMEOUT_TICKS:I
    • RANDOM

      private static final Random RANDOM
      Mappings:
      Namespace Name Mixin selector
      official e Lagx;e:Lamj;
      intermediary field_14164 Lnet/minecraft/class_3248;field_14164:Lnet/minecraft/class_5819;
      named RANDOM Lnet/minecraft/server/network/ServerLoginNetworkHandler;RANDOM:Lnet/minecraft/util/math/random/Random;
    • MISSING_PUBLIC_KEY_TEXT

      private static final Text MISSING_PUBLIC_KEY_TEXT
      Mappings:
      Namespace Name Mixin selector
      official f Lagx;f:Lro;
      intermediary field_39020 Lnet/minecraft/class_3248;field_39020:Lnet/minecraft/class_2561;
      named MISSING_PUBLIC_KEY_TEXT Lnet/minecraft/server/network/ServerLoginNetworkHandler;MISSING_PUBLIC_KEY_TEXT:Lnet/minecraft/text/Text;
    • INVALID_PUBLIC_KEY_SIGNATURE_TEXT

      private static final Text INVALID_PUBLIC_KEY_SIGNATURE_TEXT
      Mappings:
      Namespace Name Mixin selector
      official g Lagx;g:Lro;
      intermediary field_39021 Lnet/minecraft/class_3248;field_39021:Lnet/minecraft/class_2561;
      named INVALID_PUBLIC_KEY_SIGNATURE_TEXT Lnet/minecraft/server/network/ServerLoginNetworkHandler;INVALID_PUBLIC_KEY_SIGNATURE_TEXT:Lnet/minecraft/text/Text;
    • INVALID_PUBLIC_KEY_TEXT

      private static final Text INVALID_PUBLIC_KEY_TEXT
      Mappings:
      Namespace Name Mixin selector
      official h Lagx;h:Lro;
      intermediary field_39022 Lnet/minecraft/class_3248;field_39022:Lnet/minecraft/class_2561;
      named INVALID_PUBLIC_KEY_TEXT Lnet/minecraft/server/network/ServerLoginNetworkHandler;INVALID_PUBLIC_KEY_TEXT:Lnet/minecraft/text/Text;
    • nonce

      private final byte[] nonce
      Mappings:
      Namespace Name Mixin selector
      official i Lagx;i:[B
      intermediary field_14167 Lnet/minecraft/class_3248;field_14167:[B
      named nonce Lnet/minecraft/server/network/ServerLoginNetworkHandler;nonce:[B
    • server

      final MinecraftServer server
      Mappings:
      Namespace Name Mixin selector
      official j Lagx;j:Lnet/minecraft/server/MinecraftServer;
      intermediary field_14162 Lnet/minecraft/class_3248;field_14162:Lnet/minecraft/server/MinecraftServer;
      named server Lnet/minecraft/server/network/ServerLoginNetworkHandler;server:Lnet/minecraft/server/MinecraftServer;
    • connection

      public final ClientConnection connection
      Mappings:
      Namespace Name Mixin selector
      official a Lagx;a:Lqv;
      intermediary field_14158 Lnet/minecraft/class_3248;field_14158:Lnet/minecraft/class_2535;
      named connection Lnet/minecraft/server/network/ServerLoginNetworkHandler;connection:Lnet/minecraft/network/ClientConnection;
    • state

      Mappings:
      Namespace Name Mixin selector
      official k Lagx;k:Lagx$b;
      intermediary field_14163 Lnet/minecraft/class_3248;field_14163:Lnet/minecraft/class_3248$class_3249;
      named state Lnet/minecraft/server/network/ServerLoginNetworkHandler;state:Lnet/minecraft/server/network/ServerLoginNetworkHandler$State;
    • loginTicks

      private int loginTicks
      Mappings:
      Namespace Name Mixin selector
      official l Lagx;l:I
      intermediary field_14156 Lnet/minecraft/class_3248;field_14156:I
      named loginTicks Lnet/minecraft/server/network/ServerLoginNetworkHandler;loginTicks:I
    • profile

      @Nullable @Nullable com.mojang.authlib.GameProfile profile
      Mappings:
      Namespace Name Mixin selector
      official m Lagx;m:Lcom/mojang/authlib/GameProfile;
      intermediary field_14160 Lnet/minecraft/class_3248;field_14160:Lcom/mojang/authlib/GameProfile;
      named profile Lnet/minecraft/server/network/ServerLoginNetworkHandler;profile:Lcom/mojang/authlib/GameProfile;
    • serverId

      private final String serverId
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official n Lagx;n:Ljava/lang/String;
      intermediary field_14165 Lnet/minecraft/class_3248;field_14165:Ljava/lang/String;
      named serverId Lnet/minecraft/server/network/ServerLoginNetworkHandler;serverId:Ljava/lang/String;
    • delayedPlayer

      @Nullable private @Nullable ServerPlayerEntity delayedPlayer
      The delayed player, waiting to join the server once the existing player with the same UUID is gone.

      This will only be non-null if the state is delay-accept, and is reset to null once the player is accepted.

      Mappings:
      Namespace Name Mixin selector
      official o Lagx;o:Lagd;
      intermediary field_14161 Lnet/minecraft/class_3248;field_14161:Lnet/minecraft/class_3222;
      named delayedPlayer Lnet/minecraft/server/network/ServerLoginNetworkHandler;delayedPlayer:Lnet/minecraft/server/network/ServerPlayerEntity;
    • publicKeyData

      Mappings:
      Namespace Name Mixin selector
      official p Lagx;p:Lbua$a;
      intermediary field_39743 Lnet/minecraft/class_3248;field_39743:Lnet/minecraft/class_7428$class_7443;
      named publicKeyData Lnet/minecraft/server/network/ServerLoginNetworkHandler;publicKeyData:Lnet/minecraft/network/encryption/PlayerPublicKey$PublicKeyData;
  • Constructor Details

    • ServerLoginNetworkHandler

      public ServerLoginNetworkHandler(MinecraftServer server, ClientConnection connection)
      Mappings:
      Namespace Name Mixin selector
      official <init> Lagx;<init>(Lnet/minecraft/server/MinecraftServer;Lqv;)V
      intermediary <init> Lnet/minecraft/class_3248;<init>(Lnet/minecraft/server/MinecraftServer;Lnet/minecraft/class_2535;)V
      named <init> Lnet/minecraft/server/network/ServerLoginNetworkHandler;<init>(Lnet/minecraft/server/MinecraftServer;Lnet/minecraft/network/ClientConnection;)V
  • Method Details

    • tick

      public void tick()
      Specified by:
      tick in interface class_7633
      Mappings:
      Namespace Name Mixin selector
      official c Lrd;c()V
      intermediary method_18784 Lnet/minecraft/class_7633;method_18784()V
      named tick Lnet/minecraft/class_7633;tick()V
    • getConnection

      public ClientConnection getConnection()
      Returns the connection this packet listener intends to listen to.
      Specified by:
      getConnection in interface PacketListener
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official a Lra;a()Lqv;
      intermediary method_2872 Lnet/minecraft/class_2547;method_2872()Lnet/minecraft/class_2535;
      named getConnection Lnet/minecraft/network/listener/PacketListener;getConnection()Lnet/minecraft/network/ClientConnection;
    • disconnect

      public void disconnect(Text reason)
      Mappings:
      Namespace Name Mixin selector
      official b Lagx;b(Lro;)V
      intermediary method_14380 Lnet/minecraft/class_3248;method_14380(Lnet/minecraft/class_2561;)V
      named disconnect Lnet/minecraft/server/network/ServerLoginNetworkHandler;disconnect(Lnet/minecraft/text/Text;)V
    • acceptPlayer

      public void acceptPlayer()
      Creates the player to be added to the server and adds it to the server.

      If a player with the same UUID is in the world, it will create the player and transition to the delay accept state.

      API Note:
      This method should only be called on the server thread.
      Mappings:
      Namespace Name Mixin selector
      official d Lagx;d()V
      intermediary method_14384 Lnet/minecraft/class_3248;method_14384()V
      named acceptPlayer Lnet/minecraft/server/network/ServerLoginNetworkHandler;acceptPlayer()V
    • addToServer

      private void addToServer(ServerPlayerEntity player)
      Mappings:
      Namespace Name Mixin selector
      official a Lagx;a(Lagd;)V
      intermediary method_33800 Lnet/minecraft/class_3248;method_33800(Lnet/minecraft/class_3222;)V
      named addToServer Lnet/minecraft/server/network/ServerLoginNetworkHandler;addToServer(Lnet/minecraft/server/network/ServerPlayerEntity;)V
    • onDisconnected

      public void onDisconnected(Text reason)
      Called when the connection this listener listens to has disconnected. Can be used to display the disconnection reason.
      Specified by:
      onDisconnected in interface PacketListener
      Parameters:
      reason - the reason of disconnection; may be a generic message
      Mappings:
      Namespace Name Mixin selector
      official a Lra;a(Lro;)V
      intermediary method_10839 Lnet/minecraft/class_2547;method_10839(Lnet/minecraft/class_2561;)V
      named onDisconnected Lnet/minecraft/network/listener/PacketListener;onDisconnected(Lnet/minecraft/text/Text;)V
    • getConnectionInfo

      public String getConnectionInfo()
      Mappings:
      Namespace Name Mixin selector
      official e Lagx;e()Ljava/lang/String;
      intermediary method_14383 Lnet/minecraft/class_3248;method_14383()Ljava/lang/String;
      named getConnectionInfo Lnet/minecraft/server/network/ServerLoginNetworkHandler;getConnectionInfo()Ljava/lang/String;
    • getVerifiedPublicKey

      @Nullable private static @Nullable PlayerPublicKey getVerifiedPublicKey(@Nullable PlayerPublicKey.PublicKeyData publicKeyData, UUID playerUuid, SignatureVerifier servicesSignatureVerifier, boolean shouldThrowOnMissingKey) throws ServerLoginNetworkHandler.LoginException
      Throws:
      ServerLoginNetworkHandler.LoginException
      Mappings:
      Namespace Name Mixin selector
      official a Lagx;a(Lbua$a;Ljava/util/UUID;Laml;Z)Lbua;
      intermediary method_43510 Lnet/minecraft/class_3248;method_43510(Lnet/minecraft/class_7428$class_7443;Ljava/util/UUID;Lnet/minecraft/class_7500;Z)Lnet/minecraft/class_7428;
      named getVerifiedPublicKey Lnet/minecraft/server/network/ServerLoginNetworkHandler;getVerifiedPublicKey(Lnet/minecraft/network/encryption/PlayerPublicKey$PublicKeyData;Ljava/util/UUID;Lnet/minecraft/network/encryption/SignatureVerifier;Z)Lnet/minecraft/network/encryption/PlayerPublicKey;
    • onHello

      public void onHello(LoginHelloC2SPacket packet)
      Specified by:
      onHello in interface ServerLoginPacketListener
      Mappings:
      Namespace Name Mixin selector
      official a Lzr;a(Lzt;)V
      intermediary method_12641 Lnet/minecraft/class_2911;method_12641(Lnet/minecraft/class_2915;)V
      named onHello Lnet/minecraft/network/listener/ServerLoginPacketListener;onHello(Lnet/minecraft/network/packet/c2s/login/LoginHelloC2SPacket;)V
    • isValidName

      public static boolean isValidName(String name)
      Mappings:
      Namespace Name Mixin selector
      official a Lagx;a(Ljava/lang/String;)Z
      intermediary method_40085 Lnet/minecraft/class_3248;method_40085(Ljava/lang/String;)Z
      named isValidName Lnet/minecraft/server/network/ServerLoginNetworkHandler;isValidName(Ljava/lang/String;)Z
    • onKey

      public void onKey(LoginKeyC2SPacket packet)
      Specified by:
      onKey in interface ServerLoginPacketListener
      Mappings:
      Namespace Name Mixin selector
      official a Lzr;a(Lzu;)V
      intermediary method_12642 Lnet/minecraft/class_2911;method_12642(Lnet/minecraft/class_2917;)V
      named onKey Lnet/minecraft/network/listener/ServerLoginPacketListener;onKey(Lnet/minecraft/network/packet/c2s/login/LoginKeyC2SPacket;)V
    • onQueryResponse

      public void onQueryResponse(LoginQueryResponseC2SPacket packet)
      Specified by:
      onQueryResponse in interface ServerLoginPacketListener
      Mappings:
      Namespace Name Mixin selector
      official a Lzr;a(Lzs;)V
      intermediary method_12640 Lnet/minecraft/class_2911;method_12640(Lnet/minecraft/class_2913;)V
      named onQueryResponse Lnet/minecraft/network/listener/ServerLoginPacketListener;onQueryResponse(Lnet/minecraft/network/packet/c2s/login/LoginQueryResponseC2SPacket;)V
    • toOfflineProfile

      protected com.mojang.authlib.GameProfile toOfflineProfile(com.mojang.authlib.GameProfile profile)
      Mappings:
      Namespace Name Mixin selector
      official a Lagx;a(Lcom/mojang/authlib/GameProfile;)Lcom/mojang/authlib/GameProfile;
      intermediary method_14375 Lnet/minecraft/class_3248;method_14375(Lcom/mojang/authlib/GameProfile;)Lcom/mojang/authlib/GameProfile;
      named toOfflineProfile Lnet/minecraft/server/network/ServerLoginNetworkHandler;toOfflineProfile(Lcom/mojang/authlib/GameProfile;)Lcom/mojang/authlib/GameProfile;