package net.minecraft.server.network;
import io.netty.util.concurrent.GenericFutureListener;
import net.minecraft.network.EnumConnectionState;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.status.INetHandlerStatusServer;
import net.minecraft.network.status.client.C00PacketServerQuery;
import net.minecraft.network.status.client.C01PacketPing;
import net.minecraft.network.status.server.S00PacketServerInfo;
import net.minecraft.network.status.server.S01PacketPong;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.IChatComponent;
public class NetHandlerStatusServer implements INetHandlerStatusServer
{
private final MinecraftServer server;
private final NetworkManager networkManager;
private static final String __OBFID = "CL_00001464";
public NetHandlerStatusServer(MinecraftServer serverIn, NetworkManager netManager)
{
this.server = serverIn;
this.networkManager = netManager;
}
/**
* Invoked when disconnecting, the parameter is a ChatComponent describing the reason for termination
*/
public void onDisconnect(IChatComponent reason) {}
/**
* Allows validation of the connection state transition. Parameters: from, to (connection state). Typically throws
* IllegalStateException or UnsupportedOperationException if validation fails
*/
public void onConnectionStateTransition(EnumConnectionState oldState, EnumConnectionState newState)
{
if (newState != EnumConnectionState.STATUS)
{
throw new UnsupportedOperationException("Unexpected change in protocol to " + newState);
}
}
/**
* For scheduled network tasks. Used in NetHandlerPlayServer to send keep-alive packets and in NetHandlerLoginServer
* for a login-timeout
*/
public void onNetworkTick() {}
public void processServerQuery(C00PacketServerQuery packetIn)
{
this.networkManager.scheduleOutboundPacket(new S00PacketServerInfo(this.server.getServerStatusResponse()), new GenericFutureListener[0]);
}
public void processPing(C01PacketPing packetIn)
{
this.networkManager.scheduleOutboundPacket(new S01PacketPong(packetIn.getClientTime()), new GenericFutureListener[0]);
}
}