예제 #1
0
        public EssentialPlayer(MiNetServer server, IPEndPoint endPoint) : base(server, endPoint)
        {
            Server   = server;
            EndPoint = endPoint;

            Inventory                 = new PlayerInventory(this);
            HungerManager             = new HungerManager(this);
            ExperienceManager         = new ExperienceManager(this);
            ItemStackInventoryManager = new ItemStackInventoryManager(this);

            IsSpawned   = false;
            IsConnected = endPoint != null; // Can't connect if there is no endpoint

            Width  = 0.6f;
            Length = Width;
            Height = 1.80;

            HideNameTag         = false;
            IsAlwaysShowName    = true;
            CanClimb            = true;
            HasCollision        = true;
            IsAffectedByGravity = true;
            NoAi    = false;
            EServer = (EssentialServer)server.ServerManager.GetServer();
        }
예제 #2
0
        /// <summary>
        ///     The programs entry point.
        /// </summary>
        /// <param name="args">The arguments.</param>
        private static void Main(string[] args)
        {
            XmlConfigurator.Configure();

            NodeNetworkHandler.FastThreadPool = new DedicatedThreadPool(new DedicatedThreadPoolSettings(Environment.ProcessorCount));

            var server = new MiNetServer();

            int threads;
            int iothreads;

            ThreadPool.GetMinThreads(out threads, out iothreads);
            ThreadPool.SetMinThreads(4000, iothreads);

            var localServerManager = new NodeServerManager(server, 51234);

            server.ServerManager = localServerManager;
            server.ServerRole    = ServerRole.Node;
            server.LevelManager  = new SpreadLevelManager(60);

            server.StartServer();

            Console.WriteLine("MiNET running...");
            Console.ReadLine();
        }
예제 #3
0
        static void Main(string[] args)
        {
            var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());

            XmlConfigurator.Configure(logRepository, new FileInfo(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "log4net.xml")));

            Log.Info(MiNetServer.MiNET);
            System.Console.WriteLine(MiNetServer.MiNET);

            var currentProcess = Process.GetCurrentProcess();

            currentProcess.ProcessorAffinity = (IntPtr)Config.GetProperty("ProcessorAffinity", (int)currentProcess.ProcessorAffinity);

            var service = new MiNetServer();

            Log.Info("Starting...");

            if (Config.GetProperty("UserBedrockGenerator", false))
            {
                service.LevelManager           = new LevelManager();
                service.LevelManager.Generator = new BedrockGenerator();
            }

            service.StartServer();

            System.Console.WriteLine("MiNET running. Press <enter> to stop service.");
            System.Console.ReadLine();
            service.StopServer();
        }
예제 #4
0
파일: Config.cs 프로젝트: wgaox/MiNET
        static Config()
        {
            try
            {
                if (!MiNetServer.IsRunningOnMono())                 //Fix issue on linux/mono.
                {
                    var assembly = Assembly.GetExecutingAssembly().GetName().CodeBase;
                    var path     = new Uri(Path.GetDirectoryName(assembly)).LocalPath;

                    var configFilePath = Path.Combine(path, ConfigFileName);

                    if (File.Exists(configFilePath))
                    {
                        FileContents = File.ReadAllText(configFilePath);
                    }
                }
                else
                {
                    if (File.Exists(ConfigFileName))
                    {
                        FileContents = File.ReadAllText(ConfigFileName);
                    }
                }
            }
            catch (Exception e)
            {
                Log.Warn("Error configuring parser", e);
            }
        }
예제 #5
0
 /// <summary>
 ///     Starts this instance.
 /// </summary>
 private void Start()
 {
     Log.Info("Starting MiNET");
     _server = new MiNetServer();
     //_server.LevelManager = new SpreadLevelManager(Environment.ProcessorCount * 4);
     _server.StartServer();
 }
예제 #6
0
 /// <summary>
 ///     Starts this instance.
 /// </summary>
 public void Start()
 {
     Log.Info("Starting RaNET as user " + Environment.UserName);
     _server = new MiNetServer();
     //_server.LevelManager = new SpreadLevelManager(Environment.ProcessorCount * 4);
     _server.StartServer();
 }
