This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
TrueCraft/TrueCraft.API/Server/IMultiplayerServer.cs
2015-06-22 08:08:15 -07:00

50 lines
1.9 KiB
C#

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
{
/// <summary>
/// Called when the given packet comes in from a remote client. Return false to cease communication
/// with that client.
/// </summary>
public delegate void PacketHandler(IPacket packet, IRemoteClient client, IMultiplayerServer server);
public interface IMultiplayerServer
{
event EventHandler<ChatMessageEventArgs> ChatMessageReceived;
event EventHandler<PlayerJoinedQuitEventArgs> PlayerJoined;
event EventHandler<PlayerJoinedQuitEventArgs> PlayerQuit;
IAccessConfiguration AccessConfiguration { get; }
IPacketReader PacketReader { get; }
IList<IRemoteClient> Clients { get; }
IList<IWorld> Worlds { get; }
IEventScheduler Scheduler { get; }
IBlockRepository BlockRepository { get; }
ICraftingRepository CraftingRepository { get; }
IItemRepository ItemRepository { get; }
IPEndPoint EndPoint { get; }
bool BlockUpdatesEnabled { get; set; }
bool EnableClientLogging { get; set; }
void Start(IPEndPoint endPoint);
void Stop();
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);
void DisconnectClient(IRemoteClient client);
bool PlayerIsWhitelisted(string client);
bool PlayerIsBlacklisted(string client);
bool PlayerIsOp(string client);
}
}