Ejemplo n.º 1
0
 /// <summary>
 /// Returns the motd for server.properties
 /// </summary>
 /// <param name="def">The default motd</param>
 /// <returns></returns>
 private string GetMotd(string def)
 {
     Console.WriteLine("Message of the day:\n\\u00A7");
     Console.WriteLine("Black: 0 | Dark Blue: 1 | Dark Green: 2 | Dark Aqua: 3 | Dark Red: 4\n" +
                       "Dark Purple: 5 | Gold: 6 | Gray: 7 | Dark Gray: 8 | Blue: 9 | Green: a\n" +
                       "Aqua: b | Red: c | Light Purple: d | Yellow: e | White: f\n" +
                       "Obfuscated: k | Bold: l | Strikethrough: s | Underline: n | Italic: o | Reset: r");
     return(Funcs.NullEmpty(def));
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Ask for the version to be used
        /// </summary>
        /// <returns>A validated version string</returns>
        private string AskForVersion()
        {
            Console.Clear();
            Console.WriteLine("Available versions:");
            string[]      files    = Directory.GetFiles(Variables.vFiles);
            List <string> versions = new List <string>();

            foreach (string file in files)
            {
                versions.Add(Path.GetFileNameWithoutExtension(file).Replace("minecraft_server.", ""));
            }
            Funcs.PrettyPrint(versions);
            Console.WriteLine($"Version [{Variables.VV}]: ");
            return(Funcs.NullEmpty(Variables.VV));
        }
Ejemplo n.º 3
0
        public static void Main(string[] args)
        {
            string action  = Assign(args, 0); // What the action is launch/create/update
            string arg1    = Assign(args, 1); // serverName or serverType
            string arg2    = Assign(args, 2); // startType or newVersion
            string version = Assign(args, 3); // The server version (applicable if launchType==legacy)

            if (action == "")                 // Gets program action
            {
                Console.WriteLine("Would you like to launch, create, or update?");
                Console.Write("Action [launch]: ");
                action = Funcs.NullEmpty("launch");
            }

            // Both serverName and serverType are arg1, context depending
            string serverName = arg1, serverType = serverName;
            // serverName: The name of the server
            // serverType: The type of server (vanilla/snapshot/both)

            // Both launchType and newVersion are arg2, context depending
            string launchFile = arg2, newVersion = launchFile;
            // launchFile: The launch file the server should use (backup/restore/legacy/default)
            // newVersion: The new version to update to

            // Create the server object
            Server server = new Server(serverName, launchFile, version);

            switch (action.ToLower().First <char>())
            {
            case 'l':     // Launch server
                server.Launch();
                break;

            case 'c':     // Create server, then launch server
                server.Create();
                goto case 'l';

            case 'u':     // Update specified version
                server.Update(serverType, newVersion);
                break;
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Updates servers to specified version
        /// </summary>
        /// <param name="serverType">The type of server Vanilla/Snapshot/Legacy</param>
        /// <param name="newVersion">The new version to update to</param>
        /// <param name="changeVersionsTXT">Should the version be updated in the text file (if no, serverType is irrelevant)</param>
        public void Update(string serverType, string newVersion)
        {
            ServerType = serverType;
            NewVersion = newVersion;

            if (ServerType == "") // Gets serverType
            {
                Console.Clear();
                Console.WriteLine("What is the server type?");
                Console.WriteLine("Server types include:");
                Funcs.PrettyPrint(new string[] { "vanilla", "snapshot", "both" });
                Console.Write("Server Type [vanilla]: ");
                ServerType = Funcs.NullEmpty("vanilla").ToLower();
            }

            // Gets the new version if empty
            if (String.IsNullOrEmpty(NewVersion))
            {
                string currentVersion = "";
                string latestVersion  = "";
                switch (ServerType.ToLower().First <char>())
                {
                case 'v':     // Vanilla
                    currentVersion = Variables.VV;
                    latestVersion  = Manifest.latest.release;
                    Console.WriteLine($"Latest vanilla version is: {latestVersion}");
                    goto default;

                case 's':     // Snapshot
                    currentVersion = Variables.SV;
                    latestVersion  = Manifest.latest.snapshot;
                    Console.WriteLine($"Latest snapshot version is: {latestVersion}");
                    goto default;

                case 'b':
                    Update("both");
                    return;

                default:
                    Console.WriteLine($"What is the new minecraft version? Current version is: {currentVersion}");
                    Console.Write($"New version [{latestVersion}]: ");
                    NewVersion = Funcs.NullEmpty(latestVersion);
                    break;
                }
                // The lower case `newVersion` is used because we want to know if the passed arg was null
                if (string.IsNullOrEmpty(currentVersion) || newVersion == null)
                {
                    UpdateVersions();
                    Variables.LoadVariables();
                }
            }

            // If the file already exists, don't do anything
            if (File.Exists(LauncherPath))
            {
                Console.WriteLine("File already exists.");
                UpdateVersions();
                Console.ReadLine();
                return;
            }

            Download();
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Launches the server
        /// </summary>
        public void Launch()
        {
            // Gets the name of the Server
            while (ServerName == "")
            {
                Console.Clear();
                Console.WriteLine("----------");
                IEnumerable <string> folders = Directory.GetDirectories(ParentDir).Select(i => Path.GetFileName(i));
                Funcs.PrettyPrint(folders);
                Console.WriteLine("\nWhich server would you like to start?");
                Console.Write("Server Name: ");
                ServerName = Console.ReadLine();
                if (string.IsNullOrEmpty(ServerName))
                {
                    Console.WriteLine("You must specify a name.");
                    Console.ReadLine();
                }
            }

            // If the directory exists, launch
            if (Directory.Exists(ServerDir))
            {
                // Sets current directory to that of the selected server
                Directory.SetCurrentDirectory(ServerDir);

                // Asks for the StartType
                if (LaunchType == "")
                {
                    Console.Clear();
                    Console.WriteLine("----------");
                    string[] allFiles = Directory.GetFiles(ServerDir);
                    // Prints all files with .type extension in the server's directory (backup, restore, default, legacy)
                    List <string> files = new List <string>();
                    foreach (string file in allFiles)
                    {
                        if (Path.GetExtension(file) == ".type")
                        {
                            files.Add(Path.GetFileNameWithoutExtension(file));
                        }
                    }
                    files.Add("legacy (for specific version)");
                    Funcs.PrettyPrint(files);
                    Console.WriteLine("Which start type would you like to use?");
                    Console.Write("Start Type [default]: ");
                    LaunchType = Funcs.NullEmpty("default");

                    if (LaunchType.ToLower().First <char>() != 'l') // If the launch file isn't legacy
                    {
                        IEnumerable <string> fileLines = new string[] { "vanilla" };
                        if (File.Exists(Path.Combine(ServerDir, "default.type")))
                        {
                            fileLines = File.ReadLines(Path.Combine(ServerDir, "default.type"));
                        }
                        switch (fileLines.DefaultIfEmpty("vanilla").FirstOrDefault().ToLower().First <char>())
                        {
                        case 'v':     // vanilla
                            ServerType = "vanilla";
                            Version    = Variables.VV;
                            break;

                        case 's':     // snapshot
                            ServerType = "snapshot";
                            Version    = Variables.SV;
                            break;

                        case 'c':                  // custom
                            ServerType = "legacy"; // Version will be set before starting server
                            break;

                        default:     // custom (predefined): i.e. 1.8.9
                            ServerType = "legacy";
                            Version    = fileLines.First();
                            break;
                        }
                    }
                }
            }
            // If the server doesn't exist, ask if we should create it
            else
            {
                Console.WriteLine($"The server {ServerName}, does not exist. Would you like to create it?");
                Console.Write("Create? Y/[N]: ");
                bool input = Funcs.ValidateBool(false);
                // Create the server, or exit program
                if (input)
                {
                    Create();
                }
                else
                {
                    return;
                }
            }
            // Start the server
            Start();
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Creates the server
        /// </summary>
        public void Create()
        {
            LaunchType = "default";

            // Set ServerName (exits if name is blank)
            while (ServerName == "")
            {
                Console.WriteLine("What is the server name?");
                Console.Write("Name: ");
                ServerName = Console.ReadLine();
                if (string.IsNullOrEmpty(ServerName))
                {
                    Console.WriteLine("You must specify a name.");
                    Console.ReadLine();
                    continue;
                }
                if (Directory.Exists(ServerDir))
                {
                    Console.WriteLine("That server already exists, enter a new server name.");
                    ServerName = "";
                }
            }

            // Create and go to directory
            Directory.CreateDirectory(ServerDir);
            Directory.SetCurrentDirectory(ServerDir);

            // Get text to put in `default.type`
            Console.Clear();
            Console.WriteLine("----------");
            Console.WriteLine("Launch types: ");
            Funcs.PrettyPrint(new string[] { "vanilla", "snapshot", "custom (1.8.9, 1.13.2, etc.)" });
            Console.WriteLine("Launch type [vanilla]: ");
            string launchType = Funcs.NullEmpty("vanilla");

            // Make .type files
            Write("backup.type", "");
            Write("restore.type", "");
            Write("default.type", launchType); // vanilla, snapshot, custom {1.8.9,1.13.1,etc.}

            // The eula has to be accepted before the server can run, automatically accept this
            Write("eula.txt", "eula=true");

            // Op and Whitelist self
            string myUID  = "1b7ffd7a-6c9a-463e-8910-60c7a531b2a4";
            string myName = "maxh76";

            Write("ops.json", $@"[{{ ""uuid"":""{myUID}"", ""name"":""{myName}"", ""level"":4, ""bypassesplayerlimit"":true }}]");
            Write("whitelist.json", $@"[{{ ""uuid"":""{myUID}"", ""name"":""{myName}"" }}]");

            /*
             * These files are created when the server runs for the first time.
             * Since they are empty we can let the server handle that
             * Write("banned-ips.json", false, $"[]");
             * Write("banned-players.json", false, $"[]");
             * Write("usercache.json", false, $"[]");
             */

            // Copy the server icon to the directory (if it exists)
            string iconName = "server-icon.png";
            string iconPath = Path.Combine(Variables.sFiles, iconName);

            if (File.Exists(iconPath))
            {
                File.Copy(iconPath, Path.Combine(ServerDir, iconName), true);
            }
            else
            {
                Console.WriteLine(@"No server icon (""server-icon.png"") exists");
                Console.WriteLine(@"Place an image called server-icon.png in the folder where this executable is stored.");
            }

            // Create/change server.properties and set motd
            Console.WriteLine("Would you like to make settings changes?");
            Console.Write("Changes Y/[N]: ");
            bool changes = Funcs.ValidateBool(false);

            ServerProperties(changes);
        }