예제 #7
0
 /// <summary>
 /// Startup class for MiNET. Example sets the user and role managers and stores 
 /// for the application.
 /// </summary>
 /// <param name="server"></param>
 public void Configure(MiNetServer server)
 {
     server.UserManager = new UserManager<User>(new DefaultUserStore());
     server.RoleManager = new RoleManager<Role>(new DefaultRoleStore());
     //server.UserManager.PasswordHasher = new CustomPasswordHasher();
     Log.Info("Executed startup successfully. Replaced identity managment.");
 }
예제 #8
0
        protected override void OnEnable()
        {
            server     = Context.Server;
            lastUpdate = (int)DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
            startTime  = lastUpdate;
            try
            {
                _config = new SynapseMiNET.utils.Config();
            }catch (ConfigValidationException e)
            {
                Message("Failed to load config");
                return;
            }


            password           = _config.getValue("password");
            address            = _config.getValue("address");
            port               = Int32.Parse(_config.getValue("port"));
            identifier         = _config.getValue("identifier");
            isMainServer       = bool.Parse(_config.getValue("isMainServer"));
            isLobbyServer      = bool.Parse(_config.getValue("isLobbyServer"));
            transferOnShutdown = bool.Parse(_config.getValue("transferOnShutdown"));

            Message("Address= " + address + " Port=" + port);

            createListener();
            packetPool.init();

            if (packetPool.ready())
            {
                asyncTickerThread = new AsyncTicker(this);
                asyncTickerThread.Start();
            }
        }
예제 #9
0
        public override Player CreatePlayer(MiNetServer server, IPEndPoint endPoint)
        {
            var player = new PlayerAuth(server, endPoint);

            OnPlayerCreated(new PlayerEventArgs(player));
            return(player);
        }
예제 #10
0
        public SingleplayerServer(string world, Alex alex, IPEndPoint endPoint, PlayerProfile profile, DedicatedThreadPool threadPool, out INetworkProvider networkProvider) : base(alex, endPoint, profile, threadPool, out networkProvider)
        {
            Server             = new MiNetServer(new IPEndPoint(IPAddress.Loopback, 0));
            ConnectionEndpoint = Server.Endpoint;

            Server.LevelManager = new LevelManager();
            MiNETLevel          = Server.LevelManager.GetLevel(null, world);
        }
예제 #11
0
        public override Player CreatePlayer(MiNetServer server, IPEndPoint endPoint, PlayerInfo pd)
        {
            var player = new EPlayer(server, endPoint, heart);

            player.MaxViewDistance      = 7;
            player.UseCreativeInventory = false;
            return(player);
        }
예제 #12
0
        public override Player CreatePlayer(MiNetServer server, IPEndPoint endPoint, PlayerInfo playerInfo)
        {
            var player = new SynapsePlayer(server, endPoint);

            player.MaxViewDistance    = Config.GetProperty("MaxViewDistance", 22);
            player.MoveRenderDistance = Config.GetProperty("MoveRenderDistance", 1);
            OnPlayerCreated(new PlayerEventArgs(player));
            return(player);
        }
예제 #13
0
        public LevelRunner(MiNetServer server, LevelMap map)
        {
            _server = server;
            Map     = map;

            Map.OnTileUpdated += MapOnOnTileUpdated;

            _timer = new Timer(DoUpdate);
        }
예제 #14
0
파일: xPlayer.cs 프로젝트: rdcpe/xCoreSplit
        public override Player CreatePlayer(MiNetServer server, IPEndPoint endPoint, PlayerInfo pd)
        {
            var player = new xPlayer(server, endPoint, xCore);

            player.HealthManager        = new xCoreHealthManager(player, xCore);
            player.HungerManager        = new xCoreHungerManager(player);
            player.MaxViewDistance      = 7;
            player.UseCreativeInventory = false;
            OnPlayerCreated(new PlayerEventArgs(player));
            return(player);
        }
예제 #15
0
        public override MiNET.Player CreatePlayer(MiNetServer server, IPEndPoint endPoint, PlayerInfo pd)
        {
            var player = new SkyPlayer(server, endPoint, SkyCoreApi);

            player.HealthManager        = new SkyHealthManager(player);
            player.HungerManager        = new SkyFoodManager(player);
            player.MaxViewDistance      = 7;
            player.UseCreativeInventory = true;
            OnPlayerCreated(new PlayerEventArgs(player));
            return(player);
        }
