diff --git a/src/main/java/net/knarcraft/minecraftserverlauncher/server/ServerTypeHandler.java b/src/main/java/net/knarcraft/minecraftserverlauncher/server/ServerTypeHandler.java index 4141b7c..7d1bb02 100644 --- a/src/main/java/net/knarcraft/minecraftserverlauncher/server/ServerTypeHandler.java +++ b/src/main/java/net/knarcraft/minecraftserverlauncher/server/ServerTypeHandler.java @@ -122,7 +122,7 @@ public class ServerTypeHandler { break; case "Bungee": newType = new BungeeCord("Bungee", true, serverVersions, serverTypeInfo[2], - serverTypeInfo[3], serverTypeInfo[4], serverTypeInfo[5]); + serverTypeInfo[3], serverTypeInfo[4], serverTypeInfo[5], serverTypeInfo[6], serverTypeInfo[7]); break; case "Travertine": newType = new Travertine("Travertine", true, serverVersions, serverTypeInfo[2], diff --git a/src/main/java/net/knarcraft/minecraftserverlauncher/server/servertypes/BungeeCord.java b/src/main/java/net/knarcraft/minecraftserverlauncher/server/servertypes/BungeeCord.java index 5759212..6aee13b 100644 --- a/src/main/java/net/knarcraft/minecraftserverlauncher/server/servertypes/BungeeCord.java +++ b/src/main/java/net/knarcraft/minecraftserverlauncher/server/servertypes/BungeeCord.java @@ -18,6 +18,8 @@ public class BungeeCord extends AbstractServerType { private final String versionURL; private final String srcStart; private final String srcEnd; + private final String oldVersionsURL; + private final String oldVersionsPrefix; /** * Instantiates a new BungeeCord server type @@ -30,18 +32,39 @@ public class BungeeCord extends AbstractServerType { * @param srcEnd
The string marking the end of the version id
* @param downloadURLThe URL used for downloading the latest version
*/ - public BungeeCord(String typeName, boolean isProxy, String[] versions, String versionURL, String srcStart, String srcEnd, String downloadURL) { + public BungeeCord(String typeName, boolean isProxy, String[] versions, String versionURL, String srcStart, + String srcEnd, String downloadURL, String oldVersionsURL, String oldVersionsPrefix) { super(typeName, isProxy, versions, downloadURL); this.versionURL = versionURL; this.srcStart = srcStart; this.srcEnd = srcEnd; + this.oldVersionsURL = oldVersionsURL; + this.oldVersionsPrefix = oldVersionsPrefix; } @Override public boolean downloadJar(String folder, String version) throws IOException { + String targetFile = this.getName() + version + ".jar"; + File filePath = new File(folder + targetFile); + + if (version.equals("Latest")) { + return downloadLatestJar(filePath); + } else { + String file = oldVersionsPrefix + version + ".jar"; + return filePath.isFile() || downloadFile(oldVersionsURL + file, Paths.get(filePath.toURI())); + } + } + + /** + * Downloads the latest BungeeCord .jar file + * + * @param filePathThe file path to download the new jar to
+ * @returnTrue if the jar exists or was successfully downloaded
+ * @throws IOExceptionIf unable to download the new jar
+ */ + private boolean downloadLatestJar(File filePath) throws IOException { ServerVersionContainer versionContainer = ServerVersionContainer.getInstance(); - String file = this.getName() + version + ".jar"; - File filePath = new File(folder + file); + String newestVersion = stringBetween(readFile(versionURL), srcStart, srcEnd); String oldVersion = versionContainer.getBungeeVersion(); //The file is already the newest version @@ -55,4 +78,5 @@ public class BungeeCord extends AbstractServerType { versionContainer.setBungeeVersion(newestVersion); return true; } + } diff --git a/src/main/resources/servertypes.csv b/src/main/resources/servertypes.csv index 9b8a35e..b3a2180 100644 --- a/src/main/resources/servertypes.csv +++ b/src/main/resources/servertypes.csv @@ -1,11 +1,11 @@ +Vanilla;Latest,Snapshot,1.16.2,1.15.2,1.14.4,1.13.2,1.12.2,1.11.2,1.10.2,1.9.4,1.8.9,1.7.10,1.6.4,1.5.2,1.4.7,1.3.2,1.2.5;https://launchermeta.mojang.com/mc/game/version_manifest.json;"release":";";https://s3.amazonaws.com/Minecraft.Download/versions/ 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- 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,b1.8.1,b1.7.3;https://static.knarcraft.net/archive/downloads/minecraftserverjars/Bukkit/;craftbukkit- Paper;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.8.8;https://static.knarcraft.net/archive/downloads/minecraftserverjars/Paper/;Paper- -Bungee;Latest;https://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/bootstrap/target/;Artifacts of BungeeCord #; ;http://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/bootstrap/target/BungeeCord.jar +Bungee;Latest,1.7.10,1.6.4,1.5.2,1.4.7;https://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/bootstrap/target/;Artifacts of BungeeCord #; ;http://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/bootstrap/target/BungeeCord.jar;https://static.knarcraft.net/archive/downloads/minecraftserverjars/BungeeCord/;BungeeCord- Waterfall;Latest;https://papermc.io/api/v1/waterfall/1.16;"latest":";";https://papermc.io/api/v1/waterfall/1.16/ Travertine;Latest;https://papermc.io/api/v1/travertine/1.16;"latest":";";https://papermc.io/api/v1/travertine/1.16/ -Vanilla;Latest,Snapshot,1.16.2,1.15.2,1.14.4,1.13.2,1.12.2,1.11.2,1.10.2,1.9.4,1.8.9,1.7.10,1.6.4,1.5.2,1.4.7,1.3.2,1.2.5;https://launchermeta.mojang.com/mc/game/version_manifest.json;"release":";";https://s3.amazonaws.com/Minecraft.Download/versions/ Custom;; \ No newline at end of file