package choonster.testmod3.event;
import choonster.testmod3.Logger;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ServerData;
import net.minecraft.util.IThreadListener;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.network.FMLNetworkEvent;
import net.minecraftforge.fml.relauncher.Side;
/**
* Handler for {@link FMLNetworkEvent} subclasses.
* <p>
* WARNING: These events are fired on a Netty thread rather than the main client/server thread, so the handler methods must not directly interact with normal Minecraft classes.
* <p>
* Use {@link IThreadListener#addScheduledTask} to run a task on the main thread where you can safely interact with normal Minecraft classes.
*
* @author Choonster
*/
@Mod.EventBusSubscriber(Side.CLIENT)
public class NetworkEventHandler {
/**
* Prints server connection info when the client connects to a server.
* <p>
* Test for this thread:
* http://www.minecraftforge.net/forum/index.php/topic,34546.0.html
*
* @param event The event
*/
@SubscribeEvent
public static void clientConnectedToServer(FMLNetworkEvent.ClientConnectedToServerEvent event) {
final IThreadListener mainThread = Minecraft.getMinecraft();
mainThread.addScheduledTask(() -> {
final ServerData serverData = Minecraft.getMinecraft().getCurrentServerData();
Logger.info("Server Connected! Local? %s - Address: %s", event.isLocal(), serverData != null ? serverData.serverIP : "<No ServerData>");
});
}
}