Adds the SpongeForge server type
This commit is contained in:
parent
d06cf4114a
commit
2008ec8fd1
@ -1,16 +1,6 @@
|
|||||||
package net.knarcraft.minecraftserverlauncher.server;
|
package net.knarcraft.minecraftserverlauncher.server;
|
||||||
|
|
||||||
import net.knarcraft.minecraftserverlauncher.server.servertypes.BungeeCord;
|
import net.knarcraft.minecraftserverlauncher.server.servertypes.*;
|
||||||
import net.knarcraft.minecraftserverlauncher.server.servertypes.CraftBukkit;
|
|
||||||
import net.knarcraft.minecraftserverlauncher.server.servertypes.Custom;
|
|
||||||
import net.knarcraft.minecraftserverlauncher.server.servertypes.MCPCPlus;
|
|
||||||
import net.knarcraft.minecraftserverlauncher.server.servertypes.Paper;
|
|
||||||
import net.knarcraft.minecraftserverlauncher.server.servertypes.ServerType;
|
|
||||||
import net.knarcraft.minecraftserverlauncher.server.servertypes.Spigot;
|
|
||||||
import net.knarcraft.minecraftserverlauncher.server.servertypes.SpongeVanilla;
|
|
||||||
import net.knarcraft.minecraftserverlauncher.server.servertypes.Travertine;
|
|
||||||
import net.knarcraft.minecraftserverlauncher.server.servertypes.Vanilla;
|
|
||||||
import net.knarcraft.minecraftserverlauncher.server.servertypes.Waterfall;
|
|
||||||
|
|
||||||
import javax.naming.ConfigurationException;
|
import javax.naming.ConfigurationException;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
@ -146,6 +136,10 @@ public class ServerTypeHandler {
|
|||||||
newType = new SpongeVanilla("SpongeVanilla", false, serverVersions,
|
newType = new SpongeVanilla("SpongeVanilla", false, serverVersions,
|
||||||
serverTypeInfo[2], serverTypeInfo[3], serverTypeInfo[4], serverTypeInfo[5], serverTypeInfo[6]);
|
serverTypeInfo[2], serverTypeInfo[3], serverTypeInfo[4], serverTypeInfo[5], serverTypeInfo[6]);
|
||||||
break;
|
break;
|
||||||
|
case "SpongeForge":
|
||||||
|
newType = new SpongeForge("SpongeForge", false, serverVersions,
|
||||||
|
serverTypeInfo[2], serverTypeInfo[3], serverTypeInfo[4], serverTypeInfo[5], serverTypeInfo[6]);
|
||||||
|
break;
|
||||||
case "Custom":
|
case "Custom":
|
||||||
newType = new Custom("Custom");
|
newType = new Custom("Custom");
|
||||||
break;
|
break;
|
||||||
|
@ -20,12 +20,14 @@ public class ServerVersionContainer {
|
|||||||
private String waterfallVersion;
|
private String waterfallVersion;
|
||||||
private String travertineVersion;
|
private String travertineVersion;
|
||||||
private Map<String, String> spongeVanillaVersions;
|
private Map<String, String> spongeVanillaVersions;
|
||||||
|
private Map<String, String> spongeForgeVersions;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes a new server version container
|
* Initializes a new server version container
|
||||||
*/
|
*/
|
||||||
private ServerVersionContainer() {
|
private ServerVersionContainer() {
|
||||||
spongeVanillaVersions = new HashMap<>();
|
spongeVanillaVersions = new HashMap<>();
|
||||||
|
spongeForgeVersions = new HashMap<>();
|
||||||
loadState();
|
loadState();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,6 +53,7 @@ public class ServerVersionContainer {
|
|||||||
this.waterfallVersion = null;
|
this.waterfallVersion = null;
|
||||||
this.travertineVersion = null;
|
this.travertineVersion = null;
|
||||||
this.spongeVanillaVersions = new HashMap<>();
|
this.spongeVanillaVersions = new HashMap<>();
|
||||||
|
this.spongeForgeVersions = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -60,8 +63,8 @@ public class ServerVersionContainer {
|
|||||||
"bungeeVersion;" + bungeeVersion + "\n" +
|
"bungeeVersion;" + bungeeVersion + "\n" +
|
||||||
"waterfallVersion;" + waterfallVersion + "\n" +
|
"waterfallVersion;" + waterfallVersion + "\n" +
|
||||||
"travertineVersion;" + travertineVersion + "\n" +
|
"travertineVersion;" + travertineVersion + "\n" +
|
||||||
"spongeVanillaVersions;" +
|
"spongeVanillaVersions;" + mapToString(spongeVanillaVersions) + "\n" +
|
||||||
mapToString(spongeVanillaVersions);
|
"spongeForgeVersions;" + mapToString(spongeForgeVersions);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -92,10 +95,8 @@ public class ServerVersionContainer {
|
|||||||
PrintWriter file;
|
PrintWriter file;
|
||||||
try {
|
try {
|
||||||
if (!saveFile.exists()) {
|
if (!saveFile.exists()) {
|
||||||
if (!saveFile.getParentFile().exists()) {
|
if (!saveFile.getParentFile().exists() && !saveFile.getParentFile().mkdirs()) {
|
||||||
if (!saveFile.getParentFile().mkdirs()) {
|
throw new FileNotFoundException("Unable to create folder for version file");
|
||||||
throw new FileNotFoundException("Unable to create folder for version file");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (!saveFile.createNewFile()) {
|
if (!saveFile.createNewFile()) {
|
||||||
throw new FileNotFoundException("Unable to create version file");
|
throw new FileNotFoundException("Unable to create version file");
|
||||||
@ -157,7 +158,10 @@ public class ServerVersionContainer {
|
|||||||
travertineVersion = variableValue;
|
travertineVersion = variableValue;
|
||||||
break;
|
break;
|
||||||
case "spongeVanillaVersions":
|
case "spongeVanillaVersions":
|
||||||
parseSpongeVanillaVersions(variableValue);
|
parseSpongeVersions(spongeVanillaVersions, variableValue);
|
||||||
|
break;
|
||||||
|
case "spongeForgeVersions":
|
||||||
|
parseSpongeVersions(spongeForgeVersions, variableValue);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new IllegalArgumentException("Invalid key encountered in the server version file.");
|
throw new IllegalArgumentException("Invalid key encountered in the server version file.");
|
||||||
@ -165,15 +169,16 @@ public class ServerVersionContainer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads spongeVanilla versions from a text string and updates the version map
|
* Reads sponge versions from a text string and updates the version map
|
||||||
*
|
*
|
||||||
|
* @param targetMap <p>The map to update</p>
|
||||||
* @param data <p>The data string to parse</p>
|
* @param data <p>The data string to parse</p>
|
||||||
*/
|
*/
|
||||||
private void parseSpongeVanillaVersions(String data) {
|
private void parseSpongeVersions(Map<String,String> targetMap, String data) {
|
||||||
String[] versions = data.split(",");
|
String[] versions = data.split(",");
|
||||||
for (String version : versions) {
|
for (String version : versions) {
|
||||||
String[] versionData = version.split("!");
|
String[] versionData = version.split("!");
|
||||||
spongeVanillaVersions.put(versionData[0], versionData[1]);
|
targetMap.put(versionData[0], versionData[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -294,5 +299,25 @@ public class ServerVersionContainer {
|
|||||||
saveState();
|
saveState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a specific sponge forge version
|
||||||
|
*
|
||||||
|
* @param versionKey <p>The version to check current version of</p>
|
||||||
|
* @return <p>The current sponge forge version</p>
|
||||||
|
*/
|
||||||
|
public String getSpongeForgeVersion(String versionKey) {
|
||||||
|
return spongeForgeVersions.get(versionKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the current version for a given sponge forge version
|
||||||
|
*
|
||||||
|
* @param mapKey <p>The version key to set version for</p>
|
||||||
|
* @param newValue <p>The new current version</p>
|
||||||
|
*/
|
||||||
|
public void setSpongeForgeVersion(String mapKey, String newValue) {
|
||||||
|
spongeForgeVersions.put(mapKey, newValue);
|
||||||
|
saveState();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
package net.knarcraft.minecraftserverlauncher.server.servertypes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class represents the SpongeForge Minecraft server type
|
||||||
|
*/
|
||||||
|
public class SpongeForge extends SpongeVanilla {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new SpongeForge server type
|
||||||
|
*
|
||||||
|
* @param typeName <p>The name of this server type</p>
|
||||||
|
* @param isProxy <p>Whether this server type is a proxy server</p>
|
||||||
|
* @param versions <p>Available versions for this server type</p>
|
||||||
|
* @param versionURL <p>The URL used for downloading the version document</p>
|
||||||
|
* @param srcStart <p>The string to search for to determine newest version</p>
|
||||||
|
* @param srcEnd <p>The string marking the end of the newest version statement</p>
|
||||||
|
* @param downloadURL <p>The URL used for downloading the new file</p>
|
||||||
|
* @param downloadURLPart <p>A string used after the download url as an additional part of the URL</p>
|
||||||
|
*/
|
||||||
|
public SpongeForge(String typeName, boolean isProxy, String[] versions, String versionURL, String srcStart, String srcEnd, String downloadURL, String downloadURLPart) {
|
||||||
|
super(typeName, isProxy, versions, versionURL, srcStart, srcEnd, downloadURL, downloadURLPart);
|
||||||
|
this.oldVersionFunction = serverVersionContainer::getSpongeForgeVersion;
|
||||||
|
this.versionUpdateFunction = serverVersionContainer::setSpongeForgeVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -6,6 +6,9 @@ import net.knarcraft.minecraftserverlauncher.utility.CommonFunctions;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
import static net.knarcraft.minecraftserverlauncher.utility.CommonFunctions.downloadFile;
|
import static net.knarcraft.minecraftserverlauncher.utility.CommonFunctions.downloadFile;
|
||||||
|
|
||||||
@ -18,6 +21,9 @@ public class SpongeVanilla extends AbstractServerType {
|
|||||||
private final String srcStart;
|
private final String srcStart;
|
||||||
private final String srcEnd;
|
private final String srcEnd;
|
||||||
private final String downloadURLPart;
|
private final String downloadURLPart;
|
||||||
|
Function<String,String> oldVersionFunction;
|
||||||
|
BiConsumer<String,String> versionUpdateFunction;
|
||||||
|
final ServerVersionContainer serverVersionContainer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new SpongeVanilla server type
|
* Instantiates a new SpongeVanilla server type
|
||||||
@ -34,15 +40,17 @@ public class SpongeVanilla extends AbstractServerType {
|
|||||||
public SpongeVanilla(String typeName, boolean isProxy, String[] versions, String versionURL, String srcStart, String srcEnd,
|
public SpongeVanilla(String typeName, boolean isProxy, String[] versions, String versionURL, String srcStart, String srcEnd,
|
||||||
String downloadURL, String downloadURLPart) {
|
String downloadURL, String downloadURLPart) {
|
||||||
super(typeName, isProxy, versions, downloadURL);
|
super(typeName, isProxy, versions, downloadURL);
|
||||||
|
this.serverVersionContainer = ServerVersionContainer.getInstance();
|
||||||
this.versionURL = versionURL;
|
this.versionURL = versionURL;
|
||||||
this.srcStart = srcStart;
|
this.srcStart = srcStart;
|
||||||
this.srcEnd = srcEnd;
|
this.srcEnd = srcEnd;
|
||||||
this.downloadURLPart = downloadURLPart;
|
this.downloadURLPart = downloadURLPart;
|
||||||
|
this.oldVersionFunction = serverVersionContainer::getSpongeVanillaVersion;
|
||||||
|
this.versionUpdateFunction = serverVersionContainer::setSpongeVanillaVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean downloadJar(String folder, String version) throws IOException {
|
public boolean downloadJar(String folder, String version) throws IOException {
|
||||||
ServerVersionContainer versionContainer = ServerVersionContainer.getInstance();
|
|
||||||
String file = this.getName() + version + ".jar";
|
String file = this.getName() + version + ".jar";
|
||||||
File filePath = new File(folder + file);
|
File filePath = new File(folder + file);
|
||||||
|
|
||||||
@ -51,7 +59,7 @@ public class SpongeVanilla extends AbstractServerType {
|
|||||||
|
|
||||||
String jarURL = downloadURL + newestVersion + downloadURLPart + newestVersion + ".jar";
|
String jarURL = downloadURL + newestVersion + downloadURLPart + newestVersion + ".jar";
|
||||||
|
|
||||||
String oldVersion = versionContainer.getSpongeVanillaVersion(version);
|
String oldVersion = this.oldVersionFunction.apply(version);
|
||||||
//The file is already the newest version
|
//The file is already the newest version
|
||||||
if (filePath.isFile() && newestVersion.equals(oldVersion)) {
|
if (filePath.isFile() && newestVersion.equals(oldVersion)) {
|
||||||
return true;
|
return true;
|
||||||
@ -60,7 +68,7 @@ public class SpongeVanilla extends AbstractServerType {
|
|||||||
if (!downloadFile(jarURL, Paths.get(filePath.toURI()))) {
|
if (!downloadFile(jarURL, Paths.get(filePath.toURI()))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
versionContainer.setSpongeVanillaVersion(version, newestVersion);
|
versionUpdateFunction.accept(version, newestVersion);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
SpongeVanilla;1.12.2,1.11.2,1.10.2,1.8.9;https://dl-api.spongepowered.org/v1/org.spongepowered/spongevanilla/downloads?type=stable&minecraft=;"version":";",;https://repo.spongepowered.org/maven/org/spongepowered/spongevanilla/;/spongevanilla-
|
SpongeVanilla;1.12.2,1.11.2,1.10.2,1.8.9;https://dl-api.spongepowered.org/v1/org.spongepowered/spongevanilla/downloads?type=stable&minecraft=;"version":";",;https://repo.spongepowered.org/maven/org/spongepowered/spongevanilla/;/spongevanilla-
|
||||||
|
SpongeForge;1.12.2,1.11.2,1.10.2;https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads?type=stable&minecraft=;"version":";",;https://repo.spongepowered.org/maven/org/spongepowered/spongeforge/;/spongeforge-
|
||||||
Spigot;1.16.1,1.15.2,1.14.4,1.13.2,1.12.2,1.11.2,1.10.2,1.9.4,1.9.4,1.8.8,1.7.10,1.6.4-R2.1,1.5.2-R1.1,1.4.7-R1.1;https://static.knarcraft.net/archive/downloads/minecraftserverjars/Spigot/;spigot-
|
Spigot;1.16.1,1.15.2,1.14.4,1.13.2,1.12.2,1.11.2,1.10.2,1.9.4,1.9.4,1.8.8,1.7.10,1.6.4-R2.1,1.5.2-R1.1,1.4.7-R1.1;https://static.knarcraft.net/archive/downloads/minecraftserverjars/Spigot/;spigot-
|
||||||
MCPCplus;1.6.4,1.6.2,1.5.2,1.4.7;https://static.knarcraft.net/archive/downloads/minecraftserverjars/MCPC+/;mcpcplus
|
MCPCplus;1.6.4,1.6.2,1.5.2,1.4.7;https://static.knarcraft.net/archive/downloads/minecraftserverjars/MCPC+/;mcpcplus
|
||||||
Craftbukkit;1.13.2,1.12.2,1.11.2,1.10.2,1.9.4,1.8.8,1.7.10-R0.1,1.6.4-R2.0,1.5.2-R1.0,1.4.6-R0.3,1.3.2-R3.0,1.2.5-R2.0,1.1-R6,1.0.1-R1;https://static.knarcraft.net/archive/downloads/minecraftserverjars/Bukkit/;craftbukkit-
|
Craftbukkit;1.13.2,1.12.2,1.11.2,1.10.2,1.9.4,1.8.8,1.7.10-R0.1,1.6.4-R2.0,1.5.2-R1.0,1.4.6-R0.3,1.3.2-R3.0,1.2.5-R2.0,1.1-R6,1.0.1-R1;https://static.knarcraft.net/archive/downloads/minecraftserverjars/Bukkit/;craftbukkit-
|
||||||
|
Can't render this file because it contains an unexpected character in line 1 and column 151.
|
@ -41,6 +41,11 @@ public class JarDownloaderTest {
|
|||||||
singleDownloadTest(ServerTypeHandler.getByName("SpongeVanilla"));
|
singleDownloadTest(ServerTypeHandler.getByName("SpongeVanilla"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void spongeForgeDownloadTest() throws IOException, ConfigurationException {
|
||||||
|
singleDownloadTest(ServerTypeHandler.getByName("SpongeForge"));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void spigotDownloadTest() throws ConfigurationException, IOException {
|
public void spigotDownloadTest() throws ConfigurationException, IOException {
|
||||||
singleDownloadTest(ServerTypeHandler.getByName("Spigot"));
|
singleDownloadTest(ServerTypeHandler.getByName("Spigot"));
|
||||||
|
Loading…
Reference in New Issue
Block a user