Files
ServerCreator-for-Minecraft…/ServCreator/ServCreator/CreateForm.cs
T
2021-02-05 22:23:28 +01:00

130 lines
4.9 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
using System.Net;
using Newtonsoft.Json;
namespace ServCreator
{
public partial class CreateForm : Form
{
public CreateForm()
{
InitializeComponent();
}
private void checkJavaVersion(object sender, EventArgs e)
{
Process checkJava = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "cmd.exe",
Arguments = "/c java -version",
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardError = true
}
};
checkJava.Start();
string version = checkJava.StandardError.ReadToEnd();
MessageBox.Show(version, "Java Version", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void createServer(object sender, EventArgs e)
{
if (serverEngineCB.Text != "" && serverNameTB.Text != "" && serverPathTB.Text != "" && serverVersionCB.Text != "" && minRAM.Value <= maxRAM.Value && maxRAM.Value >= minRAM.Value && minRAM.Value != 0)
{
// Pobieranie pliku serwerowego
progressBar1.Visible = true;
WebClient downloader = new WebClient();
downloader.DownloadProgressChanged += (s, v) => { progressBar1.Value = v.ProgressPercentage; };
downloader.DownloadFileAsync(new Uri("https://file.siemv.pl/gry/minecraft/server/" + serverVersionCB.Text + "/" + serverEngineCB.Text + "/" + "server.jar"), serverPathTB.Text + "\\server.jar");
// Tworzenie pliku EULA
StreamWriter eulaWriter = new StreamWriter(serverPathTB.Text + "\\eula.txt");
eulaWriter.Write("#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula)." + Environment.NewLine + "#" + DateTime.Now + Environment.NewLine + "eula=true");
eulaWriter.Close();
// Tworzenie pliku startowego serwera
StreamWriter startWriter = new StreamWriter(serverPathTB.Text + "\\start.bat");
startWriter.Write("@echo off" + Environment.NewLine + "java -Xms" + minRAM.Value + "M -Xmx" + maxRAM.Value + "M " + argumentsTB.Text + " -jar server.jar nogui");
startWriter.Close();
// Tworzenie pliku dla ServManager
Server server = new Server();
server.Name = serverNameTB.Text;
server.Path = serverPathTB.Text;
server.Engine = serverEngineCB.Text;
server.Version = serverVersionCB.Text;
StreamWriter configWriter = new StreamWriter(serverPathTB.Text + "\\servmanager.json");
configWriter.Write(JsonConvert.SerializeObject(server));
configWriter.Close();
downloader.DownloadFileCompleted += (s, v) => {
progressBar1.Visible = false;
MessageBox.Show("Server " + serverNameTB.Text + " was created in a folder: " + serverPathTB.Text + ". After a short moment you will be redirected to the control panel.");
ControlPanelForm controlPanel = new ControlPanelForm(serverPathTB.Text + "\\servmanager.json");
controlPanel.Show();
this.Close();
};
}
else
MessageBox.Show("Nie wypełniono wymaganych pól! Uzupełnij je i dopiero wtedy możesz utworzyć serwer");
}
private void selectPath(object sender, EventArgs e)
{
if (pathSelector.ShowDialog() == DialogResult.OK)
serverPathTB.Text = pathSelector.SelectedPath;
}
public class Servers
{
[JsonProperty]
public Server server { get; set; }
}
[JsonObject(MemberSerialization.OptIn)]
public class Server
{
[JsonProperty]
public string Name { get; set; }
[JsonProperty]
public string Path { get; set; }
[JsonProperty]
public string Version { get; set; }
[JsonProperty]
public string Engine { get; set; }
}
private void CreateForm_Load(object sender, EventArgs e)
{
serverEngineCB.SelectedIndex = 0;
serverVersionCB.SelectedIndex = 0;
}
private void CreateForm_FormClosing(object sender, FormClosingEventArgs e)
{
Form1 form1 = new Form1();
form1.Visible = true;
}
}
}