예제 #16
0
        public static void HandleRakNetMessage(MiNetServer server, IPEndPoint senderEndpoint, OpenConnectionRequest2 incoming)
        {
            RakSession session;

            lock (server._rakNetSessions)
            {
                if (!server._connectionAttemps.TryRemove(senderEndpoint, out _))
                {
                    Log.WarnFormat("Unexpected connection request packet from {0}. Probably a resend.", senderEndpoint.Address);
                    return;
                }

                if (server._rakNetSessions.TryGetValue(senderEndpoint, out session))
                {
                    // Already connecting, then this is just a duplicate
                    if (session.State == ConnectionState.Connecting /* && DateTime.UtcNow < session.LastUpdatedTime + TimeSpan.FromSeconds(2)*/)
                    {
                        return;
                    }

                    Log.InfoFormat("Unexpected session from {0}. Removing old session and disconnecting old player.", senderEndpoint.Address);

                    session.Disconnect("Reconnecting.", false);

                    server._rakNetSessions.TryRemove(senderEndpoint, out _);
                }

                session = new RakSession(server, null, senderEndpoint, incoming.mtuSize)
                {
                    State             = ConnectionState.Connecting,
                    LastUpdatedTime   = DateTime.UtcNow,
                    MtuSize           = incoming.mtuSize,
                    NetworkIdentifier = incoming.clientGuid
                };

                server._rakNetSessions.TryAdd(senderEndpoint, session);
            }

            session.MessageHandler = new LoginMessageHandler(session);

            var reply = OpenConnectionReply2.CreateObject();

            reply.serverGuid             = server.MotdProvider.ServerId;
            reply.clientEndpoint         = senderEndpoint;
            reply.mtuSize                = incoming.mtuSize;
            reply.doSecurityAndHandshake = new byte[1];
            byte[] data = reply.Encode();

            TraceSend(reply);

            reply.PutPool();

            server.SendData(data, senderEndpoint);
        }
예제 #17
0
        /// <summary>
        ///     Starts this instance.
        /// </summary>
        private void Start()
        {
            var assembly = Assembly.GetExecutingAssembly().GetName().CodeBase;

            //string rawPath = Path.GetDirectoryName(assembly);
            Log.Info(assembly);

            Log.Info("Starting MiNET as user " + Environment.UserName);
            _server = new MiNetServer();
            //_server.LevelManager = new SpreadLevelManager(Environment.ProcessorCount * 4);
            _server.StartServer();
        }
예제 #18
0
        public void Configure(MiNetServer server)
        {
            Log.Info("Startup begun.");

            server.PlayerFactory = new xPlayerFactory()
            {
                xCore = this
            };
            server.LevelManager = new LobbyManager(this);

            Log.Info("Startup complete.");
        }
예제 #19
0
        public virtual Player CreatePlayer(MiNetServer server, IPEndPoint endPoint, PlayerInfo playerInfo)
        {
            var player = new EssentialPlayer(server, endPoint);

            /*player.MaxViewDistance = Config.GetProperty("MaxViewDistance", 22);
             * player.MoveRenderDistance = Config.GetProperty("MoveRenderDistance", 1);*/
            player.MaxViewDistance    = 22;
            player.MoveRenderDistance = 1;
            Log.Warn("Player Created With Class EssentialPlayer");
            OnPlayerCreated(new PlayerEventArgs(player));
            return(player);
        }
예제 #20
0
 public Hologram(string name, Level level, bool lob = true, MiNetServer server = null) : base((int)EntityType.Slime, level)
 {
     this.server      = server;
     Width            = 0;
     Length           = 0;
     Height           = 0;
     NameTag          = name;
     Scale            = 0;
     HideNameTag      = false;
     IsAlwaysShowName = true;
     Lobby            = lob;
 }
예제 #21
0
        public void Configure(MiNetServer server)
        {
            var logger = new Logger(logLevel: LogLevel.Debug);
            var stats  = new Stats();

            _levelService = new LevelService(server);

            _server = new TcpHost(new IPEndPoint(IPAddress.Any, 19137), logger, stats);
            _server.AddService <ILevelService>(_levelService);
            _server.Open();
            Log.InfoFormat("Dev Tools LevelService Started");
        }
