Beispiel #1
0
        public MultiplayerServer()
        {
            var reader = new PacketReader();
            PacketReader = reader;
            Clients = new List<IRemoteClient>();
            EnvironmentWorker = new Timer(DoEnvironment);
            PacketHandlers = new PacketHandler[0x100];
            Worlds = new List<IWorld>();
            EntityManagers = new List<IEntityManager>();
            LogProviders = new List<ILogProvider>();
            Scheduler = new EventScheduler(this);
            var blockRepository = new BlockRepository();
            blockRepository.DiscoverBlockProviders();
            BlockRepository = blockRepository;
            var itemRepository = new ItemRepository();
            itemRepository.DiscoverItemProviders();
            ItemRepository = itemRepository;
            BlockProvider.ItemRepository = ItemRepository;
            BlockProvider.BlockRepository = BlockRepository;
            var craftingRepository = new CraftingRepository();
            craftingRepository.DiscoverRecipes();
            CraftingRepository = craftingRepository;
            PendingBlockUpdates = new Queue<BlockUpdate>();
            EnableClientLogging = false;
            QueryProtocol = new TrueCraft.QueryProtocol(this);
            WorldLighters = new List<WorldLighting>();

            AccessConfiguration = Configuration.LoadConfiguration<AccessConfiguration>("access.yaml");

            reader.RegisterCorePackets();
            Handlers.PacketHandlers.RegisterHandlers(this);
        }
Beispiel #2
0
        public MultiplayerClient(TrueCraftUser user)
        {
            User         = user;
            Client       = new TcpClient();
            PacketReader = new PacketReader();
            PacketReader.RegisterCorePackets();
            PacketHandlers = new PacketHandler[0x100];
            Handlers.PacketHandlers.RegisterHandlers(this);
            World     = new ReadOnlyWorld();
            Inventory = new InventoryWindow(null);
            var repo = new BlockRepository();

            repo.DiscoverBlockProviders();
            World.World.BlockRepository = repo;
            World.World.ChunkProvider   = new EmptyGenerator();
            Physics    = new PhysicsEngine(World.World, repo);
            SocketPool = new SocketAsyncEventArgsPool(100, 200, 65536);
            connected  = 0;
            cancel     = new CancellationTokenSource();
            Health     = 20;
            var crafting = new CraftingRepository();

            CraftingRepository = crafting;
            crafting.DiscoverRecipes();
        }
        public MultiPlayerServer(ServerConfiguration configuration)
        {
            Trace = new TraceSource(configuration.ServerAddress);
            Trace.Switch.Level = SourceLevels.All;
            Trace.Listeners.Add(new ServerTraceWriter());

            ServerConfiguration = configuration;

            PacketReader      = new PacketReader(Trace);
            Clients           = new List <IRemoteClient>();
            EnvironmentWorker = new Timer(DoEnvironment);
            PacketHandlers    = new PacketHandler[0x100];
            Worlds            = new List <IWorld>();
            EntityManagers    = new List <IEntityManager>();
            Scheduler         = new EventScheduler(this);
            var blockRepository = new BlockRepository();

            blockRepository.DiscoverBlockProviders();
            BlockRepository = blockRepository;
            var itemRepository = new ItemRepository();

            itemRepository.DiscoverItemProviders();
            ItemRepository = itemRepository;
            BlockProvider.ItemRepository  = ItemRepository;
            BlockProvider.BlockRepository = BlockRepository;
            var craftingRepository = new CraftingRepository();

            craftingRepository.DiscoverRecipes();
            CraftingRepository  = craftingRepository;
            PendingBlockUpdates = new Queue <BlockUpdate>();
            EnableClientLogging = configuration.EnableClientLogging;
            QueryProtocol       = new QueryProtocol(this, configuration);
            WorldLighters       = new List <WorldLighting>();
            ChunksToSchedule    = new ConcurrentBag <Tuple <IWorld, IChunk> >();
            Time = new Stopwatch();

            AccessConfiguration = Configuration.LoadConfiguration <AccessConfiguration>(Bootstrap.ResolvePath("access.yaml"));

            ((PacketReader)PacketReader).RegisterCorePackets(typeof(KeepAlivePacket).Assembly);
            Handlers.PacketHandlers.RegisterHandlers(this);
        }