Server version combo is updated on server type change

This commit is contained in:
Kristian Knarvik 2018-01-30 13:39:09 +01:00
parent 1c00ae9bab
commit 559e7bb38a
4 changed files with 110 additions and 23 deletions

View File

@ -140,4 +140,37 @@ public class Profile {
} }
} }
} }
public void setVersion(String type, String version) {
if (!version.equals("")) {
switch (type) {
case "Vanilla":
this.vanillaVersion = version;
break;
case "Snapshot":
this.snapshotVersion = version;
break;
case "SpongeVanilla":
this.spongeVanillaVersion = version;
break;
case "Bungee":
this.bungeeVersion = version;
}
}
}
public String getVersion(String type) {
switch (type) {
case "Vanilla":
return this.vanillaVersion;
case "Snapshot":
return this.snapshotVersion;
case "SpongeVanilla":
return this.spongeVanillaVersion;
case "Bungee":
return this.bungeeVersion;
default:
return "";
}
}
} }

View File

@ -1,5 +1,6 @@
package net.knarcraft.serverlauncher.server; package net.knarcraft.serverlauncher.server;
import net.knarcraft.serverlauncher.profile.Profile;
import net.knarcraft.serverlauncher.userinterface.GUI; import net.knarcraft.serverlauncher.userinterface.GUI;
import java.io.*; import java.io.*;
@ -18,7 +19,9 @@ import java.util.ArrayList;
*/ */
public class Server { public class Server {
/** Available ram sizes. For GUI dropdown */ /** Available ram sizes. For GUI dropdown */
private static final String[] ramList = {"512M", "1G", "2G", "3G", "4G", "5G", "6G", "7G", "8G", "9G", "10G", "11G", "12G", "13G", "14G", "15G", "16G"}; private static final String[] ramList = {
"512M", "1G", "2G", "3G", "4G", "5G", "6G", "7G", "8G", "9G", "10G","11G", "12G", "13G", "14G", "15G", "16G"
};
private final String name; private final String name;
private String path; private String path;
@ -60,8 +63,12 @@ public class Server {
* @return A representation of the name of a jarfile. * @return A representation of the name of a jarfile.
*/ */
private String getType() { private String getType() {
if (this.type.getName().equals("Custom")) {
return this.serverVersion;
} else {
return this.type.getName() + this.serverVersion + ".jar"; return this.type.getName() + this.serverVersion + ".jar";
} }
}
public String getName() { public String getName() {
return this.name; return this.name;
@ -155,7 +162,15 @@ public class Server {
return false; return false;
} }
try { try {
ProcessBuilder builder = new ProcessBuilder("java", "-Xmx" + this.maxRam, "-Xms512M", "-Djline.terminal=jline.UnsupportedTerminal", "-Dcom.mojang.eula.agree=true", "-jar", "\"" + this.path + "\\" + this.getType() + "\""); ProcessBuilder builder = new ProcessBuilder(
"java",
"-Xmx" + this.maxRam,
"-Xms512M",
"-Djline.terminal=jline.UnsupportedTerminal",
"-Dcom.mojang.eula.agree=true",
"-jar",
"\"" + this.path + "\\" + this.getType() + "\""
);
builder.directory(new File(this.path)); builder.directory(new File(this.path));
builder.redirectErrorStream(true); builder.redirectErrorStream(true);
this.process = builder.start(); this.process = builder.start();
@ -182,12 +197,15 @@ public class Server {
AdvancedServerType type; AdvancedServerType type;
File file = new File(this.path + "\\" + this.getType()); File file = new File(this.path + "\\" + this.getType());
Path filePath = Paths.get(this.path + "\\" + this.getType()); Path filePath = Paths.get(this.path + "\\" + this.getType());
Profile currentProfile = GUI.getGUI().currentProfile();
String versionText; String versionText;
String newestVersion; String newestVersion;
String url = this.type.getDownloadURL();
String name = this.type.getName();
String ver = this.serverVersion;
boolean success; boolean success;
switch (this.type.getName()) { switch (this.type.getName()) {
case "Custom": case "Custom":
//TODO: Change Custom to use path as serverdir + input.
if (!file.isFile()) { if (!file.isFile()) {
throw new FileNotFoundException("Specified custom jar was not found."); throw new FileNotFoundException("Specified custom jar was not found.");
} }
@ -196,8 +214,8 @@ public class Server {
case "Craftbukkit": case "Craftbukkit":
case "MCPCplus": case "MCPCplus":
if (!file.isFile()) { if (!file.isFile()) {
success = downloadFile(this.type.getDownloadURL() + this.type.getName() + this.serverVersion + ".jar", filePath); success = downloadFile(url + name + ver + ".jar", filePath);
System.out.println(this.type.getDownloadURL() + this.type.getName() + this.serverVersion + ".jar"); System.out.println(url + name + ver + ".jar");
if (!success) { if (!success) {
throw new FileNotFoundException("Jar file could not be downloaded."); throw new FileNotFoundException("Jar file could not be downloaded.");
} }
@ -213,14 +231,16 @@ public class Server {
throw new FileNotFoundException("Version file could not be downloaded."); throw new FileNotFoundException("Version file could not be downloaded.");
} }
newestVersion = stringBetween(versionText, type.getSrcStart(), type.getSrcEnd()); newestVersion = stringBetween(versionText, type.getSrcStart(), type.getSrcEnd());
success = downloadFile(this.type.getDownloadURL() + newestVersion + type.getDownloadURLPart() + newestVersion + ".jar", filePath); if (!file.isFile() || !newestVersion.equals(currentProfile.getVersion(name))) {
//TODO: Register the new version number, and only download if version mismatch or missing file. success = downloadFile(url + newestVersion + type.getDownloadURLPart() + newestVersion + ".jar", filePath);
GUI.getGUI().currentProfile().setVersion(this.type.getName(), newestVersion);
if (!success) { if (!success) {
throw new FileNotFoundException("Jar file could not be downloaded."); throw new FileNotFoundException("Jar file could not be downloaded.");
} }
}
} else { } else {
if (!file.isFile()) { if (!file.isFile()) {
success = downloadFile(this.type.getDownloadURL() + this.serverVersion + type.getDownloadURLPart() + this.serverVersion + ".jar", filePath); success = downloadFile(url + ver + type.getDownloadURLPart() + ver + ".jar", filePath);
if (!success) { if (!success) {
throw new FileNotFoundException("Jar file could not be downloaded."); throw new FileNotFoundException("Jar file could not be downloaded.");
} }
@ -235,27 +255,31 @@ public class Server {
throw new FileNotFoundException("Version file could not be downloaded."); throw new FileNotFoundException("Version file could not be downloaded.");
} }
newestVersion = stringBetween(versionText, type.getSrcStart(), type.getSrcEnd()); newestVersion = stringBetween(versionText, type.getSrcStart(), type.getSrcEnd());
success = downloadFile(this.type.getDownloadURL() + newestVersion + type.getDownloadURLPart() + newestVersion + ".jar", filePath); if (!file.isFile() || !newestVersion.equals(currentProfile.getVersion(name))) {
//TODO: Register the new version number, and only download if version mismatch or missing file. success = downloadFile(url + newestVersion + type.getDownloadURLPart() + newestVersion + ".jar", filePath);
currentProfile.setVersion(name, newestVersion);
if (!success) { if (!success) {
throw new FileNotFoundException("Jar file could not be downloaded."); throw new FileNotFoundException("Jar file could not be downloaded.");
} }
}
break; break;
case "Bungee": case "Bungee":
/*type = (AdvancedServerType) this.type; type = (AdvancedServerType) this.type;
try { try {
versionText = readFile(this.type.getVersionURL()); versionText = readFile(type.getVersionURL());
} catch (IOException e) { } catch (IOException e) {
throw new FileNotFoundException("Version file could not be downloaded."); throw new FileNotFoundException("Version file could not be downloaded.");
} }
newestVersion = stringBetween(versionText, type.getSrcStart(), type.getSrcEnd());*/ newestVersion = stringBetween(versionText, type.getSrcStart(), type.getSrcEnd());
success = downloadFile(this.type.getDownloadURL(), filePath); if (!file.isFile() || !newestVersion.equals(currentProfile.getVersion(name))) {
//TODO: Register the new version number, and only download if version mismatch or missing file. success = downloadFile(url, filePath);
currentProfile.setVersion(name, newestVersion);
if (!success) { if (!success) {
throw new FileNotFoundException("Jar file could not be downloaded."); throw new FileNotFoundException("Jar file could not be downloaded.");
} }
} }
} }
}
/** /**
* Reads a file from a website. * Reads a file from a website.

View File

@ -94,6 +94,10 @@ public class GUI implements ActionListener {
return gui; return gui;
} }
public ArrayList<ServerTab> getServerTabs() {
return this.serverTabs;
}
/** /**
* Removes a server's tab, removes it from the list of tabs, and removes the server from Profile.java * Removes a server's tab, removes it from the list of tabs, and removes the server from Profile.java
* *
@ -101,7 +105,6 @@ public class GUI implements ActionListener {
*/ */
public void removeServer(ServerTab tab) { public void removeServer(ServerTab tab) {
for (int i = 0; i < this.serverTabs.size(); i++) { for (int i = 0; i < this.serverTabs.size(); i++) {
System.out.println(this.serverTabs.get(i));
if(this.serverTabs.get(i) == tab) { if(this.serverTabs.get(i) == tab) {
serversPane.remove(i); serversPane.remove(i);
currentProfile().removeServer(i); currentProfile().removeServer(i);
@ -473,6 +476,7 @@ public class GUI implements ActionListener {
*/ */
private void save() { private void save() {
//TODO: Finish save //TODO: Finish save
} }
/** /**

View File

@ -16,6 +16,7 @@ class ServerTab implements ActionListener {
private final JButton btnBrowse; private final JButton btnBrowse;
private final JTextField directory; private final JTextField directory;
//TODO: Add custom input field + update combo boxes on version change.
public ServerTab(String name) { public ServerTab(String name) {
JPanel panel = new JPanel(); JPanel panel = new JPanel();
@ -113,6 +114,31 @@ class ServerTab implements ActionListener {
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
directory.setText(chooser.getSelectedFile().toString()); directory.setText(chooser.getSelectedFile().toString());
} }
} else if (e.getSource() == serverTypes) {
serverVersions.removeAllItems();
String selectedserverTypes = null;
Object selectedType = serverTypes.getSelectedItem();
if (selectedType != null) {
selectedserverTypes = selectedType.toString();
}
if (selectedserverTypes != null) {
if (selectedserverTypes.equals("Custom")) {
serverVersions.setEditable(true);
} else {
serverVersions.setEditable(false);
ServerType current = null;
for (ServerType servertype : ServerType.getServerTypes()) {
if (servertype.getName().equals(selectedserverTypes)) {
current = servertype;
}
}
if (current != null) {
for (String version : current.getVersions()) {
serverVersions.addItem(version);
}
}
}
}
} }
} }
} }