Class ServerLoginNetworkHandler

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

public class ServerLoginNetworkHandler extends Object implements 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's in online mode, it goes through an additional authentication process. Then it optionally sends a network compression packet next. 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 server play network handler.
Mappings:
Namespace Name
official acl
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 Lacl;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 Logger LOGGER
      Mappings:
      Namespace Name Mixin selector
      official c Lacl;c:Lorg/apache/logging/log4j/Logger;
      intermediary field_14166 Lnet/minecraft/class_3248;field_14166:Lorg/apache/logging/log4j/Logger;
      named LOGGER Lnet/minecraft/server/network/ServerLoginNetworkHandler;LOGGER:Lorg/apache/logging/log4j/Logger;
    • TIMEOUT_TICKS

      private static final int TIMEOUT_TICKS
      See Also:
      Constant Field Values
      Mappings:
      Namespace Name Mixin selector
      official d Lacl;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 Lacl;e:Ljava/util/Random;
      intermediary field_14164 Lnet/minecraft/class_3248;field_14164:Ljava/util/Random;
      named RANDOM Lnet/minecraft/server/network/ServerLoginNetworkHandler;RANDOM:Ljava/util/Random;
    • nonce

      private final byte[] nonce
      Mappings:
      Namespace Name Mixin selector
      official f Lacl;f:[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 g Lacl;g: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 Lacl;a:Loe;
      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 h Lacl;h:Lacl$a;
      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 i Lacl;i: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 j Lacl;j: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:
      Constant Field Values
      Mappings:
      Namespace Name Mixin selector
      official k Lacl;k: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 l Lacl;l:Labs;
      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;
  • Constructor Details

    • ServerLoginNetworkHandler

      public ServerLoginNetworkHandler(MinecraftServer server, ClientConnection connection)
      Mappings:
      Namespace Name Mixin selector
      official <init> Lacl;<init>(Lnet/minecraft/server/MinecraftServer;Loe;)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()
      Ticks this login network handler.

      This accepts the player to the server if ready. If the state is delay accept, it checks if the old player with the same UUID is gone and admits the player.

      API Note:
      This should only be called on the server thread.
      Mappings:
      Namespace Name Mixin selector
      official b Lacl;b()V
      intermediary method_18785 Lnet/minecraft/class_3248;method_18785()V
      named tick Lnet/minecraft/server/network/ServerLoginNetworkHandler;tick()V
    • getConnection

      public ClientConnection getConnection()
      Returns the connection this packet listener intends to listen to.
      Specified by:
      getConnection in interface PacketListener
      See Also:
      ClientConnection.getPacketListener()
      Mappings:
      Namespace Name Mixin selector
      official a Loj;a()Loe;
      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 Lacl;b(Los;)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 c Lacl;c()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 Lacl;a(Labs;)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 Loj;a(Los;)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 d Lacl;d()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;
    • onHello

      public void onHello(LoginHelloC2SPacket packet)
      Specified by:
      onHello in interface ServerLoginPacketListener
      Mappings:
      Namespace Name Mixin selector
      official a Lvr;a(Lvt;)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
    • onKey

      public void onKey(LoginKeyC2SPacket packet)
      Specified by:
      onKey in interface ServerLoginPacketListener
      Mappings:
      Namespace Name Mixin selector
      official a Lvr;a(Lvu;)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 Lvr;a(Lvs;)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 Lacl;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;