using System;
using TrueCraft.API.Networking;
using System.Net;
using System.Collections.Generic;
using TrueCraft.API.World;
using TrueCraft.API.Logging;
using TrueCraft.API.Logic;
namespace TrueCraft.API.Server
{
///
/// Called when the given packet comes in from a remote client. Return false to cease communication
/// with that client.
///
public delegate void PacketHandler(IPacket packet, IRemoteClient client, IMultiplayerServer server);
public interface IMultiplayerServer
{
event EventHandler ChatMessageReceived;
event EventHandler PlayerJoined;
IPacketReader PacketReader { get; }
IList Clients { get; }
IList Worlds { get; }
IEventScheduler Scheduler { get; }
IBlockRepository BlockRepository { get; }
IItemRepository ItemRepository { get; }
bool BlockUpdatesEnabled { get; set; }
void Start(IPEndPoint endPoint);
void RegisterPacketHandler(byte packetId, PacketHandler handler);
void AddWorld(IWorld world);
void AddLogProvider(ILogProvider provider);
void Log(LogCategory category, string text, params object[] parameters);
IEntityManager GetEntityManagerForWorld(IWorld world);
void SendMessage(string message, params object[] parameters);
}
}