Class Connection

java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
io.netty.channel.SimpleChannelInboundHandler<Packet<?>>
net.minecraft.network.Connection
All Implemented Interfaces:
io.netty.channel.ChannelHandler, io.netty.channel.ChannelInboundHandler
Direct Known Subclasses:
FakePlayer.FakeConnection, RateKickingConnection

public class Connection extends io.netty.channel.SimpleChannelInboundHandler<Packet<?>>
  • Field Details

    • AVERAGE_PACKETS_SMOOTHING

      private static final float AVERAGE_PACKETS_SMOOTHING
      See Also:
    • LOGGER

      private static final org.slf4j.Logger LOGGER
    • ROOT_MARKER

      public static final org.slf4j.Marker ROOT_MARKER
    • PACKET_MARKER

      public static final org.slf4j.Marker PACKET_MARKER
    • PACKET_RECEIVED_MARKER

      public static final org.slf4j.Marker PACKET_RECEIVED_MARKER
    • PACKET_SENT_MARKER

      public static final org.slf4j.Marker PACKET_SENT_MARKER
    • INITIAL_PROTOCOL

      private static final ProtocolInfo<ServerHandshakePacketListener> INITIAL_PROTOCOL
    • receiving

      private final PacketFlow receiving
    • sendLoginDisconnect

      private volatile boolean sendLoginDisconnect
    • pendingActions

      private final Queue<Consumer<Connection>> pendingActions
    • channel

      private io.netty.channel.Channel channel
      The active channel
    • address

      private SocketAddress address
      The address of the remote party
    • disconnectListener

      private volatile @Nullable PacketListener disconnectListener
    • packetListener

      private volatile @Nullable PacketListener packetListener
      The PacketListener instance responsible for processing received packets
    • disconnectionDetails

      private @Nullable DisconnectionDetails disconnectionDetails
    • encrypted

      private boolean encrypted
    • disconnectionHandled

      private boolean disconnectionHandled
    • receivedPackets

      private int receivedPackets
    • sentPackets

      private int sentPackets
    • averageReceivedPackets

      private float averageReceivedPackets
    • averageSentPackets

      private float averageSentPackets
    • tickCount

      private int tickCount
    • handlingFault

      private boolean handlingFault
    • delayedDisconnect

      private volatile @Nullable DisconnectionDetails delayedDisconnect
    • bandwidthDebugMonitor

      private @Nullable BandwidthDebugMonitor bandwidthDebugMonitor
    • inboundProtocol

      private @Nullable ProtocolInfo<?> inboundProtocol
  • Constructor Details

    • Connection

      public Connection(PacketFlow receiving)
  • Method Details

    • channelActive

      public void channelActive(io.netty.channel.ChannelHandlerContext ctx) throws Exception
      Specified by:
      channelActive in interface io.netty.channel.ChannelInboundHandler
      Overrides:
      channelActive in class io.netty.channel.ChannelInboundHandlerAdapter
      Throws:
      Exception
    • channelInactive

      public void channelInactive(io.netty.channel.ChannelHandlerContext ctx)
      Specified by:
      channelInactive in interface io.netty.channel.ChannelInboundHandler
      Overrides:
      channelInactive in class io.netty.channel.ChannelInboundHandlerAdapter
    • exceptionCaught

      public void exceptionCaught(io.netty.channel.ChannelHandlerContext ctx, Throwable cause)
      Specified by:
      exceptionCaught in interface io.netty.channel.ChannelHandler
      Specified by:
      exceptionCaught in interface io.netty.channel.ChannelInboundHandler
      Overrides:
      exceptionCaught in class io.netty.channel.ChannelInboundHandlerAdapter
    • channelRead0

      protected void channelRead0(io.netty.channel.ChannelHandlerContext ctx, Packet<?> packet)
      Specified by:
      channelRead0 in class io.netty.channel.SimpleChannelInboundHandler<Packet<?>>
    • genericsFtw

      private static <T extends PacketListener> void genericsFtw(Packet<T> packet, PacketListener listener)
    • validateListener

      private void validateListener(ProtocolInfo<?> protocol, PacketListener packetListener)
    • syncAfterConfigurationChange

      private static void syncAfterConfigurationChange(io.netty.channel.ChannelFuture future)
    • setupInboundProtocol

      public <T extends PacketListener> void setupInboundProtocol(ProtocolInfo<T> protocol, T packetListener)
    • setupOutboundProtocol

      public void setupOutboundProtocol(ProtocolInfo<?> protocol)
    • setListenerForServerboundHandshake

      public void setListenerForServerboundHandshake(PacketListener packetListener)
    • initiateServerboundStatusConnection

      public void initiateServerboundStatusConnection(String hostName, int port, ClientStatusPacketListener listener)
    • initiateServerboundPlayConnection

      public void initiateServerboundPlayConnection(String hostName, int port, ClientLoginPacketListener listener)
    • initiateServerboundPlayConnection

      public <S extends ServerboundPacketListener, C extends ClientboundPacketListener> void initiateServerboundPlayConnection(String hostName, int port, ProtocolInfo<S> outbound, ProtocolInfo<C> inbound, C listener, boolean transfer)
    • initiateServerboundConnection

      private <S extends ServerboundPacketListener, C extends ClientboundPacketListener> void initiateServerboundConnection(String hostName, int port, ProtocolInfo<S> outbound, ProtocolInfo<C> inbound, C listener, ClientIntent intent)
    • send

      public void send(Packet<?> packet)
    • send

      public void send(Packet<?> packet, @Nullable io.netty.channel.ChannelFutureListener listener)
    • send

      public void send(Packet<?> packet, @Nullable io.netty.channel.ChannelFutureListener listener, boolean flush)
    • runOnceConnected

      public void runOnceConnected(Consumer<Connection> action)
    • sendPacket

      private void sendPacket(Packet<?> packet, @Nullable io.netty.channel.ChannelFutureListener listener, boolean flush)
    • doSendPacket

      private void doSendPacket(Packet<?> packet, @Nullable io.netty.channel.ChannelFutureListener listener, boolean flush)
    • flushChannel

      public void flushChannel()
    • flush

      private void flush()
    • flushQueue

      private void flushQueue()
    • tick

      public void tick()
    • tickSecond

      protected void tickSecond()
    • getRemoteAddress

      public SocketAddress getRemoteAddress()
    • getLoggableAddress

      public String getLoggableAddress(boolean logIPs)
    • disconnect

      public void disconnect(Component reason)
      Closes the channel with a given reason. The reason is stored for later and will be used for informational purposes (info log on server, disconnection screen on the client). This method is also called on the client when the server requests disconnection via ClientboundDisconnectPacket. Closing the channel this way does not send any disconnection packets, it simply terminates the underlying netty channel.
    • disconnect

      public void disconnect(DisconnectionDetails details)
    • isMemoryConnection

      public boolean isMemoryConnection()
    • getReceiving

      public PacketFlow getReceiving()
    • getSending

      public PacketFlow getSending()
    • connectToServer

      public static Connection connectToServer(InetSocketAddress address, EventLoopGroupHolder eventLoopGroupHolder, @Nullable LocalSampleLogger bandwidthLogger)
    • connect

      public static io.netty.channel.ChannelFuture connect(InetSocketAddress address, EventLoopGroupHolder eventLoopGroupHolder, Connection connection)
    • outboundHandlerName

      private static String outboundHandlerName(boolean configureOutbound)
    • inboundHandlerName

      private static String inboundHandlerName(boolean configureInbound)
    • configurePacketHandler

      public void configurePacketHandler(io.netty.channel.ChannelPipeline pipeline)
    • configureSerialization

      public static void configureSerialization(io.netty.channel.ChannelPipeline pipeline, PacketFlow inboundDirection, boolean local, @Nullable BandwidthDebugMonitor monitor)
    • createFrameEncoder

      private static io.netty.channel.ChannelOutboundHandler createFrameEncoder(boolean local)
    • createFrameDecoder

      private static io.netty.channel.ChannelInboundHandler createFrameDecoder(@Nullable BandwidthDebugMonitor monitor, boolean local)
    • configureInMemoryPipeline

      public static void configureInMemoryPipeline(io.netty.channel.ChannelPipeline pipeline, PacketFlow packetFlow)
    • connectToLocalServer

      public static Connection connectToLocalServer(SocketAddress address)
      Prepares a clientside Connection for a local in-memory connection ("single player"). Establishes a connection to the socket supplied and configures the channel pipeline (only the packet handler is necessary, since this is for an in-memory connection). Returns the newly created instance.
    • setEncryptionKey

      public void setEncryptionKey(Cipher decryptCipher, Cipher encryptCipher)
      Enables encryption for this connection using the given decrypting and encrypting ciphers. This adds new handlers to this connection's pipeline which handle the decrypting and encrypting. This happens as part of the normal network handshake.
      See Also:
    • isEncrypted

      public boolean isEncrypted()
    • isConnected

      public boolean isConnected()
    • isConnecting

      public boolean isConnecting()
    • getPacketListener

      public @Nullable PacketListener getPacketListener()
    • getDisconnectionDetails

      public @Nullable DisconnectionDetails getDisconnectionDetails()
    • setReadOnly

      public void setReadOnly()
    • setupCompression

      public void setupCompression(int threshold, boolean validateDecompressed)
      Enables or disables compression for this connection. If threshold is >= 0 then a CompressionDecoder and CompressionEncoder are installed in the pipeline or updated if they already exist. If threshold is invalid input: '<' 0 then any such codec are removed. Compression is enabled as part of the connection handshake when the server sends ClientboundLoginCompressionPacket.
    • handleDisconnection

      public void handleDisconnection()
    • getAverageReceivedPackets

      public float getAverageReceivedPackets()
    • getAverageSentPackets

      public float getAverageSentPackets()
    • setBandwidthLogger

      public void setBandwidthLogger(LocalSampleLogger bandwidthLogger)
    • channel

      public io.netty.channel.Channel channel()
    • getDirection

      public PacketFlow getDirection()
    • getInboundProtocol

      public ProtocolInfo<?> getInboundProtocol()