예제 #22
0
        public OpenPlayer(MiNetServer server, IPEndPoint endPoint, OpenApi api) : base(server, endPoint)
        {
            EnableCommands = true;
            _plugin        = api;
            IsFlying       = false;

            Permissions = new PermissionManager();
            Inventory   = new OpenPlayerInventory(this);

            _serverHaveResources = api.ResourcePackProvider.HasData;
            Commands             = _plugin.CommandManager.GenerateCommandSet(this);
            //if (Config.GetProperty("useResourcePack"))
        }
예제 #23
0
        public void Configure(MiNetServer server)
        {
            server.LevelManager = new PlotterLevelManager();
            server.LevelManager.LevelCreated += (sender, args) =>
            {
                Level level = args.Level;

                level.BlockBreak    += LevelOnBlockBreak;
                level.BlockPlace    += LevelOnBlockPlace;
                level.PlayerAdded   += LevelOnPlayerAdded;
                level.PlayerRemoved += LevelOnPlayerRemoved;
            };
        }
예제 #24
0
        static Config()
        {
            try
            {
                string username = Environment.UserName;

                string fileContents = string.Empty;
                if (!MiNetServer.IsRunningOnMono())                 //Fix issue on linux/mono.
                {
                    var    assembly = Assembly.GetExecutingAssembly().GetName().CodeBase;
                    string rawPath  = Path.GetDirectoryName(assembly);
                    if (rawPath != null)
                    {
                        var path = new Uri(rawPath).LocalPath;

                        var configFilePath = Path.Combine(path, $"server.{username}.conf");
                        Log.Info($"Trying to load config-file {configFilePath}");
                        if (File.Exists(configFilePath))
                        {
                            fileContents = File.ReadAllText(configFilePath);
                        }
                        else
                        {
                            configFilePath = Path.Combine(path, ConfigFileName);

                            Log.Info($"Trying to load config-file {configFilePath}");

                            if (File.Exists(configFilePath))
                            {
                                fileContents = File.ReadAllText(configFilePath);
                            }
                        }
                        Log.Info($"Loading config-file {configFilePath}");
                    }
                }
                else
                {
                    if (File.Exists(ConfigFileName))
                    {
                        fileContents = File.ReadAllText(ConfigFileName);
                    }
                }

                LoadValues(fileContents);
            }
            catch (Exception e)
            {
                Log.Warn("Error configuring parser", e);
            }
        }
예제 #25
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Starting MiNET Server...");

            MiNetServer server = new MiNetServer();

            server.StartServer();

            Console.WriteLine("MiNET Server started! Press <Enter> to exit");
            Console.ReadLine();
            Console.WriteLine("Stopping MiNET Server...");

            server.StopServer();
        }
예제 #26
0
        public FtlNodeServer()
        {
            NodeNetworkHandler.FastThreadPool = new DedicatedThreadPool(new DedicatedThreadPoolSettings(Environment.ProcessorCount));

            int threads;
            int iothreads;

            ThreadPool.GetMinThreads(out threads, out iothreads);
            ThreadPool.SetMinThreads(4000, iothreads);

            _server               = new MiNetServer();
            _server.ServerRole    = ServerRole.Node;
            _server.ServerManager = new NodeServerManager(_server, 51234);
            _server.LevelManager  = new SpreadLevelManager(1);
        }
예제 #27
0
        public override MiNET.Player CreatePlayer(MiNetServer server, IPEndPoint endPoint, PlayerInfo playerInfo)
        {
            var player = new OpenPlayer(server, endPoint, _plugin);

            player.ClientUuid         = playerInfo.ClientUuid;
            player.MaxViewDistance    = Config.GetProperty("MaxViewDistance", 22);
            player.MoveRenderDistance = Config.GetProperty("MoveRenderDistance", 1);

            /*	if (!Players.TryAdd(playerInfo.ClientUuid, player))
             *      {
             *              Log.Warn("Failed to add player to playermanager!");
             *      }*/
            //OnPlayerCreated?.Invoke(this, new PlayerCreatedEvent(player));
            _plugin.EventDispatcher.DispatchEvent(new PlayerCreatedEvent(player));
            return(player);
        }
