using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MinecraftClient.Crypto;
namespace MinecraftClient.Protocol
{
///
/// Interface for the Minecraft protocol handler.
/// A protocol handler is used to communicate with the Minecraft server.
/// This interface allows to abstract from the underlying minecraft version in other parts of the program.
/// The protocol handler will take care of parsing and building the appropriate network packets.
///
public interface IMinecraftCom : IDisposable, IAutoComplete
{
///
/// Start the login procedure once connected to the server
///
/// True if login was successful
bool Login();
///
/// Disconnect from the server
///
/// Reason
void Disconnect();
///
/// Send a chat message or command to the server
///
/// Text to send
/// True if successfully sent
bool SendChatMessage(string message);
///
/// Allow to respawn after death
///
/// True if packet successfully sent
bool SendRespawnPacket();
///
/// Tell the server what client is being used to connect to the server
///
/// Client string describing the client
/// True if brand info was successfully sent
bool SendBrandInfo(string brandInfo);
///
/// Send a plugin channel packet to the server.
///
/// http://dinnerbone.com/blog/2012/01/13/minecraft-plugin-channels-messaging/
///
/// Channel to send packet on
/// packet Data
/// True if message was successfully sent
bool SendPluginChannelPacket(string channel, byte[] data);
}
}