Adds the SpongeForge server type

This commit is contained in:
2020-08-19 11:24:05 +02:00
parent d06cf4114a
commit 2008ec8fd1
6 changed files with 83 additions and 24 deletions

View File

@ -20,12 +20,14 @@ public class ServerVersionContainer {
private String waterfallVersion;
private String travertineVersion;
private Map<String, String> spongeVanillaVersions;
private Map<String, String> spongeForgeVersions;
/**
* Initializes a new server version container
*/
private ServerVersionContainer() {
spongeVanillaVersions = new HashMap<>();
spongeForgeVersions = new HashMap<>();
loadState();
}
@ -51,6 +53,7 @@ public class ServerVersionContainer {
this.waterfallVersion = null;
this.travertineVersion = null;
this.spongeVanillaVersions = new HashMap<>();
this.spongeForgeVersions = new HashMap<>();
}
@Override
@ -60,8 +63,8 @@ public class ServerVersionContainer {
"bungeeVersion;" + bungeeVersion + "\n" +
"waterfallVersion;" + waterfallVersion + "\n" +
"travertineVersion;" + travertineVersion + "\n" +
"spongeVanillaVersions;" +
mapToString(spongeVanillaVersions);
"spongeVanillaVersions;" + mapToString(spongeVanillaVersions) + "\n" +
"spongeForgeVersions;" + mapToString(spongeForgeVersions);
}
/**
@ -92,10 +95,8 @@ public class ServerVersionContainer {
PrintWriter file;
try {
if (!saveFile.exists()) {
if (!saveFile.getParentFile().exists()) {
if (!saveFile.getParentFile().mkdirs()) {
throw new FileNotFoundException("Unable to create folder for version file");
}
if (!saveFile.getParentFile().exists() && !saveFile.getParentFile().mkdirs()) {
throw new FileNotFoundException("Unable to create folder for version file");
}
if (!saveFile.createNewFile()) {
throw new FileNotFoundException("Unable to create version file");
@ -157,7 +158,10 @@ public class ServerVersionContainer {
travertineVersion = variableValue;
break;
case "spongeVanillaVersions":
parseSpongeVanillaVersions(variableValue);
parseSpongeVersions(spongeVanillaVersions, variableValue);
break;
case "spongeForgeVersions":
parseSpongeVersions(spongeForgeVersions, variableValue);
break;
default:
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>
*/
private void parseSpongeVanillaVersions(String data) {
private void parseSpongeVersions(Map<String,String> targetMap, String data) {
String[] versions = data.split(",");
for (String version : versions) {
String[] versionData = version.split("!");
spongeVanillaVersions.put(versionData[0], versionData[1]);
targetMap.put(versionData[0], versionData[1]);
}
}
@ -294,5 +299,25 @@ public class ServerVersionContainer {
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();
}
}