예제 #28
0
파일: Startup.cs 프로젝트: sccGg/MiNET
        static void Main(string[] args)
        {
            if (args.Length > 0 && args[0] == "listener")
            {
                // This is a brutal hack to block BDS to use the ports we are using. So we start this, and basically block BDS
                // while it is starting. Then we close down this process again, and continue on our way.
                var reset = new ManualResetEvent(false);
                using var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
                      {
                          ExclusiveAddressUse = true
                      };
                socket.Bind(new IPEndPoint(IPAddress.Any, 19132));
                System.Console.WriteLine("LISTENING!");
                reset.WaitOne();
                System.Console.WriteLine("EXIT!");
                return;
            }

            var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());

            XmlConfigurator.Configure(logRepository, new FileInfo(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "log4net.xml")));

            Log.Info(MiNetServer.MiNET);
            System.Console.WriteLine(MiNetServer.MiNET);

            var currentProcess = Process.GetCurrentProcess();

            currentProcess.ProcessorAffinity = (IntPtr)Config.GetProperty("ProcessorAffinity", (int)currentProcess.ProcessorAffinity);

            var service = new MiNetServer();

            Log.Info("Starting...");

            if (Config.GetProperty("UserBedrockGenerator", false))
            {
                service.LevelManager           = new LevelManager();
                service.LevelManager.Generator = new BedrockGenerator();
            }

            service.StartServer();

            System.Console.WriteLine("MiNET running. Press <enter> to stop service.");
            System.Console.ReadLine();
            service.StopServer();
        }
예제 #29
0
        static void Main(string[] args)
        {
            var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());

            XmlConfigurator.Configure(logRepository, new FileInfo("log4net.xml"));

            System.Console.WriteLine(MiNetServer.MiNET);
            Log.Info(MiNetServer.MiNET);

            var service = new MiNetServer();

            Log.Info("Starting...");
            service.StartServer();

            System.Console.WriteLine("MiNET running. Press <enter> to stop service.");
            System.Console.ReadLine();
            service.StopServer();
        }
예제 #30
0
        internal void EnablePlugins(MiNetServer server, LevelManager levelManager)
        {
            foreach (object plugin in _plugins.ToArray())
            {
                IPlugin enablingPlugin = plugin as IPlugin;
                if (enablingPlugin == null)
                {
                    continue;
                }

                try
                {
                    enablingPlugin.OnEnable(new PluginContext(server, this, levelManager));
                }
                catch (Exception ex)
                {
                    Log.Warn("On enable plugin", ex);
                }
            }
        }
예제 #31
0
        internal void ExecuteStartup(MiNetServer server)
        {
            foreach (object plugin in _plugins)
            {
                IStartup startupClass = plugin as IStartup;
                if (startupClass == null)
                {
                    continue;
                }

                try
                {
                    startupClass.Configure(server);
                }
                catch (Exception ex)
                {
                    Log.Warn("Execute Startup class failed", ex);
                }
            }
        }
예제 #32
0
        internal void ExecuteStartup(MiNetServer server)
        {
            foreach (object plugin in _plugins)
            {
                IStartup startupClass = plugin as IStartup;
                if (startupClass == null) continue;

                try
                {
                    startupClass.Configure(server);
                }
                catch (Exception ex)
                {
                    Log.Warn("Execute Startup class failed", ex);
                }
            }
        }
예제 #33
0
        internal void EnablePlugins(MiNetServer server, List<Level> levels)
        {
            foreach (object plugin in _plugins)
            {
                IPlugin enablingPlugin = plugin as IPlugin;
                if (enablingPlugin == null) continue;

                try
                {
                    enablingPlugin.OnEnable(new PluginContext(server, this, levels));
                }
                catch (Exception ex)
                {
                    Log.Warn("On enable plugin", ex);
                }
            }
        }
예제 #34
0
 public PluginContext(MiNetServer server, PluginManager pluginManager, List<Level> levels)
 {
     Server = server;
     PluginManager = pluginManager;
     Levels = levels;
 }
예제 #35
0
 /// <summary>
 ///     Starts this instance.
 /// </summary>
 private void Start()
 {
     Log.Info("Starting MiNET");
     _server = new MiNetServer();
     _server.StartServer();
 }
예제 #36
0
		public PluginContext(MiNetServer server, PluginManager pluginManager, LevelManager levelManager)
		{
			Server = server;
			PluginManager = pluginManager;
			LevelManager = levelManager;
		}