@Override public void onPlayerLogin(EntityPlayer player) { // Server-side - called whenever a player logs in // I couldn't find a way to detect if the client has TerrainControl, // so for now the configs are sent anyway. // Get the config LocalWorld worldTC = WorldHelper.toLocalWorld(player.worldObj); if (worldTC == null) { // World not loaded return; } WorldConfig config = worldTC.getSettings(); // Serialize it ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); DataOutputStream stream = new DataOutputStream(outputStream); try { stream.writeInt(TCDefaultValues.ProtocolVersion.intValue()); config.Serialize(stream); } catch (IOException e) { e.printStackTrace(); } // Make the packet Packet250CustomPayload packet = new Packet250CustomPayload(); packet.channel = TCDefaultValues.ChannelName.stringValue(); packet.data = outputStream.toByteArray(); packet.length = outputStream.size(); // Send the packet ((EntityPlayerMP) player).playerNetServerHandler.sendPacketToPlayer(packet); System.out.println("TerrainControl: sent config"); }