From 04daf560f21489740aece081ba309e0942b7869e Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 29 Apr 2021 08:03:46 +0200 Subject: [PATCH 01/91] refactor(DI): Restructure and rewrite SPC for dependency injection. Removes Reference for now. Get rid of statics where possible. --- .../griefed/serverpackcreator/CLISetup.java | 257 ------ .../serverpackcreator/ConfigCheck.java | 822 ++++++++++++++--- .../griefed/serverpackcreator/CopyFiles.java | 261 ------ .../serverpackcreator/CreateServerPack.java | 824 ++++++++++++++++++ .../griefed/serverpackcreator/FilesSetup.java | 325 +++---- .../de/griefed/serverpackcreator/Handler.java | 142 --- .../de/griefed/serverpackcreator/Main.java | 106 ++- .../griefed/serverpackcreator/Reference.java | 304 ------- .../serverpackcreator/ServerSetup.java | 143 --- .../serverpackcreator/ServerUtilities.java | 362 -------- ...teModpack.java => CurseCreateModpack.java} | 119 +-- .../{Files.java => CurseFiles.java} | 2 +- .../{Minecraft.java => CurseMinecraft.java} | 8 +- .../{ModLoaders.java => CurseModLoaders.java} | 2 +- .../{Modpack.java => CurseModpack.java} | 18 +- .../{Splines.java => CurseSplines.java} | 14 +- .../gui/{About.java => AboutTab.java} | 54 +- .../gui/{TabbedPane.java => CreateGui.java} | 82 +- ...rverPack.java => CreateServerPackTab.java} | 255 +++--- ...Log.java => ModloaderInstallerLogTab.java} | 25 +- ...rLog.java => ServerPackCreatorLogTab.java} | 24 +- .../i18n/LocalizationManager.java | 131 ++- .../serverpackcreator/CLISetupTest.java | 39 - .../serverpackcreator/ConfigCheckTest.java | 77 +- .../serverpackcreator/CopyFilesTest.java | 219 ----- .../CreateServerPackTest.java | 428 +++++++++ .../serverpackcreator/FilesSetupTest.java | 62 +- .../serverpackcreator/ServerSetupTest.java | 122 --- .../ServerUtilitiesTest.java | 136 --- ...kTest.java => CurseCreateModpackTest.java} | 22 +- .../resources/fabric_tests/server_pack.zip | Bin 664 -> 148 bytes 31 files changed, 2668 insertions(+), 2717 deletions(-) delete mode 100644 src/main/java/de/griefed/serverpackcreator/CLISetup.java delete mode 100644 src/main/java/de/griefed/serverpackcreator/CopyFiles.java create mode 100644 src/main/java/de/griefed/serverpackcreator/CreateServerPack.java delete mode 100644 src/main/java/de/griefed/serverpackcreator/Handler.java delete mode 100644 src/main/java/de/griefed/serverpackcreator/Reference.java delete mode 100644 src/main/java/de/griefed/serverpackcreator/ServerSetup.java delete mode 100644 src/main/java/de/griefed/serverpackcreator/ServerUtilities.java rename src/main/java/de/griefed/serverpackcreator/curseforgemodpack/{CreateModpack.java => CurseCreateModpack.java} (78%) rename src/main/java/de/griefed/serverpackcreator/curseforgemodpack/{Files.java => CurseFiles.java} (96%) rename src/main/java/de/griefed/serverpackcreator/curseforgemodpack/{Minecraft.java => CurseMinecraft.java} (75%) rename src/main/java/de/griefed/serverpackcreator/curseforgemodpack/{ModLoaders.java => CurseModLoaders.java} (94%) rename src/main/java/de/griefed/serverpackcreator/curseforgemodpack/{Modpack.java => CurseModpack.java} (76%) rename src/main/java/de/griefed/serverpackcreator/curseforgemodpack/{Splines.java => CurseSplines.java} (92%) rename src/main/java/de/griefed/serverpackcreator/gui/{About.java => AboutTab.java} (73%) rename src/main/java/de/griefed/serverpackcreator/gui/{TabbedPane.java => CreateGui.java} (63%) rename src/main/java/de/griefed/serverpackcreator/gui/{CreateServerPack.java => CreateServerPackTab.java} (75%) rename src/main/java/de/griefed/serverpackcreator/gui/{ModloaderInstallerLog.java => ModloaderInstallerLogTab.java} (59%) rename src/main/java/de/griefed/serverpackcreator/gui/{ServerPackCreatorLog.java => ServerPackCreatorLogTab.java} (63%) delete mode 100644 src/test/java/de/griefed/serverpackcreator/CLISetupTest.java delete mode 100644 src/test/java/de/griefed/serverpackcreator/CopyFilesTest.java create mode 100644 src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java delete mode 100644 src/test/java/de/griefed/serverpackcreator/ServerSetupTest.java delete mode 100644 src/test/java/de/griefed/serverpackcreator/ServerUtilitiesTest.java rename src/test/java/de/griefed/serverpackcreator/curseforgemodpack/{CreateModpackTest.java => CurseCreateModpackTest.java} (80%) diff --git a/src/main/java/de/griefed/serverpackcreator/CLISetup.java b/src/main/java/de/griefed/serverpackcreator/CLISetup.java deleted file mode 100644 index 24a76aa76..000000000 --- a/src/main/java/de/griefed/serverpackcreator/CLISetup.java +++ /dev/null @@ -1,257 +0,0 @@ -package de.griefed.serverpackcreator; - -import de.griefed.serverpackcreator.i18n.LocalizationManager; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Scanner; - -public class CLISetup { - private static final Logger appLogger = LogManager.getLogger(CLISetup.class); - - /** - * CLI for config file generation. Prompts user to enter config file values and then generates a config file with values entered by user. - */ - void setup() { - List<String> clientMods, - copyDirs; - - clientMods = new ArrayList<>(0); - copyDirs = new ArrayList<>(0); - - String[] tmpClientMods, - tmpCopyDirs; - boolean includeServerInstallation, - includeServerIcon, - includeServerProperties, - includeStartScripts, - includeZipCreation; - String modpackDir, - javaPath, - minecraftVersion, - modLoader, - modLoaderVersion, - tmpModpackDir; - - Scanner reader = new Scanner(System.in); - appLogger.info(String.format(LocalizationManager.getLocalizedString("clisetup.log.info.start"), Reference.getConfigGenArgument())); - do { -//--------------------------------------------------------------------------------------------MODPACK DIRECTORY--------- - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.modpack.enter")); - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.modpack.example")); - - do { - System.out.print(LocalizationManager.getLocalizedString("clisetup.log.info.modpack.cli")); - tmpModpackDir = reader.nextLine(); - } while (!Reference.configCheck.checkModpackDir(tmpModpackDir)); - - modpackDir = tmpModpackDir.replace("\\", "/"); - appLogger.info(String.format(LocalizationManager.getLocalizedString("clisetup.log.info.checkreturn"), modpackDir)); - System.out.println(); - -//-----------------------------------------------------------------------------------------CLIENTSIDE-ONLY MODS--------- - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.clientmods.enter")); - do { - clientMods.addAll(readStringArray()); - appLogger.info(String.format(LocalizationManager.getLocalizedString("clisetup.log.info.checkreturn"), clientMods)); - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.clientmods.checkreturninfo")); - System.out.print(LocalizationManager.getLocalizedString("clisetup.log.info.answer")); - } while (!readBoolean()); - appLogger.info(String.format(LocalizationManager.getLocalizedString("clisetup.log.info.checkreturn"), clientMods)); - tmpClientMods = new String[clientMods.size()]; - clientMods.toArray(tmpClientMods); - System.out.println(); - -//---------------------------------------------------------------------------DIRECTORIES TO COPY TO SERVER PACK--------- - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.copydirs.enter")); - do { - do { - copyDirs.clear(); - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.copydirs.specify")); - copyDirs.addAll(readStringArray()); - - } while (!Reference.configCheck.checkCopyDirs(copyDirs, modpackDir)); - - appLogger.info(String.format(LocalizationManager.getLocalizedString("clisetup.log.info.checkreturn"), copyDirs)); - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.copydirs.checkreturninfo")); - System.out.print(LocalizationManager.getLocalizedString("clisetup.log.info.answer")); - } while (!readBoolean()); - appLogger.info(String.format(LocalizationManager.getLocalizedString("clisetup.log.info.checkreturn"), copyDirs)); - tmpCopyDirs = new String[copyDirs.size()]; - copyDirs.toArray(tmpCopyDirs); - System.out.println(); - -//-------------------------------------------------------------WHETHER TO INCLUDE MODLOADER SERVER INSTALLATION--------- - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.server.enter")); - System.out.print(LocalizationManager.getLocalizedString("clisetup.log.info.server.include")); - includeServerInstallation = readBoolean(); - appLogger.info(String.format(LocalizationManager.getLocalizedString("clisetup.log.info.checkreturn"), includeServerInstallation)); - -//-------------------------------------------------------------------------------MINECRAFT VERSION MODPACK USES--------- - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.minecraft.enter")); - do { - System.out.print(LocalizationManager.getLocalizedString("clisetup.log.info.minecraft.specify")); - minecraftVersion = reader.nextLine(); - } while (!Reference.configCheck.isMinecraftVersionCorrect(minecraftVersion)); - appLogger.info(String.format(LocalizationManager.getLocalizedString("clisetup.log.info.checkreturn"), minecraftVersion)); - System.out.println(); - -//---------------------------------------------------------------------------------------MODLOADER MODPACK USES--------- - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.modloader.enter")); - do { - System.out.print(LocalizationManager.getLocalizedString("clisetup.log.info.modloader.cli")); - modLoader = reader.nextLine(); - } while (!Reference.configCheck.checkModloader(modLoader)); - modLoader = Reference.configCheck.setModloader(modLoader); - appLogger.info(String.format(LocalizationManager.getLocalizedString("clisetup.log.info.checkreturn"), modLoader)); - System.out.println(); - -//----------------------------------------------------------------------------VERSION OF MODLOADER MODPACK USES--------- - appLogger.info(String.format(LocalizationManager.getLocalizedString("clisetup.log.info.modloaderversion.enter"), modLoader)); - do { - System.out.print(LocalizationManager.getLocalizedString("clisetup.log.info.modloaderversion.cli")); - modLoaderVersion = reader.nextLine(); - } while (!Reference.configCheck.checkModloaderVersion(modLoader, modLoaderVersion)); - appLogger.info(String.format(LocalizationManager.getLocalizedString("clisetup.log.info.checkreturn"), modLoaderVersion)); - System.out.println(); - -//------------------------------------------------------------------------------------PATH TO JAVA INSTALLATION--------- - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.java.enter")); - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.java.enter2")); - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.java.example")); - do { - System.out.print(LocalizationManager.getLocalizedString("clisetup.log.info.java.cli")); - String tmpJavaPath = reader.nextLine(); - javaPath = Reference.configCheck.getJavaPath(tmpJavaPath); - } while (!Reference.configCheck.checkJavaPath(javaPath)); - System.out.println(); - -//------------------------------------------------------------WHETHER TO INCLUDE SERVER-ICON.PNG IN SERVER PACK--------- - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.icon.enter")); - System.out.print(LocalizationManager.getLocalizedString("clisetup.log.info.icon.cli")); - includeServerIcon = readBoolean(); - appLogger.info(String.format(LocalizationManager.getLocalizedString("clisetup.log.info.checkreturn"), includeServerIcon)); - System.out.println(); - -//----------------------------------------------------------WHETHER TO INCLUDE SERVER.PROPERTIES IN SERVER PACK--------- - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.properties.enter")); - System.out.print(LocalizationManager.getLocalizedString("clisetup.log.info.properties.cli")); - includeServerProperties = readBoolean(); - appLogger.info(String.format(LocalizationManager.getLocalizedString("clisetup.log.info.checkreturn"), includeServerProperties)); - System.out.println(); - -//--------------------------------------------------------------WHETHER TO INCLUDE START SCRIPTS IN SERVER PACK--------- - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.scripts.enter")); - System.out.print(LocalizationManager.getLocalizedString("clisetup.log.info.scripts.cli")); - includeStartScripts = readBoolean(); - appLogger.info(String.format(LocalizationManager.getLocalizedString("clisetup.log.info.checkreturn"), includeStartScripts)); - System.out.println(); - -//----------------------------------------------------WHETHER TO INCLUDE CREATION OF ZIP-ARCHIVE OF SERVER PACK--------- - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.zip.enter")); - System.out.print(LocalizationManager.getLocalizedString("clisetup.log.info.zip.cli")); - includeZipCreation = readBoolean(); - appLogger.info(String.format(LocalizationManager.getLocalizedString("clisetup.log.info.checkreturn"), includeZipCreation)); - -//------------------------------------------------------------------------------PRINT CONFIG TO CONSOLE AND LOG--------- - Reference.configCheck.printConfig(modpackDir, - clientMods, - copyDirs, - includeServerInstallation, - javaPath, - minecraftVersion, - modLoader, - modLoaderVersion, - includeServerIcon, - includeServerProperties, - includeStartScripts, - includeZipCreation); - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.config.enter")); - System.out.print(LocalizationManager.getLocalizedString("clisetup.log.info.answer")); - } while (!readBoolean()); - reader.close(); - -//-----------------------------------------------------------------------------------------WRITE CONFIG TO FILE--------- - if (Reference.filesSetup.writeConfigToFile( - modpackDir, - buildString(Arrays.toString(tmpClientMods)), - buildString(Arrays.toString(tmpCopyDirs)), - includeServerInstallation, - javaPath, - minecraftVersion, - modLoader, - modLoaderVersion, - includeServerIcon, - includeServerProperties, - includeStartScripts, - includeZipCreation, - Reference.getConfigFile(), - false - )) { - appLogger.info(LocalizationManager.getLocalizedString("clisetup.log.info.config.written")); - } - } - - /** A helper method for config setup. Prompts user to enter the values that will be stored in arrays in config. - * @return String List. Returns list with user input values that will be stored in config. - */ - private List<String> readStringArray() { - Scanner readerArray = new Scanner(System.in); - ArrayList<String> result = new ArrayList<>(1); - String stringArray; - while (true) { - stringArray = readerArray.nextLine(); - if (stringArray.isEmpty()) { - return result; - } else { - result.add(stringArray); - } - } - } - - /** Converts list of strings into concatenated string. - * @param args Strings that will be concatenated into one string - * @return String. Returns concatenated string that contains all provided values. - */ - public String buildString(String... args) { - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(Arrays.toString(args)); - stringBuilder.delete(0, 2).reverse().delete(0,2).reverse(); - return stringBuilder.toString(); - } - - /** A helper method for config setup. Prompts user to enter boolean values that will be stored in config and checks entered values to prevent storing non-boolean values in boolean variables. - * @return Boolean. Converts to boolean and returns value entered by user that will be stored in config. - */ - private boolean readBoolean() { - Scanner readerBoolean = new Scanner(System.in); - String boolRead; - while (true) { - boolRead = readerBoolean.nextLine(); - if (boolRead.matches("[Tt]rue") || - boolRead.matches("[Yy]es") || - boolRead.matches("[Yy]") || - boolRead.matches("1") || - boolRead.matches(LocalizationManager.getLocalizedString("cli.input.true")) || - boolRead.matches(LocalizationManager.getLocalizedString("cli.input.yes")) || - boolRead.matches(LocalizationManager.getLocalizedString("cli.input.yes.short"))) { - return true; - - } else if (boolRead.matches("[Ff]alse") || - boolRead.matches("[Nn]o") || - boolRead.matches("[Nn]" ) || - boolRead.matches("0") || - boolRead.matches(LocalizationManager.getLocalizedString("cli.input.false")) || - boolRead.matches(LocalizationManager.getLocalizedString("cli.input.no")) || - boolRead.matches(LocalizationManager.getLocalizedString("cli.input.no.short"))) { - return false; - - } else { - appLogger.error(LocalizationManager.getLocalizedString("clisetup.log.error.answer")); - } - } - } -} \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/ConfigCheck.java b/src/main/java/de/griefed/serverpackcreator/ConfigCheck.java index 40c5e52ef..65fa849e8 100644 --- a/src/main/java/de/griefed/serverpackcreator/ConfigCheck.java +++ b/src/main/java/de/griefed/serverpackcreator/ConfigCheck.java @@ -5,7 +5,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.therandomlabs.curseapi.CurseAPI; import com.therandomlabs.curseapi.CurseException; import com.typesafe.config.*; -import de.griefed.serverpackcreator.curseforgemodpack.Modpack; +import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; +import de.griefed.serverpackcreator.curseforgemodpack.CurseModpack; import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -28,7 +29,200 @@ import java.nio.file.Paths; import java.util.*; public class ConfigCheck { + private static final Logger appLogger = LogManager.getLogger(ConfigCheck.class); + private final File oldConfigFile = new File("creator.conf"); + private final File configFile = new File("serverpackcreator.conf"); + private LocalizationManager localizationManager; + + public ConfigCheck(LocalizationManager injectedLocalizationManager) { + if (injectedLocalizationManager == null) { + this.localizationManager = new LocalizationManager(); + } + this.localizationManager = injectedLocalizationManager; + } + + //-- If you wish to expand this list, fork this repository, make your changes, and submit a PR ------------------------- + private final List<String> fallbackModsList = Arrays.asList( + "AmbientSounds", + "BackTools", + "BetterAdvancement", + "BetterPing", + "cherished", + "ClientTweaks", + "Controlling", + "DefaultOptions", + "durability", + "DynamicSurroundings", + "itemzoom", + "jei-professions", + "jeiintegration", + "JustEnoughResources", + "MouseTweaks", + "Neat", + "OldJavaWarning", + "PackMenu", + "preciseblockplacing", + "SimpleDiscordRichPresence", + "SpawnerFix", + "TipTheScales", + "WorldNameRandomizer" + ); + + private List<String> + clientMods, + copyDirs; + + private String + modpackDir, + javaPath, + minecraftVersion, + modLoader, + modLoaderVersion; + + private Boolean + includeServerInstallation, + includeServerIcon, + includeServerProperties, + includeStartScripts, + includeZipCreation; + + private int + projectID, + projectFileID; + + private Config config; + + public File getOldConfigFile() { + return oldConfigFile; + } + + public File getConfigFile() { + return configFile; + } + + String getMinecraftManifestUrl() { + return "https://launchermeta.mojang.com/mc/game/version_manifest.json"; + } + + String getForgeManifestUrl() { + return "https://files.minecraftforge.net/net/minecraftforge/forge/maven-metadata.json"; + } + + String getFabricManifestUrl() { + return "https://maven.fabricmc.net/net/fabricmc/fabric-loader/maven-metadata.xml"; + } + + public com.typesafe.config.Config getConfig() { + return config; + } + public void setConfig(com.typesafe.config.Config newConfig) { + this.config = newConfig; + } + + List<String> getFallbackModsList() { + return fallbackModsList; + } + + List<String> getClientMods() { + return clientMods; + } + void setClientMods(List<String> newClientMods) { + this.clientMods = newClientMods; + } + + List<String> getCopyDirs() { + return copyDirs; + } + void setCopyDirs(List<String> newCopyDirs) { + this.copyDirs = newCopyDirs; + } + + String getModpackDir() { + return modpackDir; + } + void setModpackDir(String newModpackDir) { + newModpackDir = newModpackDir.replace("\\","/"); + this.modpackDir = newModpackDir; + } + + String getJavaPath() { + return javaPath; + } + void setJavaPath(String newJavaPath) { + newJavaPath = newJavaPath.replace("\\", "/"); + this.javaPath = newJavaPath; + } + + String getMinecraftVersion() { + return minecraftVersion; + } + void setMinecraftVersion(String newMinecraftVersion) { + this.minecraftVersion = newMinecraftVersion; + } + + String getModLoader() { + return modLoader; + } + void setModLoader(String newModLoader) { + this.modLoader = newModLoader; + } + + String getModLoaderVersion() { + return modLoaderVersion; + } + void setModLoaderVersion(String newModLoaderVersion) { + this.modLoaderVersion = newModLoaderVersion; + } + + boolean getIncludeServerInstallation() { + return includeServerInstallation; + } + void setIncludeServerInstallation(boolean newIncludeServerInstallation) { + this.includeServerInstallation = newIncludeServerInstallation; + } + + boolean getIncludeServerIcon() { + return includeServerIcon; + } + void setIncludeServerIcon(boolean newIncludeServerIcon) { + this.includeServerIcon = newIncludeServerIcon; + } + + boolean getIncludeServerProperties() { + return includeServerProperties; + } + void setIncludeServerProperties(boolean newIncludeServerProperties) { + this.includeServerProperties = newIncludeServerProperties; + } + + boolean getIncludeStartScripts() { + return includeStartScripts; + } + void setIncludeStartScripts(boolean newIncludeStartScripts) { + this.includeStartScripts = newIncludeStartScripts; + } + + boolean getIncludeZipCreation() { + return includeZipCreation; + } + void setIncludeZipCreation(boolean newIncludeZipCreation) { + this.includeZipCreation = newIncludeZipCreation; + } + + int getProjectID() { + return projectID; + } + void setProjectID(int newProjectID) { + this.projectID = newProjectID; + } + + int getProjectFileID() { + return projectFileID; + } + void setProjectFileID(int newProjectFileID) { + this.projectFileID = newProjectFileID; + } /** Check the config file for configuration errors. If an error is found, the log file will tell the user where the error is, so they can fix their config. * @param configFile The configuration file to check. Must be a valid configuration file for serverpackcreator to work. @@ -36,50 +230,50 @@ public class ConfigCheck { */ public boolean checkConfigFile(File configFile) { boolean configHasError; - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.checkconfig.start")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.start")); try { - Reference.setConfig(ConfigFactory.parseFile(configFile)); + setConfig(ConfigFactory.parseFile(configFile)); } catch (ConfigException ex) { - appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.checkconfig.start")); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkconfig.start")); } - if (Reference.getConfig().getStringList("clientMods").isEmpty()) { - appLogger.warn(LocalizationManager.getLocalizedString("configcheck.log.warn.checkconfig.clientmods")); - Reference.setClientMods(Reference.getFallbackModsList()); + if (getConfig().getStringList("clientMods").isEmpty()) { + appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.checkconfig.clientmods")); + setClientMods(getFallbackModsList()); } else { - Reference.setClientMods(Reference.getConfig().getStringList("clientMods")); + setClientMods(getConfig().getStringList("clientMods")); } - Reference.setIncludeServerInstallation(convertToBoolean(Reference.getConfig().getString("includeServerInstallation"))); - Reference.setIncludeServerIcon(convertToBoolean(Reference.getConfig().getString("includeServerIcon"))); - Reference.setIncludeServerProperties(convertToBoolean(Reference.getConfig().getString("includeServerProperties"))); - Reference.setIncludeStartScripts(convertToBoolean(Reference.getConfig().getString("includeStartScripts"))); - Reference.setIncludeZipCreation(convertToBoolean(Reference.getConfig().getString("includeZipCreation"))); - - if (checkModpackDir(Reference.getConfig().getString("modpackDir").replace("\\","/"))) { - configHasError = isDir(Reference.getConfig().getString("modpackDir").replace("\\","/")); - } else if (checkCurseForge(Reference.getConfig().getString("modpackDir").replace("\\","/"))) { + setIncludeServerInstallation(convertToBoolean(getConfig().getString("includeServerInstallation"))); + setIncludeServerIcon(convertToBoolean(getConfig().getString("includeServerIcon"))); + setIncludeServerProperties(convertToBoolean(getConfig().getString("includeServerProperties"))); + setIncludeStartScripts(convertToBoolean(getConfig().getString("includeStartScripts"))); + setIncludeZipCreation(convertToBoolean(getConfig().getString("includeZipCreation"))); + + if (checkModpackDir(getConfig().getString("modpackDir").replace("\\","/"))) { + configHasError = isDir(getConfig().getString("modpackDir").replace("\\","/")); + } else if (checkCurseForge(getConfig().getString("modpackDir").replace("\\","/"))) { configHasError = isCurse(); } else { configHasError = true; } - printConfig(Reference.getModpackDir(), - Reference.getClientMods(), - Reference.getCopyDirs(), - Reference.getIncludeServerInstallation(), - Reference.getJavaPath(), - Reference.getMinecraftVersion(), - Reference.getModLoader(), - Reference.getModLoaderVersion(), - Reference.getIncludeServerIcon(), - Reference.getIncludeServerProperties(), - Reference.getIncludeStartScripts(), - Reference.getIncludeZipCreation()); + printConfig(getModpackDir(), + getClientMods(), + getCopyDirs(), + getIncludeServerInstallation(), + getJavaPath(), + getMinecraftVersion(), + getModLoader(), + getModLoaderVersion(), + getIncludeServerIcon(), + getIncludeServerProperties(), + getIncludeStartScripts(), + getIncludeZipCreation()); if (!configHasError) { - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.checkconfig.success")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.success")); } else { - appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.checkconfig.failure")); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkconfig.failure")); } return configHasError; } @@ -90,39 +284,39 @@ public class ConfigCheck { */ private boolean isDir(String modpackDir) { boolean configHasError = false; - Reference.setModpackDir(modpackDir); + setModpackDir(modpackDir); - if (checkCopyDirs(Reference.getConfig().getStringList("copyDirs"), Reference.getModpackDir())) { - Reference.setCopyDirs(Reference.getConfig().getStringList("copyDirs")); + if (checkCopyDirs(getConfig().getStringList("copyDirs"), getModpackDir())) { + setCopyDirs(getConfig().getStringList("copyDirs")); } else { configHasError = true; } - if (Reference.getIncludeServerInstallation()) { - if (checkJavaPath(Reference.getConfig().getString("javaPath"))) { - Reference.setJavaPath(Reference.getConfig().getString("javaPath")); + if (getIncludeServerInstallation()) { + if (checkJavaPath(getConfig().getString("javaPath"))) { + setJavaPath(getConfig().getString("javaPath")); } else { - String tmpJavaPath = getJavaPath(Reference.getConfig().getString("javaPath")); + String tmpJavaPath = getJavaPath(getConfig().getString("javaPath")); if (checkJavaPath(tmpJavaPath)) { - Reference.setJavaPath(tmpJavaPath); + setJavaPath(tmpJavaPath); } else { configHasError = true; } } - if (isMinecraftVersionCorrect(Reference.getConfig().getString("minecraftVersion"))) { - Reference.setMinecraftVersion(Reference.getConfig().getString("minecraftVersion")); + if (isMinecraftVersionCorrect(getConfig().getString("minecraftVersion"))) { + setMinecraftVersion(getConfig().getString("minecraftVersion")); } else { configHasError = true; } - if (checkModloader(Reference.getConfig().getString("modLoader"))) { - Reference.setModLoader(setModloader(Reference.getConfig().getString("modLoader"))); + if (checkModloader(getConfig().getString("modLoader"))) { + setModLoader(setModloader(getConfig().getString("modLoader"))); } else { configHasError = true; } - if (checkModloaderVersion(Reference.getModLoader(), Reference.getConfig().getString("modLoaderVersion"))) { - Reference.setModLoaderVersion(Reference.getConfig().getString("modLoaderVersion")); + if (checkModloaderVersion(getModLoader(), getConfig().getString("modLoaderVersion"))) { + setModLoaderVersion(getConfig().getString("modLoaderVersion")); } else { configHasError = true; } } else { - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.checkconfig.skipstart")); - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.checkconfig.skipjava")); - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.checkconfig.skipminecraft")); - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.checkconfig.skipmodlaoder")); - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.checkconfig.skipmodloaderversion")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.skipstart")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.skipjava")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.skipminecraft")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.skipmodlaoder")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.skipmodloaderversion")); } return configHasError; } @@ -133,28 +327,30 @@ public class ConfigCheck { private boolean isCurse() { boolean configHasError = false; try { - if (CurseAPI.project(Reference.getProjectID()).isPresent()) { + if (CurseAPI.project(getProjectID()).isPresent()) { String projectName, displayName; projectName = displayName = ""; - try { projectName = CurseAPI.project(Reference.getProjectID()).get().name(); + try { projectName = CurseAPI.project(getProjectID()).get().name(); + + try { displayName = Objects.requireNonNull(CurseAPI.project(getProjectID()).get().files().fileWithID(getProjectFileID())).displayName(); } + catch (NullPointerException npe) { appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.iscurse.display")); - try { displayName = Objects.requireNonNull(CurseAPI.project(Reference.getProjectID()).get().files().fileWithID(Reference.getProjectFileID())).displayName(); } - catch (NullPointerException npe) { appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.iscurse.display")); + try { displayName = Objects.requireNonNull(CurseAPI.project(getProjectID()).get().files().fileWithID(getProjectFileID())).nameOnDisk(); } + catch (NullPointerException npe2) { displayName = String.format("%d", getProjectFileID()); } } } - try { displayName = Objects.requireNonNull(CurseAPI.project(Reference.getProjectID()).get().files().fileWithID(Reference.getProjectFileID())).nameOnDisk(); } - catch (NullPointerException npe2) { displayName = String.format("%d", Reference.getProjectFileID()); } } } + catch (CurseException cex) { appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.iscurse.curseforge")); } - catch (CurseException cex) { appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.iscurse.curseforge")); } + setModpackDir(String.format("./%s/%s", projectName, displayName)); - Reference.setModpackDir(String.format("./%s/%s", projectName, displayName)); + CurseCreateModpack curseCreateModpack = new CurseCreateModpack(localizationManager); - if (Reference.createModpack.curseForgeModpack(Reference.getModpackDir(), Reference.getProjectID(), Reference.getProjectFileID())) { + if (curseCreateModpack.curseForgeModpack(getModpackDir(), getProjectID(), getProjectFileID())) { try { - byte[] jsonData = Files.readAllBytes(Paths.get(String.format("%s/manifest.json", Reference.getModpackDir()))); + byte[] jsonData = Files.readAllBytes(Paths.get(String.format("%s/manifest.json", getModpackDir()))); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); objectMapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY); - Modpack modpack = objectMapper.readValue(jsonData, Modpack.class); + CurseModpack modpack = objectMapper.readValue(jsonData, CurseModpack.class); String[] minecraftLoaderVersions = modpack .getMinecraft() @@ -164,45 +360,45 @@ public class ConfigCheck { .replace("[", "") .replace("]", "") .split("-"); - Reference.setMinecraftVersion(minecraftLoaderVersions[0] + setMinecraftVersion(minecraftLoaderVersions[0] .replace("[", "")); if (containsFabric(modpack)) { - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.iscurse.fabric")); - Reference.setModLoader("Fabric"); - Reference.setModLoaderVersion(latestFabricLoader(Reference.getModpackDir())); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.iscurse.fabric")); + setModLoader("Fabric"); + setModLoaderVersion(latestFabricLoader(getModpackDir())); } else { - Reference.setModLoader(setModloader(modLoaderVersion[0])); - Reference.setModLoaderVersion(modLoaderVersion[1]); + setModLoader(setModloader(modLoaderVersion[0])); + setModLoaderVersion(modLoaderVersion[1]); } - } catch (IOException ex) { appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.iscurse.json"), ex); } + } catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.iscurse.json"), ex); } - if (checkJavaPath(Reference.getConfig().getString("javaPath").replace("\\","/"))) { - Reference.setJavaPath(Reference.getConfig().getString("javaPath").replace("\\","/")); + if (checkJavaPath(getConfig().getString("javaPath").replace("\\","/"))) { + setJavaPath(getConfig().getString("javaPath").replace("\\","/")); } else { - String tmpJavaPath = getJavaPath(Reference.getConfig().getString("javaPath").replace("\\","/")); + String tmpJavaPath = getJavaPath(getConfig().getString("javaPath").replace("\\","/")); if (checkJavaPath(tmpJavaPath)) { - Reference.setJavaPath(tmpJavaPath); + setJavaPath(tmpJavaPath); } } - Reference.setCopyDirs(suggestCopyDirs(Reference.getModpackDir())); - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.iscurse.replace")); - Reference.filesSetup.writeConfigToFile( - Reference.getModpackDir(), - Reference.cliSetup.buildString(Reference.getClientMods().toString()), - Reference.cliSetup.buildString(Reference.getCopyDirs().toString()), - Reference.getIncludeServerInstallation(), Reference.getJavaPath(), - Reference.getMinecraftVersion(), Reference.getModLoader(), - Reference.getModLoaderVersion(), Reference.getIncludeServerIcon(), - Reference.getIncludeServerProperties(), Reference.getIncludeStartScripts(), - Reference.getIncludeZipCreation(), - Reference.getConfigFile(), + setCopyDirs(suggestCopyDirs(getModpackDir())); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.iscurse.replace")); + writeConfigToFile( + getModpackDir(), + buildString(getClientMods().toString()), + buildString(getCopyDirs().toString()), + getIncludeServerInstallation(), getJavaPath(), + getMinecraftVersion(), getModLoader(), + getModLoaderVersion(), getIncludeServerIcon(), + getIncludeServerProperties(), getIncludeStartScripts(), + getIncludeZipCreation(), + getConfigFile(), false ); } } } catch (CurseException cex) { - appLogger.error(String.format(LocalizationManager.getLocalizedString("configcheck.log.error.iscurse.project"), Reference.getProjectID()), cex); + appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.iscurse.project"), getProjectID()), cex); configHasError = true; } return configHasError; @@ -212,13 +408,13 @@ public class ConfigCheck { * @param modpack Object. Contains information about our modpack. Used to get a list of all projects used in the modpack. * @return Boolean. Returns true if Jumploader is found, false if not found. */ - private boolean containsFabric(Modpack modpack) { + private boolean containsFabric(CurseModpack modpack) { boolean hasJumploader = false; for (int i = 0; i < modpack.getFiles().size(); i++) { String[] mods; mods = modpack.getFiles().get(i).toString().split(","); if (mods[0].equalsIgnoreCase("361988") || mods[0].equalsIgnoreCase("306612")) { - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.containsfabric")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.containsfabric")); hasJumploader = true; } } @@ -230,7 +426,7 @@ public class ConfigCheck { * @return List, String. Returns a list of directories inside the modpack, excluding well known client-side only directories which would not be needed by a server pack. If you have suggestions to this list, open an issue on https://github.com/Griefed/ServerPackCreator/issues */ private List<String> suggestCopyDirs(String modpackDir) { - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.suggestcopydirs.start")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.suggestcopydirs.start")); String[] dirsNotToCopy = { "overrides", @@ -250,11 +446,11 @@ public class ConfigCheck { dirList.remove(doNotCopyList.get(i)); } copyDirs = dirList.toArray(new String[0]); - appLogger.info(String.format(LocalizationManager.getLocalizedString("configcheck.log.info.suggestcopydirs.list"), dirList)); + appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.suggestcopydirs.list"), dirList)); return Arrays.asList(copyDirs.clone()); - } else { appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.suggestcopydirs")); } + } else { appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.suggestcopydirs")); } return Arrays.asList(copyDirs.clone()); } @@ -269,16 +465,16 @@ public class ConfigCheck { if (modpackDir.matches("[0-9]{2,},[0-9]{5,}")) { projectFileIds = modpackDir.split(","); - Reference.setProjectID(Integer.parseInt(projectFileIds[0])); - Reference.setProjectFileID(Integer.parseInt(projectFileIds[1])); + setProjectID(Integer.parseInt(projectFileIds[0])); + setProjectFileID(Integer.parseInt(projectFileIds[1])); - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.checkcurseforge.info")); - appLogger.info(String.format(LocalizationManager.getLocalizedString("configcheck.log.info.checkcurseforge.return"), Reference.getProjectID(), Reference.getProjectFileID())); - appLogger.warn(LocalizationManager.getLocalizedString("configcheck.log.warn.checkcurseforge.warn")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkcurseforge.info")); + appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.checkcurseforge.return"), getProjectID(), getProjectFileID())); + appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.checkcurseforge.warn")); configCorrect = true; - } else { appLogger.warn(LocalizationManager.getLocalizedString("configcheck.log.warn.checkcurseforge.warn2")); } + } else { appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.checkcurseforge.warn2")); } return configCorrect; } @@ -302,7 +498,7 @@ public class ConfigCheck { returnBoolean = false; } else { - appLogger.warn(LocalizationManager.getLocalizedString("configcheck.log.warn.converttoboolean.warn")); + appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.converttoboolean.warn")); returnBoolean = false; } return returnBoolean; @@ -334,31 +530,31 @@ public class ConfigCheck { boolean includeProperties, boolean includeScripts, boolean includeZip) { - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.printconfig.start")); - appLogger.info(String.format(LocalizationManager.getLocalizedString("configcheck.log.info.printconfig.modpackdir"), modpackDirectory)); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.printconfig.start")); + appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.modpackdir"), modpackDirectory)); if (clientsideMods.size() == 0) { - appLogger.warn(LocalizationManager.getLocalizedString("configcheck.log.warn.printconfig.noclientmods")); + appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.printconfig.noclientmods")); } else { - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.printconfig.clientmods")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.printconfig.clientmods")); for (int i = 0; i < clientsideMods.size(); i++) { appLogger.info(String.format(" %s", clientsideMods.get(i))); } } - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.printconfig.copydirs")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.printconfig.copydirs")); if (copyDirectories != null) { for (int i = 0; i < copyDirectories.size(); i++) { appLogger.info(String.format(" %s", copyDirectories.get(i))); } - } else { appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.printconfig.copydirs")); } - - appLogger.info(String.format(LocalizationManager.getLocalizedString("configcheck.log.info.printconfig.server"), installServer)); - appLogger.info(String.format(LocalizationManager.getLocalizedString("configcheck.log.info.printconfig.javapath"), javaInstallPath)); - appLogger.info(String.format(LocalizationManager.getLocalizedString("configcheck.log.info.printconfig.minecraftversion"), minecraftVer)); - appLogger.info(String.format(LocalizationManager.getLocalizedString("configcheck.log.info.printconfig.modloader"), modloader)); - appLogger.info(String.format(LocalizationManager.getLocalizedString("configcheck.log.info.printconfig.modloaderversion"), modloaderVersion)); - appLogger.info(String.format(LocalizationManager.getLocalizedString("configcheck.log.info.printconfig.icon"), includeIcon)); - appLogger.info(String.format(LocalizationManager.getLocalizedString("configcheck.log.info.printconfig.properties"), includeProperties)); - appLogger.info(String.format(LocalizationManager.getLocalizedString("configcheck.log.info.printconfig.scripts"), includeScripts)); - appLogger.info(String.format(LocalizationManager.getLocalizedString("configcheck.log.info.printconfig.zip"), includeZip)); + } else { appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.printconfig.copydirs")); } + + appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.server"), installServer)); + appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.javapath"), javaInstallPath)); + appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.minecraftversion"), minecraftVer)); + appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.modloader"), modloader)); + appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.modloaderversion"), modloaderVersion)); + appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.icon"), includeIcon)); + appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.properties"), includeProperties)); + appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.scripts"), includeScripts)); + appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.zip"), includeZip)); } /** Check whether the specified modpack directory exists. @@ -368,9 +564,9 @@ public class ConfigCheck { boolean checkModpackDir(String modpackDir) { boolean configCorrect = false; if (modpackDir.equals("")) { - appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.checkmodpackdir")); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkmodpackdir")); } else if (!(new File(modpackDir).isDirectory())) { - appLogger.warn(String.format(LocalizationManager.getLocalizedString("configcheck.log.warn.checkmodpackdir"), modpackDir)); + appLogger.warn(String.format(localizationManager.getLocalizedString("configcheck.log.warn.checkmodpackdir"), modpackDir)); } else { configCorrect = true; } @@ -385,13 +581,13 @@ public class ConfigCheck { boolean checkCopyDirs(List<String> copyDirs, String modpackDir) { boolean configCorrect = true; if (copyDirs.isEmpty()) { - appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.checkcopydirs.empty")); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkcopydirs.empty")); configCorrect = false; } else { for (int i = 0; i < copyDirs.size(); i++) { File directory = new File(String.format("%s/%s", modpackDir, copyDirs.get(i))); if (!directory.exists() || !directory.isDirectory()) { - appLogger.error(String.format(LocalizationManager.getLocalizedString("configcheck.log.error.checkcopydirs.notfound"), directory.getAbsolutePath())); + appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.checkcopydirs.notfound"), directory.getAbsolutePath())); configCorrect = false; } } @@ -406,15 +602,15 @@ public class ConfigCheck { String getJavaPath(String enteredPath) { String autoJavaPath; if (enteredPath.equals("")) { - appLogger.warn(LocalizationManager.getLocalizedString("configcheck.log.warn.getjavapath.empty")); + appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.getjavapath.empty")); autoJavaPath = String.format("%s/bin/java",System.getProperty("java.home").replace("\\", "/")); if (autoJavaPath.startsWith("C:")) { autoJavaPath = String.format("%s.exe", autoJavaPath); } - appLogger.warn(String.format(LocalizationManager.getLocalizedString("configcheck.log.warn.getjavapath.set"), autoJavaPath)); + appLogger.warn(String.format(localizationManager.getLocalizedString("configcheck.log.warn.getjavapath.set"), autoJavaPath)); return autoJavaPath; } else { - appLogger.info(String.format(LocalizationManager.getLocalizedString("configcheck.log.warn.getjavapath.set"), enteredPath)); + appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.warn.getjavapath.set"), enteredPath)); return enteredPath; } } @@ -430,7 +626,7 @@ public class ConfigCheck { } else if (new File(pathToJava).exists() && pathToJava.endsWith("java")) { configCorrect = true; } else { - appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.checkjavapath")); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkjavapath")); } return configCorrect; } @@ -444,7 +640,7 @@ public class ConfigCheck { if (modloader.equalsIgnoreCase("Forge") || modloader.equalsIgnoreCase("Fabric")) { configCorrect = true; } else { - appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.checkmodloader")); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkmodloader")); } return configCorrect; } @@ -475,7 +671,7 @@ public class ConfigCheck { } else if (modloader.equalsIgnoreCase("Fabric") && isFabricVersionCorrect(modloaderVersion)) { isVersionCorrect = true; } else { - appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.checkmodloaderversion")); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkmodloaderversion")); } return isVersionCorrect; } @@ -487,22 +683,22 @@ public class ConfigCheck { boolean isMinecraftVersionCorrect(String minecraftVersion) { if (!minecraftVersion.equals("")) { try { - URL manifestJsonURL = new URL(Reference.getMinecraftManifestUrl()); + URL manifestJsonURL = new URL(getMinecraftManifestUrl()); ReadableByteChannel readableByteChannel = Channels.newChannel(manifestJsonURL.openStream()); FileOutputStream downloadManifestOutputStream; try { downloadManifestOutputStream = new FileOutputStream("mcmanifest.json"); } catch (FileNotFoundException ex) { - appLogger.debug(LocalizationManager.getLocalizedString("configcheck.log.debug.isminecraftversioncorrect"), ex); + appLogger.debug(localizationManager.getLocalizedString("configcheck.log.debug.isminecraftversioncorrect"), ex); File file = new File("mcmanifest.json"); if (!file.exists()) { - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.isminecraftversioncorrect.create")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isminecraftversioncorrect.create")); boolean jsonCreated = file.createNewFile(); if (jsonCreated) { - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.isminecraftversioncorrect.created")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isminecraftversioncorrect.created")); } else { - appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.isminecraftversioncorrect.parse")); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isminecraftversioncorrect.parse")); } } downloadManifestOutputStream = new FileOutputStream("mcmanifest.json"); @@ -524,11 +720,11 @@ public class ConfigCheck { manifestJsonFile.deleteOnExit(); return contains; } catch (Exception ex) { - appLogger.error(String.format(LocalizationManager.getLocalizedString("configcheck.log.error.isminecraftversioncorrect.validate"), minecraftVersion), ex); + appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.isminecraftversioncorrect.validate"), minecraftVersion), ex); return false; } } else { - appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.isminecraftversioncorrect.empty")); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isminecraftversioncorrect.empty")); return false; } } @@ -539,22 +735,22 @@ public class ConfigCheck { */ boolean isFabricVersionCorrect(String fabricVersion) { try { - URL manifestJsonURL = new URL(Reference.getFabricManifestUrl()); + URL manifestJsonURL = new URL(getFabricManifestUrl()); ReadableByteChannel readableByteChannel = Channels.newChannel(manifestJsonURL.openStream()); FileOutputStream downloadManifestOutputStream; try { downloadManifestOutputStream = new FileOutputStream("fabric-manifest.xml"); } catch (FileNotFoundException ex) { - appLogger.debug(LocalizationManager.getLocalizedString("configcheck.log.debug.isfabricversioncorrect"), ex); + appLogger.debug(localizationManager.getLocalizedString("configcheck.log.debug.isfabricversioncorrect"), ex); File file = new File("fabric-manifest.xml"); if (!file.exists()){ - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.isfabricversioncorrect.create")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isfabricversioncorrect.create")); boolean jsonCreated = file.createNewFile(); if (jsonCreated) { - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.isfabricversioncorrect.created")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isfabricversioncorrect.created")); } else { - appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.isfabricversioncorrect.parse")); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isfabricversioncorrect.parse")); } } downloadManifestOutputStream = new FileOutputStream("fabric-manifest.xml"); @@ -583,7 +779,7 @@ public class ConfigCheck { manifestXMLFile.deleteOnExit(); return contains; } catch (Exception ex) { - appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.isfabricversioncorrect.validate"), ex); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isfabricversioncorrect.validate"), ex); return false; } } @@ -594,22 +790,22 @@ public class ConfigCheck { */ boolean isForgeVersionCorrect(String forgeVersion) { try { - URL manifestJsonURL = new URL(Reference.getForgeManifestUrl()); + URL manifestJsonURL = new URL(getForgeManifestUrl()); ReadableByteChannel readableByteChannel = Channels.newChannel(manifestJsonURL.openStream()); FileOutputStream downloadManifestOutputStream; try { downloadManifestOutputStream = new FileOutputStream("forge-manifest.json"); } catch (FileNotFoundException ex) { - appLogger.debug(LocalizationManager.getLocalizedString("configcheck.log.debug.isforgeversioncorrect"), ex); + appLogger.debug(localizationManager.getLocalizedString("configcheck.log.debug.isforgeversioncorrect"), ex); File file = new File("forge-manifest.json"); if (!file.exists()){ - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.isforgeversioncorrect.create")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isforgeversioncorrect.create")); boolean jsonCreated = file.createNewFile(); if (jsonCreated) { - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.isforgeversioncorrect.created")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isforgeversioncorrect.created")); } else { - appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.isforgeversioncorrect.parse")); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isforgeversioncorrect.parse")); } } downloadManifestOutputStream = new FileOutputStream("forge-manifest.json"); @@ -637,7 +833,7 @@ public class ConfigCheck { return manifestJSON.trim().contains(String.format("%s", forgeVersion)); } catch (Exception ex) { - appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.isforgeversioncorrect.validate"), ex); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isforgeversioncorrect.validate"), ex); return false; } } @@ -650,7 +846,7 @@ public class ConfigCheck { private String latestFabricLoader(String modpackDir) { String result = "0.11.3"; try { - URL downloadFabricXml = new URL(Reference.getFabricManifestUrl()); + URL downloadFabricXml = new URL(getFabricManifestUrl()); ReadableByteChannel downloadFabricXmlReadableByteChannel = Channels.newChannel(downloadFabricXml.openStream()); FileOutputStream downloadFabricXmlFileOutputStream = new FileOutputStream(String.format("%s/server_pack/fabric-loader.xml", modpackDir)); @@ -669,11 +865,347 @@ public class ConfigCheck { XPath xpath = xPathFactory.newXPath(); result = (String) xpath.evaluate("/metadata/versioning/release", fabricXml, XPathConstants.STRING); - appLogger.info(LocalizationManager.getLocalizedString("configcheck.log.info.latestfabricloader.created")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.latestfabricloader.created")); } catch (IOException | ParserConfigurationException | SAXException | XPathExpressionException ex) { - appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.latestfabricloader.parse"), ex); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.latestfabricloader.parse"), ex); } finally { return result; } } + + /** + * Generate new configuration file from CLI input. Prompts user to enter config file values and then generates a config file with values entered by user. + */ + void createConfigurationFile() { + List<String> clientMods, + copyDirs; + + clientMods = new ArrayList<>(0); + copyDirs = new ArrayList<>(0); + + String[] tmpClientMods, + tmpCopyDirs; + boolean includeServerInstallation, + includeServerIcon, + includeServerProperties, + includeStartScripts, + includeZipCreation; + String modpackDir, + javaPath, + minecraftVersion, + modLoader, + modLoaderVersion, + tmpModpackDir; + + Scanner reader = new Scanner(System.in); + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.start"), "-cgen")); + do { +//--------------------------------------------------------------------------------------------MODPACK DIRECTORY--------- + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.modpack.enter")); + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.modpack.example")); + + do { + System.out.print(localizationManager.getLocalizedString("clisetup.log.info.modpack.cli")); + tmpModpackDir = reader.nextLine(); + } while (!checkModpackDir(tmpModpackDir)); + + modpackDir = tmpModpackDir.replace("\\", "/"); + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), modpackDir)); + System.out.println(); + +//-----------------------------------------------------------------------------------------CLIENTSIDE-ONLY MODS--------- + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.clientmods.enter")); + do { + clientMods.addAll(readStringArray()); + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), clientMods)); + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.clientmods.checkreturninfo")); + System.out.print(localizationManager.getLocalizedString("clisetup.log.info.answer")); + } while (!readBoolean()); + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), clientMods)); + tmpClientMods = new String[clientMods.size()]; + clientMods.toArray(tmpClientMods); + System.out.println(); + +//---------------------------------------------------------------------------DIRECTORIES TO COPY TO SERVER PACK--------- + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.copydirs.enter")); + do { + do { + copyDirs.clear(); + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.copydirs.specify")); + copyDirs.addAll(readStringArray()); + + } while (!checkCopyDirs(copyDirs, modpackDir)); + + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), copyDirs)); + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.copydirs.checkreturninfo")); + System.out.print(localizationManager.getLocalizedString("clisetup.log.info.answer")); + } while (!readBoolean()); + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), copyDirs)); + tmpCopyDirs = new String[copyDirs.size()]; + copyDirs.toArray(tmpCopyDirs); + System.out.println(); + +//-------------------------------------------------------------WHETHER TO INCLUDE MODLOADER SERVER INSTALLATION--------- + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.server.enter")); + System.out.print(localizationManager.getLocalizedString("clisetup.log.info.server.include")); + includeServerInstallation = readBoolean(); + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), includeServerInstallation)); + +//-------------------------------------------------------------------------------MINECRAFT VERSION MODPACK USES--------- + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.minecraft.enter")); + do { + System.out.print(localizationManager.getLocalizedString("clisetup.log.info.minecraft.specify")); + minecraftVersion = reader.nextLine(); + } while (!isMinecraftVersionCorrect(minecraftVersion)); + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), minecraftVersion)); + System.out.println(); + +//---------------------------------------------------------------------------------------MODLOADER MODPACK USES--------- + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.modloader.enter")); + do { + System.out.print(localizationManager.getLocalizedString("clisetup.log.info.modloader.cli")); + modLoader = reader.nextLine(); + } while (!checkModloader(modLoader)); + modLoader = setModloader(modLoader); + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), modLoader)); + System.out.println(); + +//----------------------------------------------------------------------------VERSION OF MODLOADER MODPACK USES--------- + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.modloaderversion.enter"), modLoader)); + do { + System.out.print(localizationManager.getLocalizedString("clisetup.log.info.modloaderversion.cli")); + modLoaderVersion = reader.nextLine(); + } while (!checkModloaderVersion(modLoader, modLoaderVersion)); + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), modLoaderVersion)); + System.out.println(); + +//------------------------------------------------------------------------------------PATH TO JAVA INSTALLATION--------- + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.java.enter")); + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.java.enter2")); + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.java.example")); + do { + System.out.print(localizationManager.getLocalizedString("clisetup.log.info.java.cli")); + String tmpJavaPath = reader.nextLine(); + javaPath = getJavaPath(tmpJavaPath); + } while (!checkJavaPath(javaPath)); + System.out.println(); + +//------------------------------------------------------------WHETHER TO INCLUDE SERVER-ICON.PNG IN SERVER PACK--------- + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.icon.enter")); + System.out.print(localizationManager.getLocalizedString("clisetup.log.info.icon.cli")); + includeServerIcon = readBoolean(); + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), includeServerIcon)); + System.out.println(); + +//----------------------------------------------------------WHETHER TO INCLUDE SERVER.PROPERTIES IN SERVER PACK--------- + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.properties.enter")); + System.out.print(localizationManager.getLocalizedString("clisetup.log.info.properties.cli")); + includeServerProperties = readBoolean(); + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), includeServerProperties)); + System.out.println(); + +//--------------------------------------------------------------WHETHER TO INCLUDE START SCRIPTS IN SERVER PACK--------- + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.scripts.enter")); + System.out.print(localizationManager.getLocalizedString("clisetup.log.info.scripts.cli")); + includeStartScripts = readBoolean(); + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), includeStartScripts)); + System.out.println(); + +//----------------------------------------------------WHETHER TO INCLUDE CREATION OF ZIP-ARCHIVE OF SERVER PACK--------- + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.zip.enter")); + System.out.print(localizationManager.getLocalizedString("clisetup.log.info.zip.cli")); + includeZipCreation = readBoolean(); + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), includeZipCreation)); + +//------------------------------------------------------------------------------PRINT CONFIG TO CONSOLE AND LOG--------- + printConfig(modpackDir, + clientMods, + copyDirs, + includeServerInstallation, + javaPath, + minecraftVersion, + modLoader, + modLoaderVersion, + includeServerIcon, + includeServerProperties, + includeStartScripts, + includeZipCreation); + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.config.enter")); + System.out.print(localizationManager.getLocalizedString("clisetup.log.info.answer")); + } while (!readBoolean()); + reader.close(); + +//-----------------------------------------------------------------------------------------WRITE CONFIG TO FILE--------- + if (writeConfigToFile( + modpackDir, + buildString(Arrays.toString(tmpClientMods)), + buildString(Arrays.toString(tmpCopyDirs)), + includeServerInstallation, + javaPath, + minecraftVersion, + modLoader, + modLoaderVersion, + includeServerIcon, + includeServerProperties, + includeStartScripts, + includeZipCreation, + getConfigFile(), + false + )) { + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.config.written")); + } + } + + /** A helper method for config setup. Prompts user to enter the values that will be stored in arrays in config. + * @return String List. Returns list with user input values that will be stored in config. + */ + private List<String> readStringArray() { + Scanner readerArray = new Scanner(System.in); + ArrayList<String> result = new ArrayList<>(1); + String stringArray; + while (true) { + stringArray = readerArray.nextLine(); + if (stringArray.isEmpty()) { + return result; + } else { + result.add(stringArray); + } + } + } + + /** Converts list of strings into concatenated string. + * @param args Strings that will be concatenated into one string + * @return String. Returns concatenated string that contains all provided values. + */ + public String buildString(String... args) { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(Arrays.toString(args)); + stringBuilder.delete(0, 2).reverse().delete(0,2).reverse(); + return stringBuilder.toString(); + } + + /** A helper method for config setup. Prompts user to enter boolean values that will be stored in config and checks entered values to prevent storing non-boolean values in boolean variables. + * @return Boolean. Converts to boolean and returns value entered by user that will be stored in config. + */ + private boolean readBoolean() { + Scanner readerBoolean = new Scanner(System.in); + String boolRead; + while (true) { + boolRead = readerBoolean.nextLine(); + if (boolRead.matches("[Tt]rue") || + boolRead.matches("[Yy]es") || + boolRead.matches("[Yy]") || + boolRead.matches("1") || + boolRead.matches(localizationManager.getLocalizedString("cli.input.true")) || + boolRead.matches(localizationManager.getLocalizedString("cli.input.yes")) || + boolRead.matches(localizationManager.getLocalizedString("cli.input.yes.short"))) { + return true; + + } else if (boolRead.matches("[Ff]alse") || + boolRead.matches("[Nn]o") || + boolRead.matches("[Nn]" ) || + boolRead.matches("0") || + boolRead.matches(localizationManager.getLocalizedString("cli.input.false")) || + boolRead.matches(localizationManager.getLocalizedString("cli.input.no")) || + boolRead.matches(localizationManager.getLocalizedString("cli.input.no.short"))) { + return false; + + } else { + appLogger.error(localizationManager.getLocalizedString("clisetup.log.error.answer")); + } + } + } + + /** Writes a new configuration file with the parameters passed to it. + * @param modpackDir String. The path to the modpack. + * @param clientMods List, String. List of clientside-only mods. + * @param copyDirs List, String. List of directories to include in server pack. + * @param includeServer Boolean. Whether to include a modloader server installation. + * @param javaPath String. Path to the java executable. + * @param minecraftVersion String. Minecraft version used by the modpack and server pack. + * @param modLoader String. Modloader used by the modpack and server pack. Ether Forge or Fabric. + * @param modLoaderVersion String. Modloader version used by the modpack and server pack. + * @param includeIcon Boolean. Whether to include a server-icon in the server pack. + * @param includeProperties Boolean. Whether to include a properties file in the server pack. + * @param includeScripts Boolean. Whether to include start scripts in the server pack. + * @param includeZip Boolean. Whether to create a ZIP-archive of the server pack, excluding Mojang's Minecraft server jar. + * @param fileName The name under which to write the new file. + * @param isTemporary Decides whether to delete existing config-file. If isTemporary is false, existing config files will be deleted before writing the new file. + * @return Boolean. Returns true if the configuration file has been successfully written and old ones replaced. + */ + public boolean writeConfigToFile(String modpackDir, + String clientMods, + String copyDirs, + boolean includeServer, + String javaPath, + String minecraftVersion, + String modLoader, + String modLoaderVersion, + boolean includeIcon, + boolean includeProperties, + boolean includeScripts, + boolean includeZip, + File fileName, + boolean isTemporary) { + + boolean configWritten = false; + + String configString = String.format( + "%s\"%s\"\n\n%s[%s]\n\n%s[%s]\n\n%s%b\n\n%s\"%s\"\n\n%s\"%s\"\n\n%s\"%s\"\n\n%s\"%s\"\n\n%s%b\n\n%s%b\n\n%s%b\n\n%s%b", + localizationManager.getLocalizedString("filessetup.writeconfigtofile.modpackdir"), + modpackDir.replace("\\","/"), + localizationManager.getLocalizedString("filessetup.writeconfigtofile.clientmods"), + clientMods, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.copydirs"), + copyDirs, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.includeserverinstallation"), + includeServer, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.javapath"), + javaPath.replace("\\","/"), + localizationManager.getLocalizedString("filessetup.writeconfigtofile.minecraftversion"), + minecraftVersion, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.modloader"), + modLoader, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.modloaderversion"), + modLoaderVersion, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.includeservericon"), + includeIcon, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.includeserverproperties"), + includeProperties, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.includestartscripts"), + includeScripts, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.includezipcreation"), + includeZip + ); + + if (!isTemporary) { + if (getConfigFile().exists()) { + boolean delConf = getConfigFile().delete(); + if (delConf) { + appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.writeconfigtofile.config")); + } else { + appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.writeconfigtofile.config")); + } + } + if (getOldConfigFile().exists()) { + boolean delOldConf = getOldConfigFile().delete(); + if (delOldConf) { + appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.writeconfigtofile.old")); + } else { + appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.writeconfigtofile.old")); + } + } + } + + try { + BufferedWriter writer = new BufferedWriter(new FileWriter(fileName)); + writer.write(configString); + writer.close(); + configWritten = true; + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.writeconfigtofile"), ex); + } + + return configWritten; + } } \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/CopyFiles.java b/src/main/java/de/griefed/serverpackcreator/CopyFiles.java deleted file mode 100644 index 31d040995..000000000 --- a/src/main/java/de/griefed/serverpackcreator/CopyFiles.java +++ /dev/null @@ -1,261 +0,0 @@ -package de.griefed.serverpackcreator; - -import de.griefed.serverpackcreator.i18n.LocalizationManager; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.io.File; -import java.io.IOException; -import java.nio.file.*; -import java.nio.file.attribute.BasicFileAttributes; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; - -class CopyFiles { - private static final Logger appLogger = LogManager.getLogger(CopyFiles.class); - - /** Deletes files from previous runs of serverpackcreator. - * @param modpackDir String. The directory in where to check for files from previous runs. - */ - void cleanupEnvironment(String modpackDir) { - if (new File(String.format("%s/server_pack", modpackDir)).exists()) { - appLogger.info(LocalizationManager.getLocalizedString("copyfiles.log.info.cleanupenvironment.folder.enter")); - Path serverPack = Paths.get(String.format("%s/server_pack", modpackDir)); - try { - Files.walkFileTree(serverPack, - new SimpleFileVisitor<Path>() { - @Override - public FileVisitResult postVisitDirectory( - Path dir, IOException exc) throws IOException { - Files.delete(dir); - return FileVisitResult.CONTINUE; - } - @Override - public FileVisitResult visitFile( - Path file, BasicFileAttributes attrs) - throws IOException { - Files.delete(file); - return FileVisitResult.CONTINUE; - } - }); - } catch (IOException ex) { - appLogger.error(String.format(LocalizationManager.getLocalizedString("copyfiles.log.error.cleanupenvironment.folder.delete"), modpackDir)); - } finally { - appLogger.info(LocalizationManager.getLocalizedString("copyfiles.log.info.cleanupenvironment.folder.complete")); - } - } - if (new File(String.format("%s/server_pack.zip", modpackDir)).exists()) { - appLogger.info(LocalizationManager.getLocalizedString("copyfiles.log.info.cleanupenvironment.zip.enter")); - boolean isZipDeleted = new File(String.format("%s/server_pack.zip", modpackDir)).delete(); - if (isZipDeleted) { - appLogger.info(LocalizationManager.getLocalizedString("copyfiles.log.info.cleanupenvironment.zip.complete")); - } else { - appLogger.error(LocalizationManager.getLocalizedString("copyfiles.log.error.cleanupenvironment.zip.delete")); - } - } - } - - /** Copies start scripts for Forge modloader into the server_pack folder. - * @param modpackDir String. Files will be copied into subfolder server_pack. Checks for valid modpackDir are in ConfigCheck. - * @param modLoader String. Determines whether start scripts for Forge or Fabric are copied to modpackDir. Checks for valid modLoader are in ConfigCheck. - * @param includeStartScripts Boolean. Whether to include start scripts in server_pack. Boolean. - */ - void copyStartScripts(String modpackDir, String modLoader, boolean includeStartScripts) { - if (modLoader.equalsIgnoreCase("Forge") && includeStartScripts) { - appLogger.info(LocalizationManager.getLocalizedString("copyfiles.log.info.copystartscripts.forge")); - try { - Files.copy( - Paths.get(String.format("./server_files/%s", Reference.getForgeWindowsFile())), - Paths.get(String.format("%s/server_pack/%s", modpackDir, Reference.getForgeWindowsFile())), - REPLACE_EXISTING - ); - Files.copy( - Paths.get(String.format("./server_files/%s", Reference.getForgeLinuxFile())), - Paths.get(String.format("%s/server_pack/%s", modpackDir, Reference.getForgeLinuxFile())), - REPLACE_EXISTING - ); - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("copyfiles.log.error.copystartscripts"), ex); - } - } else if (modLoader.equalsIgnoreCase("Fabric") && includeStartScripts) { - appLogger.info(LocalizationManager.getLocalizedString("copyfiles.log.info.copystartscripts.fabric")); - try { - Files.copy( - Paths.get(String.format("./server_files/%s", Reference.getFabricWindowsFile())), - Paths.get(String.format("%s/server_pack/%s", modpackDir, Reference.getFabricWindowsFile())), - REPLACE_EXISTING - ); - Files.copy( - Paths.get(String.format("./server_files/%s", Reference.getFabricLinuxFile())), - Paths.get(String.format("%s/server_pack/%s", modpackDir, Reference.getFabricLinuxFile())), - REPLACE_EXISTING - ); - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("copyfiles.log.error.copystartscripts"), ex); - } - } else { - appLogger.error(LocalizationManager.getLocalizedString("configcheck.log.error.checkmodloader")); - } - } - - /** Copies all specified folders and their files to the modpackDir. - * @param modpackDir String. /server_pack. Directory where all directories listed in copyDirs will be copied into. - * @param copyDirs String List. The folders and files within to copy. - * @param clientMods String List. List of clientside-only mods NOT to copy to server pack. - * @throws IOException Only print stacktrace if it does not start with java.nio.file.DirectoryNotEmptyException. - */ - void copyFiles(String modpackDir, List<String> copyDirs, List<String> clientMods) throws IOException { - String serverPath = String.format("%s/server_pack", modpackDir); - Files.createDirectories(Paths.get(serverPath)); - for (int i = 0; i < copyDirs.size(); i++) { - String clientDir = String.format("%s/%s", modpackDir,copyDirs.get(i)); - String serverDir = String.format("%s/%s", serverPath,copyDirs.get(i)); - appLogger.info(String.format(LocalizationManager.getLocalizedString("copyfiles.log.info.copyfiles.setup"), serverDir)); - if (copyDirs.get(i).startsWith("saves/")) { - String savesDir = String.format("%s/%s", serverPath, copyDirs.get(i).substring(6)); - try { - Stream<Path> files = Files.walk(Paths.get(clientDir)); - files.forEach(file -> { - try { - - Files.copy( - file, - Paths.get(savesDir).resolve(Paths.get(clientDir).relativize(file)), - REPLACE_EXISTING - ); - - appLogger.debug(String.format(LocalizationManager.getLocalizedString("copyfiles.log.debug.copyfiles"), file.toAbsolutePath().toString())); - - } catch (IOException ex) { - if (!ex.toString().startsWith("java.nio.file.DirectoryNotEmptyException")) { - appLogger.error(LocalizationManager.getLocalizedString("copyfiles.log.error.copyfiles.saves"), ex); - } - } - }); - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("copyfiles.log.error.copyfiles.saves.world"), ex); - } - } else if (copyDirs.get(i).startsWith("mods") && clientMods.size() > 0) { - List<String> listOfFiles = excludeClientMods(clientDir, clientMods); - Files.createDirectories(Paths.get(serverDir)); - for (int in = 0; in < listOfFiles.size(); in++) { - try { - - Files.copy( - Paths.get(listOfFiles.get(in)), - Paths.get(String.format("%s/%s",serverDir, new File(listOfFiles.get(in)).getName())), - REPLACE_EXISTING - ); - - appLogger.debug(String.format(LocalizationManager.getLocalizedString("copyfiles.log.debug.copyfiles"), listOfFiles.get(in))); - - } catch (IOException ex) { - if (!ex.toString().startsWith("java.nio.file.DirectoryNotEmptyException")) { - appLogger.error(LocalizationManager.getLocalizedString("copyfiles.log.error.copyfiles.mods"), ex); - } - } - } - } else { - try { - Stream<Path> files = Files.walk(Paths.get(clientDir)); - files.forEach(file -> { - try { - - Files.copy( - file, - Paths.get(serverDir).resolve(Paths.get(clientDir).relativize(file)), - REPLACE_EXISTING - ); - - appLogger.debug(String.format(LocalizationManager.getLocalizedString("copyfiles.log.debug.copyfiles"), file.toAbsolutePath().toString())); - } catch (IOException ex) { - if (!ex.toString().startsWith("java.nio.file.DirectoryNotEmptyException")) { - appLogger.error(LocalizationManager.getLocalizedString("copyfiles.log.error.copyfiles.mods"), ex); - } - } - }); - files.close(); - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("copyfiles.log.error.copyfiles"), ex); - } - } - } - } - - /** Generate a list of all mods in a modpack EXCEPT clientside-only mods. This list is then used by copyFiles. - * @param modsDir String. /mods The directory in which to generate a list of all available mods. - * @param clientMods List String. A list of all clientside-only mods passed by copyFiles, which is then removed from the list generated in this method. - * @return List String. A list of all mods inside the modpack excluding the specified clientside-only mods. - */ - @SuppressWarnings("UnusedAssignment") - private List<String> excludeClientMods(String modsDir, List<String> clientMods) { - appLogger.info(LocalizationManager.getLocalizedString("copyfiles.log.info.excludeclientmods")); - String[] copyMods = new String[0]; - List<String> modpackModList = new ArrayList<>(); - - try (Stream<Path> walk = Files.walk(Paths.get(modsDir))) { - - modpackModList = walk.filter(Files::isRegularFile).map(Path::toString).collect(Collectors.toList()); - - for (int in = 0; in < modpackModList.size(); in++) { - - for (int i = 0; i < clientMods.size(); i++) { - - String modpackMod = modpackModList.get(in); - String clientMod = clientMods.get(i); - - if (modpackMod.contains(clientMod)) { - modpackModList.remove(in); - } - } - } - copyMods = modpackModList.toArray(new String[0]); - return Arrays.asList(copyMods.clone()); - - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("copyfiles.log.error.excludeclientmods"), ex); - } - return Arrays.asList(copyMods.clone()); - } - - /** Copies the server-icon.png into server_pack. - * @param modpackDir String. /server_pack. Directory where the server-icon.png will be copied to. - */ - void copyIcon(String modpackDir) { - appLogger.info(LocalizationManager.getLocalizedString("copyfiles.log.info.copyicon")); - try { - - Files.copy( - Paths.get(String.format("./server_files/%s", Reference.getIconFile())), - Paths.get(String.format("%s/server_pack/%s", modpackDir, Reference.getIconFile())), - REPLACE_EXISTING - ); - - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("copyfiles.log.error.copyicon"), ex); - } - } - - /** Copies the server.properties into server_pack. - * @param modpackDir String. /server_pack. Directory where the server.properties. will be copied to. - */ - void copyProperties(String modpackDir) { - appLogger.info(LocalizationManager.getLocalizedString("copyfiles.log.info.copyproperties")); - try { - - Files.copy( - Paths.get(String.format("./server_files/%s", Reference.getPropertiesFile())), - Paths.get(String.format("%s/server_pack/%s", modpackDir, Reference.getPropertiesFile())), - REPLACE_EXISTING - ); - - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("copyfiles.log.error.copyproperties"), ex); - } - } -} \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java new file mode 100644 index 000000000..110e922d5 --- /dev/null +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -0,0 +1,824 @@ +package de.griefed.serverpackcreator; + +import de.griefed.serverpackcreator.i18n.LocalizationManager; +import net.fabricmc.installer.util.LauncherMeta; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.w3c.dom.Document; +import org.xml.sax.SAXException; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathExpressionException; +import javax.xml.xpath.XPathFactory; +import java.io.*; +import java.net.URI; +import java.net.URL; +import java.nio.channels.Channels; +import java.nio.channels.FileChannel; +import java.nio.channels.ReadableByteChannel; +import java.nio.file.*; +import java.nio.file.attribute.BasicFileAttributes; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; + +public class CreateServerPack { + private static final Logger appLogger = LogManager.getLogger(FilesSetup.class); + private static final Logger installerLogger = LogManager.getLogger("InstallerLogger"); + + private ConfigCheck configCheck; + private LocalizationManager localizationManager; + private final File propertiesFile = new File("server.properties"); + private final File iconFile = new File("server-icon.png"); + private final File forgeWindowsFile = new File("start-forge.bat"); + private final File forgeLinuxFile = new File("start-forge.sh"); + private final File fabricWindowsFile = new File("start-fabric.bat"); + private final File fabricLinuxFile = new File("start-fabric.sh"); + + + public CreateServerPack(LocalizationManager injectedLocalizationManager, ConfigCheck injectedConfigCheck) { + if (injectedLocalizationManager == null) { + this.localizationManager = new LocalizationManager(); + } + + this.localizationManager = injectedLocalizationManager; + + if (injectedConfigCheck == null) { + this.configCheck = new ConfigCheck(localizationManager); + } + + this.configCheck = injectedConfigCheck; + } + + public File getPropertiesFile() { + return propertiesFile; + } + + public File getIconFile() { + return iconFile; + } + + public File getForgeWindowsFile() { + return forgeWindowsFile; + } + + public File getForgeLinuxFile() { + return forgeLinuxFile; + } + + public File getFabricWindowsFile() { + return fabricWindowsFile; + } + + public File getFabricLinuxFile() { + return fabricLinuxFile; + } + + /** + * Run when serverpackcreator is run in either -cli or -cgen mode. Runs what used to be the main content in Main in pre-1.x.x. times. Inits config checks and, if config checks are successfull, calls methods to create the server pack. + * @return Return true if the serverpack was successfully generated, false if not. + */ + public boolean run() { + if (!configCheck.checkConfigFile(configCheck.getConfigFile())) { + cleanupEnvironment(configCheck.getModpackDir()); + try { + copyFiles(configCheck.getModpackDir(), configCheck.getCopyDirs(), configCheck.getClientMods()); + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("handler.log.error.runincli.copyfiles"), ex); + } + copyStartScripts(configCheck.getModpackDir(), configCheck.getModLoader(), configCheck.getIncludeStartScripts()); + if (configCheck.getIncludeServerInstallation()) { + installServer(configCheck.getModLoader(), configCheck.getModpackDir(), configCheck.getMinecraftVersion(), configCheck.getModLoaderVersion(), configCheck.getJavaPath()); + } else { + appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.server")); + } + if (configCheck.getIncludeServerIcon()) { + copyIcon(configCheck.getModpackDir()); + } else { + appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.icon")); + } + if (configCheck.getIncludeServerProperties()) { + copyProperties(configCheck.getModpackDir()); + } else { + appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.properties")); + } + if (configCheck.getIncludeZipCreation()) { + zipBuilder(configCheck.getModpackDir(), configCheck.getModLoader(), configCheck.getIncludeServerInstallation()); + } else { + appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.zip")); + } + appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.runincli.serverpack"), configCheck.getModpackDir())); + appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.runincli.archive"), configCheck.getModpackDir())); + appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.finish")); + return true; + } else { + appLogger.error(localizationManager.getLocalizedString("handler.log.error.runincli")); + return false; + } + } + + /** Deletes files from previous runs of serverpackcreator. + * @param modpackDir String. The directory in where to check for files from previous runs. + */ + void cleanupEnvironment(String modpackDir) { + if (new File(String.format("%s/server_pack", modpackDir)).exists()) { + appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.cleanupenvironment.folder.enter")); + Path serverPack = Paths.get(String.format("%s/server_pack", modpackDir)); + try { + Files.walkFileTree(serverPack, + new SimpleFileVisitor<Path>() { + @Override + public FileVisitResult postVisitDirectory( + Path dir, IOException exc) throws IOException { + Files.delete(dir); + return FileVisitResult.CONTINUE; + } + @Override + public FileVisitResult visitFile( + Path file, BasicFileAttributes attrs) + throws IOException { + Files.delete(file); + return FileVisitResult.CONTINUE; + } + }); + } catch (IOException ex) { + appLogger.error(String.format(localizationManager.getLocalizedString("copyfiles.log.error.cleanupenvironment.folder.delete"), modpackDir)); + } finally { + appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.cleanupenvironment.folder.complete")); + } + } + if (new File(String.format("%s/server_pack.zip", modpackDir)).exists()) { + appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.cleanupenvironment.zip.enter")); + boolean isZipDeleted = new File(String.format("%s/server_pack.zip", modpackDir)).delete(); + if (isZipDeleted) { + appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.cleanupenvironment.zip.complete")); + } else { + appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.cleanupenvironment.zip.delete")); + } + } + } + + /** Copies start scripts for Forge modloader into the server_pack folder. + * @param modpackDir String. Files will be copied into subfolder server_pack. Checks for valid modpackDir are in ConfigCheck. + * @param modLoader String. Determines whether start scripts for Forge or Fabric are copied to modpackDir. Checks for valid modLoader are in ConfigCheck. + * @param includeStartScripts Boolean. Whether to include start scripts in server_pack. Boolean. + */ + void copyStartScripts(String modpackDir, String modLoader, boolean includeStartScripts) { + if (modLoader.equalsIgnoreCase("Forge") && includeStartScripts) { + appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.copystartscripts.forge")); + try { + Files.copy( + Paths.get(String.format("./server_files/%s", getForgeWindowsFile())), + Paths.get(String.format("%s/server_pack/%s", modpackDir, getForgeWindowsFile())), + REPLACE_EXISTING + ); + Files.copy( + Paths.get(String.format("./server_files/%s", getForgeLinuxFile())), + Paths.get(String.format("%s/server_pack/%s", modpackDir, getForgeLinuxFile())), + REPLACE_EXISTING + ); + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copystartscripts"), ex); + } + } else if (modLoader.equalsIgnoreCase("Fabric") && includeStartScripts) { + appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.copystartscripts.fabric")); + try { + Files.copy( + Paths.get(String.format("./server_files/%s", getFabricWindowsFile())), + Paths.get(String.format("%s/server_pack/%s", modpackDir, getFabricWindowsFile())), + REPLACE_EXISTING + ); + Files.copy( + Paths.get(String.format("./server_files/%s", getFabricLinuxFile())), + Paths.get(String.format("%s/server_pack/%s", modpackDir, getFabricLinuxFile())), + REPLACE_EXISTING + ); + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copystartscripts"), ex); + } + } else { + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkmodloader")); + } + } + + /** Copies all specified folders and their files to the modpackDir. + * @param modpackDir String. /server_pack. Directory where all directories listed in copyDirs will be copied into. + * @param copyDirs String List. The folders and files within to copy. + * @param clientMods String List. List of clientside-only mods NOT to copy to server pack. + * @throws IOException Only print stacktrace if it does not start with java.nio.file.DirectoryNotEmptyException. + */ + void copyFiles(String modpackDir, List<String> copyDirs, List<String> clientMods) throws IOException { + String serverPath = String.format("%s/server_pack", modpackDir); + Files.createDirectories(Paths.get(serverPath)); + for (int i = 0; i < copyDirs.size(); i++) { + String clientDir = String.format("%s/%s", modpackDir,copyDirs.get(i)); + String serverDir = String.format("%s/%s", serverPath,copyDirs.get(i)); + appLogger.info(String.format(localizationManager.getLocalizedString("copyfiles.log.info.copyfiles.setup"), serverDir)); + if (copyDirs.get(i).startsWith("saves/")) { + String savesDir = String.format("%s/%s", serverPath, copyDirs.get(i).substring(6)); + try { + Stream<Path> files = Files.walk(Paths.get(clientDir)); + files.forEach(file -> { + try { + + Files.copy( + file, + Paths.get(savesDir).resolve(Paths.get(clientDir).relativize(file)), + REPLACE_EXISTING + ); + + appLogger.debug(String.format(localizationManager.getLocalizedString("copyfiles.log.debug.copyfiles"), file.toAbsolutePath().toString())); + + } catch (IOException ex) { + if (!ex.toString().startsWith("java.nio.file.DirectoryNotEmptyException")) { + appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyfiles.saves"), ex); + } + } + }); + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyfiles.saves.world"), ex); + } + } else if (copyDirs.get(i).startsWith("mods") && clientMods.size() > 0) { + List<String> listOfFiles = excludeClientMods(clientDir, clientMods); + Files.createDirectories(Paths.get(serverDir)); + for (int in = 0; in < listOfFiles.size(); in++) { + try { + + Files.copy( + Paths.get(listOfFiles.get(in)), + Paths.get(String.format("%s/%s",serverDir, new File(listOfFiles.get(in)).getName())), + REPLACE_EXISTING + ); + + appLogger.debug(String.format(localizationManager.getLocalizedString("copyfiles.log.debug.copyfiles"), listOfFiles.get(in))); + + } catch (IOException ex) { + if (!ex.toString().startsWith("java.nio.file.DirectoryNotEmptyException")) { + appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyfiles.mods"), ex); + } + } + } + } else { + try { + Stream<Path> files = Files.walk(Paths.get(clientDir)); + files.forEach(file -> { + try { + + Files.copy( + file, + Paths.get(serverDir).resolve(Paths.get(clientDir).relativize(file)), + REPLACE_EXISTING + ); + + appLogger.debug(String.format(localizationManager.getLocalizedString("copyfiles.log.debug.copyfiles"), file.toAbsolutePath().toString())); + } catch (IOException ex) { + if (!ex.toString().startsWith("java.nio.file.DirectoryNotEmptyException")) { + appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyfiles.mods"), ex); + } + } + }); + files.close(); + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyfiles"), ex); + } + } + } + } + + /** Generate a list of all mods in a modpack EXCEPT clientside-only mods. This list is then used by copyFiles. + * @param modsDir String. /mods The directory in which to generate a list of all available mods. + * @param clientMods List String. A list of all clientside-only mods passed by copyFiles, which is then removed from the list generated in this method. + * @return List String. A list of all mods inside the modpack excluding the specified clientside-only mods. + */ + @SuppressWarnings("UnusedAssignment") + List<String> excludeClientMods(String modsDir, List<String> clientMods) { + appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.excludeclientmods")); + String[] copyMods = new String[0]; + List<String> modpackModList = new ArrayList<>(); + + try (Stream<Path> walk = Files.walk(Paths.get(modsDir))) { + + modpackModList = walk.filter(Files::isRegularFile).map(Path::toString).collect(Collectors.toList()); + + for (int in = 0; in < modpackModList.size(); in++) { + + for (int i = 0; i < clientMods.size(); i++) { + + String modpackMod = modpackModList.get(in); + String clientMod = clientMods.get(i); + + if (modpackMod.contains(clientMod)) { + modpackModList.remove(in); + } + } + } + copyMods = modpackModList.toArray(new String[0]); + return Arrays.asList(copyMods.clone()); + + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.excludeclientmods"), ex); + } + return Arrays.asList(copyMods.clone()); + } + + /** Copies the server-icon.png into server_pack. + * @param modpackDir String. /server_pack. Directory where the server-icon.png will be copied to. + */ + void copyIcon(String modpackDir) { + appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.copyicon")); + try { + + Files.copy( + Paths.get(String.format("./server_files/%s", getIconFile())), + Paths.get(String.format("%s/server_pack/%s", modpackDir, getIconFile())), + REPLACE_EXISTING + ); + + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyicon"), ex); + } + } + + /** Copies the server.properties into server_pack. + * @param modpackDir String. /server_pack. Directory where the server.properties. will be copied to. + */ + void copyProperties(String modpackDir) { + appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.copyproperties")); + try { + + Files.copy( + Paths.get(String.format("./server_files/%s", getPropertiesFile())), + Paths.get(String.format("%s/server_pack/%s", modpackDir, getPropertiesFile())), + REPLACE_EXISTING + ); + + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyproperties"), ex); + } + } + + /** Installs the files for a Forge/Fabric server. + * @param modLoader String. The modloader for which to install the server. + * @param modpackDir String. /server_pack The directory where the modloader server will be installed in. + * @param minecraftVersion String. The Minecraft version for which to install the modloader and Minecraft server. + * @param modLoaderVersion String. The modloader version for which to install the modloader and Minecraft server. + * @param javaPath String. Path to Java installation needed to execute the Fabric and Forge installers. + */ + void installServer(String modLoader, String modpackDir, String minecraftVersion, String modLoaderVersion, String javaPath) { + File fabricInstaller = new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)); + File forgeInstaller = new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)); + if (modLoader.equalsIgnoreCase("Fabric")) { + try { + appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver.fabric.enter")); + installerLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver.fabric.enter")); + if (downloadFabricJar(modpackDir)) { + appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver.fabric.download")); + ProcessBuilder processBuilder = new ProcessBuilder( + javaPath, + "-jar", + "fabric-installer.jar", + "server", + String.format("-mcversion %s", minecraftVersion), + String.format("-loader %s", modLoaderVersion), + "-downloadMinecraft").directory(new File(String.format("%s/server_pack", modpackDir))); + processBuilder.redirectErrorStream(true); + Process process = processBuilder.start(); + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + String line; + while (true) { + line = reader.readLine(); + if (line == null) { break; } + installerLogger.info(line); + } + installerLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver")); + reader.close(); + appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver.fabric.details")); + appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver")); + } else { + appLogger.error(localizationManager.getLocalizedString("serversetup.log.error.installserver.fabric")); + } + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("serversetup.log.error.installserver.fabricfail"), ex); + } + } else if (modLoader.equalsIgnoreCase("Forge")) { + try { + appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver.forge.enter")); + installerLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver.forge.enter")); + if (downloadForgeJar(minecraftVersion, modLoaderVersion, modpackDir)) { + appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver.forge.download")); + ProcessBuilder processBuilder = new ProcessBuilder( + javaPath, + "-jar", + "forge-installer.jar", + "--installServer") + .directory(new File(String.format("%s/server_pack", modpackDir))); + processBuilder.redirectErrorStream(true); + Process process = processBuilder.start(); + BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + String line; + while (true) { + line = reader.readLine(); + if (line == null) { break; } + installerLogger.info(line); + } + installerLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver")); + reader.close(); + appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver.forge.details")); + appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver")); + process.destroy(); + } else { + appLogger.error(localizationManager.getLocalizedString("serversetup.log.error.installserver.forge")); + } + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("serversetup.log.error.installserver.forgefail"), ex); + } + } else { + appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.checkmodloader"), modLoader)); + } + + generateDownloadScripts(modLoader, modpackDir, minecraftVersion); + cleanUpServerPack( + fabricInstaller, + forgeInstaller, + modLoader, + modpackDir, + minecraftVersion, modLoaderVersion); + + } + /** Create a zip-archive of the serverpack, excluding Mojang's minecraft_server.jar. + * With help from https://stackoverflow.com/questions/1091788/how-to-create-a-zip-file-in-java + * @param modpackDir String. The directory where the zip-archive will be created and saved in. + * @param modLoader String. Determines the name of Minecraft#s server jar which will be deleted from the zip-archive. + * @param includeServerInstallation Boolean. Determines whether the Minecraft server jar needs to be deleted from the zip-archive. + */ + void zipBuilder(String modpackDir, String modLoader, Boolean includeServerInstallation) { + final Path sourceDir = Paths.get(String.format("%s/server_pack", modpackDir)); + String zipFileName = sourceDir.toString().concat(".zip"); + appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.zipbuilder.enter")); + try { + final ZipOutputStream outputStream = new ZipOutputStream(new FileOutputStream(zipFileName)); + Files.walkFileTree(sourceDir, new SimpleFileVisitor<Path>() { + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attributes) { + try { + Path targetFile = sourceDir.relativize(file); + outputStream.putNextEntry(new ZipEntry(targetFile.toString())); + byte[] bytes = Files.readAllBytes(file); + outputStream.write(bytes, 0, bytes.length); + outputStream.closeEntry(); + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("serversetup.log.error.zipbuilder.create"), ex); + } + return FileVisitResult.CONTINUE; + } + }); + outputStream.close(); + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("serversetup.log.error.zipbuilder.create"), ex); + } + if (includeServerInstallation) { + deleteMinecraftJar(modLoader, modpackDir); + appLogger.warn(localizationManager.getLocalizedString("serversetup.log.warn.zipbuilder.minecraftjar1")); + appLogger.warn(localizationManager.getLocalizedString("serversetup.log.warn.zipbuilder.minecraftjar2")); + appLogger.warn(localizationManager.getLocalizedString("serversetup.log.warn.zipbuilder.minecraftjar3")); + } + appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.zipbuilder.finish")); + } + + /** Calls methods for generating download scripts for Mojang's Minecraft server depending on the specified versions and modloader. + * @param modLoader String. The specified modloader determines the name under which Mojang's server jar will be downloaded as. + * @param modpackDir String. /server_pack The directory where the scripts will be placed in. + * @param minecraftVersion String. The version of the Minecraft server jar to download. + */ + void generateDownloadScripts(String modLoader, String modpackDir, String minecraftVersion) { + if (modLoader.equalsIgnoreCase("Fabric")) { + fabricShell(modpackDir, minecraftVersion); + fabricBatch(modpackDir, minecraftVersion); + } else if (modLoader.equalsIgnoreCase("Forge")) { + forgeShell(modpackDir, minecraftVersion); + forgeBatch(modpackDir, minecraftVersion); + } else { + appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.checkmodloader"), modLoader)); + } + } + + /** Generates download scripts for Mojang's Minecraft server for Fabric,Linux. + * @param modpackDir String. /server_pack The directory where the scripts will be placed in. + * @param minecraftVersion String. The version of the Minecraft server jar to download. + */ + void fabricShell(String modpackDir, String minecraftVersion) { + try { + String downloadMinecraftServer = (new URL( + LauncherMeta + .getLauncherMeta() + .getVersion(minecraftVersion) + .getVersionMeta() + .downloads + .get("server") + .url)) + .toString(); + String shFabric = String.format("#!/bin/bash\n#Download the Minecraft_server.jar for your modpack\n\nwget -O server.jar %s", downloadMinecraftServer); + Path pathSh = Paths.get(String.format("%s/server_pack/download_minecraft-server.jar_fabric.sh", modpackDir)); + byte[] strToBytesSh = shFabric.getBytes(); + Files.write(pathSh, strToBytesSh); + String readSh = Files.readAllLines(pathSh).get(0); + appLogger.debug(String.format(localizationManager.getLocalizedString("serverutilities.log.debug.fabricshell"), readSh)); + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.fabricshell"), ex); + } + appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.fabricshell")); + } + + /** Generates download scripts for Mojang's Minecraft server for Fabric,Windows. + * @param modpackDir String. /server_pack The directory where the scripts will be placed in. + * @param minecraftVersion String. The version of the Minecraft server jar to download. + */ + void fabricBatch(String modpackDir, String minecraftVersion) { + try { + String downloadMinecraftServer = (new URL( + LauncherMeta + .getLauncherMeta() + .getVersion(minecraftVersion) + .getVersionMeta() + .downloads + .get("server") + .url)) + .toString(); + String batFabric = String.format("powershell -Command \"(New-Object Net.WebClient).DownloadFile('%s', 'server.jar')\"", downloadMinecraftServer); + Path pathBat = Paths.get(String.format("%s/server_pack/download_minecraft-server.jar_fabric.bat", modpackDir)); + byte[] strToBytesBat = batFabric.getBytes(); + Files.write(pathBat, strToBytesBat); + String readBat = Files.readAllLines(pathBat).get(0); + appLogger.debug(String.format(localizationManager.getLocalizedString("serverutilities.log.debug.fabricbatch"), readBat)); + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.fabricbatch"), ex); + } + appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.fabricbatch")); + } + + /** Generates download scripts for Mojang's Minecraft server for Forge,Linux. + * @param modpackDir String. /server_pack The directory where the scripts will be placed in. + * @param minecraftVersion String. The version of the Minecraft server jar to download. + */ + void forgeShell(String modpackDir, String minecraftVersion) { + try { + String downloadMinecraftServer = (new URL( + LauncherMeta + .getLauncherMeta() + .getVersion(minecraftVersion) + .getVersionMeta() + .downloads + .get("server") + .url)) + .toString(); + String shForge = String.format("#!/bin/bash\n# Download the Minecraft_server.jar for your modpack\n\nwget -O minecraft_server.%s.jar %s", minecraftVersion, downloadMinecraftServer); + Path pathSh = Paths.get(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)); + byte[] strToBytesSh = shForge.getBytes(); + Files.write(pathSh, strToBytesSh); + String readSh = Files.readAllLines(pathSh).get(0); + appLogger.debug(String.format(localizationManager.getLocalizedString("serverutilities.log.debug.forgeshell"), readSh)); + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.forgeshell"), ex); + } + appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.forgeshell")); + } + + /** Generates download scripts for Mojang's Minecraft server for Forge,Windows. + * @param modpackDir String. /server_pack The directory where the scripts will be placed in. + * @param minecraftVersion String. The version of the Minecraft server jar to download. + */ + void forgeBatch(String modpackDir, String minecraftVersion) { + try { + String downloadMinecraftServer = (new URL( + LauncherMeta + .getLauncherMeta() + .getVersion(minecraftVersion) + .getVersionMeta() + .downloads + .get("server") + .url)) + .toString(); + String batForge = String.format("powershell -Command \"(New-Object Net.WebClient).DownloadFile('%s', 'minecraft_server.%s.jar')\"", downloadMinecraftServer, minecraftVersion); + Path pathBat = Paths.get(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)); + byte[] strToBytesBat = batForge.getBytes(); + Files.write(pathBat, strToBytesBat); + String readBat = Files.readAllLines(pathBat).get(0); + appLogger.debug(String.format(localizationManager.getLocalizedString("serverutilities.log.debug.forgebatch"), readBat)); + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.forgebatch"), ex); + } + appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.forgebatch")); + } + + /** Downloads the specified version of Fabric. + * @param modpackDir String. /server_pack The directory where the Fabric installer will be placed in. + * @return Boolean. Returns true if the download was successful. False if not. + */ + boolean downloadFabricJar(String modpackDir) { + boolean downloaded = false; + try { + appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.downloadfabricjar.enter")); + String latestFabricInstaller = latestFabricInstaller(modpackDir); + URL downloadFabric = new URL(String.format("https://maven.fabricmc.net/net/fabricmc/fabric-installer/%s/fabric-installer-%s.jar", latestFabricInstaller, latestFabricInstaller)); + + ReadableByteChannel readableByteChannel = Channels.newChannel(downloadFabric.openStream()); + FileOutputStream downloadFabricFileOutputStream = new FileOutputStream(String.format("%s/server_pack/fabric-installer.jar", modpackDir)); + FileChannel downloadFabricFileChannel = downloadFabricFileOutputStream.getChannel(); + downloadFabricFileOutputStream.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE); + + downloadFabricFileOutputStream.flush(); + downloadFabricFileOutputStream.close(); + readableByteChannel.close(); + downloadFabricFileChannel.close(); + + } catch (IOException e) { + appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.downloadfabricjar.download"), e); + if (new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)).exists()) { + try { + Files.delete(Paths.get(String.format("%s/server_pack/fabric-installer.jar", modpackDir))); + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.downloadfabricjar.delete"), ex); + } + } + } + if (new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)).exists()) { + downloaded = true; + } + return downloaded; + } + + /** Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer. + * @param modpackDir String. /server_pack The directory where the Fabric installer will be placed in. + * @return Boolean. Returns true if the download was successful. False if not. + */ + String latestFabricInstaller(String modpackDir) { + String result; + try { + URL downloadFabricXml = new URL("https://maven.fabricmc.net/net/fabricmc/fabric-installer/maven-metadata.xml"); + + ReadableByteChannel downloadFabricXmlReadableByteChannel = Channels.newChannel(downloadFabricXml.openStream()); + FileOutputStream downloadFabricXmlFileOutputStream = new FileOutputStream(String.format("%s/server_pack/fabric-installer.xml", modpackDir)); + FileChannel downloadFabricXmlFileChannel = downloadFabricXmlFileOutputStream.getChannel(); + downloadFabricXmlFileOutputStream.getChannel().transferFrom(downloadFabricXmlReadableByteChannel, 0, Long.MAX_VALUE); + + downloadFabricXmlFileOutputStream.flush(); + downloadFabricXmlFileOutputStream.close(); + downloadFabricXmlReadableByteChannel.close(); + downloadFabricXmlFileChannel.close(); + + DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = domFactory.newDocumentBuilder(); + Document fabricXml = builder.parse(new File(String.format("%s/server_pack/fabric-installer.xml",modpackDir))); + XPathFactory xPathFactory = XPathFactory.newInstance(); + XPath xpath = xPathFactory.newXPath(); + + result = (String) xpath.evaluate("/metadata/versioning/release", fabricXml, XPathConstants.STRING); + appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.latestfabricinstaller")); + } catch (IOException | ParserConfigurationException | SAXException | XPathExpressionException ex) { + appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.latestfabricinstaller"), ex); + result = "0.7.2"; + } + return result; + } + + /** Downloads the specified version of the Forge installer to be used in ServerSetup.installServer. + * @param minecraftVersion String. The Minecraft version corresponding to the Forge version. Minecraft version and Forge version build a pair. + * @param modLoaderVersion String. The Forge version corresponding to the Minecraft version. Minecraft version and Forge version build a pair. + * @param modpackDir String. /server_pack The directory where the Forge installer will be placed in. + * @return Boolean. Returns true if the download was successful. False if not. + */ + boolean downloadForgeJar(String minecraftVersion, String modLoaderVersion, String modpackDir) { + boolean downloaded = false; + try { + appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.downloadforgejar.enter")); + URL downloadForge = new URL(String.format("https://files.minecraftforge.net/maven/net/minecraftforge/forge/%s-%s/forge-%s-%s-installer.jar", minecraftVersion, modLoaderVersion, minecraftVersion, modLoaderVersion)); + + ReadableByteChannel readableByteChannel = Channels.newChannel(downloadForge.openStream()); + FileOutputStream downloadForgeFileOutputStream = new FileOutputStream(String.format("%s/server_pack/forge-installer.jar", modpackDir)); + FileChannel downloadForgeFileChannel = downloadForgeFileOutputStream.getChannel(); + downloadForgeFileOutputStream.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE); + + downloadForgeFileOutputStream.flush(); + downloadForgeFileOutputStream.close(); + readableByteChannel.close(); + downloadForgeFileChannel.close(); + + } catch (IOException e) { + appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.downloadforgejar.download"), e); + if (new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).exists()) { + if (new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).delete()) { + appLogger.error(localizationManager.getLocalizedString("serverutilities.log.debug.downloadforgejar")); + } + } + } + if (new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).exists()) { + downloaded = true; + } + return downloaded; + } + + /** Deletes Mojang's minecraft_server.jar from the zip-archive so users do not accidentally upload a file containing software from Mojang. + * With help from https://stackoverflow.com/questions/5244963/delete-files-from-a-zip-archive-without-decompressing-in-java-or-maybe-python and https://bugs.openjdk.java.net/browse/JDK-8186227 + * @param modLoader String. Determines the name of the file to delete. + * @param modpackDir String. /server_pack The directory in which the file will be deleted. + */ + void deleteMinecraftJar(String modLoader, String modpackDir) { + if (modLoader.equalsIgnoreCase("Forge")) { + appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.deleteminecraftjar.enter")); + + Map<String, String> zip_properties = new HashMap<>(); + zip_properties.put("create", "false"); + zip_properties.put("encoding", "UTF-8"); + + Path serverpackZip = Paths.get(String.format("%s/server_pack.zip", modpackDir)); + URI zipUri = URI.create("jar:" + serverpackZip.toUri()); + + try (FileSystem zipfs = FileSystems.newFileSystem(zipUri, zip_properties)) { + Path pathInZipfile = zipfs.getPath("minecraft_server.1.16.5.jar"); + Files.delete(pathInZipfile); + appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.deleteminecraftjar.success")); + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.deleteminecraftjar.delete"), ex); + } + } else if (modLoader.equalsIgnoreCase("Fabric")) { + appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.deleteminecraftjar.enter")); + + Map<String, String> zip_properties = new HashMap<>(); + zip_properties.put("create", "false"); + zip_properties.put("encoding", "UTF-8"); + + Path serverpackZip = Paths.get(String.format("%s/server_pack.zip", modpackDir)); + URI zipUri = URI.create(String.format("jar:%s", serverpackZip.toUri())); + + try (FileSystem zipfs = FileSystems.newFileSystem(zipUri, zip_properties)) { + Path pathInZipfile = zipfs.getPath("server.jar"); + Files.delete(pathInZipfile); + appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.deleteminecraftjar.success")); + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.deleteminecraftjar.delete"), ex); + } + } else { + appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.checkmodloader"), modLoader)); + } + } + + /** Deletes remnant files from Fabric/Forge installation no longer needed. + * @param fabricInstaller File. Fabric installer to be deleted. + * @param forgeInstaller File. Forge installer to be deleted. + * @param modLoader String. Whether Forge or Fabric files are to be deleted. + * @param modpackDir String. /server_pack The directory where files are to be deleted. + * @param minecraftVersion String. Needed for renaming the Forge server jar to work with launch scripts provided by serverpackcreator. + * @param modLoaderVersion String. Needed for renaming the Forge server jar to work with launch scripts provided by serverpackcreator. + */ + void cleanUpServerPack(File fabricInstaller, File forgeInstaller, String modLoader, String modpackDir, String minecraftVersion, String modLoaderVersion) { + appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.enter")); + if (modLoader.equalsIgnoreCase("Fabric")) { + File fabricXML = new File(String.format("%s/server_pack/fabric-installer.xml", modpackDir)); + boolean isXmlDeleted = fabricXML.delete(); + boolean isInstallerDeleted = fabricInstaller.delete(); + if (isXmlDeleted) + { appLogger.info(String.format(localizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.deleted"), fabricXML.getName())); } + else + { appLogger.error(String.format(localizationManager.getLocalizedString("serverutilities.log.error.cleanupserverpack.delete"), fabricXML.getName())); } + + if (isInstallerDeleted) + { appLogger.info(String.format(localizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.deleted"), fabricInstaller.getName())); } + else + { appLogger.error(String.format(localizationManager.getLocalizedString("serverutilities.log.error.cleanupserverpack.delete"), fabricInstaller.getName())); } + + } else if (modLoader.equalsIgnoreCase("Forge")) { + try { + Files.copy( + Paths.get(String.format("%s/server_pack/forge-%s-%s.jar", modpackDir, minecraftVersion, modLoaderVersion)), + Paths.get(String.format("%s/server_pack/forge.jar", modpackDir)), + REPLACE_EXISTING); + boolean isOldJarDeleted = (new File( + String.format("%s/server_pack/forge-%s-%s.jar", modpackDir, minecraftVersion, modLoaderVersion))).delete(); + boolean isInstallerDeleted = forgeInstaller.delete(); + + if ((isOldJarDeleted) && (new File(String.format("%s/server_pack/forge.jar", modpackDir)).exists())) + { appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.rename")); } + else + { appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.cleanupserverpack.rename")); } + + if (isInstallerDeleted) + { appLogger.info(String.format(localizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.deleted"), forgeInstaller.getName())); } + else + { appLogger.error(String.format(localizationManager.getLocalizedString("serverutilities.log.error.cleanupserverpack.delete"), forgeInstaller.getName())); } + + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.cleanupserverpack"), ex); + } + } else { + appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.checkmodloader"), modLoader)); + } + } +} \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java index 05cfc37a0..66c0e46c6 100644 --- a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java +++ b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java @@ -1,24 +1,74 @@ package de.griefed.serverpackcreator; -import de.griefed.serverpackcreator.i18n.IncorrectLanguageException; import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; -import java.util.Arrays; public class FilesSetup { - private static final Logger appLogger = LogManager.getLogger(FilesSetup.class); + + private final Logger appLogger = LogManager.getLogger(FilesSetup.class); + + private final File configFile = new File("serverpackcreator.conf"); + private final File oldConfigFile = new File("creator.conf"); + private final File propertiesFile = new File("server.properties"); + private final File iconFile = new File("server-icon.png"); + private final File forgeWindowsFile = new File("start-forge.bat"); + private final File forgeLinuxFile = new File("start-forge.sh"); + private final File fabricWindowsFile = new File("start-fabric.bat"); + private final File fabricLinuxFile = new File("start-fabric.sh"); + + private LocalizationManager localizationManager; + + public FilesSetup(LocalizationManager injectedLocalizationManager) { + if (injectedLocalizationManager == null) { + this.localizationManager = new LocalizationManager(); + } + this.localizationManager = injectedLocalizationManager; + } + + public File getConfigFile() { + return configFile; + } + + public File getOldConfigFile() { + return oldConfigFile; + } + + public File getPropertiesFile() { + return propertiesFile; + } + + public File getIconFile() { + return iconFile; + } + + public File getForgeWindowsFile() { + return forgeWindowsFile; + } + + public File getForgeLinuxFile() { + return forgeLinuxFile; + } + + public File getFabricWindowsFile() { + return fabricWindowsFile; + } + + public File getFabricLinuxFile() { + return fabricLinuxFile; + } + /** Calls individual methods which check for existence of default files. If any of these methods return true, serverpackcreator will exit, giving the user the chance to customize it before the program runs in production. */ void filesSetup() { - appLogger.info(LocalizationManager.getLocalizedString("filessetup.log.info.filessetup.enter")); + appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.filessetup.enter")); try { Files.createDirectories(Paths.get("./server_files")); } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("filessetup.log.error.filessetup"), ex); + appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.filessetup"), ex); } boolean doesConfigExist = checkForConfig(); boolean doesFabricLinuxExist = checkForFabricLinux(); @@ -36,14 +86,14 @@ public class FilesSetup { doesPropertiesExist || doesIconExist) { - appLogger.warn(LocalizationManager.getLocalizedString("filessetup.log.warn.filessetup.warning0")); - appLogger.warn(LocalizationManager.getLocalizedString("filessetup.log.warn.filessetup.warning1")); - appLogger.warn(LocalizationManager.getLocalizedString("filessetup.log.warn.filessetup.warning2")); - appLogger.warn(LocalizationManager.getLocalizedString("filessetup.log.warn.filessetup.warning3")); - appLogger.warn(LocalizationManager.getLocalizedString("filessetup.log.warn.filessetup.warning0")); + appLogger.warn(localizationManager.getLocalizedString("filessetup.log.warn.filessetup.warning0")); + appLogger.warn(localizationManager.getLocalizedString("filessetup.log.warn.filessetup.warning1")); + appLogger.warn(localizationManager.getLocalizedString("filessetup.log.warn.filessetup.warning2")); + appLogger.warn(localizationManager.getLocalizedString("filessetup.log.warn.filessetup.warning3")); + appLogger.warn(localizationManager.getLocalizedString("filessetup.log.warn.filessetup.warning0")); } else { - appLogger.info(LocalizationManager.getLocalizedString("filessetup.log.info.filessetup.finish")); + appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.filessetup.finish")); } } /** Check for old config file, if found rename to new name. If neither old nor new config file can be found, a new config file is generated. @@ -51,33 +101,33 @@ public class FilesSetup { */ boolean checkForConfig() { boolean firstRun = false; - if (Reference.getOldConfigFile().exists()) { + if (getOldConfigFile().exists()) { try { - Files.copy(Reference.getOldConfigFile().getAbsoluteFile().toPath(), Reference.getConfigFile().getAbsoluteFile().toPath()); + Files.copy(getOldConfigFile().getAbsoluteFile().toPath(), getConfigFile().getAbsoluteFile().toPath()); - boolean isOldConfigDeleted = Reference.getOldConfigFile().delete(); + boolean isOldConfigDeleted = getOldConfigFile().delete(); if (isOldConfigDeleted) { - appLogger.info(LocalizationManager.getLocalizedString("filessetup.log.info.chechforconfig.old")); + appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.chechforconfig.old")); } } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("filessetup.log.error.checkforconfig.old"), ex); + appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.checkforconfig.old"), ex); } - } else if (!Reference.getConfigFile().exists()) { + } else if (!getConfigFile().exists()) { try { - InputStream link = (CopyFiles.class.getResourceAsStream(String.format("/de/griefed/resources/%s", Reference.getConfigFile().getName()))); + InputStream link = (FilesSetup.class.getResourceAsStream(String.format("/de/griefed/resources/%s", getConfigFile().getName()))); if (link != null) { - Files.copy(link, Reference.getConfigFile().getAbsoluteFile().toPath()); + Files.copy(link, getConfigFile().getAbsoluteFile().toPath()); link.close(); } - appLogger.info(LocalizationManager.getLocalizedString("filessetup.log.info.checkforconfig.config")); + appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.checkforconfig.config")); firstRun = true; } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.FileAlreadyExistsException")) { - appLogger.error(LocalizationManager.getLocalizedString("filessetup.log.error.checkforconfig.config"), ex); + appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.checkforconfig.config"), ex); firstRun = true; } } @@ -90,20 +140,20 @@ public class FilesSetup { */ boolean checkForFabricLinux() { boolean firstRun = false; - if (!Reference.getFabricLinuxFile().exists()) { + if (!getFabricLinuxFile().exists()) { try { - InputStream link = (CopyFiles.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", Reference.getFabricLinuxFile().getName()))); + InputStream link = (FilesSetup.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getFabricLinuxFile().getName()))); if (link != null) { - Files.copy(link, Paths.get(String.format("./server_files/%s", Reference.getFabricLinuxFile()))); + Files.copy(link, Paths.get(String.format("./server_files/%s", getFabricLinuxFile()))); link.close(); } - appLogger.info(LocalizationManager.getLocalizedString("filessetup.log.info.checkforfabriclinux")); + appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.checkforfabriclinux")); firstRun = true; } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.FileAlreadyExistsException")) { - appLogger.error(LocalizationManager.getLocalizedString("filessetup.log.error.checkforfabriclinux"), ex); + appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.checkforfabriclinux"), ex); firstRun = true; } } @@ -116,20 +166,20 @@ public class FilesSetup { */ boolean checkForFabricWindows() { boolean firstRun = false; - if (!Reference.getFabricWindowsFile().exists()) { + if (!getFabricWindowsFile().exists()) { try { - InputStream link = (CopyFiles.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", Reference.getFabricWindowsFile().getName()))); + InputStream link = (FilesSetup.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getFabricWindowsFile().getName()))); if (link != null) { - Files.copy(link, Paths.get(String.format("./server_files/%s", Reference.getFabricWindowsFile()))); + Files.copy(link, Paths.get(String.format("./server_files/%s", getFabricWindowsFile()))); link.close(); } - appLogger.info(LocalizationManager.getLocalizedString("filessetup.log.info.checkforfabricwindows")); + appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.checkforfabricwindows")); firstRun = true; } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.FileAlreadyExistsException")) { - appLogger.error(LocalizationManager.getLocalizedString("filessetup.log.error.checkforfabricwindows"), ex); + appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.checkforfabricwindows"), ex); firstRun = true; } } @@ -142,20 +192,20 @@ public class FilesSetup { */ boolean checkForForgeLinux() { boolean firstRun = false; - if (!Reference.getForgeLinuxFile().exists()) { + if (!getForgeLinuxFile().exists()) { try { - InputStream link = (CopyFiles.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", Reference.getForgeLinuxFile().getName()))); + InputStream link = (FilesSetup.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getForgeLinuxFile().getName()))); if (link != null) { - Files.copy(link, Paths.get(String.format("./server_files/%s", Reference.getForgeLinuxFile()))); + Files.copy(link, Paths.get(String.format("./server_files/%s", getForgeLinuxFile()))); link.close(); } - appLogger.info(LocalizationManager.getLocalizedString("filessetup.log.info.checkforforgelinux")); + appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.checkforforgelinux")); firstRun = true; } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.FileAlreadyExistsException")) { - appLogger.error(LocalizationManager.getLocalizedString("filessetup.log.error.checkforforgelinux"), ex); + appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.checkforforgelinux"), ex); firstRun = true; } } @@ -168,20 +218,20 @@ public class FilesSetup { */ boolean checkForForgeWindows() { boolean firstRun = false; - if (!Reference.getForgeWindowsFile().exists()) { + if (!getForgeWindowsFile().exists()) { try { - InputStream link = (CopyFiles.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", Reference.getForgeWindowsFile().getName()))); + InputStream link = (FilesSetup.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getForgeWindowsFile().getName()))); if (link != null) { - Files.copy(link, Paths.get(String.format("./server_files/%s", Reference.getForgeWindowsFile()))); + Files.copy(link, Paths.get(String.format("./server_files/%s", getForgeWindowsFile()))); link.close(); } - appLogger.info(LocalizationManager.getLocalizedString("filessetup.log.info.checkforforgewindows")); + appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.checkforforgewindows")); firstRun = true; } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.FileAlreadyExistsException")) { - appLogger.error(LocalizationManager.getLocalizedString("filessetup.log.error.checkforforgewindows"), ex); + appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.checkforforgewindows"), ex); firstRun = true; } } @@ -194,20 +244,20 @@ public class FilesSetup { */ boolean checkForProperties() { boolean firstRun = false; - if (!Reference.getPropertiesFile().exists()) { + if (!getPropertiesFile().exists()) { try { - InputStream link = (CopyFiles.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", Reference.getPropertiesFile().getName()))); + InputStream link = (FilesSetup.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getPropertiesFile().getName()))); if (link != null) { - Files.copy(link, Paths.get(String.format("./server_files/%s", Reference.getPropertiesFile()))); + Files.copy(link, Paths.get(String.format("./server_files/%s", getPropertiesFile()))); link.close(); } - appLogger.info(LocalizationManager.getLocalizedString("filessetup.log.info.checkforproperties")); + appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.checkforproperties")); firstRun = true; } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.FileAlreadyExistsException")) { - appLogger.error(LocalizationManager.getLocalizedString("filessetup.log.error.checkforproperties"), ex); + appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.checkforproperties"), ex); firstRun = true; } } @@ -220,197 +270,24 @@ public class FilesSetup { */ boolean checkForIcon() { boolean firstRun = false; - if (!Reference.getIconFile().exists()) { + if (!getIconFile().exists()) { try { - InputStream link = (CopyFiles.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", Reference.getIconFile().getName()))); + InputStream link = (FilesSetup.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getIconFile().getName()))); if (link != null) { - Files.copy(link, Paths.get(String.format("./server_files/%s", Reference.getIconFile()))); + Files.copy(link, Paths.get(String.format("./server_files/%s", getIconFile()))); link.close(); } - appLogger.info(LocalizationManager.getLocalizedString("filessetup.log.info.checkforicon")); + appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.checkforicon")); firstRun = true; } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.FileAlreadyExistsException")) { - appLogger.error(LocalizationManager.getLocalizedString("filessetup.log.error.checkforicon"), ex); + appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.checkforicon"), ex); firstRun = true; } } } return firstRun; } - - /** - * Check for existence of a lang.properties-file and if found assign language specified therein. If assigning the specified language fails because it is not supported, default to en_US. - * This method should not contain the LocalizationManager, as the initialization of said manager is called from here. Therefore, localized string are not yet available. - * @return Always returns true. Dirty hack until I one day figure out how to init Localization before UI start correctly. - */ - @SuppressWarnings("UnusedReturnValue") - public static boolean checkLocaleFile() { - if (Reference.getLangPropertiesFile().exists()) { - try { - LocalizationManager.init(Reference.getLangPropertiesFile()); - } catch (IncorrectLanguageException e) { - - appLogger.error("Incorrect language specified, falling back to English (United States)..."); - try (BufferedWriter writer = new BufferedWriter(new FileWriter(Reference.getLangPropertiesFile()))) { - - if (!Reference.getLangPropertiesFile().exists()) { - boolean langCreated = Reference.getLangPropertiesFile().createNewFile(); - if (langCreated) { - appLogger.debug("Lang properties file created successfully."); - } else { - appLogger.debug("Lang properties file not created."); - } - } - - writer.write(String.format("# Supported languages: %s%n", Arrays.toString(LocalizationManager.getSupportedLanguages()))); - writer.write(String.format("lang=en_us%n")); - - } catch (IOException ex) { - appLogger.error("Error: There was an error writing the localization properties file.", ex); - } - LocalizationManager.init(); - } - } else { - try (BufferedWriter writer = new BufferedWriter(new FileWriter(Reference.getLangPropertiesFile()))) { - - if (!Reference.getLangPropertiesFile().exists()) { - boolean langCreated = Reference.getLangPropertiesFile().createNewFile(); - if (langCreated) { - appLogger.debug("Lang properties file created successfully."); - } else { - appLogger.debug("Lang properties file not created."); - } - } - - writer.write(String.format("# Supported languages: %s%n", Arrays.toString(LocalizationManager.getSupportedLanguages()))); - writer.write(String.format("lang=en_us%n")); - - } catch (IOException ex) { - appLogger.error("Error: There was an error writing the localization properties file.", ex); - } - LocalizationManager.init(); - } - return true; - } - - /** - * Writes the specified locale from -lang your_locale to a lang.properties file to ensure every subsequent start of serverpackcreator is executed using said locale. - * @param locale The locale the user specified when they ran serverpackcreator with -lang -your_locale. - * This method should not contain the LocalizationManager, as the initialization of said manager is called from here. Therefore, localized string are not yet available. - */ - public static void writeLocaleToFile(String locale) { - try (BufferedWriter writer = new BufferedWriter(new FileWriter(Reference.getLangPropertiesFile()))) { - - if (!Reference.getLangPropertiesFile().exists()) { - boolean langCreated = Reference.getLangPropertiesFile().createNewFile(); - if (langCreated) { - appLogger.debug("Lang properties file created successfully."); - } else { - appLogger.debug("Lang properties file not created."); - } - } - - writer.write(String.format("# Supported languages: %s%n", Arrays.toString(LocalizationManager.getSupportedLanguages()))); - writer.write(String.format("lang=%s%n", locale)); - - } catch (IOException ex) { - appLogger.error("Error: There was an error writing the localization properties file.", ex); - } - } - - /** Writes a new configuration file with the parameters passed to it. - * @param modpackDir String. The path to the modpack. - * @param clientMods List, String. List of clientside-only mods. - * @param copyDirs List, String. List of directories to include in server pack. - * @param includeServer Boolean. Whether to include a modloader server installation. - * @param javaPath String. Path to the java executable. - * @param minecraftVersion String. Minecraft version used by the modpack and server pack. - * @param modLoader String. Modloader used by the modpack and server pack. Ether Forge or Fabric. - * @param modLoaderVersion String. Modloader version used by the modpack and server pack. - * @param includeIcon Boolean. Whether to include a server-icon in the server pack. - * @param includeProperties Boolean. Whether to include a properties file in the server pack. - * @param includeScripts Boolean. Whether to include start scripts in the server pack. - * @param includeZip Boolean. Whether to create a ZIP-archive of the server pack, excluding Mojang's Minecraft server jar. - * @param fileName The name under which to write the new file. - * @param isTemporary Decides whether to delete existing config-file. If isTemporary is false, existing config files will be deleted before writing the new file. - * @return Boolean. Returns true if the configuration file has been successfully written and old ones replaced. - */ - public boolean writeConfigToFile(String modpackDir, - String clientMods, - String copyDirs, - boolean includeServer, - String javaPath, - String minecraftVersion, - String modLoader, - String modLoaderVersion, - boolean includeIcon, - boolean includeProperties, - boolean includeScripts, - boolean includeZip, - File fileName, - boolean isTemporary) { - - boolean configWritten = false; - - String configString = String.format( - "%s\"%s\"\n\n%s[%s]\n\n%s[%s]\n\n%s%b\n\n%s\"%s\"\n\n%s\"%s\"\n\n%s\"%s\"\n\n%s\"%s\"\n\n%s%b\n\n%s%b\n\n%s%b\n\n%s%b", - LocalizationManager.getLocalizedString("filessetup.writeconfigtofile.modpackdir"), - modpackDir.replace("\\","/"), - LocalizationManager.getLocalizedString("filessetup.writeconfigtofile.clientmods"), - clientMods, - LocalizationManager.getLocalizedString("filessetup.writeconfigtofile.copydirs"), - copyDirs, - LocalizationManager.getLocalizedString("filessetup.writeconfigtofile.includeserverinstallation"), - includeServer, - LocalizationManager.getLocalizedString("filessetup.writeconfigtofile.javapath"), - javaPath.replace("\\","/"), - LocalizationManager.getLocalizedString("filessetup.writeconfigtofile.minecraftversion"), - minecraftVersion, - LocalizationManager.getLocalizedString("filessetup.writeconfigtofile.modloader"), - modLoader, - LocalizationManager.getLocalizedString("filessetup.writeconfigtofile.modloaderversion"), - modLoaderVersion, - LocalizationManager.getLocalizedString("filessetup.writeconfigtofile.includeservericon"), - includeIcon, - LocalizationManager.getLocalizedString("filessetup.writeconfigtofile.includeserverproperties"), - includeProperties, - LocalizationManager.getLocalizedString("filessetup.writeconfigtofile.includestartscripts"), - includeScripts, - LocalizationManager.getLocalizedString("filessetup.writeconfigtofile.includezipcreation"), - includeZip - ); - - if (!isTemporary) { - if (Reference.getConfigFile().exists()) { - boolean delConf = Reference.getConfigFile().delete(); - if (delConf) { - appLogger.info(LocalizationManager.getLocalizedString("filessetup.log.info.writeconfigtofile.config")); - } else { - appLogger.error(LocalizationManager.getLocalizedString("filessetup.log.error.writeconfigtofile.config")); - } - } - if (Reference.getOldConfigFile().exists()) { - boolean delOldConf = Reference.getOldConfigFile().delete(); - if (delOldConf) { - appLogger.info(LocalizationManager.getLocalizedString("filessetup.log.info.writeconfigtofile.old")); - } else { - appLogger.error(LocalizationManager.getLocalizedString("filessetup.log.error.writeconfigtofile.old")); - } - } - } - - try { - BufferedWriter writer = new BufferedWriter(new FileWriter(fileName)); - writer.write(configString); - writer.close(); - configWritten = true; - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("filessetup.log.error.writeconfigtofile"), ex); - } - - return configWritten; - } } \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/Handler.java b/src/main/java/de/griefed/serverpackcreator/Handler.java deleted file mode 100644 index e296dcefb..000000000 --- a/src/main/java/de/griefed/serverpackcreator/Handler.java +++ /dev/null @@ -1,142 +0,0 @@ -package de.griefed.serverpackcreator; - -import de.griefed.serverpackcreator.gui.TabbedPane; -import de.griefed.serverpackcreator.i18n.LocalizationManager; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.awt.*; -import java.io.IOException; -import java.net.URISyntaxException; -import java.util.Arrays; - -public class Handler { - private static final Logger appLogger = LogManager.getLogger(Handler.class); - - /** Handler-class makes the calls to every other class where the actual magic is happening. The main class of serverpackcreator should never contain code which does work on the server pack itself. - * @param args Command Line Argument determines whether serverpackcreator will start into normal operation mode or with a step-by-step generation of a configuration file. - */ - static void main(String[] args) { - String jarPath = null, - jarName = null, - javaVersion = null, - osArch = null, - osName = null, - osVersion = null; - - appLogger.warn(LocalizationManager.getLocalizedString("handler.log.warn.wip0")); - appLogger.warn(LocalizationManager.getLocalizedString("handler.log.warn.wip1")); - appLogger.warn(LocalizationManager.getLocalizedString("handler.log.warn.wip2")); - appLogger.warn(LocalizationManager.getLocalizedString("handler.log.warn.wip3")); - appLogger.warn(LocalizationManager.getLocalizedString("handler.log.warn.wip4")); - appLogger.warn(LocalizationManager.getLocalizedString("handler.log.warn.wip0")); - - try { - jarPath = Main.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath(); - jarName = jarPath.substring(jarPath.lastIndexOf("/") + 1); - javaVersion = System.getProperty("java.version"); - osArch = System.getProperty("os.arch"); - osName = System.getProperty("os.name"); - osVersion = System.getProperty("os.version"); - appLogger.info(LocalizationManager.getLocalizedString("handler.log.info.system.enter")); - appLogger.info(String.format(LocalizationManager.getLocalizedString("handler.log.info.system.jarpath"), jarPath)); - appLogger.info(String.format(LocalizationManager.getLocalizedString("handler.log.info.system.jarname"), jarName)); - appLogger.info(String.format(LocalizationManager.getLocalizedString("handler.log.info.system.java"), javaVersion)); - appLogger.info(String.format(LocalizationManager.getLocalizedString("handler.log.info.system.osarchitecture"), osArch)); - appLogger.info(String.format(LocalizationManager.getLocalizedString("handler.log.info.system.osname"), osName)); - appLogger.info(String.format(LocalizationManager.getLocalizedString("handler.log.info.system.osversion"), osVersion)); - appLogger.info(LocalizationManager.getLocalizedString("handler.log.info.system.include")); - - } catch (URISyntaxException ex) { - appLogger.error(LocalizationManager.getLocalizedString("handler.log.error.system.properties"), ex); - } - - if (Arrays.asList(args).contains(Reference.getConfigGenArgument())){ - - Reference.cliSetup.setup(); - Reference.filesSetup.filesSetup(); - - if (run()) { - System.exit(0); - } else { - System.exit(1); - } - - } else if (Arrays.asList(args).contains(Reference.getRunCliArgument())) { - - if (!Reference.getOldConfigFile().exists() && !Reference.getConfigFile().exists()) { - - Reference.cliSetup.setup(); - } - Reference.filesSetup.filesSetup(); - - if (run()) { - System.exit(0); - } else { - System.exit(1); - } - } else if (GraphicsEnvironment.isHeadless()) { - - if (!Reference.getOldConfigFile().exists() && !Reference.getConfigFile().exists()) { - - Reference.cliSetup.setup(); - } - Reference.filesSetup.filesSetup(); - - if (run()) { - System.exit(0); - } else { - System.exit(1); - } - - } else { - Reference.filesSetup.filesSetup(); - - TabbedPane tabbedPane = new TabbedPane(); - tabbedPane.mainGUI(); - } - } - - /** - * Run when serverpackcreator is run in either -cli or -cgen mode. Runs what used to be the main content in Main in pre-1.x.x. times. Inits config checks and, if config checks are successfull, calls methods to create the server pack. - * @return Return true if the serverpack was successfully generated, false if not. - */ - public static boolean run() { - if (!Reference.configCheck.checkConfigFile(Reference.getConfigFile())) { - Reference.copyFiles.cleanupEnvironment(Reference.getModpackDir()); - try { - Reference.copyFiles.copyFiles(Reference.getModpackDir(), Reference.getCopyDirs(), Reference.getClientMods()); - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("handler.log.error.runincli.copyfiles"), ex); - } - Reference.copyFiles.copyStartScripts(Reference.getModpackDir(), Reference.getModLoader(), Reference.getIncludeStartScripts()); - if (Reference.getIncludeServerInstallation()) { - Reference.serverSetup.installServer(Reference.getModLoader(), Reference.getModpackDir(), Reference.getMinecraftVersion(), Reference.getModLoaderVersion(), Reference.getJavaPath()); - } else { - appLogger.info(LocalizationManager.getLocalizedString("handler.log.info.runincli.server")); - } - if (Reference.getIncludeServerIcon()) { - Reference.copyFiles.copyIcon(Reference.getModpackDir()); - } else { - appLogger.info(LocalizationManager.getLocalizedString("handler.log.info.runincli.icon")); - } - if (Reference.getIncludeServerProperties()) { - Reference.copyFiles.copyProperties(Reference.getModpackDir()); - } else { - appLogger.info(LocalizationManager.getLocalizedString("handler.log.info.runincli.properties")); - } - if (Reference.getIncludeZipCreation()) { - Reference.serverSetup.zipBuilder(Reference.getModpackDir(), Reference.getModLoader(), Reference.getIncludeServerInstallation()); - } else { - appLogger.info(LocalizationManager.getLocalizedString("handler.log.info.runincli.zip")); - } - appLogger.info(String.format(LocalizationManager.getLocalizedString("handler.log.info.runincli.serverpack"), Reference.getModpackDir())); - appLogger.info(String.format(LocalizationManager.getLocalizedString("handler.log.info.runincli.archive"), Reference.getModpackDir())); - appLogger.info(LocalizationManager.getLocalizedString("handler.log.info.runincli.finish")); - return true; - } else { - appLogger.error(LocalizationManager.getLocalizedString("handler.log.error.runincli")); - return false; - } - } -} \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/Main.java b/src/main/java/de/griefed/serverpackcreator/Main.java index 407f4167f..00f18f5da 100644 --- a/src/main/java/de/griefed/serverpackcreator/Main.java +++ b/src/main/java/de/griefed/serverpackcreator/Main.java @@ -1,10 +1,14 @@ package de.griefed.serverpackcreator; +import de.griefed.serverpackcreator.gui.CreateGui; import de.griefed.serverpackcreator.i18n.IncorrectLanguageException; import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.awt.*; +import java.io.File; +import java.net.URISyntaxException; import java.util.Arrays; import java.util.List; @@ -12,24 +16,106 @@ public class Main { private static final Logger appLogger = LogManager.getLogger(Main.class); /** - * Init and "main" has been moved to Handler-class. Main now only inits the Localizationmanager and passes the cli args, if any, to Handler, which then runs the usual operations as they used to be in pre-2.x.x - * @param args Commandline arguments with which serverpackcreator is run. Passed to Handler-class which then decides what to do corresponding to input. + * Init and "main" has been moved to Handler-class. Main now only inits the LocalizationManager and passes the cli args, if any, to Handler, which then runs the usual operations as they used to be in pre-2.x.x + * @param args Commandline arguments with which ServerPackCreator is run. Passed to Handler-class which then decides what to do corresponding to input. */ public static void main(String[] args) { + LocalizationManager localizationManager = new LocalizationManager(); + ConfigCheck configCheck = new ConfigCheck(localizationManager); + FilesSetup filesSetup = new FilesSetup(localizationManager); + CreateServerPack createServerPack = new CreateServerPack(localizationManager, configCheck); + List<String> programArgs = Arrays.asList(args); - if (Arrays.asList(args).contains(Reference.getLangArgument())) { + + String jarPath = null, + jarName = null, + javaVersion = null, + osArch = null, + osName = null, + osVersion = null; + + if (Arrays.asList(args).contains("-lang")) { try { - LocalizationManager.init(programArgs.get(programArgs.indexOf(Reference.getLangArgument()) + 1)); + localizationManager.init(programArgs.get(programArgs.indexOf("-lang" + 1))); } catch (IncorrectLanguageException e) { - appLogger.info(programArgs.get(programArgs.indexOf(Reference.getLangArgument()) + 1)); + appLogger.info(programArgs.get(programArgs.indexOf("-lang" + 1))); appLogger.error("Incorrect language specified, falling back to English (United States)..."); - LocalizationManager.init(); - } finally { - Handler.main(args); + localizationManager.init(); } } else { - FilesSetup.checkLocaleFile(); - Handler.main(args); + localizationManager.checkLocaleFile(); + } + + appLogger.warn(localizationManager.getLocalizedString("handler.log.warn.wip0")); + appLogger.warn(localizationManager.getLocalizedString("handler.log.warn.wip1")); + appLogger.warn(localizationManager.getLocalizedString("handler.log.warn.wip2")); + appLogger.warn(localizationManager.getLocalizedString("handler.log.warn.wip3")); + appLogger.warn(localizationManager.getLocalizedString("handler.log.warn.wip4")); + appLogger.warn(localizationManager.getLocalizedString("handler.log.warn.wip0")); + + try { + jarPath = Main.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath(); + jarName = jarPath.substring(jarPath.lastIndexOf("/") + 1); + javaVersion = System.getProperty("java.version"); + osArch = System.getProperty("os.arch"); + osName = System.getProperty("os.name"); + osVersion = System.getProperty("os.version"); + appLogger.info(localizationManager.getLocalizedString("handler.log.info.system.enter")); + appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.jarpath"), jarPath)); + appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.jarname"), jarName)); + appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.java"), javaVersion)); + appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.osarchitecture"), osArch)); + appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.osname"), osName)); + appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.osversion"), osVersion)); + appLogger.info(localizationManager.getLocalizedString("handler.log.info.system.include")); + + } catch (URISyntaxException ex) { + appLogger.error(localizationManager.getLocalizedString("handler.log.error.system.properties"), ex); + } + + filesSetup.filesSetup(); + + + if (Arrays.asList(args).contains("-cgen")) { + + configCheck.createConfigurationFile(); + + if (createServerPack.run()) { + System.exit(0); + } else { + System.exit(1); + } + + } else if (Arrays.asList(args).contains("-cli")) { + + if (!new File("creator.conf").exists() && !new File("serverpackcreator.conf").exists()) { + + configCheck.createConfigurationFile(); + } + + if (createServerPack.run()) { + System.exit(0); + } else { + System.exit(1); + } + } else if (GraphicsEnvironment.isHeadless()) { + + if (!new File("creator.conf").exists() && !new File("serverpackcreator.conf").exists()) { + + configCheck.createConfigurationFile(); + } + + if (createServerPack.run()) { + System.exit(0); + } else { + System.exit(1); + } + + } else { + + CreateGui tabbedPane = new CreateGui(localizationManager, configCheck); + tabbedPane.mainGUI(); + } } } \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/Reference.java b/src/main/java/de/griefed/serverpackcreator/Reference.java deleted file mode 100644 index a466666a0..000000000 --- a/src/main/java/de/griefed/serverpackcreator/Reference.java +++ /dev/null @@ -1,304 +0,0 @@ -package de.griefed.serverpackcreator; - -import com.typesafe.config.Config; -import de.griefed.serverpackcreator.curseforgemodpack.CreateModpack; - -import java.io.File; -import java.util.Arrays; -import java.util.List; - -public class Reference { - private static final String MINECRAFT_MANIFEST_URL = "https://launchermeta.mojang.com/mc/game/version_manifest.json"; - private static final String FORGE_MANIFEST_URL = "https://files.minecraftforge.net/net/minecraftforge/forge/maven-metadata.json"; - private static final String FABRIC_MANIFEST_URL = "https://maven.fabricmc.net/net/fabricmc/fabric-loader/maven-metadata.xml"; - - private static final String LANG_ARGUMENT = "-lang"; - private static final String CONFIG_GEN_ARGUMENT = "-cgen"; - private static final String RUN_CLI_ARGUMENT = "-cli"; - - private static final File configFile = new File("serverpackcreator.conf"); - private static final File oldConfigFile = new File("creator.conf"); - - - private static final File propertiesFile = new File("server.properties"); - private static final File iconFile = new File("server-icon.png"); - private static final File forgeWindowsFile = new File("start-forge.bat"); - private static final File forgeLinuxFile = new File("start-forge.sh"); - private static final File fabricWindowsFile = new File("start-fabric.bat"); - private static final File fabricLinuxFile = new File("start-fabric.sh"); - - private static final File langPropertiesFile = new File("lang.properties"); - - //-- If you wish to expand this list, fork this repository, make your changes, and submit a PR ------------------------- - private static final String[] SUPPORTED_LANGUAGES = { - "en_us", - "uk_ua", - "de_de" - }; - - public static final CreateModpack createModpack = new CreateModpack(); - - public static final FilesSetup filesSetup = new FilesSetup(); - public static final CLISetup cliSetup = new CLISetup(); - public static final ConfigCheck configCheck = new ConfigCheck(); - static final CopyFiles copyFiles = new CopyFiles(); - static final ServerSetup serverSetup = new ServerSetup(); - static final ServerUtilities serverUtilities = new ServerUtilities(); - - private static Config config; - - //-- If you wish to expand this list, fork this repository, make your changes, and submit a PR ------------------------- - private static final List<String> fallbackModsList = Arrays.asList( - "AmbientSounds", - "BackTools", - "BetterAdvancement", - "BetterPing", - "cherished", - "ClientTweaks", - "Controlling", - "DefaultOptions", - "durability", - "DynamicSurroundings", - "itemzoom", - "jei-professions", - "jeiintegration", - "JustEnoughResources", - "MouseTweaks", - "Neat", - "OldJavaWarning", - "PackMenu", - "preciseblockplacing", - "SimpleDiscordRichPresence", - "SpawnerFix", - "TipTheScales", - "WorldNameRandomizer" - ); - - private static List<String> - clientMods, - copyDirs; - - private static String - modpackDir, - javaPath, - minecraftVersion, - modLoader, - modLoaderVersion; - - private static Boolean - includeServerInstallation, - includeServerIcon, - includeServerProperties, - includeStartScripts, - includeZipCreation; - - private static int - projectID, - projectFileID; - - static String getMinecraftManifestUrl() { - return MINECRAFT_MANIFEST_URL; - } - - - static String getForgeManifestUrl() { - return FORGE_MANIFEST_URL; - } - - - static String getFabricManifestUrl() { - return FABRIC_MANIFEST_URL; - } - - - static String getLangArgument() { - return LANG_ARGUMENT; - } - - - static String getConfigGenArgument() { - return CONFIG_GEN_ARGUMENT; - } - - - static String getRunCliArgument() { - return RUN_CLI_ARGUMENT; - } - - - public static File getConfigFile() { - return configFile; - } - - - static File getOldConfigFile() { - return oldConfigFile; - } - - - static File getPropertiesFile() { - return propertiesFile; - } - - - static File getIconFile() { - return iconFile; - } - - - static File getForgeWindowsFile() { - return forgeWindowsFile; - } - - - static File getForgeLinuxFile() { - return forgeLinuxFile; - } - - - static File getFabricWindowsFile() { - return fabricWindowsFile; - } - - - static File getFabricLinuxFile() { - return fabricLinuxFile; - } - - - static File getLangPropertiesFile() { - return langPropertiesFile; - } - - - protected static String[] getSupportedLanguages() { - return SUPPORTED_LANGUAGES; - } - - - public static Config getConfig() { - return config; - } - public static void setConfig(Config newConfig) { - config = newConfig; - } - - - static List<String> getFallbackModsList() { - return fallbackModsList; - } - - - static List<String> getClientMods() { - return clientMods; - } - static void setClientMods(List<String> newClientMods) { - clientMods = newClientMods; - } - - - static List<String> getCopyDirs() { - return copyDirs; - } - static void setCopyDirs(List<String> newCopyDirs) { - copyDirs = newCopyDirs; - } - - - static String getModpackDir() { - return modpackDir; - } - static void setModpackDir(String newModpackDir) { - newModpackDir = newModpackDir.replace("\\","/"); - modpackDir = newModpackDir; - } - - - static String getJavaPath() { - return javaPath; - } - static void setJavaPath(String newJavaPath) { - newJavaPath = newJavaPath.replace("\\", "/"); - javaPath = newJavaPath; - } - - - static String getMinecraftVersion() { - return minecraftVersion; - } - static void setMinecraftVersion(String newMinecraftVersion) { - minecraftVersion = newMinecraftVersion; - } - - - static String getModLoader() { - return modLoader; - } - static void setModLoader(String newModLoader) { - modLoader = newModLoader; - } - - - static String getModLoaderVersion() { - return modLoaderVersion; - } - static void setModLoaderVersion(String newModLoaderVersion) { - modLoaderVersion = newModLoaderVersion; - } - - - static boolean getIncludeServerInstallation() { - return includeServerInstallation; - } - static void setIncludeServerInstallation(boolean newIncludeServerInstallation) { - includeServerInstallation = newIncludeServerInstallation; - } - - - static boolean getIncludeServerIcon() { - return includeServerIcon; - } - static void setIncludeServerIcon(boolean newIncludeServerIcon) { - includeServerIcon = newIncludeServerIcon; - } - - - static boolean getIncludeServerProperties() { - return includeServerProperties; - } - static void setIncludeServerProperties(boolean newIncludeServerProperties) { - includeServerProperties = newIncludeServerProperties; - } - - - static boolean getIncludeStartScripts() { - return includeStartScripts; - } - static void setIncludeStartScripts(boolean newIncludeStartScripts) { - includeStartScripts = newIncludeStartScripts; - } - - - static boolean getIncludeZipCreation() { - return includeZipCreation; - } - static void setIncludeZipCreation(boolean newIncludeZipCreation) { - includeZipCreation = newIncludeZipCreation; - } - - - static int getProjectID() { - return projectID; - } - static void setProjectID(int newProjectID) { - projectID = newProjectID; - } - - - static int getProjectFileID() { - return projectFileID; - } - static void setProjectFileID(int newProjectFileID) { - projectFileID = newProjectFileID; - } -} \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/ServerSetup.java b/src/main/java/de/griefed/serverpackcreator/ServerSetup.java deleted file mode 100644 index b82395c4e..000000000 --- a/src/main/java/de/griefed/serverpackcreator/ServerSetup.java +++ /dev/null @@ -1,143 +0,0 @@ -package de.griefed.serverpackcreator; - -import de.griefed.serverpackcreator.i18n.LocalizationManager; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.io.*; -import java.nio.file.*; -import java.nio.file.attribute.BasicFileAttributes; -import java.util.zip.ZipEntry; -import java.util.zip.ZipOutputStream; - -class ServerSetup { - private static final Logger appLogger = LogManager.getLogger(FilesSetup.class); - private static final Logger installerLogger = LogManager.getLogger("InstallerLogger"); - /** Installs the files for a Forge/Fabric server. - * @param modLoader String. The modloader for which to install the server. - * @param modpackDir String. /server_pack The directory where the modloader server will be installed in. - * @param minecraftVersion String. The Minecraft version for which to install the modloader and Minecraft server. - * @param modLoaderVersion String. The modloader version for which to install the modloader and Minecraft server. - * @param javaPath String. Path to Java installation needed to execute the Fabric and Forge installers. - */ - void installServer(String modLoader, String modpackDir, String minecraftVersion, String modLoaderVersion, String javaPath) { - File fabricInstaller = new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)); - File forgeInstaller = new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)); - if (modLoader.equalsIgnoreCase("Fabric")) { - try { - appLogger.info(LocalizationManager.getLocalizedString("serversetup.log.info.installserver.fabric.enter")); - installerLogger.info(LocalizationManager.getLocalizedString("serversetup.log.info.installserver.fabric.enter")); - if (Reference.serverUtilities.downloadFabricJar(modpackDir)) { - appLogger.info(LocalizationManager.getLocalizedString("serversetup.log.info.installserver.fabric.download")); - ProcessBuilder processBuilder = new ProcessBuilder( - javaPath, - "-jar", - "fabric-installer.jar", - "server", - String.format("-mcversion %s", minecraftVersion), - String.format("-loader %s", modLoaderVersion), - "-downloadMinecraft").directory(new File(String.format("%s/server_pack", modpackDir))); - processBuilder.redirectErrorStream(true); - Process process = processBuilder.start(); - BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); - String line; - while (true) { - line = reader.readLine(); - if (line == null) { break; } - installerLogger.info(line); - } - installerLogger.info(LocalizationManager.getLocalizedString("serversetup.log.info.installserver")); - reader.close(); - appLogger.info(LocalizationManager.getLocalizedString("serversetup.log.info.installserver.fabric.details")); - appLogger.info(LocalizationManager.getLocalizedString("serversetup.log.info.installserver")); - } else { - appLogger.error(LocalizationManager.getLocalizedString("serversetup.log.error.installserver.fabric")); - } - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("serversetup.log.error.installserver.fabricfail"), ex); - } - } else if (modLoader.equalsIgnoreCase("Forge")) { - try { - appLogger.info(LocalizationManager.getLocalizedString("serversetup.log.info.installserver.forge.enter")); - installerLogger.info(LocalizationManager.getLocalizedString("serversetup.log.info.installserver.forge.enter")); - if (Reference.serverUtilities.downloadForgeJar(minecraftVersion, modLoaderVersion, modpackDir)) { - appLogger.info(LocalizationManager.getLocalizedString("serversetup.log.info.installserver.forge.download")); - ProcessBuilder processBuilder = new ProcessBuilder( - javaPath, - "-jar", - "forge-installer.jar", - "--installServer") - .directory(new File(String.format("%s/server_pack", modpackDir))); - processBuilder.redirectErrorStream(true); - Process process = processBuilder.start(); - BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); - String line; - while (true) { - line = reader.readLine(); - if (line == null) { break; } - installerLogger.info(line); - } - installerLogger.info(LocalizationManager.getLocalizedString("serversetup.log.info.installserver")); - reader.close(); - appLogger.info(LocalizationManager.getLocalizedString("serversetup.log.info.installserver.forge.details")); - appLogger.info(LocalizationManager.getLocalizedString("serversetup.log.info.installserver")); - process.destroy(); - } else { - appLogger.error(LocalizationManager.getLocalizedString("serversetup.log.error.installserver.forge")); - } - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("serversetup.log.error.installserver.forgefail"), ex); - } - } else { - appLogger.error(String.format(LocalizationManager.getLocalizedString("configcheck.log.error.checkmodloader"), modLoader)); - } - - Reference.serverUtilities.generateDownloadScripts(modLoader, modpackDir, minecraftVersion); - Reference.serverUtilities.cleanUpServerPack( - fabricInstaller, - forgeInstaller, - modLoader, - modpackDir, - minecraftVersion, modLoaderVersion); - - } - /** Create a zip-archive of the serverpack, excluding Mojang's minecraft_server.jar. - * With help from https://stackoverflow.com/questions/1091788/how-to-create-a-zip-file-in-java - * @param modpackDir String. The directory where the zip-archive will be created and saved in. - * @param modLoader String. Determines the name of Minecraft#s server jar which will be deleted from the zip-archive. - * @param includeServerInstallation Boolean. Determines whether the Minecraft server jar needs to be deleted from the zip-archive. - */ - void zipBuilder(String modpackDir, String modLoader, Boolean includeServerInstallation) { - final Path sourceDir = Paths.get(String.format("%s/server_pack", modpackDir)); - String zipFileName = sourceDir.toString().concat(".zip"); - appLogger.info(LocalizationManager.getLocalizedString("serversetup.log.info.zipbuilder.enter")); - try { - final ZipOutputStream outputStream = new ZipOutputStream(new FileOutputStream(zipFileName)); - Files.walkFileTree(sourceDir, new SimpleFileVisitor<Path>() { - @Override - public FileVisitResult visitFile(Path file, BasicFileAttributes attributes) { - try { - Path targetFile = sourceDir.relativize(file); - outputStream.putNextEntry(new ZipEntry(targetFile.toString())); - byte[] bytes = Files.readAllBytes(file); - outputStream.write(bytes, 0, bytes.length); - outputStream.closeEntry(); - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("serversetup.log.error.zipbuilder.create"), ex); - } - return FileVisitResult.CONTINUE; - } - }); - outputStream.close(); - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("serversetup.log.error.zipbuilder.create"), ex); - } - if (includeServerInstallation) { - Reference.serverUtilities.deleteMinecraftJar(modLoader, modpackDir); - appLogger.warn(LocalizationManager.getLocalizedString("serversetup.log.warn.zipbuilder.minecraftjar1")); - appLogger.warn(LocalizationManager.getLocalizedString("serversetup.log.warn.zipbuilder.minecraftjar2")); - appLogger.warn(LocalizationManager.getLocalizedString("serversetup.log.warn.zipbuilder.minecraftjar3")); - } - appLogger.info(LocalizationManager.getLocalizedString("serversetup.log.info.zipbuilder.finish")); - } -} \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/ServerUtilities.java b/src/main/java/de/griefed/serverpackcreator/ServerUtilities.java deleted file mode 100644 index a5e0713df..000000000 --- a/src/main/java/de/griefed/serverpackcreator/ServerUtilities.java +++ /dev/null @@ -1,362 +0,0 @@ -package de.griefed.serverpackcreator; - -import de.griefed.serverpackcreator.i18n.LocalizationManager; -import net.fabricmc.installer.util.LauncherMeta; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.w3c.dom.Document; -import org.xml.sax.SAXException; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.xpath.XPath; -import javax.xml.xpath.XPathConstants; -import javax.xml.xpath.XPathExpressionException; -import javax.xml.xpath.XPathFactory; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.net.URI; -import java.net.URL; -import java.nio.channels.Channels; -import java.nio.channels.FileChannel; -import java.nio.channels.ReadableByteChannel; -import java.nio.file.*; -import java.util.HashMap; -import java.util.Map; - -import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; - -class ServerUtilities { - private static final Logger appLogger = LogManager.getLogger(FilesSetup.class); - - /** Calls methods for generating download scripts for Mojang's Minecraft server depending on the specified versions and modloader. - * @param modLoader String. The specified modloader determines the name under which Mojang's server jar will be downloaded as. - * @param modpackDir String. /server_pack The directory where the scripts will be placed in. - * @param minecraftVersion String. The version of the Minecraft server jar to download. - */ - void generateDownloadScripts(String modLoader, String modpackDir, String minecraftVersion) { - if (modLoader.equalsIgnoreCase("Fabric")) { - fabricShell(modpackDir, minecraftVersion); - fabricBatch(modpackDir, minecraftVersion); - } else if (modLoader.equalsIgnoreCase("Forge")) { - forgeShell(modpackDir, minecraftVersion); - forgeBatch(modpackDir, minecraftVersion); - } else { - appLogger.error(String.format(LocalizationManager.getLocalizedString("configcheck.log.error.checkmodloader"), modLoader)); - } - } - - /** Generates download scripts for Mojang's Minecraft server for Fabric,Linux. - * @param modpackDir String. /server_pack The directory where the scripts will be placed in. - * @param minecraftVersion String. The version of the Minecraft server jar to download. - */ - private void fabricShell(String modpackDir, String minecraftVersion) { - try { - String downloadMinecraftServer = (new URL( - LauncherMeta - .getLauncherMeta() - .getVersion(minecraftVersion) - .getVersionMeta() - .downloads - .get("server") - .url)) - .toString(); - String shFabric = String.format("#!/bin/bash\n#Download the Minecraft_server.jar for your modpack\n\nwget -O server.jar %s", downloadMinecraftServer); - Path pathSh = Paths.get(String.format("%s/server_pack/download_minecraft-server.jar_fabric.sh", modpackDir)); - byte[] strToBytesSh = shFabric.getBytes(); - Files.write(pathSh, strToBytesSh); - String readSh = Files.readAllLines(pathSh).get(0); - appLogger.debug(String.format(LocalizationManager.getLocalizedString("serverutilities.log.debug.fabricshell"), readSh)); - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("serverutilities.log.error.fabricshell"), ex); - } - appLogger.info(LocalizationManager.getLocalizedString("serverutilities.log.info.fabricshell")); - } - - /** Generates download scripts for Mojang's Minecraft server for Fabric,Windows. - * @param modpackDir String. /server_pack The directory where the scripts will be placed in. - * @param minecraftVersion String. The version of the Minecraft server jar to download. - */ - private void fabricBatch(String modpackDir, String minecraftVersion) { - try { - String downloadMinecraftServer = (new URL( - LauncherMeta - .getLauncherMeta() - .getVersion(minecraftVersion) - .getVersionMeta() - .downloads - .get("server") - .url)) - .toString(); - String batFabric = String.format("powershell -Command \"(New-Object Net.WebClient).DownloadFile('%s', 'server.jar')\"", downloadMinecraftServer); - Path pathBat = Paths.get(String.format("%s/server_pack/download_minecraft-server.jar_fabric.bat", modpackDir)); - byte[] strToBytesBat = batFabric.getBytes(); - Files.write(pathBat, strToBytesBat); - String readBat = Files.readAllLines(pathBat).get(0); - appLogger.debug(String.format(LocalizationManager.getLocalizedString("serverutilities.log.debug.fabricbatch"), readBat)); - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("serverutilities.log.error.fabricbatch"), ex); - } - appLogger.info(LocalizationManager.getLocalizedString("serverutilities.log.info.fabricbatch")); - } - - /** Generates download scripts for Mojang's Minecraft server for Forge,Linux. - * @param modpackDir String. /server_pack The directory where the scripts will be placed in. - * @param minecraftVersion String. The version of the Minecraft server jar to download. - */ - private void forgeShell(String modpackDir, String minecraftVersion) { - try { - String downloadMinecraftServer = (new URL( - LauncherMeta - .getLauncherMeta() - .getVersion(minecraftVersion) - .getVersionMeta() - .downloads - .get("server") - .url)) - .toString(); - String shForge = String.format("#!/bin/bash\n# Download the Minecraft_server.jar for your modpack\n\nwget -O minecraft_server.%s.jar %s", minecraftVersion, downloadMinecraftServer); - Path pathSh = Paths.get(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)); - byte[] strToBytesSh = shForge.getBytes(); - Files.write(pathSh, strToBytesSh); - String readSh = Files.readAllLines(pathSh).get(0); - appLogger.debug(String.format(LocalizationManager.getLocalizedString("serverutilities.log.debug.forgeshell"), readSh)); - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("serverutilities.log.error.forgeshell"), ex); - } - appLogger.info(LocalizationManager.getLocalizedString("serverutilities.log.info.forgeshell")); - } - - /** Generates download scripts for Mojang's Minecraft server for Forge,Windows. - * @param modpackDir String. /server_pack The directory where the scripts will be placed in. - * @param minecraftVersion String. The version of the Minecraft server jar to download. - */ - private void forgeBatch(String modpackDir, String minecraftVersion) { - try { - String downloadMinecraftServer = (new URL( - LauncherMeta - .getLauncherMeta() - .getVersion(minecraftVersion) - .getVersionMeta() - .downloads - .get("server") - .url)) - .toString(); - String batForge = String.format("powershell -Command \"(New-Object Net.WebClient).DownloadFile('%s', 'minecraft_server.%s.jar')\"", downloadMinecraftServer, minecraftVersion); - Path pathBat = Paths.get(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)); - byte[] strToBytesBat = batForge.getBytes(); - Files.write(pathBat, strToBytesBat); - String readBat = Files.readAllLines(pathBat).get(0); - appLogger.debug(String.format(LocalizationManager.getLocalizedString("serverutilities.log.debug.forgebatch"), readBat)); - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("serverutilities.log.error.forgebatch"), ex); - } - appLogger.info(LocalizationManager.getLocalizedString("serverutilities.log.info.forgebatch")); - } - - /** Downloads the specified version of Fabric. - * @param modpackDir String. /server_pack The directory where the Fabric installer will be placed in. - * @return Boolean. Returns true if the download was successful. False if not. - */ - boolean downloadFabricJar(String modpackDir) { - boolean downloaded = false; - try { - appLogger.info(LocalizationManager.getLocalizedString("serverutilities.log.info.downloadfabricjar.enter")); - String latestFabricInstaller = latestFabricInstaller(modpackDir); - URL downloadFabric = new URL(String.format("https://maven.fabricmc.net/net/fabricmc/fabric-installer/%s/fabric-installer-%s.jar", latestFabricInstaller, latestFabricInstaller)); - - ReadableByteChannel readableByteChannel = Channels.newChannel(downloadFabric.openStream()); - FileOutputStream downloadFabricFileOutputStream = new FileOutputStream(String.format("%s/server_pack/fabric-installer.jar", modpackDir)); - FileChannel downloadFabricFileChannel = downloadFabricFileOutputStream.getChannel(); - downloadFabricFileOutputStream.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE); - - downloadFabricFileOutputStream.flush(); - downloadFabricFileOutputStream.close(); - readableByteChannel.close(); - downloadFabricFileChannel.close(); - - } catch (IOException e) { - appLogger.error(LocalizationManager.getLocalizedString("serverutilities.log.error.downloadfabricjar.download"), e); - if (new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)).exists()) { - try { - Files.delete(Paths.get(String.format("%s/server_pack/fabric-installer.jar", modpackDir))); - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("serverutilities.log.error.downloadfabricjar.delete"), ex); - } - } - } - if (new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)).exists()) { - downloaded = true; - } - return downloaded; - } - - /** Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer. - * @param modpackDir String. /server_pack The directory where the Fabric installer will be placed in. - * @return Boolean. Returns true if the download was successful. False if not. - */ - private String latestFabricInstaller(String modpackDir) { - String result; - try { - URL downloadFabricXml = new URL("https://maven.fabricmc.net/net/fabricmc/fabric-installer/maven-metadata.xml"); - - ReadableByteChannel downloadFabricXmlReadableByteChannel = Channels.newChannel(downloadFabricXml.openStream()); - FileOutputStream downloadFabricXmlFileOutputStream = new FileOutputStream(String.format("%s/server_pack/fabric-installer.xml", modpackDir)); - FileChannel downloadFabricXmlFileChannel = downloadFabricXmlFileOutputStream.getChannel(); - downloadFabricXmlFileOutputStream.getChannel().transferFrom(downloadFabricXmlReadableByteChannel, 0, Long.MAX_VALUE); - - downloadFabricXmlFileOutputStream.flush(); - downloadFabricXmlFileOutputStream.close(); - downloadFabricXmlReadableByteChannel.close(); - downloadFabricXmlFileChannel.close(); - - DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder = domFactory.newDocumentBuilder(); - Document fabricXml = builder.parse(new File(String.format("%s/server_pack/fabric-installer.xml",modpackDir))); - XPathFactory xPathFactory = XPathFactory.newInstance(); - XPath xpath = xPathFactory.newXPath(); - - result = (String) xpath.evaluate("/metadata/versioning/release", fabricXml, XPathConstants.STRING); - appLogger.info(LocalizationManager.getLocalizedString("serverutilities.log.info.latestfabricinstaller")); - } catch (IOException | ParserConfigurationException | SAXException | XPathExpressionException ex) { - appLogger.error(LocalizationManager.getLocalizedString("serverutilities.log.error.latestfabricinstaller"), ex); - result = "0.7.2"; - } - return result; - } - - /** Downloads the specified version of the Forge installer to be used in ServerSetup.installServer. - * @param minecraftVersion String. The Minecraft version corresponding to the Forge version. Minecraft version and Forge version build a pair. - * @param modLoaderVersion String. The Forge version corresponding to the Minecraft version. Minecraft version and Forge version build a pair. - * @param modpackDir String. /server_pack The directory where the Forge installer will be placed in. - * @return Boolean. Returns true if the download was successful. False if not. - */ - boolean downloadForgeJar(String minecraftVersion, String modLoaderVersion, String modpackDir) { - boolean downloaded = false; - try { - appLogger.info(LocalizationManager.getLocalizedString("serverutilities.log.info.downloadforgejar.enter")); - URL downloadForge = new URL(String.format("https://files.minecraftforge.net/maven/net/minecraftforge/forge/%s-%s/forge-%s-%s-installer.jar", minecraftVersion, modLoaderVersion, minecraftVersion, modLoaderVersion)); - - ReadableByteChannel readableByteChannel = Channels.newChannel(downloadForge.openStream()); - FileOutputStream downloadForgeFileOutputStream = new FileOutputStream(String.format("%s/server_pack/forge-installer.jar", modpackDir)); - FileChannel downloadForgeFileChannel = downloadForgeFileOutputStream.getChannel(); - downloadForgeFileOutputStream.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE); - - downloadForgeFileOutputStream.flush(); - downloadForgeFileOutputStream.close(); - readableByteChannel.close(); - downloadForgeFileChannel.close(); - - } catch (IOException e) { - appLogger.error(LocalizationManager.getLocalizedString("serverutilities.log.error.downloadforgejar.download"), e); - if (new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).exists()) { - if (new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).delete()) { - appLogger.error(LocalizationManager.getLocalizedString("serverutilities.log.debug.downloadforgejar")); - } - } - } - if (new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).exists()) { - downloaded = true; - } - return downloaded; - } - - /** Deletes Mojang's minecraft_server.jar from the zip-archive so users do not accidentally upload a file containing software from Mojang. - * With help from https://stackoverflow.com/questions/5244963/delete-files-from-a-zip-archive-without-decompressing-in-java-or-maybe-python and https://bugs.openjdk.java.net/browse/JDK-8186227 - * @param modLoader String. Determines the name of the file to delete. - * @param modpackDir String. /server_pack The directory in which the file will be deleted. - */ - void deleteMinecraftJar(String modLoader, String modpackDir) { - if (modLoader.equalsIgnoreCase("Forge")) { - appLogger.info(LocalizationManager.getLocalizedString("serverutilities.log.info.deleteminecraftjar.enter")); - - Map<String, String> zip_properties = new HashMap<>(); - zip_properties.put("create", "false"); - zip_properties.put("encoding", "UTF-8"); - - Path serverpackZip = Paths.get(String.format("%s/server_pack.zip", modpackDir)); - URI zipUri = URI.create("jar:" + serverpackZip.toUri()); - - try (FileSystem zipfs = FileSystems.newFileSystem(zipUri, zip_properties)) { - Path pathInZipfile = zipfs.getPath("minecraft_server.1.16.5.jar"); - Files.delete(pathInZipfile); - appLogger.info(LocalizationManager.getLocalizedString("serverutilities.log.info.deleteminecraftjar.success")); - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("serverutilities.log.error.deleteminecraftjar.delete"), ex); - } - } else if (modLoader.equalsIgnoreCase("Fabric")) { - appLogger.info(LocalizationManager.getLocalizedString("serverutilities.log.info.deleteminecraftjar.enter")); - - Map<String, String> zip_properties = new HashMap<>(); - zip_properties.put("create", "false"); - zip_properties.put("encoding", "UTF-8"); - - Path serverpackZip = Paths.get(String.format("%s/server_pack.zip", modpackDir)); - URI zipUri = URI.create(String.format("jar:%s", serverpackZip.toUri())); - - try (FileSystem zipfs = FileSystems.newFileSystem(zipUri, zip_properties)) { - Path pathInZipfile = zipfs.getPath("server.jar"); - Files.delete(pathInZipfile); - appLogger.info(LocalizationManager.getLocalizedString("serverutilities.log.info.deleteminecraftjar.success")); - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("serverutilities.log.error.deleteminecraftjar.delete"), ex); - } - } else { - appLogger.error(String.format(LocalizationManager.getLocalizedString("configcheck.log.error.checkmodloader"), modLoader)); - } - } - - /** Deletes remnant files from Fabric/Forge installation no longer needed. - * @param fabricInstaller File. Fabric installer to be deleted. - * @param forgeInstaller File. Forge installer to be deleted. - * @param modLoader String. Whether Forge or Fabric files are to be deleted. - * @param modpackDir String. /server_pack The directory where files are to be deleted. - * @param minecraftVersion String. Needed for renaming the Forge server jar to work with launch scripts provided by serverpackcreator. - * @param modLoaderVersion String. Needed for renaming the Forge server jar to work with launch scripts provided by serverpackcreator. - */ - void cleanUpServerPack(File fabricInstaller, File forgeInstaller, String modLoader, String modpackDir, String minecraftVersion, String modLoaderVersion) { - appLogger.info(LocalizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.enter")); - if (modLoader.equalsIgnoreCase("Fabric")) { - File fabricXML = new File(String.format("%s/server_pack/fabric-installer.xml", modpackDir)); - boolean isXmlDeleted = fabricXML.delete(); - boolean isInstallerDeleted = fabricInstaller.delete(); - if (isXmlDeleted) - { appLogger.info(String.format(LocalizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.deleted"), fabricXML.getName())); } - else - { appLogger.error(String.format(LocalizationManager.getLocalizedString("serverutilities.log.error.cleanupserverpack.delete"), fabricXML.getName())); } - - if (isInstallerDeleted) - { appLogger.info(String.format(LocalizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.deleted"), fabricInstaller.getName())); } - else - { appLogger.error(String.format(LocalizationManager.getLocalizedString("serverutilities.log.error.cleanupserverpack.delete"), fabricInstaller.getName())); } - - } else if (modLoader.equalsIgnoreCase("Forge")) { - try { - Files.copy( - Paths.get(String.format("%s/server_pack/forge-%s-%s.jar", modpackDir, minecraftVersion, modLoaderVersion)), - Paths.get(String.format("%s/server_pack/forge.jar", modpackDir)), - REPLACE_EXISTING); - boolean isOldJarDeleted = (new File( - String.format("%s/server_pack/forge-%s-%s.jar", modpackDir, minecraftVersion, modLoaderVersion))).delete(); - boolean isInstallerDeleted = forgeInstaller.delete(); - - if ((isOldJarDeleted) && (new File(String.format("%s/server_pack/forge.jar", modpackDir)).exists())) - { appLogger.info(LocalizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.rename")); } - else - { appLogger.error(LocalizationManager.getLocalizedString("serverutilities.log.error.cleanupserverpack.rename")); } - - if (isInstallerDeleted) - { appLogger.info(String.format(LocalizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.deleted"), forgeInstaller.getName())); } - else - { appLogger.error(String.format(LocalizationManager.getLocalizedString("serverutilities.log.error.cleanupserverpack.delete"), forgeInstaller.getName())); } - - } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("serverutilities.log.error.cleanupserverpack"), ex); - } - } else { - appLogger.error(String.format(LocalizationManager.getLocalizedString("configcheck.log.error.checkmodloader"), modLoader)); - } - } -} \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java similarity index 78% rename from src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.java rename to src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java index 0104c3d90..f226cd96e 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java @@ -23,11 +23,21 @@ import java.util.zip.ZipInputStream; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; -public class CreateModpack { - private static final Logger appLogger = LogManager.getLogger(CreateModpack.class); - private static String projectName; - private static String fileName; - private static String fileDiskName; +public class CurseCreateModpack { + private static final Logger appLogger = LogManager.getLogger(CurseCreateModpack.class); + private String projectName; + private String fileName; + private String fileDiskName; + + private LocalizationManager localizationManager; + + public CurseCreateModpack(LocalizationManager injectedLocalizationManager) { + if (injectedLocalizationManager == null) { + this.localizationManager = new LocalizationManager(); + } else { + this.localizationManager = injectedLocalizationManager; + } + } /** Gets the names of the specified project and file and makes calls to methods which create the modpack so we can then create a server pack from it. * @param modpackDir String. Combination of project name and file name. Created during download procedure and later added to config file. @@ -42,18 +52,18 @@ public class CreateModpack { if (CurseAPI.project(projectID).isPresent()) { Optional<CurseProject> curseProject = CurseAPI.project(projectID); - projectName = curseProject.get().name(); - try { fileName = curseProject.get().files().fileWithID(fileID).displayName(); } - catch (NullPointerException npe) { fileName = curseProject.get().files().fileWithID(fileID).nameOnDisk(); } - fileDiskName = curseProject.get().files().fileWithID(fileID).nameOnDisk(); + this.projectName = curseProject.get().name(); + try { this.fileName = curseProject.get().files().fileWithID(fileID).displayName(); } + catch (NullPointerException npe) { this.fileName = curseProject.get().files().fileWithID(fileID).nameOnDisk(); } + this.fileDiskName = curseProject.get().files().fileWithID(fileID).nameOnDisk(); } else { - projectName = projectID.toString(); - fileName = fileID.toString(); - fileDiskName = fileID.toString(); + this.projectName = projectID.toString(); + this.fileName = fileID.toString(); + this.fileDiskName = fileID.toString(); } - } catch (CurseException cex) { appLogger.error(String.format(LocalizationManager.getLocalizedString("createmodpack.log.error.curseforgemodpack"), projectID, fileID), cex); } + } catch (CurseException cex) { appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.curseforgemodpack"), projectID, fileID), cex); } if (!checkCurseForgeDir(modpackDir)) { initializeModpack(modpackDir, projectID, fileID); @@ -70,36 +80,36 @@ public class CreateModpack { @SuppressWarnings("ResultOfMethodCallIgnored") private void initializeModpack(String modpackDir, Integer projectID, Integer fileID) { try { - appLogger.info(String.format(LocalizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.download"), projectName, fileName)); + appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.download"), projectName, fileName)); CurseAPI.downloadFileToDirectory(projectID, fileID, Paths.get(modpackDir)); } catch (CurseException cex) { - appLogger.error(String.format(LocalizationManager.getLocalizedString("createmodpack.log.error.initializemodpack.download"), fileName, projectName, modpackDir)); + appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.initializemodpack.download"), fileName, projectName, modpackDir)); } unzipArchive(String.format("%s/%s", modpackDir, fileDiskName), modpackDir); boolean isFileDeleted = new File(String.format("%s/%s", modpackDir, fileDiskName)).delete(); - if (isFileDeleted) { appLogger.info(LocalizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.deletezip")); } + if (isFileDeleted) { appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.deletezip")); } try { byte[] jsonData = Files.readAllBytes(Paths.get(String.format("%s/manifest.json", modpackDir))); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); objectMapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY); - Modpack modpack = objectMapper.readValue(jsonData, Modpack.class); + CurseModpack modpack = objectMapper.readValue(jsonData, CurseModpack.class); String[] minecraftLoaderVersions = modpack.getMinecraft().toString().split(","); String[] modLoaderVersion = minecraftLoaderVersions[1].replace("[", "").replace("]", "").split("-"); - appLogger.info(LocalizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.infoheader")); - appLogger.info(String.format(LocalizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modpackname"), modpack.getName())); - appLogger.info(String.format(LocalizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modpackversion"), modpack.getVersion())); - appLogger.info(String.format(LocalizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modpackauthor"), modpack.getAuthor())); - appLogger.info(String.format(LocalizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modpackminecraftversion"), minecraftLoaderVersions[0].replace("[", ""))); - appLogger.info(String.format(LocalizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modloader"), setModloader(modLoaderVersion[0]))); - appLogger.info(String.format(LocalizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modloaderversion"), modLoaderVersion[1])); + appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.infoheader")); + appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modpackname"), modpack.getName())); + appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modpackversion"), modpack.getVersion())); + appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modpackauthor"), modpack.getAuthor())); + appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modpackminecraftversion"), minecraftLoaderVersions[0].replace("[", ""))); + appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modloader"), setModloader(modLoaderVersion[0]))); + appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modloaderversion"), modLoaderVersion[1])); - } catch (IOException ex) { appLogger.error(LocalizationManager.getLocalizedString("createmodpack.log.error.initializemodpack.readmodpack"), ex); } + } catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("createmodpack.log.error.initializemodpack.readmodpack"), ex); } copyOverride(modpackDir); if (new File(String.format("%s/overrides", modpackDir)).isDirectory()) { @@ -107,7 +117,7 @@ public class CreateModpack { Path pathToBeDeleted = Paths.get(String.format("%s/overrides", modpackDir)); Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); } catch (IOException ex) { - appLogger.info(LocalizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.overrides")); + appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.overrides")); } } @@ -119,7 +129,7 @@ public class CreateModpack { */ @SuppressWarnings({"OptionalGetWithoutIsPresent", "BusyWait"}) private void downloadMods(String modpackDir) { - appLogger.info(LocalizationManager.getLocalizedString("createmodpack.log.info.downloadmods.info")); + appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.downloadmods.info")); List<String> failedDownloads = new ArrayList<>(); try { @@ -129,13 +139,14 @@ public class CreateModpack { objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); objectMapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY); - Modpack modpack = objectMapper.readValue(jsonData, Modpack.class); + CurseModpack curseModpack = objectMapper.readValue(jsonData, CurseModpack.class); Random randInt = new Random(); - for (int i = 0; i < modpack.getFiles().size(); i++) { - if (randInt.nextInt(modpack.getFiles().size())==i) { - appLogger.info(String.format("%s", Splines.getSplines())); + CurseSplines curseSplines = new CurseSplines(); + for (int i = 0; i < curseModpack.getFiles().size(); i++) { + if (randInt.nextInt(curseModpack.getFiles().size())==i) { + appLogger.info(curseSplines.reticulate()); } - String[] mods = modpack.getFiles().get(i).toString().split(","); + String[] mods = curseModpack.getFiles().get(i).toString().split(","); String modName, modFileName; modName = modFileName = ""; @@ -148,33 +159,33 @@ public class CreateModpack { modName = CurseAPI.project(modID).get().name(); modFileName = Objects.requireNonNull(CurseAPI.project(modID).get().files().fileWithID(fileID)).nameOnDisk(); } catch (CurseException cex) { - appLogger.error(LocalizationManager.getLocalizedString("createmodpack.log.error.downloadmods.curseforgeinfo"), cex); + appLogger.error(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.curseforgeinfo"), cex); } try { - appLogger.info(String.format(LocalizationManager.getLocalizedString("createmodpack.log.info.downloadmods.specificmod"), i+1, modpack.getFiles().size(), modName, modFileName)); + appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.downloadmods.specificmod"), i+1, curseModpack.getFiles().size(), modName, modFileName)); CurseAPI.downloadFileToDirectory(modID, fileID, Paths.get(String.format("%s/mods", modpackDir))); try { Thread.sleep(1000); } - catch (InterruptedException iex) { appLogger.debug(LocalizationManager.getLocalizedString("createmodpack.log.debug.downloadmods.sleep"), iex); } - } catch (CurseException cex) { appLogger.error(String.format(LocalizationManager.getLocalizedString("createmodpack.log.error.downloadmods.errordownload"), modName, modID, modFileName, fileID)); + catch (InterruptedException iex) { appLogger.debug(localizationManager.getLocalizedString("createmodpack.log.debug.downloadmods.sleep"), iex); } + } catch (CurseException cex) { appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.errordownload"), modName, modID, modFileName, fileID)); try { - appLogger.info(String.format(LocalizationManager.getLocalizedString("createmodpack.log.info.downloadmods.tryagain"), modName, modID, modFileName, fileID)); + appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.downloadmods.tryagain"), modName, modID, modFileName, fileID)); CurseAPI.downloadFileToDirectory(modID, fileID, Paths.get(String.format("%s/mods", modpackDir))); } catch (CurseException cex2) { - appLogger.error(String.format(LocalizationManager.getLocalizedString("createmodpack.log.error.downloadmods.retryfail"), modName, modID, modFileName, fileID)); + appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.retryfail"), modName, modID, modFileName, fileID)); try { failedDownloads.add(String.format("Mod: %s, ID: %d. File: %s, ID: %d, URL: %s", modName, modID, modFileName, fileID, CurseAPI.fileDownloadURL(modID, fileID))); } catch (CurseException cex3) { - appLogger.error(LocalizationManager.getLocalizedString("createmodpack.log.error.downloadmods.urlfail")); + appLogger.error(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.urlfail")); } } } } } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("createmodpack.log.error.downloadmods.fail")); + appLogger.error(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.fail")); } if (failedDownloads.size() != 0) { for (int i = 0; i <= failedDownloads.size(); i++) { - appLogger.error(String.format(LocalizationManager.getLocalizedString("createmodpack.log.error.downloadmods.urllist"), failedDownloads.get(i))); + appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.urllist"), failedDownloads.get(i))); } } } @@ -183,22 +194,22 @@ public class CreateModpack { * @param modpackDir String. The overrides directory resides in this directory. All folders and files within overrides are copied here. */ private void copyOverride(String modpackDir) { - appLogger.info(LocalizationManager.getLocalizedString("createmodpack.log.info.copyoverrides.info")); + appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.copyoverrides.info")); try { Stream<Path> files = java.nio.file.Files.walk(Paths.get(String.format("%s/overrides", modpackDir))); files.forEach(file -> { try { Files.copy(file, Paths.get(modpackDir).resolve(Paths.get(String.format("%s/overrides", modpackDir)).relativize(file)), REPLACE_EXISTING); - appLogger.debug(String.format(LocalizationManager.getLocalizedString("createmodpack.log.debug.copyoverrides.status"), file.toAbsolutePath().toString())); + appLogger.debug(String.format(localizationManager.getLocalizedString("createmodpack.log.debug.copyoverrides.status"), file.toAbsolutePath().toString())); } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.DirectoryNotEmptyException")) { - appLogger.error(LocalizationManager.getLocalizedString("createmodpack.log.error.copyoverrides.copy"), ex); + appLogger.error(localizationManager.getLocalizedString("createmodpack.log.error.copyoverrides.copy"), ex); } } }); files.close(); } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("createmodpack.log.error.copyoverrides.copy"), ex); + appLogger.error(localizationManager.getLocalizedString("createmodpack.log.error.copyoverrides.copy"), ex); } } @@ -209,9 +220,9 @@ public class CreateModpack { private boolean checkCurseForgeDir(String modpackDir) { boolean isModpackPresent = false; if (!(new File(modpackDir).isDirectory()) && !(new File(String.format("%s/manifest.json", modpackDir)).exists())) { - appLogger.info(LocalizationManager.getLocalizedString("createmodpack.log.info.checkcurseforgedir.create")); + appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.checkcurseforgedir.create")); } else { - appLogger.info(LocalizationManager.getLocalizedString("createmodpack.log.info.checkcurseforgedir")); + appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.checkcurseforgedir")); isModpackPresent = true; } return isModpackPresent; @@ -223,7 +234,7 @@ public class CreateModpack { * @param modpackDir The directory where the archive resides in and will be extracted to. */ private void unzipArchive(String zipFile, String modpackDir) { - appLogger.info(LocalizationManager.getLocalizedString("createmodpack.log.info.unziparchive")); + appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.unziparchive")); File destDir = new File(modpackDir); byte[] buffer = new byte[1024]; try { @@ -233,12 +244,12 @@ public class CreateModpack { final File newFile = newFile(destDir, zipEntry); if (zipEntry.isDirectory()) { if (!newFile.isDirectory() && !newFile.mkdirs()) { - appLogger.error(String.format(LocalizationManager.getLocalizedString("createmodpack.log.error.unziparchive.createdir"), newFile)); + appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.unziparchive.createdir"), newFile)); } } else { File parent = newFile.getParentFile(); if (!parent.isDirectory() && !parent.mkdirs()) { - appLogger.error(String.format(LocalizationManager.getLocalizedString("createmodpack.log.error.unziparchive.createdir"), parent)); + appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.unziparchive.createdir"), parent)); } final FileOutputStream output = new FileOutputStream(newFile); int length; @@ -252,7 +263,7 @@ public class CreateModpack { input.closeEntry(); input.close(); } catch (IOException ex) { - appLogger.error(String.format(LocalizationManager.getLocalizedString("createmodpack.log.error.unziparchive.extract"), zipFile), ex); + appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.unziparchive.extract"), zipFile), ex); } } @@ -270,15 +281,15 @@ public class CreateModpack { destDirPath = destinationDir.getCanonicalPath(); } catch (IOException ex) { - appLogger.error(String.format(LocalizationManager.getLocalizedString("createmodpack.log.error.newfile.path"), destinationDir), ex); + appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.newfile.path"), destinationDir), ex); } try { destFilePath = destFile.getCanonicalPath(); } catch (IOException ex) { - appLogger.error(String.format(LocalizationManager.getLocalizedString("createmodpack.log.error.newfile.path"), destFile.toString()), ex); + appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.newfile.path"), destFile.toString()), ex); } if (destFilePath != null && !destFilePath.startsWith(destDirPath + File.separator)) { - appLogger.error(String.format(LocalizationManager.getLocalizedString("createmodpack.log.error.newfile.outside"), zipEntry.getName())); + appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.newfile.outside"), zipEntry.getName())); } return destFile; } diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/Files.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java similarity index 96% rename from src/main/java/de/griefed/serverpackcreator/curseforgemodpack/Files.java rename to src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java index f81f5ddfb..7f9437a75 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/Files.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java @@ -2,7 +2,7 @@ package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -public class Files { +public class CurseFiles { @JsonIgnoreProperties(ignoreUnknown = true) private String projectID; private String fileID; diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/Minecraft.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java similarity index 75% rename from src/main/java/de/griefed/serverpackcreator/curseforgemodpack/Minecraft.java rename to src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java index 7afbda309..e40d86573 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/Minecraft.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java @@ -4,10 +4,10 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.util.List; -class Minecraft { +class CurseMinecraft { @JsonIgnoreProperties(ignoreUnknown = true) private String version; - private List<ModLoaders> modLoaders; + private List<CurseModLoaders> modLoaders; public String getVersion() { return version; @@ -17,11 +17,11 @@ class Minecraft { this.version = version; } - public List<ModLoaders> getModLoaders() { + public List<CurseModLoaders> getModLoaders() { return modLoaders; } - public void setModLoaders(List<ModLoaders> modLoaders) { + public void setModLoaders(List<CurseModLoaders> modLoaders) { this.modLoaders = modLoaders; } diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java similarity index 94% rename from src/main/java/de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.java rename to src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java index 25978d2ca..b7f2f2e54 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java @@ -2,7 +2,7 @@ package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -class ModLoaders { +class CurseModLoaders { @JsonIgnoreProperties(ignoreUnknown = true) private String id; diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/Modpack.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java similarity index 76% rename from src/main/java/de/griefed/serverpackcreator/curseforgemodpack/Modpack.java rename to src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java index a7d2463b1..5eb52557a 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/Modpack.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java @@ -4,19 +4,19 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.util.List; -public class Modpack { +public class CurseModpack { @JsonIgnoreProperties(ignoreUnknown = true) - private List<Minecraft> minecraft; + private List<CurseMinecraft> minecraft; private String name; private String version; private String author; - private List<Files> files; + private List<CurseFiles> files; - public List<Minecraft> getMinecraft() { + public List<CurseMinecraft> getMinecraft() { return minecraft; } - public void setMinecraft(List<Minecraft> minecraft) { + public void setMinecraft(List<CurseMinecraft> minecraft) { this.minecraft = minecraft; } @@ -40,15 +40,11 @@ public class Modpack { return author; } - public void setAuthor(String author) { - this.author = author; - } - - public List<Files> getFiles() { + public List<CurseFiles> getFiles() { return files; } - public void setFiles(List<Files> files) { + public void setFiles(List<CurseFiles> files) { this.files = files; } diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/Splines.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java similarity index 92% rename from src/main/java/de/griefed/serverpackcreator/curseforgemodpack/Splines.java rename to src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java index bc23ab7ba..145cd7ac0 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/Splines.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java @@ -2,12 +2,12 @@ package de.griefed.serverpackcreator.curseforgemodpack; import java.util.Random; -class Splines { +class CurseSplines { /* Thanks go out to MAXIS and Sim City, for the ridiculous messages these games contained. Additional thanks to Larsz on GameFAQs for providing a list of all these messages: https://gamefaqs.gamespot.com/pc/561176-simcity-4/faqs/22135 */ - private static final String[] reticulating = {"Adding Hidden Agendas","Adjusting Bell Curves","Aesthesizing Industrial Areas", + private final String[] reticulating = {"Adding Hidden Agendas","Adjusting Bell Curves","Aesthesizing Industrial Areas", "Aligning Covariance Matrices","Applying Feng Shui Shaders","Applying Theatre Soda Layer", "Asserting Packed Exemplars","Attempting to Lock Back-Buffer","Binding Sapling Root System","Breeding Fauna", "Building Data Trees","Bureacritizing Bureaucracies","Calculating Inverse Probability Matrices", @@ -45,16 +45,16 @@ class Splines { "Synthesizing Wavelets","Time-Compressing Simulator Clock","Unable to Reveal Current Activity", "Weathering Buildings","Zeroing Crime Network"}; - private static int getRandomInt() { + private int getRandomInt() { Random randInt = new Random(); return randInt.nextInt(reticulating.length); } - private static String setSplines() { - return Splines.reticulating[getRandomInt()]; + private String getSpline() { + return reticulating[getRandomInt()]; } - public static String getSplines() { - return setSplines(); + public String reticulate() { + return getSpline(); } } \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/gui/About.java b/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java similarity index 73% rename from src/main/java/de/griefed/serverpackcreator/gui/About.java rename to src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java index 5610ae855..0107fd9ee 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/About.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java @@ -11,17 +11,27 @@ import java.io.IOException; import java.net.URI; import java.util.Objects; -class About extends Component { - private static final Logger appLogger = LogManager.getLogger(About.class); +class AboutTab extends Component { + private static final Logger appLogger = LogManager.getLogger(AboutTab.class); private final Dimension miscButtonDimension = new Dimension(50,50); - private final ImageIcon issueIcon = new ImageIcon(Objects.requireNonNull(TabbedPane.class.getResource("/de/griefed/resources/gui/issue.png"))); - private final ImageIcon pastebinIcon = new ImageIcon(Objects.requireNonNull(TabbedPane.class.getResource("/de/griefed/resources/gui/pastebin.png"))); - private final ImageIcon prosperIcon = new ImageIcon(Objects.requireNonNull(TabbedPane.class.getResource("/de/griefed/resources/gui/prosper.png"))); + private final ImageIcon issueIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/issue.png"))); + private final ImageIcon pastebinIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/pastebin.png"))); + private final ImageIcon prosperIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/prosper.png"))); - JComponent about() { - JComponent about = new JPanel(false); - about.setLayout(new GridBagLayout()); + private LocalizationManager localizationManager; + + public AboutTab(LocalizationManager injectedLocalizationManager) { + if (injectedLocalizationManager == null) { + this.localizationManager = new LocalizationManager(); + } else { + this.localizationManager = injectedLocalizationManager; + } + } + + JComponent aboutTab() { + JComponent aboutPanel = new JPanel(false); + aboutPanel.setLayout(new GridBagLayout()); GridBagConstraints constraints = new GridBagConstraints(); constraints.anchor = GridBagConstraints.CENTER; @@ -50,17 +60,17 @@ class About extends Component { try { document.insertString( document.getLength(), - LocalizationManager.getLocalizedString("createserverpack.gui.about.text"), + localizationManager.getLocalizedString("createserverpack.gui.about.text"), attributeSet ); } catch (BadLocationException ex) { - appLogger.error(LocalizationManager.getLocalizedString("about.log.error.document"), ex); + appLogger.error(localizationManager.getLocalizedString("about.log.error.document"), ex); } - about.add(textPane, constraints); + aboutPanel.add(textPane, constraints); constraints.gridx = 0; constraints.gridy = 1; constraints.fill = GridBagConstraints.HORIZONTAL; - about.add(new JSeparator(JSeparator.HORIZONTAL), constraints); + aboutPanel.add(new JSeparator(JSeparator.HORIZONTAL), constraints); //Buttons constraints.anchor = GridBagConstraints.CENTER; @@ -72,7 +82,7 @@ class About extends Component { //Button to upload log file to pastebin JButton buttonCreatePasteBin = new JButton(); - buttonCreatePasteBin.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.about.pastebin")); + buttonCreatePasteBin.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.about.pastebin")); buttonCreatePasteBin.setIcon(pastebinIcon); buttonCreatePasteBin.setPreferredSize(miscButtonDimension); buttonCreatePasteBin.addActionListener(e -> { @@ -82,17 +92,17 @@ class About extends Component { Desktop.getDesktop().browse(URI.create("https://pastebin.com")); } } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("about.log.error.browser"), ex); + appLogger.error(localizationManager.getLocalizedString("about.log.error.browser"), ex); } }); constraints.gridx = 0; constraints.gridy = 2; - about.add(buttonCreatePasteBin, constraints); + aboutPanel.add(buttonCreatePasteBin, constraints); //Button to open a new issue on GitHub JButton buttonOpenIssue = new JButton(); - buttonOpenIssue.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.about.issue")); + buttonOpenIssue.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.about.issue")); buttonOpenIssue.setIcon(issueIcon); buttonOpenIssue.setPreferredSize(miscButtonDimension); buttonOpenIssue.addActionListener(e -> { @@ -102,17 +112,17 @@ class About extends Component { Desktop.getDesktop().browse(URI.create("https://github.com/Griefed/ServerPackCreator/issues")); } } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("about.log.error.browser"), ex); + appLogger.error(localizationManager.getLocalizedString("about.log.error.browser"), ex); } }); constraints.gridx = 1; constraints.gridy = 2; - about.add(buttonOpenIssue, constraints); + aboutPanel.add(buttonOpenIssue, constraints); //Button to open the invite link to the discord server JButton buttonDiscord = new JButton(); - buttonDiscord.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.about.discord")); + buttonDiscord.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.about.discord")); buttonDiscord.setIcon(prosperIcon); buttonDiscord.setPreferredSize(miscButtonDimension); buttonDiscord.addActionListener(e -> { @@ -122,15 +132,15 @@ class About extends Component { Desktop.getDesktop().browse(URI.create("https://discord.griefed.de")); } } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("about.log.error.browser"), ex); + appLogger.error(localizationManager.getLocalizedString("about.log.error.browser"), ex); } }); constraints.gridx = 2; constraints.gridy = 2; - about.add(buttonDiscord, constraints); + aboutPanel.add(buttonDiscord, constraints); - return about; + return aboutPanel; } } \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/gui/TabbedPane.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java similarity index 63% rename from src/main/java/de/griefed/serverpackcreator/gui/TabbedPane.java rename to src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java index f8b17d637..3a6cd483e 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/TabbedPane.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java @@ -3,6 +3,7 @@ package de.griefed.serverpackcreator.gui; import com.typesafe.config.Config; import com.typesafe.config.ConfigException; import com.typesafe.config.ConfigFactory; +import de.griefed.serverpackcreator.ConfigCheck; import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -13,13 +14,52 @@ import java.awt.event.KeyEvent; import java.io.File; import java.util.Objects; -public class TabbedPane extends JPanel { - private static final Logger appLogger = LogManager.getLogger(TabbedPane.class); +public class CreateGui extends JPanel { + private static final Logger appLogger = LogManager.getLogger(CreateGui.class); - private final ImageIcon bannerIcon = new ImageIcon(Objects.requireNonNull(TabbedPane.class.getResource("/de/griefed/resources/gui/banner.png"))); - private final Image icon = Toolkit.getDefaultToolkit().getImage(Objects.requireNonNull(TabbedPane.class.getResource("/de/griefed/resources/gui/app.png"))); + private final ImageIcon bannerIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/banner.png"))); + private final Image icon = Toolkit.getDefaultToolkit().getImage(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/app.png"))); private final Dimension windowDimension = new Dimension(800,860); + private LocalizationManager localizationManager; + private ConfigCheck configCheck; + + public CreateGui(LocalizationManager injectedLocalizationManager, ConfigCheck injectedConfigCheck) { + super(new GridLayout(1, 1)); + + if (injectedLocalizationManager == null) { + this.localizationManager = new LocalizationManager(); + } else { + this.localizationManager = injectedLocalizationManager; + } + + if (injectedConfigCheck == null) { + this.configCheck = new ConfigCheck(localizationManager); + } else { + this.configCheck = injectedConfigCheck; + } + + JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); + + tabbedPane.addTab(localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.title"), null, new CreateServerPackTab(localizationManager, configCheck).createServerPackTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.tip")); + tabbedPane.setMnemonicAt(0, KeyEvent.VK_1); + + tabbedPane.addTab(localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.title"), null, new ServerPackCreatorLogTab(localizationManager).serverPackCreatorLogTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.tip")); + tabbedPane.setMnemonicAt(1, KeyEvent.VK_2); + + tabbedPane.addTab(localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.modloaderinstallerlog.title"), null, new ModloaderInstallerLogTab(localizationManager).modloaderInstallerLogTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.modloaderinstallerlog.tip")); + tabbedPane.setMnemonicAt(2, KeyEvent.VK_3); + + tabbedPane.addTab(localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.about.title"), null, new AboutTab(localizationManager).aboutTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.about.tip")); + tabbedPane.setMnemonicAt(3, KeyEvent.VK_4); + + //Add the tabbed pane to this panel. + add(tabbedPane); + + //The following line enables to use scrolling tabs. + tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); + } + public void mainGUI() { SwingUtilities.invokeLater(() -> { //Bold fonts = true, else false @@ -33,8 +73,8 @@ public class TabbedPane extends JPanel { if (secret.getString("topsicrets") != null && !secret.getString("topsicrets").equals("") && secret.getString("topsicrets").length() > 0) { - appLogger.info(LocalizationManager.getLocalizedString("topsicrets")); - appLogger.info(LocalizationManager.getLocalizedString("topsicrets.moar")); + appLogger.info(localizationManager.getLocalizedString("topsicrets")); + appLogger.info(localizationManager.getLocalizedString("topsicrets.moar")); for (UIManager.LookAndFeelInfo look : UIManager.getInstalledLookAndFeels()) { appLogger.info(look.getClassName()); } @@ -53,7 +93,7 @@ public class TabbedPane extends JPanel { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { - appLogger.error(LocalizationManager.getLocalizedString("tabbedpane.log.error"), ex); + appLogger.error(localizationManager.getLocalizedString("tabbedpane.log.error"), ex); } } createAndShowGUI(); @@ -62,7 +102,7 @@ public class TabbedPane extends JPanel { private void createAndShowGUI() { - JFrame frame = new JFrame(LocalizationManager.getLocalizedString("createserverpack.gui.createandshowgui")); + JFrame frame = new JFrame(localizationManager.getLocalizedString("createserverpack.gui.createandshowgui")); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setIconImage(icon); @@ -70,7 +110,7 @@ public class TabbedPane extends JPanel { banner.setOpaque(false); frame.add(banner, BorderLayout.PAGE_START); - frame.add(new TabbedPane(), BorderLayout.CENTER); + frame.add(new CreateGui(localizationManager, configCheck), BorderLayout.CENTER); frame.setPreferredSize(windowDimension); frame.setMaximumSize(windowDimension); @@ -80,28 +120,4 @@ public class TabbedPane extends JPanel { frame.setVisible(true); } - - public TabbedPane() { - super(new GridLayout(1, 1)); - - JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); - - tabbedPane.addTab(LocalizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.title"), null, new CreateServerPack().createServerPack(), LocalizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.tip")); - tabbedPane.setMnemonicAt(0, KeyEvent.VK_1); - - tabbedPane.addTab(LocalizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.title"), null, new ServerPackCreatorLog().serverPackCreatorLog(), LocalizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.tip")); - tabbedPane.setMnemonicAt(1, KeyEvent.VK_2); - - tabbedPane.addTab(LocalizationManager.getLocalizedString("createserverpack.gui.tabbedpane.modloaderinstallerlog.title"), null, new ModloaderInstallerLog().modloaderInstallerLog(), "createserverpack.gui.tabbedpane.modloaderinstallerlog.tip"); - tabbedPane.setMnemonicAt(2, KeyEvent.VK_3); - - tabbedPane.addTab(LocalizationManager.getLocalizedString("createserverpack.gui.tabbedpane.about.title"), null, new About().about(), LocalizationManager.getLocalizedString("createserverpack.gui.tabbedpane.about.tip")); - tabbedPane.setMnemonicAt(3, KeyEvent.VK_4); - - //Add the tabbed pane to this panel. - add(tabbedPane); - - //The following line enables to use scrolling tabs. - tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); - } } \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java similarity index 75% rename from src/main/java/de/griefed/serverpackcreator/gui/CreateServerPack.java rename to src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java index 2c39d0c04..358e57324 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java @@ -2,8 +2,8 @@ package de.griefed.serverpackcreator.gui; import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; -import de.griefed.serverpackcreator.Handler; -import de.griefed.serverpackcreator.Reference; +import de.griefed.serverpackcreator.ConfigCheck; +import de.griefed.serverpackcreator.CreateServerPack; import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.commons.io.input.Tailer; import org.apache.commons.io.input.TailerListenerAdapter; @@ -23,18 +23,36 @@ import java.util.Objects; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -class CreateServerPack extends Component { - private static final Logger appLogger = LogManager.getLogger(CreateServerPack.class); +public class CreateServerPackTab extends Component { + private static final Logger appLogger = LogManager.getLogger(CreateServerPackTab.class); - private final ImageIcon loadIcon = new ImageIcon(Objects.requireNonNull(TabbedPane.class.getResource("/de/griefed/resources/gui/load.png"))); - private final ImageIcon folderIcon = new ImageIcon(Objects.requireNonNull(TabbedPane.class.getResource("/de/griefed/resources/gui/folder.png"))); - private final ImageIcon startGeneration = new ImageIcon(Objects.requireNonNull(TabbedPane.class.getResource("/de/griefed/resources/gui/start_generation.png"))); - private final ImageIcon helpIcon = new ImageIcon(Objects.requireNonNull(TabbedPane.class.getResource("/de/griefed/resources/gui/help.png"))); + private final ImageIcon loadIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/load.png"))); + private final ImageIcon folderIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/folder.png"))); + private final ImageIcon startGeneration = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/start_generation.png"))); + private final ImageIcon helpIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/help.png"))); private final Dimension folderButtonDimension = new Dimension(24,24); private final Dimension miscButtonDimension = new Dimension(50,50); private final Dimension chooserDimension = new Dimension(750,450); - JComponent createServerPack() { + private ConfigCheck configCheck; + private LocalizationManager localizationManager; + + public CreateServerPackTab(LocalizationManager injectedLocalizationManager, ConfigCheck injectedConfigCheck) { + if (injectedLocalizationManager == null) { + this.localizationManager = new LocalizationManager(); + } else { + this.localizationManager = injectedLocalizationManager; + } + + if (injectedConfigCheck == null) { + this.configCheck = new ConfigCheck(localizationManager); + } else { + this.configCheck = injectedConfigCheck; + } + + } + + JComponent createServerPackTab() { JComponent createServerPackPanel = new JPanel(false); createServerPackPanel.setLayout(new GridBagLayout()); GridBagConstraints constraints = new GridBagConstraints(); @@ -45,98 +63,98 @@ class CreateServerPack extends Component { constraints.weightx = 0.7; //Label and textfield modpackDir - JLabel labelModpackDir = new JLabel(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodpackdir")); - labelModpackDir.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodpackdir.tip")); + JLabel labelModpackDir = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodpackdir")); + labelModpackDir.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodpackdir.tip")); constraints.gridx = 0; constraints.gridy = 0; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelModpackDir, constraints); JTextField textModpackDir = new JTextField(""); - textModpackDir.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodpackdir.tip")); + textModpackDir.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodpackdir.tip")); constraints.gridx = 0; constraints.gridy = 1; constraints.insets = new Insets(0,10,0,0); createServerPackPanel.add(textModpackDir, constraints); //Label and textfield clientMods - JLabel labelClientMods = new JLabel(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelclientmods")); - labelClientMods.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelclientmods.tip")); + JLabel labelClientMods = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelclientmods")); + labelClientMods.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelclientmods.tip")); constraints.gridx = 0; constraints.gridy = 2; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelClientMods, constraints); JTextField textClientMods = new JTextField(""); - textClientMods.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelclientmods.tip")); + textClientMods.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelclientmods.tip")); constraints.gridx = 0; constraints.gridy = 3; constraints.insets = new Insets(0,10,0,0); createServerPackPanel.add(textClientMods, constraints); //Label and textfield copyDirs - JLabel labelCopyDirs = new JLabel(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelcopydirs")); - labelCopyDirs.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelcopydirs.tip")); + JLabel labelCopyDirs = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelcopydirs")); + labelCopyDirs.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelcopydirs.tip")); constraints.gridx = 0; constraints.gridy = 4; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelCopyDirs, constraints); JTextField textCopyDirs = new JTextField(""); - textCopyDirs.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelcopydirs.tip")); + textCopyDirs.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelcopydirs.tip")); constraints.gridx = 0; constraints.gridy = 5; constraints.insets = new Insets(0,10,0,0); createServerPackPanel.add(textCopyDirs, constraints); //Label and textfield javaPath - JLabel labelJavaPath = new JLabel(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labeljavapath")); - labelJavaPath.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labeljavapath.tip")); + JLabel labelJavaPath = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labeljavapath")); + labelJavaPath.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labeljavapath.tip")); constraints.gridx = 0; constraints.gridy = 6; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelJavaPath, constraints); JTextField textJavaPath = new JTextField(""); - textJavaPath.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labeljavapath.tip")); + textJavaPath.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labeljavapath.tip")); constraints.gridx = 0; constraints.gridy = 7; constraints.insets = new Insets(0,10,0,0); createServerPackPanel.add(textJavaPath, constraints); //Label and textfield minecraftVersion - JLabel labelMinecraftVersion = new JLabel(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelminecraft")); - labelMinecraftVersion.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelminecraft.tip")); + JLabel labelMinecraftVersion = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelminecraft")); + labelMinecraftVersion.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelminecraft.tip")); constraints.gridx = 0; constraints.gridy = 8; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelMinecraftVersion, constraints); JTextField textMinecraftVersion = new JTextField(""); - textMinecraftVersion.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelminecraft.tip")); + textMinecraftVersion.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelminecraft.tip")); constraints.gridx = 0; constraints.gridy = 9; constraints.insets = new Insets(0,10,0,0); createServerPackPanel.add(textMinecraftVersion, constraints); //Label and textfield Modloader - JLabel labelModloader = new JLabel(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloader")); - labelModloader.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloader.tip")); + JLabel labelModloader = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloader")); + labelModloader.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloader.tip")); constraints.gridx = 0; constraints.gridy = 10; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelModloader, constraints); JTextField textModloader = new JTextField(""); - textModloader.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloader.tip")); + textModloader.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloader.tip")); constraints.gridx = 0; constraints.gridy = 11; constraints.insets = new Insets(0,10,0,0); createServerPackPanel.add(textModloader, constraints); //Label and textfield modloaderVersion - JLabel labelModloaderVersion = new JLabel(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloaderversion")); - labelModloaderVersion.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloaderversion.tip")); + JLabel labelModloaderVersion = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloaderversion")); + labelModloaderVersion.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloaderversion.tip")); constraints.gridx = 0; constraints.gridy = 12; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelModloaderVersion, constraints); JTextField textModloaderVersion = new JTextField(""); - textModloaderVersion.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloaderversion.tip")); + textModloaderVersion.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloaderversion.tip")); constraints.gridx = 0; constraints.gridy = 13; constraints.insets = new Insets(0,10,0,0); @@ -151,36 +169,36 @@ class CreateServerPack extends Component { constraints.fill = GridBagConstraints.NONE; //Checkbox installServer - JCheckBox checkBoxServer = new JCheckBox(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxserver"),true); - checkBoxServer.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxserver.tip")); + JCheckBox checkBoxServer = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxserver"),true); + checkBoxServer.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxserver.tip")); constraints.gridx = 0; constraints.gridy = 14; createServerPackPanel.add(checkBoxServer, constraints); //Checkbox copyIcon - JCheckBox checkBoxIcon = new JCheckBox(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxicon"),true); - checkBoxIcon.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxicon.tip")); + JCheckBox checkBoxIcon = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxicon"),true); + checkBoxIcon.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxicon.tip")); constraints.gridx = 1; constraints.gridy = 14; createServerPackPanel.add(checkBoxIcon, constraints); //Checkbox copyProperties - JCheckBox checkBoxProperties = new JCheckBox(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxproperties"),true); - checkBoxProperties.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxproperties.tip")); + JCheckBox checkBoxProperties = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxproperties"),true); + checkBoxProperties.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxproperties.tip")); constraints.gridx = 0; constraints.gridy = 15; createServerPackPanel.add(checkBoxProperties, constraints); //Checkbox copyScripts - JCheckBox checkBoxScripts = new JCheckBox(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxscripts"),true); - checkBoxScripts.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxscripts.tip")); + JCheckBox checkBoxScripts = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxscripts"),true); + checkBoxScripts.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxscripts.tip")); constraints.gridx = 1; constraints.gridy = 15; createServerPackPanel.add(checkBoxScripts, constraints); //Checkbox createZIP - JCheckBox checkBoxZIP = new JCheckBox(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxzip"),true); - checkBoxZIP.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxzip.tip")); + JCheckBox checkBoxZIP = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxzip"),true); + checkBoxZIP.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxzip.tip")); constraints.gridx = 0; constraints.gridy = 16; createServerPackPanel.add(checkBoxZIP, constraints); @@ -193,7 +211,7 @@ class CreateServerPack extends Component { //Select modpackDir button JButton buttonModpackDir = new JButton(); - buttonModpackDir.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.buttonmodpackdir")); + buttonModpackDir.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttonmodpackdir")); buttonModpackDir.setIcon(folderIcon); buttonModpackDir.setMinimumSize(folderButtonDimension); buttonModpackDir.setPreferredSize(folderButtonDimension); @@ -202,7 +220,7 @@ class CreateServerPack extends Component { JFileChooser folderChooser = new JFileChooser(); folderChooser.setCurrentDirectory(new File(".")); - folderChooser.setDialogTitle(LocalizationManager.getLocalizedString("createserverpack.gui.buttonmodpackdir.title")); + folderChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttonmodpackdir.title")); folderChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); folderChooser.setAcceptAllFileFilterUsed(false); folderChooser.setMultiSelectionEnabled(false); @@ -211,9 +229,9 @@ class CreateServerPack extends Component { if (folderChooser.showOpenDialog(folderChooser) == JFileChooser.APPROVE_OPTION) { try { textModpackDir.setText(folderChooser.getSelectedFile().getCanonicalPath().replace("\\","/")); - appLogger.info(String.format(LocalizationManager.getLocalizedString("createserverpack.log.info.buttonmodpack"), folderChooser.getSelectedFile().getCanonicalPath().replace("\\","/"))); + appLogger.info(String.format(localizationManager.getLocalizedString("createserverpack.log.info.buttonmodpack"), folderChooser.getSelectedFile().getCanonicalPath().replace("\\","/"))); } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("createserverpack.log.error.buttonmodpack"),ex); + appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.buttonmodpack"),ex); } } }); @@ -223,7 +241,7 @@ class CreateServerPack extends Component { //Select clientside-mods button JButton buttonClientMods = new JButton(); - buttonClientMods.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.buttonclientmods")); + buttonClientMods.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttonclientmods")); buttonClientMods.setIcon(folderIcon); buttonClientMods.setMinimumSize(folderButtonDimension); buttonClientMods.setPreferredSize(folderButtonDimension); @@ -239,9 +257,9 @@ class CreateServerPack extends Component { } else { fileChooser.setCurrentDirectory(new File(".")); } - fileChooser.setDialogTitle(LocalizationManager.getLocalizedString("createserverpack.gui.buttonclientmods.title")); + fileChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttonclientmods.title")); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); - fileChooser.setFileFilter(new FileNameExtensionFilter(LocalizationManager.getLocalizedString("createserverpack.gui.buttonclientmods.filter"),"jar")); + fileChooser.setFileFilter(new FileNameExtensionFilter(localizationManager.getLocalizedString("createserverpack.gui.buttonclientmods.filter"),"jar")); fileChooser.setAcceptAllFileFilterUsed(false); fileChooser.setMultiSelectionEnabled(true); fileChooser.setPreferredSize(chooserDimension); @@ -254,8 +272,8 @@ class CreateServerPack extends Component { clientModsFilenames.add(clientMods[i].getName()); } - textClientMods.setText(Reference.cliSetup.buildString(Arrays.toString(clientModsFilenames.toArray(new String[0])))); - appLogger.info(String.format(LocalizationManager.getLocalizedString("createserverpack.log.info.buttonclientmods"), clientModsFilenames)); + textClientMods.setText(configCheck.buildString(Arrays.toString(clientModsFilenames.toArray(new String[0])))); + appLogger.info(String.format(localizationManager.getLocalizedString("createserverpack.log.info.buttonclientmods"), clientModsFilenames)); } }); constraints.gridx = 2; @@ -264,7 +282,7 @@ class CreateServerPack extends Component { //Select directories to copy to server pack button JButton buttonCopyDirs = new JButton(); - buttonCopyDirs.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.buttoncopydirs")); + buttonCopyDirs.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttoncopydirs")); buttonCopyDirs.setIcon(folderIcon); buttonCopyDirs.setMinimumSize(folderButtonDimension); buttonCopyDirs.setPreferredSize(folderButtonDimension); @@ -279,7 +297,7 @@ class CreateServerPack extends Component { } else { fileChooser.setCurrentDirectory(new File(".")); } - fileChooser.setDialogTitle(LocalizationManager.getLocalizedString("createserverpack.gui.buttoncopydirs.title")); + fileChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttoncopydirs.title")); fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); fileChooser.setAcceptAllFileFilterUsed(false); fileChooser.setMultiSelectionEnabled(true); @@ -293,8 +311,8 @@ class CreateServerPack extends Component { copyDirsNames.add(copyDirs[i].getName()); } - textCopyDirs.setText(Reference.cliSetup.buildString(Arrays.toString(copyDirsNames.toArray(new String[0])))); - appLogger.info(String.format(LocalizationManager.getLocalizedString("createserverpack.log.info.buttoncopydirs"), copyDirsNames)); + textCopyDirs.setText(configCheck.buildString(Arrays.toString(copyDirsNames.toArray(new String[0])))); + appLogger.info(String.format(localizationManager.getLocalizedString("createserverpack.log.info.buttoncopydirs"), copyDirsNames)); } }); constraints.gridx = 2; @@ -303,7 +321,7 @@ class CreateServerPack extends Component { //Select javaPath button JButton buttonJavaPath = new JButton(); - buttonJavaPath.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.buttonjavapath")); + buttonJavaPath.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttonjavapath")); buttonJavaPath.setIcon(folderIcon); buttonJavaPath.setMinimumSize(folderButtonDimension); buttonJavaPath.setPreferredSize(folderButtonDimension); @@ -317,7 +335,7 @@ class CreateServerPack extends Component { fileChooser.setCurrentDirectory(new File(".")); } - fileChooser.setDialogTitle(LocalizationManager.getLocalizedString("createserverpack.gui.buttonjavapath.tile")); + fileChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttonjavapath.tile")); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); fileChooser.setAcceptAllFileFilterUsed(true); @@ -328,9 +346,9 @@ class CreateServerPack extends Component { if (fileChooser.showOpenDialog(fileChooser) == JFileChooser.APPROVE_OPTION) { try { textJavaPath.setText(fileChooser.getSelectedFile().getCanonicalPath().replace("\\","/")); - appLogger.info(String.format(LocalizationManager.getLocalizedString("createserverpack.log.info.buttonjavapath"), fileChooser.getSelectedFile().getCanonicalPath().replace("\\","/"))); + appLogger.info(String.format(localizationManager.getLocalizedString("createserverpack.log.info.buttonjavapath"), fileChooser.getSelectedFile().getCanonicalPath().replace("\\","/"))); } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("createserverpack.log.error.buttonjavapath"),ex); + appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.buttonjavapath"),ex); } } }); @@ -340,7 +358,7 @@ class CreateServerPack extends Component { //Load config from file JButton buttonLoadConfigFromFile = new JButton(); - buttonLoadConfigFromFile.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.buttonloadconfig")); + buttonLoadConfigFromFile.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttonloadconfig")); buttonLoadConfigFromFile.setIcon(loadIcon); buttonLoadConfigFromFile.setMinimumSize(miscButtonDimension); buttonLoadConfigFromFile.setPreferredSize(miscButtonDimension); @@ -349,9 +367,9 @@ class CreateServerPack extends Component { JFileChooser fileChooser = new JFileChooser(); fileChooser.setCurrentDirectory(new File(".")); - fileChooser.setDialogTitle(LocalizationManager.getLocalizedString("createserverpack.gui.buttonloadconfig.title")); + fileChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttonloadconfig.title")); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); - fileChooser.setFileFilter(new FileNameExtensionFilter(LocalizationManager.getLocalizedString("createserverpack.gui.buttonloadconfig.filter"),"conf")); + fileChooser.setFileFilter(new FileNameExtensionFilter(localizationManager.getLocalizedString("createserverpack.gui.buttonloadconfig.filter"),"conf")); fileChooser.setAcceptAllFileFilterUsed(false); fileChooser.setMultiSelectionEnabled(false); fileChooser.setPreferredSize(chooserDimension); @@ -362,18 +380,18 @@ class CreateServerPack extends Component { try { newConfigFile = ConfigFactory.parseFile(new File(fileChooser.getSelectedFile().getCanonicalPath())); - appLogger.info(String.format(LocalizationManager.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile"), fileChooser.getSelectedFile().getCanonicalPath())); + appLogger.info(String.format(localizationManager.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile"), fileChooser.getSelectedFile().getCanonicalPath())); } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("createserverpack.log.error.buttonloadconfigfromfile"),ex); + appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.buttonloadconfigfromfile"),ex); } if (newConfigFile != null) { textModpackDir.setText(newConfigFile.getString("modpackDir")); - textClientMods.setText(Reference.cliSetup.buildString(newConfigFile.getStringList("clientMods").toString())); + textClientMods.setText(configCheck.buildString(newConfigFile.getStringList("clientMods").toString())); - textCopyDirs.setText(Reference.cliSetup.buildString(newConfigFile.getStringList("copyDirs").toString())); + textCopyDirs.setText(configCheck.buildString(newConfigFile.getStringList("copyDirs").toString())); textJavaPath.setText(newConfigFile.getString("javaPath")); @@ -383,17 +401,17 @@ class CreateServerPack extends Component { textModloaderVersion.setText(newConfigFile.getString("modLoaderVersion")); - checkBoxServer.setSelected(Reference.configCheck.convertToBoolean(newConfigFile.getString("includeServerInstallation"))); + checkBoxServer.setSelected(configCheck.convertToBoolean(newConfigFile.getString("includeServerInstallation"))); - checkBoxIcon.setSelected(Reference.configCheck.convertToBoolean(newConfigFile.getString("includeServerIcon"))); + checkBoxIcon.setSelected(configCheck.convertToBoolean(newConfigFile.getString("includeServerIcon"))); - checkBoxProperties.setSelected(Reference.configCheck.convertToBoolean(newConfigFile.getString("includeServerProperties"))); + checkBoxProperties.setSelected(configCheck.convertToBoolean(newConfigFile.getString("includeServerProperties"))); - checkBoxScripts.setSelected(Reference.configCheck.convertToBoolean(newConfigFile.getString("includeStartScripts"))); + checkBoxScripts.setSelected(configCheck.convertToBoolean(newConfigFile.getString("includeStartScripts"))); - checkBoxZIP.setSelected(Reference.configCheck.convertToBoolean(newConfigFile.getString("includeZipCreation"))); + checkBoxZIP.setSelected(configCheck.convertToBoolean(newConfigFile.getString("includeZipCreation"))); - appLogger.info(LocalizationManager.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile.finish")); + appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile.finish")); } } }); @@ -405,7 +423,7 @@ class CreateServerPack extends Component { //Load config from file JButton buttonInfoWindow = new JButton(); - buttonInfoWindow.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.button")); + buttonInfoWindow.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.button")); buttonInfoWindow.setIcon(helpIcon); buttonInfoWindow.setMinimumSize(miscButtonDimension); buttonInfoWindow.setPreferredSize(miscButtonDimension); @@ -414,18 +432,18 @@ class CreateServerPack extends Component { JTextArea textArea = new JTextArea(String.format( "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s", - LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.modpackdir"), - LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.clientsidemods"), - LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.directories"), - LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.pathtojava"), - LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.minecraftversion"), - LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.modloader"), - LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.modloaderversion"), - LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.installserver"), - LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.copypropertires"), - LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.copyscripts"), - LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.copyicon"), - LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.createzip") + localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.modpackdir"), + localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.clientsidemods"), + localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.directories"), + localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.pathtojava"), + localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.minecraftversion"), + localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.modloader"), + localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.modloaderversion"), + localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.installserver"), + localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.copypropertires"), + localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.copyscripts"), + localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.copyicon"), + localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.createzip") )); textArea.setEditable(false); textArea.setOpaque(false); @@ -451,7 +469,7 @@ class CreateServerPack extends Component { } }); - JOptionPane.showMessageDialog(new JFrame(), scrollPane, LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.title"), JOptionPane.INFORMATION_MESSAGE, helpIcon); + JOptionPane.showMessageDialog(new JFrame(), scrollPane, localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.title"), JOptionPane.INFORMATION_MESSAGE, helpIcon); }); constraints.anchor = GridBagConstraints.CENTER; @@ -464,7 +482,7 @@ class CreateServerPack extends Component { constraints.fill = GridBagConstraints.NONE; constraints.insets = new Insets(5,0,5,0); - JLabel labelGenerateServerPack = new JLabel(LocalizationManager.getLocalizedString("createserverpack.gui.buttongenerateserverpack.ready")); + JLabel labelGenerateServerPack = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.buttongenerateserverpack.ready")); constraints.gridx = 0; constraints.gridy = 18; constraints.gridwidth = 4; @@ -474,16 +492,16 @@ class CreateServerPack extends Component { createServerPackPanel.add(labelGenerateServerPack, constraints); JButton buttonGenerateServerPack = new JButton(); - buttonGenerateServerPack.setToolTipText(LocalizationManager.getLocalizedString("createserverpack.gui.buttongenerateserverpack.tip")); + buttonGenerateServerPack.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttongenerateserverpack.tip")); buttonGenerateServerPack.setIcon(startGeneration); buttonGenerateServerPack.addActionListener(e -> { buttonGenerateServerPack.setEnabled(false); - appLogger.info(LocalizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.start")); - labelGenerateServerPack.setText(LocalizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.start")); + appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.start")); + labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.start")); - Reference.filesSetup.writeConfigToFile( + configCheck.writeConfigToFile( textModpackDir.getText(), textClientMods.getText(), textCopyDirs.getText(), @@ -499,24 +517,24 @@ class CreateServerPack extends Component { new File("serverpackcreator.tmp"), true ); - if (!Reference.configCheck.checkConfigFile(new File("serverpackcreator.tmp"))) { - appLogger.info(LocalizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.checked")); - labelGenerateServerPack.setText(LocalizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.checked")); + if (!configCheck.checkConfigFile(new File("serverpackcreator.tmp"))) { + appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.checked")); + labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.checked")); if (new File("serverpackcreator.tmp").exists()) { boolean delTmp = new File("serverpackcreator.tmp").delete(); if (delTmp) { - labelGenerateServerPack.setText(LocalizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.tempfile")); - appLogger.info(LocalizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.tempfile")); + labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.tempfile")); + appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.tempfile")); } else { - labelGenerateServerPack.setText(LocalizationManager.getLocalizedString("createserverpack.log.error.buttoncreateserverpack.tempfile")); - appLogger.error(LocalizationManager.getLocalizedString("createserverpack.log.error.buttoncreateserverpack.tempfile")); + labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.error.buttoncreateserverpack.tempfile")); + appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.buttoncreateserverpack.tempfile")); } } - appLogger.info(LocalizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.writing")); - labelGenerateServerPack.setText(LocalizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.writing")); - Reference.filesSetup.writeConfigToFile( + appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.writing")); + labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.writing")); + configCheck.writeConfigToFile( textModpackDir.getText(), textClientMods.getText(), textCopyDirs.getText(), @@ -529,12 +547,12 @@ class CreateServerPack extends Component { checkBoxProperties.isSelected(), checkBoxScripts.isSelected(), checkBoxZIP.isSelected(), - Reference.getConfigFile(), + configCheck.getConfigFile(), false ); - appLogger.info(LocalizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.generating")); - labelGenerateServerPack.setText(LocalizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.generating")); + appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.generating")); + labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.generating")); Tailer tailer = Tailer.create(new File("./logs/serverpackcreator.log"), new TailerListenerAdapter() { @@ -547,20 +565,21 @@ class CreateServerPack extends Component { final ExecutorService executorService = Executors.newSingleThreadExecutor(); executorService.execute(() -> { - if (Handler.run()) { + CreateServerPack createServerPack = new CreateServerPack(localizationManager, configCheck); + if (createServerPack.run()) { tailer.stop(); System.gc(); System.runFinalization(); buttonGenerateServerPack.setEnabled(true); - labelGenerateServerPack.setText(LocalizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.ready")); + labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.ready")); JTextArea textArea = new JTextArea(); textArea.setOpaque(false); textArea.setText(String.format( "%s\n%s", - LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.openfolder.browse"), + localizationManager.getLocalizedString("createserverpack.gui.createserverpack.openfolder.browse"), String.format( "%s/server_pack", textModpackDir.getText() @@ -571,13 +590,13 @@ class CreateServerPack extends Component { if (JOptionPane.showConfirmDialog( createServerPackPanel, textArea, - LocalizationManager.getLocalizedString("createserverpack.gui.createserverpack.openfolder.title"), + localizationManager.getLocalizedString("createserverpack.gui.createserverpack.openfolder.title"), JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE) == 0) { try { Desktop.getDesktop().open(new File(String.format("%s/server_pack",textModpackDir.getText()))); } catch (IOException ex) { - appLogger.error(LocalizationManager.getLocalizedString("createserverpack.log.error.browserserverpack")); + appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.browserserverpack")); } } executorService.shutdown(); @@ -592,13 +611,13 @@ class CreateServerPack extends Component { System.runFinalization(); buttonGenerateServerPack.setEnabled(true); - labelGenerateServerPack.setText(LocalizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.ready")); + labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.ready")); executorService.shutdown(); } }); } else { - labelGenerateServerPack.setText(LocalizationManager.getLocalizedString("createserverpack.gui.buttongenerateserverpack.fail")); + labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.gui.buttongenerateserverpack.fail")); buttonGenerateServerPack.setEnabled(true); } }); @@ -619,13 +638,13 @@ class CreateServerPack extends Component { File configFile = new File("serverpackcreator.conf"); Config config = ConfigFactory.parseFile(configFile); - appLogger.info(String.format(LocalizationManager.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile"), configFile)); + appLogger.info(String.format(localizationManager.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile"), configFile)); textModpackDir.setText(config.getString("modpackDir")); - textClientMods.setText(Reference.cliSetup.buildString(config.getStringList("clientMods").toString())); + textClientMods.setText(configCheck.buildString(config.getStringList("clientMods").toString())); - textCopyDirs.setText(Reference.cliSetup.buildString(config.getStringList("copyDirs").toString())); + textCopyDirs.setText(configCheck.buildString(config.getStringList("copyDirs").toString())); textJavaPath.setText(config.getString("javaPath")); @@ -635,17 +654,17 @@ class CreateServerPack extends Component { textModloaderVersion.setText(config.getString("modLoaderVersion")); - checkBoxServer.setSelected(Reference.configCheck.convertToBoolean(config.getString("includeServerInstallation"))); + checkBoxServer.setSelected(configCheck.convertToBoolean(config.getString("includeServerInstallation"))); - checkBoxIcon.setSelected(Reference.configCheck.convertToBoolean(config.getString("includeServerIcon"))); + checkBoxIcon.setSelected(configCheck.convertToBoolean(config.getString("includeServerIcon"))); - checkBoxProperties.setSelected(Reference.configCheck.convertToBoolean(config.getString("includeServerProperties"))); + checkBoxProperties.setSelected(configCheck.convertToBoolean(config.getString("includeServerProperties"))); - checkBoxScripts.setSelected(Reference.configCheck.convertToBoolean(config.getString("includeStartScripts"))); + checkBoxScripts.setSelected(configCheck.convertToBoolean(config.getString("includeStartScripts"))); - checkBoxZIP.setSelected(Reference.configCheck.convertToBoolean(config.getString("includeZipCreation"))); + checkBoxZIP.setSelected(configCheck.convertToBoolean(config.getString("includeZipCreation"))); - appLogger.info(LocalizationManager.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile.finish")); + appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile.finish")); } } catch (NullPointerException ignored) { diff --git a/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLog.java b/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java similarity index 59% rename from src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLog.java rename to src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java index 63c6b5477..7cb474cf3 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLog.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java @@ -8,11 +8,21 @@ import javax.swing.*; import java.awt.*; import java.io.File; -class ModloaderInstallerLog extends Component { +class ModloaderInstallerLogTab extends Component { - JComponent modloaderInstallerLog() { - JComponent modloaderInstallerLog = new JPanel(false); - modloaderInstallerLog.setLayout(new GridBagLayout()); + private LocalizationManager localizationManager; + + public ModloaderInstallerLogTab(LocalizationManager injectedLocalizationManager) { + if (injectedLocalizationManager == null) { + this.localizationManager = new LocalizationManager(); + } else { + this.localizationManager = injectedLocalizationManager; + } + } + + JComponent modloaderInstallerLogTab() { + JComponent modloaderInstallerLogPanel = new JPanel(false); + modloaderInstallerLogPanel.setLayout(new GridBagLayout()); GridBagConstraints constraints = new GridBagConstraints(); constraints.anchor = GridBagConstraints.CENTER; @@ -29,7 +39,8 @@ class ModloaderInstallerLog extends Component { Tailer.create(new File("./logs/modloader_installer.log"), new TailerListenerAdapter() { public void handle(String line) { synchronized (this) { - if (line.contains(LocalizationManager.getLocalizedString("serversetup.log.info.installserver.fabric.enter")) || line.contains(LocalizationManager.getLocalizedString("serversetup.log.info.installserver.forge.enter"))) { + if (line.contains(localizationManager.getLocalizedString("serversetup.log.info.installserver.fabric.enter")) || + line.contains(localizationManager.getLocalizedString("serversetup.log.info.installserver.forge.enter"))) { textArea.setText(""); } textArea.append(line + "\n"); @@ -42,8 +53,8 @@ class ModloaderInstallerLog extends Component { JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); - modloaderInstallerLog.add(scrollPane, constraints); + modloaderInstallerLogPanel.add(scrollPane, constraints); - return modloaderInstallerLog; + return modloaderInstallerLogPanel; } } \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLog.java b/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java similarity index 63% rename from src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLog.java rename to src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java index 8f323d702..129cf9f88 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLog.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java @@ -8,11 +8,21 @@ import javax.swing.*; import java.awt.*; import java.io.File; -class ServerPackCreatorLog extends Component { +class ServerPackCreatorLogTab extends Component { - JComponent serverPackCreatorLog() { - JComponent serverPackCreatorLog = new JPanel(false); - serverPackCreatorLog.setLayout(new GridBagLayout()); + private LocalizationManager localizationManager; + + public ServerPackCreatorLogTab(LocalizationManager injectedLocalizationManager) { + if (injectedLocalizationManager == null) { + this.localizationManager = new LocalizationManager(); + } else { + this.localizationManager = injectedLocalizationManager; + } + } + + JComponent serverPackCreatorLogTab() { + JComponent serverPackCreatorLogPanel = new JPanel(false); + serverPackCreatorLogPanel.setLayout(new GridBagLayout()); GridBagConstraints constraints = new GridBagConstraints(); constraints.anchor = GridBagConstraints.CENTER; @@ -29,7 +39,7 @@ class ServerPackCreatorLog extends Component { Tailer.create(new File("./logs/serverpackcreator.log"), new TailerListenerAdapter() { public void handle(String line) { synchronized (this) { - if (line.contains(LocalizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.start"))) { + if (line.contains(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.start"))) { textArea.setText(""); } textArea.append(line + "\n"); @@ -42,8 +52,8 @@ class ServerPackCreatorLog extends Component { JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); - serverPackCreatorLog.add(scrollPane, constraints); + serverPackCreatorLogPanel.add(scrollPane, constraints); - return serverPackCreatorLog; + return serverPackCreatorLogPanel; } } \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java b/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java index 392024eb8..f946a950d 100644 --- a/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java +++ b/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java @@ -1,14 +1,9 @@ package de.griefed.serverpackcreator.i18n; -import de.griefed.serverpackcreator.FilesSetup; -import de.griefed.serverpackcreator.Reference; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStreamReader; +import java.io.*; import java.nio.charset.StandardCharsets; import java.util.*; @@ -21,33 +16,51 @@ import java.util.*; * For example: lang_en_us.lang.</p> * Currently supports only strings to be used in localized fields. */ -public class LocalizationManager extends Reference { - +public class LocalizationManager { private static final Logger localeLogger = LogManager.getLogger(LocalizationManager.class); + private final File langPropertiesFile = new File("lang.properties"); + /** * Current language of application, mapped for easier further reference. */ - private static Map<String, String> currentLanguage = new HashMap<>(); + private Map<String, String> currentLanguage = new HashMap<>(); /** * Localized strings that application uses. */ - private static ResourceBundle localeResources; + private ResourceBundle localeResources; /** * Keys that used for current language mapping. */ - private static final String LANGUAGE_MAP_PATH = "language"; - private static final String COUNTRY_MAP_PATH = "country"; + private final String LANGUAGE_MAP_PATH = "language"; + private final String COUNTRY_MAP_PATH = "country"; + private final String[] SUPPORTED_LANGUAGES = { + "en_us", + "uk_ua", + "de_de" + }; + + String[] getSupportedLanguages() { + return SUPPORTED_LANGUAGES; + } + + File getLangPropertiesFile() { + return langPropertiesFile; + } + + public String getLocale() { + return String.format("%s_%s", currentLanguage.get(LANGUAGE_MAP_PATH), currentLanguage.get(COUNTRY_MAP_PATH)); + } /** * @throws IncorrectLanguageException Thrown if the language specified in the properties file is not supported by SPC or specified in the invalid format. * @param locale Locale to be used by application in this run. */ - public static void init(String locale) throws IncorrectLanguageException { + public void init(String locale) throws IncorrectLanguageException { boolean isLanguageExists = false; - for (String lang: Reference.getSupportedLanguages()) { + for (String lang: getSupportedLanguages()) { if (lang.equalsIgnoreCase(locale)) { localeLogger.debug("Lang is correct"); isLanguageExists = true; @@ -68,14 +81,14 @@ public class LocalizationManager extends Reference { if (!currentLanguage.get(LANGUAGE_MAP_PATH).equalsIgnoreCase("en")) { localeLogger.info(String.format("%s %s", getLocalizedString("cli.usingLanguage"), getLocalizedString("localeName"))); } - FilesSetup.writeLocaleToFile(locale); + writeLocaleToFile(locale); } /** * @param localePropertiesFile Path to the properties file with the language specified. * @throws IncorrectLanguageException Thrown if the language specified in the properties file is not supported by SPC or specified in the invalid format. */ - public static void init(File localePropertiesFile) throws IncorrectLanguageException{ + public void init(File localePropertiesFile) throws IncorrectLanguageException{ Properties langProperties = new Properties(); try (FileInputStream fis = new FileInputStream(localePropertiesFile)){ BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fis, StandardCharsets.UTF_8)); @@ -89,7 +102,7 @@ public class LocalizationManager extends Reference { boolean isLanguageExists = false; - for (String lang: Reference.getSupportedLanguages()) { + for (String lang: getSupportedLanguages()) { if (lang.equalsIgnoreCase(langProp)) { localeLogger.debug("Lang is correct"); isLanguageExists = true; @@ -119,7 +132,7 @@ public class LocalizationManager extends Reference { /** * Initializer with default localization properties path. */ - public static void init() { + public void init() { try { init("en_us"); } catch (IncorrectLanguageException e) { @@ -132,7 +145,7 @@ public class LocalizationManager extends Reference { * @param languageKey The language key to search for. * @return Localized string that is referred by the language key. */ - public static String getLocalizedString(String languageKey) { + public String getLocalizedString(String languageKey) { try { String value = localeResources.getString(languageKey); return new String(value.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); @@ -143,11 +156,83 @@ public class LocalizationManager extends Reference { return null; } - public static String getLocale() { - return String.format("%s_%s", currentLanguage.get(LANGUAGE_MAP_PATH), currentLanguage.get(COUNTRY_MAP_PATH)); + /** + * Check for existence of a lang.properties-file and if found assign language specified therein. If assigning the specified language fails because it is not supported, default to en_US. + * This method should not contain the LocalizationManager, as the initialization of said manager is called from here. Therefore, localized string are not yet available. + * @return Always returns true. Dirty hack until I one day figure out how to init Localization before UI start correctly. + */ + @SuppressWarnings("UnusedReturnValue") + public boolean checkLocaleFile() { + if (getLangPropertiesFile().exists()) { + try { + init(getLangPropertiesFile()); + } catch (IncorrectLanguageException e) { + + localeLogger.error("Incorrect language specified, falling back to English (United States)..."); + try (BufferedWriter writer = new BufferedWriter(new FileWriter(getLangPropertiesFile()))) { + + if (!getLangPropertiesFile().exists()) { + boolean langCreated = getLangPropertiesFile().createNewFile(); + if (langCreated) { + localeLogger.debug("Lang properties file created successfully."); + } else { + localeLogger.debug("Lang properties file not created."); + } + } + + writer.write(String.format("# Supported languages: %s%n", Arrays.toString(getSupportedLanguages()))); + writer.write(String.format("lang=en_us%n")); + + } catch (IOException ex) { + localeLogger.error("Error: There was an error writing the localization properties file.", ex); + } + init(); + } + } else { + try (BufferedWriter writer = new BufferedWriter(new FileWriter(getLangPropertiesFile()))) { + + if (!getLangPropertiesFile().exists()) { + boolean langCreated = getLangPropertiesFile().createNewFile(); + if (langCreated) { + localeLogger.debug("Lang properties file created successfully."); + } else { + localeLogger.debug("Lang properties file not created."); + } + } + + writer.write(String.format("# Supported languages: %s%n", Arrays.toString(getSupportedLanguages()))); + writer.write(String.format("lang=en_us%n")); + + } catch (IOException ex) { + localeLogger.error("Error: There was an error writing the localization properties file.", ex); + } + init(); + } + return true; } - public static String[] getSupportedLanguages() { - return Reference.getSupportedLanguages(); + /** + * Writes the specified locale from -lang your_locale to a lang.properties file to ensure every subsequent start of serverpackcreator is executed using said locale. + * @param locale The locale the user specified when they ran serverpackcreator with -lang -your_locale. + * This method should not contain the LocalizationManager, as the initialization of said manager is called from here. Therefore, localized string are not yet available. + */ + void writeLocaleToFile(String locale) { + try (BufferedWriter writer = new BufferedWriter(new FileWriter(getLangPropertiesFile()))) { + + if (!getLangPropertiesFile().exists()) { + boolean langCreated = getLangPropertiesFile().createNewFile(); + if (langCreated) { + localeLogger.debug("Lang properties file created successfully."); + } else { + localeLogger.debug("Lang properties file not created."); + } + } + + writer.write(String.format("# Supported languages: %s%n", Arrays.toString(getSupportedLanguages()))); + writer.write(String.format("lang=%s%n", locale)); + + } catch (IOException ex) { + localeLogger.error("Error: There was an error writing the localization properties file.", ex); + } } } \ No newline at end of file diff --git a/src/test/java/de/griefed/serverpackcreator/CLISetupTest.java b/src/test/java/de/griefed/serverpackcreator/CLISetupTest.java deleted file mode 100644 index 67489d53b..000000000 --- a/src/test/java/de/griefed/serverpackcreator/CLISetupTest.java +++ /dev/null @@ -1,39 +0,0 @@ -package de.griefed.serverpackcreator; - -import org.apache.logging.log4j.Logger; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -import java.util.Arrays; -import java.util.List; - -class CLISetupTest { - @Mock - Logger appLogger; - - @InjectMocks - CLISetup cLISetup; - - @BeforeEach - void setUp() { - FilesSetup.checkLocaleFile(); - MockitoAnnotations.openMocks(this); - } - - @Test - void testBuildString() { - List<String> args = Arrays.asList( - "config", - "mods", - "scripts", - "seeds", - "defaultconfigs" - ); - String result = Reference.cliSetup.buildString(args.toString()); - Assertions.assertEquals(args.toString(), String.format("[%s]",result)); - } -} diff --git a/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java b/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java index c8f22a304..fa9ed5e99 100644 --- a/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java +++ b/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java @@ -1,6 +1,7 @@ package de.griefed.serverpackcreator; import com.typesafe.config.ConfigFactory; +import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -22,21 +23,39 @@ class ConfigCheckTest { @Mock Logger appLogger; - @InjectMocks - ConfigCheck configCheck; + private ConfigCheck configCheck; + private LocalizationManager localizationManager; + + ConfigCheckTest() { + localizationManager = new LocalizationManager(); + configCheck = new ConfigCheck(localizationManager); + } @BeforeEach void setUp() { - FilesSetup.checkLocaleFile(); + localizationManager.checkLocaleFile(); MockitoAnnotations.openMocks(this); } + @Test + void testBuildString() { + List<String> args = Arrays.asList( + "config", + "mods", + "scripts", + "seeds", + "defaultconfigs" + ); + String result = configCheck.buildString(args.toString()); + Assertions.assertEquals(args.toString(), String.format("[%s]",result)); + } + @SuppressWarnings("ResultOfMethodCallIgnored") @Test void testCheckConfig() throws IOException { Files.copy(Paths.get("./src/test/resources/testresources/serverpackcreator.conf"), Paths.get("./serverpackcreator.conf"), REPLACE_EXISTING); - Reference.setConfig(ConfigFactory.parseFile(Reference.getConfigFile())); - boolean result = Reference.configCheck.checkConfigFile(Reference.getConfigFile()); + configCheck.setConfig(ConfigFactory.parseFile(configCheck.getConfigFile())); + boolean result = configCheck.checkConfigFile(configCheck.getConfigFile()); Assertions.assertFalse(result); new File("./serverpackcreator.conf").delete(); } @@ -44,14 +63,14 @@ class ConfigCheckTest { @Test void testCheckCurseForgeCorrect() { String modpackDir = "238298,3174854"; - boolean result = Reference.configCheck.checkCurseForge(modpackDir); + boolean result = configCheck.checkCurseForge(modpackDir); Assertions.assertTrue(result); } @Test void testCheckCurseForgeFalse() { String modpackDir = "1,1234"; - boolean result = Reference.configCheck.checkCurseForge(modpackDir); + boolean result = configCheck.checkCurseForge(modpackDir); Assertions.assertFalse(result); } @@ -100,7 +119,7 @@ class ConfigCheckTest { boolean includeServerProperties = true; boolean includeStartScripts = true; boolean includeZipCreation = true; - Reference.configCheck.printConfig( + configCheck.printConfig( modpackDir, clientMods, copyDirs, @@ -118,13 +137,13 @@ class ConfigCheckTest { @Test void testCheckModpackDirCorrect() { String modpackDir = "./src/test/resources/forge_tests"; - boolean result = Reference.configCheck.checkModpackDir(modpackDir); + boolean result = configCheck.checkModpackDir(modpackDir); Assertions.assertTrue(result); } @Test void testCheckModpackDirFalse() { - boolean result = Reference.configCheck.checkModpackDir("modpackDir"); + boolean result = configCheck.checkModpackDir("modpackDir"); Assertions.assertFalse(result); } @@ -138,7 +157,7 @@ class ConfigCheckTest { "seeds", "defaultconfigs" ); - boolean result = Reference.configCheck.checkCopyDirs(copyDirs, modpackDir); + boolean result = configCheck.checkCopyDirs(copyDirs, modpackDir); Assertions.assertTrue(result); } @@ -152,13 +171,13 @@ class ConfigCheckTest { "seedss", "defaultconfigss" ); - boolean result = Reference.configCheck.checkCopyDirs(copyDirs, modpackDir); + boolean result = configCheck.checkCopyDirs(copyDirs, modpackDir); Assertions.assertFalse(result); } @Test void testGetJavaPath() { - String result = Reference.configCheck.getJavaPath(""); + String result = configCheck.getJavaPath(""); String autoJavaPath = System.getProperty("java.home").replace("\\", "/") + "/bin/java"; if (autoJavaPath.startsWith("C:")) { autoJavaPath = String.format("%s.exe", autoJavaPath); @@ -180,39 +199,39 @@ class ConfigCheckTest { } else { javaPath = autoJavaPath; } - boolean result = Reference.configCheck.checkJavaPath(javaPath); + boolean result = configCheck.checkJavaPath(javaPath); Assertions.assertTrue(result); } @Test void testCheckModloaderFabric() { String modLoader = "Fabric"; - boolean result = Reference.configCheck.checkModloader(modLoader); + boolean result = configCheck.checkModloader(modLoader); Assertions.assertTrue(result); } @Test void testCheckModloaderForge() { String modLoader = "Forge"; - boolean result = Reference.configCheck.checkModloader(modLoader); + boolean result = configCheck.checkModloader(modLoader); Assertions.assertTrue(result); } @Test void testCheckModloaderFalse() { - boolean result = Reference.configCheck.checkModloader("modloader"); + boolean result = configCheck.checkModloader("modloader"); Assertions.assertFalse(result); } @Test void testSetModloaderFabric() { - String result = Reference.configCheck.setModloader("fAbRiC"); + String result = configCheck.setModloader("fAbRiC"); Assertions.assertEquals("Fabric", result); } @Test void testSetModloaderForge() { - String result = Reference.configCheck.setModloader("fOrGe"); + String result = configCheck.setModloader("fOrGe"); Assertions.assertEquals("Forge", result); } @@ -221,7 +240,7 @@ class ConfigCheckTest { void testCheckModloaderVersionFabric() { String modLoader = "Fabric"; String modLoaderVersion = "0.11.3"; - boolean result = Reference.configCheck.checkModloaderVersion(modLoader, modLoaderVersion); + boolean result = configCheck.checkModloaderVersion(modLoader, modLoaderVersion); Assertions.assertTrue(result); new File("fabric-manifest.xml").delete(); } @@ -231,7 +250,7 @@ class ConfigCheckTest { void testCheckModloaderVersionFabricIncorrect() { String modLoader = "Fabric"; String modLoaderVersion = "0.90.3"; - boolean result = Reference.configCheck.checkModloaderVersion(modLoader, modLoaderVersion); + boolean result = configCheck.checkModloaderVersion(modLoader, modLoaderVersion); Assertions.assertFalse(result); new File("fabric-manifest.xml").delete(); } @@ -241,7 +260,7 @@ class ConfigCheckTest { void testCheckModloaderVersionForge() { String modLoader = "Forge"; String modLoaderVersion = "36.1.2"; - boolean result = Reference.configCheck.checkModloaderVersion(modLoader, modLoaderVersion); + boolean result = configCheck.checkModloaderVersion(modLoader, modLoaderVersion); Assertions.assertTrue(result); new File("forge-manifest.json").delete(); } @@ -251,7 +270,7 @@ class ConfigCheckTest { void testCheckModloaderVersionForgeIncorrect() { String modLoader = "Forge"; String modLoaderVersion = "90.0.0"; - boolean result = Reference.configCheck.checkModloaderVersion(modLoader, modLoaderVersion); + boolean result = configCheck.checkModloaderVersion(modLoader, modLoaderVersion); Assertions.assertFalse(result); new File("forge-manifest.json").delete(); } @@ -260,7 +279,7 @@ class ConfigCheckTest { @Test void testIsMinecraftVersionCorrect() { String minecraftVersion = "1.16.5"; - boolean result = Reference.configCheck.isMinecraftVersionCorrect(minecraftVersion); + boolean result = configCheck.isMinecraftVersionCorrect(minecraftVersion); Assertions.assertTrue(result); new File("mcmanifest.json").delete(); } @@ -269,7 +288,7 @@ class ConfigCheckTest { @Test void testIsMinecraftVersionFalse() { String minecraftVersion = "1.99.5"; - boolean result = Reference.configCheck.isMinecraftVersionCorrect(minecraftVersion); + boolean result = configCheck.isMinecraftVersionCorrect(minecraftVersion); Assertions.assertFalse(result); new File("mcmanifest.json").delete(); } @@ -278,7 +297,7 @@ class ConfigCheckTest { @Test void testIsFabricVersionCorrect() { String fabricVersion = "0.11.3"; - boolean result = Reference.configCheck.isFabricVersionCorrect(fabricVersion); + boolean result = configCheck.isFabricVersionCorrect(fabricVersion); Assertions.assertTrue(result); new File("fabric-manifest.xml").delete(); } @@ -287,7 +306,7 @@ class ConfigCheckTest { @Test void testIsFabricVersionFalse() { String fabricVersion = "0.90.3"; - boolean result = Reference.configCheck.isFabricVersionCorrect(fabricVersion); + boolean result = configCheck.isFabricVersionCorrect(fabricVersion); Assertions.assertFalse(result); new File("fabric-manifest.xml").delete(); } @@ -296,7 +315,7 @@ class ConfigCheckTest { @Test void testIsForgeVersionCorrect() { String forgeVersion = "36.1.2"; - boolean result = Reference.configCheck.isForgeVersionCorrect(forgeVersion); + boolean result = configCheck.isForgeVersionCorrect(forgeVersion); Assertions.assertTrue(result); new File("forge-manifest.json").delete(); } @@ -305,7 +324,7 @@ class ConfigCheckTest { @Test void testIsForgeVersionFalse() { String forgeVersion = "99.0.0"; - boolean result = Reference.configCheck.isForgeVersionCorrect(forgeVersion); + boolean result = configCheck.isForgeVersionCorrect(forgeVersion); Assertions.assertFalse(result); new File("forge-manifest.json").delete(); } diff --git a/src/test/java/de/griefed/serverpackcreator/CopyFilesTest.java b/src/test/java/de/griefed/serverpackcreator/CopyFilesTest.java deleted file mode 100644 index c3e41446f..000000000 --- a/src/test/java/de/griefed/serverpackcreator/CopyFilesTest.java +++ /dev/null @@ -1,219 +0,0 @@ -package de.griefed.serverpackcreator; - -import org.apache.logging.log4j.Logger; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.List; - -import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; - -class CopyFilesTest { - @Mock - Logger appLogger; - - @InjectMocks - CopyFiles copyFiles; - - @BeforeEach - void setUp() { - FilesSetup.checkLocaleFile(); - MockitoAnnotations.openMocks(this); - } - - @Test - static void testCleanupEnvironment() throws IOException { - String modpackDir = "./src/test/resources/cleanup_tests"; - Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/cleanup_tests/server_pack.zip"), REPLACE_EXISTING); - Files.createDirectories(Paths.get(String.format("%s/server_pack",modpackDir))); - Reference.copyFiles.cleanupEnvironment(modpackDir); - } - - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testCopyStartScriptsFabric() throws IOException { - //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { - String modpackDir = "./src/test/resources/fabric_tests"; - String modLoader = "Fabric"; - Reference.filesSetup.filesSetup(); - Reference.copyFiles.copyStartScripts(modpackDir, modLoader, true); - Assertions.assertTrue(new File(String.format("%s/server_pack/start-fabric.bat", modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/start-fabric.sh", modpackDir)).exists()); - new File(String.format("%s/server_pack/start-fabric.bat", modpackDir)).delete(); - new File(String.format("%s/server_pack/start-fabric.sh", modpackDir)).delete(); - String delete = "./server_files"; - if (new File(delete).isDirectory()) { - Path pathToBeDeleted = Paths.get(delete); - Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); - } - new File("./serverpackcreator.conf").delete(); - } - } - - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testCopyStartScriptsForge() throws IOException { - String modpackDir = "./src/test/resources/forge_tests"; - String modLoader = "Forge"; - Reference.filesSetup.filesSetup(); - Reference.copyFiles.copyStartScripts(modpackDir, modLoader, true); - Assertions.assertTrue(new File(String.format("%s/server_pack/start-forge.bat",modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/start-forge.sh",modpackDir)).exists()); - new File(String.format("%s/server_pack/start-forge.bat",modpackDir)).delete(); - new File(String.format("%s/server_pack/start-forge.sh",modpackDir)).delete(); - String delete = "./server_files"; - if (new File(delete).isDirectory()) { - Path pathToBeDeleted = Paths.get(delete); - Files.walk(pathToBeDeleted) - .sorted(Comparator.reverseOrder()) - .map(Path::toFile) - .forEach(File::delete); - } - new File("./serverpackcreator.conf").delete(); - } - - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testCopyFiles() throws IOException { - String modpackDir = "./src/test/resources/forge_tests"; - List<String> clientMods = Arrays.asList( - "AmbientSounds", - "BackTools", - "BetterAdvancement", - "BetterPing", - "cherished", - "ClientTweaks", - "Controlling", - "DefaultOptions", - "durability", - "DynamicSurroundings", - "itemzoom", - "jei-professions", - "jeiintegration", - "JustEnoughResources", - "MouseTweaks", - "Neat", - "OldJavaWarning", - "PackMenu", - "preciseblockplacing", - "SimpleDiscordRichPresence", - "SpawnerFix", - "TipTheScales", - "WorldNameRandomizer" - ); - List<String> copyDirs = Arrays.asList( - "config", - "mods", - "scripts", - "seeds", - "defaultconfigs" - ); - Reference.copyFiles.copyFiles(modpackDir, copyDirs, clientMods); - Assertions.assertTrue(new File(String.format("%s/server_pack/config",modpackDir)).isDirectory()); - Assertions.assertTrue(new File(String.format("%s/server_pack/mods",modpackDir)).isDirectory()); - Assertions.assertTrue(new File(String.format("%s/server_pack/scripts",modpackDir)).isDirectory()); - Assertions.assertTrue(new File(String.format("%s/server_pack/seeds",modpackDir)).isDirectory()); - Assertions.assertTrue(new File(String.format("%s/server_pack/defaultconfigs",modpackDir)).isDirectory()); - Assertions.assertTrue(new File(String.format("%s/server_pack/config/testfile.txt",modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/defaultconfigs/testfile.txt",modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/mods/testmod.jar",modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/scripts/testscript.zs",modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/seeds/testjson.json",modpackDir)).exists()); - for (String s : copyDirs) { - String deleteMe = (String.format("%s/server_pack/%s",modpackDir,s)); - if (new File(deleteMe).isDirectory()) { - Path pathToBeDeleted = Paths.get(deleteMe); - Files.walk(pathToBeDeleted) - .sorted(Comparator.reverseOrder()) - .map(Path::toFile) - .forEach(File::delete); - } - } - } - - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testCopyFilesEmptyClients() throws IOException { - String modpackDir = "./src/test/resources/forge_tests"; - List<String> clientMods = new ArrayList<>(); - List<String> copyDirs = Arrays.asList( - "config", - "mods", - "scripts", - "seeds", - "defaultconfigs" - ); - Reference.copyFiles.copyFiles(modpackDir, copyDirs, clientMods); - Assertions.assertTrue(new File(String.format("%s/server_pack/config",modpackDir)).isDirectory()); - Assertions.assertTrue(new File(String.format("%s/server_pack/mods",modpackDir)).isDirectory()); - Assertions.assertTrue(new File(String.format("%s/server_pack/scripts",modpackDir)).isDirectory()); - Assertions.assertTrue(new File(String.format("%s/server_pack/seeds",modpackDir)).isDirectory()); - Assertions.assertTrue(new File(String.format("%s/server_pack/defaultconfigs",modpackDir)).isDirectory()); - Assertions.assertTrue(new File(String.format("%s/server_pack/config/testfile.txt",modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/defaultconfigs/testfile.txt",modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/mods/testmod.jar",modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/scripts/testscript.zs",modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/seeds/testjson.json",modpackDir)).exists()); - for (String s : copyDirs) { - String deleteMe = (String.format("%s/server_pack/%s",modpackDir,s)); - if (new File(deleteMe).isDirectory()) { - Path pathToBeDeleted = Paths.get(deleteMe); - Files.walk(pathToBeDeleted) - .sorted(Comparator.reverseOrder()) - .map(Path::toFile) - .forEach(File::delete); - } - } - } - - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testCopyIcon() throws IOException { - Reference.filesSetup.filesSetup(); - String modpackDir = "./src/test/resources/forge_tests"; - Reference.copyFiles.copyIcon(modpackDir); - Assertions.assertTrue(new File(String.format("%s/server_pack/server-icon.png",modpackDir)).exists()); - new File(String.format("%s/server_pack/server-icon.png",modpackDir)).delete(); - String delete = "./server_files"; - if (new File(delete).isDirectory()) { - Path pathToBeDeleted = Paths.get(delete); - Files.walk(pathToBeDeleted) - .sorted(Comparator.reverseOrder()) - .map(Path::toFile) - .forEach(File::delete); - } - new File("./serverpackcreator.conf").delete(); - } - - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testCopyProperties() throws IOException { - Reference.filesSetup.filesSetup(); - String modpackDir = "./src/test/resources/forge_tests"; - Reference.copyFiles.copyProperties(modpackDir); - Assertions.assertTrue(new File(String.format("%s/server_pack/server.properties",modpackDir)).exists()); - new File(String.format("%s/server_pack/server.properties",modpackDir)).delete(); - String delete = "./server_files"; - if (new File(delete).isDirectory()) { - Path pathToBeDeleted = Paths.get(delete); - Files.walk(pathToBeDeleted) - .sorted(Comparator.reverseOrder()) - .map(Path::toFile) - .forEach(File::delete); - } - new File("./serverpackcreator.conf").delete(); - } -} diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java new file mode 100644 index 000000000..e7bf95237 --- /dev/null +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -0,0 +1,428 @@ +package de.griefed.serverpackcreator; + +import de.griefed.serverpackcreator.i18n.LocalizationManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; + +import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; + +class CreateServerPackTest { + @Mock + Logger appLogger; + + private CreateServerPack createServerPack; + private FilesSetup filesSetup; + private LocalizationManager localizationManager; + private ConfigCheck configCheck; + + CreateServerPackTest() { + localizationManager = new LocalizationManager(); + configCheck = new ConfigCheck(localizationManager); + createServerPack = new CreateServerPack(localizationManager, configCheck); + filesSetup = new FilesSetup(localizationManager); + } + + @BeforeEach + void setUp() { + localizationManager.checkLocaleFile(); + MockitoAnnotations.openMocks(this); + } + + @Mock + Logger installerLogger; + + + @Test + void testCleanupEnvironment() throws IOException { + String modpackDir = "./src/test/resources/cleanup_tests"; + Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/cleanup_tests/server_pack.zip"), REPLACE_EXISTING); + Files.createDirectories(Paths.get(String.format("%s/server_pack",modpackDir))); + createServerPack.cleanupEnvironment(modpackDir); + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void testCopyStartScriptsFabric() throws IOException { + //TODO: Figure out how to run this test on GitHub Runners + if (!new File("/home/runner").isDirectory()) { + String modpackDir = "./src/test/resources/fabric_tests"; + String modLoader = "Fabric"; + filesSetup.filesSetup(); + createServerPack.copyStartScripts(modpackDir, modLoader, true); + Assertions.assertTrue(new File(String.format("%s/server_pack/start-fabric.bat", modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/start-fabric.sh", modpackDir)).exists()); + new File(String.format("%s/server_pack/start-fabric.bat", modpackDir)).delete(); + new File(String.format("%s/server_pack/start-fabric.sh", modpackDir)).delete(); + String delete = "./server_files"; + if (new File(delete).isDirectory()) { + Path pathToBeDeleted = Paths.get(delete); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); + } + new File("./serverpackcreator.conf").delete(); + } + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void testCopyStartScriptsForge() throws IOException { + String modpackDir = "./src/test/resources/forge_tests"; + String modLoader = "Forge"; + filesSetup.filesSetup(); + createServerPack.copyStartScripts(modpackDir, modLoader, true); + Assertions.assertTrue(new File(String.format("%s/server_pack/start-forge.bat",modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/start-forge.sh",modpackDir)).exists()); + new File(String.format("%s/server_pack/start-forge.bat",modpackDir)).delete(); + new File(String.format("%s/server_pack/start-forge.sh",modpackDir)).delete(); + String delete = "./server_files"; + if (new File(delete).isDirectory()) { + Path pathToBeDeleted = Paths.get(delete); + Files.walk(pathToBeDeleted) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + } + new File("./serverpackcreator.conf").delete(); + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void testCopyFiles() throws IOException { + String modpackDir = "./src/test/resources/forge_tests"; + List<String> clientMods = Arrays.asList( + "AmbientSounds", + "BackTools", + "BetterAdvancement", + "BetterPing", + "cherished", + "ClientTweaks", + "Controlling", + "DefaultOptions", + "durability", + "DynamicSurroundings", + "itemzoom", + "jei-professions", + "jeiintegration", + "JustEnoughResources", + "MouseTweaks", + "Neat", + "OldJavaWarning", + "PackMenu", + "preciseblockplacing", + "SimpleDiscordRichPresence", + "SpawnerFix", + "TipTheScales", + "WorldNameRandomizer" + ); + List<String> copyDirs = Arrays.asList( + "config", + "mods", + "scripts", + "seeds", + "defaultconfigs" + ); + createServerPack.copyFiles(modpackDir, copyDirs, clientMods); + Assertions.assertTrue(new File(String.format("%s/server_pack/config",modpackDir)).isDirectory()); + Assertions.assertTrue(new File(String.format("%s/server_pack/mods",modpackDir)).isDirectory()); + Assertions.assertTrue(new File(String.format("%s/server_pack/scripts",modpackDir)).isDirectory()); + Assertions.assertTrue(new File(String.format("%s/server_pack/seeds",modpackDir)).isDirectory()); + Assertions.assertTrue(new File(String.format("%s/server_pack/defaultconfigs",modpackDir)).isDirectory()); + Assertions.assertTrue(new File(String.format("%s/server_pack/config/testfile.txt",modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/defaultconfigs/testfile.txt",modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/mods/testmod.jar",modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/scripts/testscript.zs",modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/seeds/testjson.json",modpackDir)).exists()); + for (String s : copyDirs) { + String deleteMe = (String.format("%s/server_pack/%s",modpackDir,s)); + if (new File(deleteMe).isDirectory()) { + Path pathToBeDeleted = Paths.get(deleteMe); + Files.walk(pathToBeDeleted) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + } + } + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void testCopyFilesEmptyClients() throws IOException { + String modpackDir = "./src/test/resources/forge_tests"; + List<String> clientMods = new ArrayList<>(); + List<String> copyDirs = Arrays.asList( + "config", + "mods", + "scripts", + "seeds", + "defaultconfigs" + ); + createServerPack.copyFiles(modpackDir, copyDirs, clientMods); + Assertions.assertTrue(new File(String.format("%s/server_pack/config",modpackDir)).isDirectory()); + Assertions.assertTrue(new File(String.format("%s/server_pack/mods",modpackDir)).isDirectory()); + Assertions.assertTrue(new File(String.format("%s/server_pack/scripts",modpackDir)).isDirectory()); + Assertions.assertTrue(new File(String.format("%s/server_pack/seeds",modpackDir)).isDirectory()); + Assertions.assertTrue(new File(String.format("%s/server_pack/defaultconfigs",modpackDir)).isDirectory()); + Assertions.assertTrue(new File(String.format("%s/server_pack/config/testfile.txt",modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/defaultconfigs/testfile.txt",modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/mods/testmod.jar",modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/scripts/testscript.zs",modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/seeds/testjson.json",modpackDir)).exists()); + for (String s : copyDirs) { + String deleteMe = (String.format("%s/server_pack/%s",modpackDir,s)); + if (new File(deleteMe).isDirectory()) { + Path pathToBeDeleted = Paths.get(deleteMe); + Files.walk(pathToBeDeleted) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + } + } + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void testCopyIcon() throws IOException { + filesSetup.filesSetup(); + String modpackDir = "./src/test/resources/forge_tests"; + createServerPack.copyIcon(modpackDir); + Assertions.assertTrue(new File(String.format("%s/server_pack/server-icon.png",modpackDir)).exists()); + new File(String.format("%s/server_pack/server-icon.png",modpackDir)).delete(); + String delete = "./server_files"; + if (new File(delete).isDirectory()) { + Path pathToBeDeleted = Paths.get(delete); + Files.walk(pathToBeDeleted) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + } + new File("./serverpackcreator.conf").delete(); + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void testCopyProperties() throws IOException { + filesSetup.filesSetup(); + String modpackDir = "./src/test/resources/forge_tests"; + createServerPack.copyProperties(modpackDir); + Assertions.assertTrue(new File(String.format("%s/server_pack/server.properties",modpackDir)).exists()); + new File(String.format("%s/server_pack/server.properties",modpackDir)).delete(); + String delete = "./server_files"; + if (new File(delete).isDirectory()) { + Path pathToBeDeleted = Paths.get(delete); + Files.walk(pathToBeDeleted) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + } + new File("./serverpackcreator.conf").delete(); + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void testInstallServerFabric() { + //TODO: Figure out how to run this test on GitHub Runners + if (!new File("/home/runner").isDirectory()) { + String modLoader = "Fabric"; + String modpackDir = "./src/test/resources/fabric_tests"; + String minecraftVersion = "1.16.5"; + String modLoaderVersion = "0.7.3"; + String javaPath; + String autoJavaPath = System.getProperty("java.home").replace("\\", "/") + "/bin/java"; + if (autoJavaPath.startsWith("C:")) { + autoJavaPath = String.format("%s.exe", autoJavaPath); + } + if (new File("/usr/bin/java").exists()) { + javaPath = "/usr/bin/java"; + } else { + javaPath = autoJavaPath; + } + createServerPack.downloadFabricJar(modpackDir); + createServerPack.installServer(modLoader, modpackDir, minecraftVersion, modLoaderVersion, javaPath); + Assertions.assertTrue(new File(String.format("%s/server_pack/fabric-server-launch.jar", modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/server.jar", modpackDir)).exists()); + new File(String.format("%s/server_pack/fabric-server-launch.jar", modpackDir)).delete(); + new File(String.format("%s/server_pack/server.jar", modpackDir)).delete(); + } + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void testInstallServerForge() throws IOException { + //TODO: Figure out how to run this test on GitHub Runners + if (!new File("/home/runner").isDirectory()) { + String modLoader = "Forge"; + String modpackDir = "./src/test/resources/forge_tests"; + String minecraftVersion = "1.16.5"; + String modLoaderVersion = "36.1.2"; + String javaPath; + String autoJavaPath = System.getProperty("java.home").replace("\\", "/") + "/bin/java"; + if (autoJavaPath.startsWith("C:")) { + autoJavaPath = String.format("%s.exe", autoJavaPath); + } + if (new File("/usr/bin/java").exists()) { + javaPath = "/usr/bin/java"; + } else { + javaPath = autoJavaPath; + } + createServerPack.downloadForgeJar(minecraftVersion, modLoaderVersion, modpackDir); + createServerPack.installServer(modLoader, modpackDir, minecraftVersion, modLoaderVersion, javaPath); + Assertions.assertTrue(new File(String.format("%s/server_pack/1.16.5.json", modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/forge.jar", modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/minecraft_server.1.16.5.jar", modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).exists()); + new File(String.format("%s/server_pack/1.16.5.json", modpackDir)).delete(); + new File(String.format("%s/server_pack/forge.jar", modpackDir)).delete(); + new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).delete(); + new File(String.format("%s/server_pack/forge-installer.jar.log", modpackDir)).delete(); + new File(String.format("%s/server_pack/minecraft_server.1.16.5.jar", modpackDir)).delete(); + new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)).delete(); + new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).delete(); + String delete = String.format("%s/server_pack/libraries", modpackDir); + if (new File(delete).isDirectory()) { + Path pathToBeDeleted = Paths.get(delete); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); + } + } + } + + @Test + void testZipBuilderFabric() { + //TODO: Figure out how to run this test on GitHub Runners + if (!new File("/home/runner").isDirectory()) { + String modLoader = "Fabric"; + String modpackDir = "./src/test/resources/fabric_tests"; + createServerPack.zipBuilder(modpackDir, modLoader, Boolean.TRUE); + } + } + + @Test + void testZipBuilderForge() { + //TODO: Figure out how to run this test on GitHub Runners + if (!new File("/home/runner").isDirectory()) { + String modLoader = "Forge"; + String modpackDir = "./src/test/resources/forge_tests"; + createServerPack.zipBuilder(modpackDir, modLoader, Boolean.TRUE); + } + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void testGenerateDownloadScriptsFabric() { + //TODO: Figure out how to run this test on GitHub Runners + if (!new File("/home/runner").isDirectory()) { + String modLoader = "Fabric"; + String modpackDir = "./src/test/resources/fabric_tests"; + String minecraftVersion = "1.16.5"; + createServerPack.generateDownloadScripts(modLoader, modpackDir, minecraftVersion); + Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.bat", modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.sh", modpackDir)).exists()); + new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.bat", modpackDir)).delete(); + new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.sh", modpackDir)).delete(); + } + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void testGenerateDownloadScriptsForge() { + //TODO: Figure out how to run this test on GitHub Runners + if (!new File("/home/runner").isDirectory()) { + String modLoader = "Forge"; + String modpackDir = "./src/test/resources/forge_tests"; + String minecraftVersion = "1.16.5"; + createServerPack.generateDownloadScripts(modLoader, modpackDir, minecraftVersion); + Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).exists()); + new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)).delete(); + new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).delete(); + } + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void testDownloadFabricJar() { + //TODO: Figure out how to run this test on GitHub Runners + if (!new File("/home/runner").isDirectory()) { + String modpackDir = "./src/test/resources/fabric_tests"; + boolean result = createServerPack.downloadFabricJar(modpackDir); + Assertions.assertTrue(result); + Assertions.assertTrue(new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)).exists()); + new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)).delete(); + new File(String.format("%s/server_pack/fabric-installer.xml", modpackDir)).delete(); + } + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void testDownloadForgeJar() { + //TODO: Figure out how to run this test on GitHub Runners + if (!new File("/home/runner").isDirectory()) { + String modLoaderVersion = "36.1.2"; + String modpackDir = "./src/test/resources/forge_tests"; + String minecraftVersion = "1.16.5"; + boolean result = createServerPack.downloadForgeJar(minecraftVersion, modLoaderVersion, modpackDir); + Assertions.assertTrue(result); + Assertions.assertTrue(new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).exists()); + new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).delete(); + } + } + + @Test + void testDeleteMinecraftJarFabric() throws IOException { + Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/fabric_tests/server_pack.zip"), REPLACE_EXISTING); + String modLoader = "Fabric"; + String modpackDir = "./src/test/resources/forge_tests"; + createServerPack.deleteMinecraftJar(modLoader, modpackDir); + } + + @Test + void testDeleteMinecraftJarForge() throws IOException { + Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/forge_tests/server_pack.zip"), REPLACE_EXISTING); + String modLoader = "Forge"; + String modpackDir = "./src/test/resources/forge_tests"; + createServerPack.deleteMinecraftJar(modLoader, modpackDir); + } + + @Test + void testCleanUpServerPackForge() { + String modLoader = "Forge"; + String modpackDir = "./src/test/resources/forge_tests"; + String minecraftVersion = "1.16.5"; + String modLoaderVersion = "36.1.2"; + createServerPack.cleanUpServerPack( + new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)), + new File(String.format("%s/server_pack/forge-%s-%s.jar", modpackDir, minecraftVersion, modLoaderVersion)), + modLoader, + modpackDir, + minecraftVersion, + modLoaderVersion); + } + + @Test + void testCleanUpServerPackFabric() { + String modLoader = "Fabric"; + String modpackDir = "./src/test/resources/fabric_tests"; + String minecraftVersion = "1.16.5"; + String modLoaderVersion = "36.1.2"; + createServerPack.cleanUpServerPack( + new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)), + new File(String.format("%s/server_pack/forge-%s-%s.jar", modpackDir, minecraftVersion, modLoaderVersion)), + modLoader, + modpackDir, + minecraftVersion, + modLoaderVersion); + } +} diff --git a/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java b/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java index 5af1ca676..0b60fcab3 100644 --- a/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java +++ b/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java @@ -1,5 +1,6 @@ package de.griefed.serverpackcreator; +import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -21,12 +22,19 @@ class FilesSetupTest { @Mock Logger appLogger; - @InjectMocks - FilesSetup filesSetup; + private FilesSetup filesSetup; + private ConfigCheck configCheck; + private LocalizationManager localizationManager; + + FilesSetupTest() { + localizationManager = new LocalizationManager(); + filesSetup = new FilesSetup(localizationManager); + configCheck = new ConfigCheck(localizationManager); + } @BeforeEach void setUp() { - FilesSetup.checkLocaleFile(); + localizationManager.checkLocaleFile(); MockitoAnnotations.openMocks(this); } @@ -35,7 +43,7 @@ class FilesSetupTest { void testRenameOldConfig() throws IOException { File oldConfigFile = new File("creator.conf"); oldConfigFile.createNewFile(); - Assertions.assertFalse(Reference.filesSetup.checkForConfig()); + Assertions.assertFalse(filesSetup.checkForConfig()); Assertions.assertTrue(new File("serverpackcreator.conf").exists()); new File("serverpackcreator.conf").delete(); new File("creator.conf").delete(); @@ -46,7 +54,7 @@ class FilesSetupTest { void testCheckForConfig() throws IOException { File configFile = new File("serverpackcreator.conf"); configFile.createNewFile(); - Assertions.assertFalse(Reference.filesSetup.checkForConfig()); + Assertions.assertFalse(filesSetup.checkForConfig()); configFile.delete(); } @@ -54,7 +62,7 @@ class FilesSetupTest { @Test void testCheckForConfigNew() { File configFile = new File("serverpackcreator.conf"); - Assertions.assertTrue(Reference.filesSetup.checkForConfig()); + Assertions.assertTrue(filesSetup.checkForConfig()); configFile.delete(); } @@ -63,7 +71,7 @@ class FilesSetupTest { void testCheckForFabricLinux() throws IOException { File fabricLinux = new File("start-fabric.sh"); fabricLinux.createNewFile(); - Assertions.assertFalse(Reference.filesSetup.checkForFabricLinux()); + Assertions.assertFalse(filesSetup.checkForFabricLinux()); fabricLinux.delete(); } @@ -71,7 +79,7 @@ class FilesSetupTest { @Test void testCheckForFabricLinuxNew() { File fabricLinux = new File("start-fabric.sh"); - Assertions.assertTrue(Reference.filesSetup.checkForFabricLinux()); + Assertions.assertTrue(filesSetup.checkForFabricLinux()); fabricLinux.delete(); } @@ -80,7 +88,7 @@ class FilesSetupTest { void testCheckForFabricWindows() throws IOException { File fabricWindows = new File("start-fabric.bat"); fabricWindows.createNewFile(); - Assertions.assertFalse(Reference.filesSetup.checkForFabricWindows()); + Assertions.assertFalse(filesSetup.checkForFabricWindows()); fabricWindows.delete(); } @@ -88,7 +96,7 @@ class FilesSetupTest { @Test void testCheckForFabricWindowsNew() { File fabricWindows = new File("start-fabric.bat"); - Assertions.assertTrue(Reference.filesSetup.checkForFabricWindows()); + Assertions.assertTrue(filesSetup.checkForFabricWindows()); fabricWindows.delete(); } @@ -97,7 +105,7 @@ class FilesSetupTest { void testCheckForForgeLinux() throws IOException { File forgeLinux = new File("start-forge.sh"); forgeLinux.createNewFile(); - Assertions.assertFalse(Reference.filesSetup.checkForForgeLinux()); + Assertions.assertFalse(filesSetup.checkForForgeLinux()); forgeLinux.delete(); } @@ -105,7 +113,7 @@ class FilesSetupTest { @Test void testCheckForForgeLinuxNew() { File forgeLinux = new File("start-forge.sh"); - Assertions.assertTrue(Reference.filesSetup.checkForForgeLinux()); + Assertions.assertTrue(filesSetup.checkForForgeLinux()); forgeLinux.delete(); } @@ -114,7 +122,7 @@ class FilesSetupTest { void testCheckForForgeWindows() throws IOException { File forgeWindows = new File("start-forge.bat"); forgeWindows.createNewFile(); - Assertions.assertFalse(Reference.filesSetup.checkForForgeWindows()); + Assertions.assertFalse(filesSetup.checkForForgeWindows()); forgeWindows.delete(); } @@ -122,7 +130,7 @@ class FilesSetupTest { @Test void testCheckForForgeWindowsNew() { File forgeWindows = new File("start-forge.bat"); - Assertions.assertTrue(Reference.filesSetup.checkForForgeWindows()); + Assertions.assertTrue(filesSetup.checkForForgeWindows()); forgeWindows.delete(); } @@ -131,7 +139,7 @@ class FilesSetupTest { void testCheckForProperties() throws IOException { File properties = new File("server.properties"); properties.createNewFile(); - Assertions.assertFalse(Reference.filesSetup.checkForProperties()); + Assertions.assertFalse(filesSetup.checkForProperties()); properties.delete(); } @@ -139,7 +147,7 @@ class FilesSetupTest { @Test void testCheckForPropertiesNew() { File properties = new File("server.properties"); - Assertions.assertTrue(Reference.filesSetup.checkForProperties()); + Assertions.assertTrue(filesSetup.checkForProperties()); properties.delete(); } @@ -148,7 +156,7 @@ class FilesSetupTest { void testCheckForIcon() throws IOException { File icon = new File("server-icon.png"); icon.createNewFile(); - Assertions.assertFalse(Reference.filesSetup.checkForIcon()); + Assertions.assertFalse(filesSetup.checkForIcon()); icon.delete(); } @@ -156,14 +164,14 @@ class FilesSetupTest { @Test void testCheckForIconNew() { File icon = new File("server-icon.png"); - Assertions.assertTrue(Reference.filesSetup.checkForIcon()); + Assertions.assertTrue(filesSetup.checkForIcon()); icon.delete(); } @SuppressWarnings("ResultOfMethodCallIgnored") @Test void testFilesSetup() throws IOException { - Reference.filesSetup.filesSetup(); + filesSetup.filesSetup(); Assertions.assertTrue(new File("./server_files").isDirectory()); Assertions.assertTrue(new File("./server_files/server.properties").exists()); Assertions.assertTrue(new File("./server_files/server-icon.png").exists()); @@ -232,10 +240,10 @@ class FilesSetupTest { String minecraftVersion = "1.16.5"; String modLoader = "Fabric"; String modLoaderVersion = "0.11.3"; - boolean result = Reference.filesSetup.writeConfigToFile( + boolean result = configCheck.writeConfigToFile( modpackDir, - Reference.cliSetup.buildString(clientMods.toString()), - Reference.cliSetup.buildString(copyDirs.toString()), + configCheck.buildString(clientMods.toString()), + configCheck.buildString(copyDirs.toString()), true, javaPath, minecraftVersion, @@ -245,7 +253,7 @@ class FilesSetupTest { true, true, true, - Reference.getConfigFile(), + configCheck.getConfigFile(), false ); Assertions.assertTrue(result); @@ -293,10 +301,10 @@ class FilesSetupTest { String minecraftVersion = "1.16.5"; String modLoader = "Forge"; String modLoaderVersion = "36.1.2"; - boolean result = Reference.filesSetup.writeConfigToFile( + boolean result = configCheck.writeConfigToFile( modpackDir, - Reference.cliSetup.buildString(clientMods.toString()), - Reference.cliSetup.buildString(copyDirs.toString()), + configCheck.buildString(clientMods.toString()), + configCheck.buildString(copyDirs.toString()), true, javaPath, minecraftVersion, @@ -306,7 +314,7 @@ class FilesSetupTest { true, true, true, - Reference.getConfigFile(), + configCheck.getConfigFile(), false ); Assertions.assertTrue(result); diff --git a/src/test/java/de/griefed/serverpackcreator/ServerSetupTest.java b/src/test/java/de/griefed/serverpackcreator/ServerSetupTest.java deleted file mode 100644 index 0da4b21e1..000000000 --- a/src/test/java/de/griefed/serverpackcreator/ServerSetupTest.java +++ /dev/null @@ -1,122 +0,0 @@ -package de.griefed.serverpackcreator; - -import org.apache.logging.log4j.Logger; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Comparator; - -class ServerSetupTest { - @Mock - Logger appLogger; - - @Mock - Logger installerLogger; - - @InjectMocks - ServerSetup serverSetup; - - @BeforeEach - void setUp() { - FilesSetup.checkLocaleFile(); - MockitoAnnotations.openMocks(this); - } - - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testInstallServerFabric() { - //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { - String modLoader = "Fabric"; - String modpackDir = "./src/test/resources/fabric_tests"; - String minecraftVersion = "1.16.5"; - String modLoaderVersion = "0.7.3"; - String javaPath; - String autoJavaPath = System.getProperty("java.home").replace("\\", "/") + "/bin/java"; - if (autoJavaPath.startsWith("C:")) { - autoJavaPath = String.format("%s.exe", autoJavaPath); - } - if (new File("/usr/bin/java").exists()) { - javaPath = "/usr/bin/java"; - } else { - javaPath = autoJavaPath; - } - Reference.serverUtilities.downloadFabricJar(modpackDir); - Reference.serverSetup.installServer(modLoader, modpackDir, minecraftVersion, modLoaderVersion, javaPath); - Assertions.assertTrue(new File(String.format("%s/server_pack/fabric-server-launch.jar", modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/server.jar", modpackDir)).exists()); - new File(String.format("%s/server_pack/fabric-server-launch.jar", modpackDir)).delete(); - new File(String.format("%s/server_pack/server.jar", modpackDir)).delete(); - } - } - - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testInstallServerForge() throws IOException { - //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { - String modLoader = "Forge"; - String modpackDir = "./src/test/resources/forge_tests"; - String minecraftVersion = "1.16.5"; - String modLoaderVersion = "36.1.2"; - String javaPath; - String autoJavaPath = System.getProperty("java.home").replace("\\", "/") + "/bin/java"; - if (autoJavaPath.startsWith("C:")) { - autoJavaPath = String.format("%s.exe", autoJavaPath); - } - if (new File("/usr/bin/java").exists()) { - javaPath = "/usr/bin/java"; - } else { - javaPath = autoJavaPath; - } - Reference.serverUtilities.downloadForgeJar(minecraftVersion, modLoaderVersion, modpackDir); - Reference.serverSetup.installServer(modLoader, modpackDir, minecraftVersion, modLoaderVersion, javaPath); - Assertions.assertTrue(new File(String.format("%s/server_pack/1.16.5.json", modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/forge.jar", modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/minecraft_server.1.16.5.jar", modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).exists()); - new File(String.format("%s/server_pack/1.16.5.json", modpackDir)).delete(); - new File(String.format("%s/server_pack/forge.jar", modpackDir)).delete(); - new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).delete(); - new File(String.format("%s/server_pack/forge-installer.jar.log", modpackDir)).delete(); - new File(String.format("%s/server_pack/minecraft_server.1.16.5.jar", modpackDir)).delete(); - new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)).delete(); - new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).delete(); - String delete = String.format("%s/server_pack/libraries", modpackDir); - if (new File(delete).isDirectory()) { - Path pathToBeDeleted = Paths.get(delete); - Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); - } - } - } - - @Test - void testZipBuilderFabric() { - //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { - String modLoader = "Fabric"; - String modpackDir = "./src/test/resources/fabric_tests"; - Reference.serverSetup.zipBuilder(modpackDir, modLoader, Boolean.TRUE); - } - } - - @Test - void testZipBuilderForge() { - //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { - String modLoader = "Forge"; - String modpackDir = "./src/test/resources/forge_tests"; - Reference.serverSetup.zipBuilder(modpackDir, modLoader, Boolean.TRUE); - } - } -} diff --git a/src/test/java/de/griefed/serverpackcreator/ServerUtilitiesTest.java b/src/test/java/de/griefed/serverpackcreator/ServerUtilitiesTest.java deleted file mode 100644 index fb8240e98..000000000 --- a/src/test/java/de/griefed/serverpackcreator/ServerUtilitiesTest.java +++ /dev/null @@ -1,136 +0,0 @@ -package de.griefed.serverpackcreator; - -import org.apache.logging.log4j.Logger; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; - -import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; - -class ServerUtilitiesTest { - @Mock - Logger appLogger; - - @InjectMocks - ServerUtilities serverUtilities; - - @BeforeEach - void setUp() { - FilesSetup.checkLocaleFile(); - MockitoAnnotations.openMocks(this); - } - - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testGenerateDownloadScriptsFabric() { - //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { - String modLoader = "Fabric"; - String modpackDir = "./src/test/resources/fabric_tests"; - String minecraftVersion = "1.16.5"; - Reference.serverUtilities.generateDownloadScripts(modLoader, modpackDir, minecraftVersion); - Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.bat", modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.sh", modpackDir)).exists()); - new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.bat", modpackDir)).delete(); - new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.sh", modpackDir)).delete(); - } - } - - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testGenerateDownloadScriptsForge() { - //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { - String modLoader = "Forge"; - String modpackDir = "./src/test/resources/forge_tests"; - String minecraftVersion = "1.16.5"; - Reference.serverUtilities.generateDownloadScripts(modLoader, modpackDir, minecraftVersion); - Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).exists()); - new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)).delete(); - new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).delete(); - } - } - - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testDownloadFabricJar() { - //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { - String modpackDir = "./src/test/resources/fabric_tests"; - boolean result = Reference.serverUtilities.downloadFabricJar(modpackDir); - Assertions.assertTrue(result); - Assertions.assertTrue(new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)).exists()); - new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)).delete(); - new File(String.format("%s/server_pack/fabric-installer.xml", modpackDir)).delete(); - } - } - - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testDownloadForgeJar() { - //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { - String modLoaderVersion = "36.1.2"; - String modpackDir = "./src/test/resources/forge_tests"; - String minecraftVersion = "1.16.5"; - boolean result = Reference.serverUtilities.downloadForgeJar(minecraftVersion, modLoaderVersion, modpackDir); - Assertions.assertTrue(result); - Assertions.assertTrue(new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).exists()); - new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).delete(); - } - } - - @Test - void testDeleteMinecraftJarFabric() throws IOException { - Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/fabric_tests/server_pack.zip"), REPLACE_EXISTING); - String modLoader = "Fabric"; - String modpackDir = "./src/test/resources/forge_tests"; - Reference.serverUtilities.deleteMinecraftJar(modLoader, modpackDir); - } - - @Test - void testDeleteMinecraftJarForge() throws IOException { - Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/forge_tests/server_pack.zip"), REPLACE_EXISTING); - String modLoader = "Forge"; - String modpackDir = "./src/test/resources/forge_tests"; - Reference.serverUtilities.deleteMinecraftJar(modLoader, modpackDir); - } - - @Test - void testCleanUpServerPackForge() { - String modLoader = "Forge"; - String modpackDir = "./src/test/resources/forge_tests"; - String minecraftVersion = "1.16.5"; - String modLoaderVersion = "36.1.2"; - Reference.serverUtilities.cleanUpServerPack( - new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)), - new File(String.format("%s/server_pack/forge-%s-%s.jar", modpackDir, minecraftVersion, modLoaderVersion)), - modLoader, - modpackDir, - minecraftVersion, - modLoaderVersion); - } - - @Test - void testCleanUpServerPackFabric() { - String modLoader = "Fabric"; - String modpackDir = "./src/test/resources/fabric_tests"; - String minecraftVersion = "1.16.5"; - String modLoaderVersion = "36.1.2"; - Reference.serverUtilities.cleanUpServerPack( - new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)), - new File(String.format("%s/server_pack/forge-%s-%s.jar", modpackDir, minecraftVersion, modLoaderVersion)), - modLoader, - modpackDir, - minecraftVersion, - modLoaderVersion); - } -} diff --git a/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CreateModpackTest.java b/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java similarity index 80% rename from src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CreateModpackTest.java rename to src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java index 10fbb9506..e48422806 100644 --- a/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CreateModpackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java @@ -3,12 +3,11 @@ package de.griefed.serverpackcreator.curseforgemodpack; import com.therandomlabs.curseapi.CurseAPI; import com.therandomlabs.curseapi.CurseException; import de.griefed.serverpackcreator.FilesSetup; -import de.griefed.serverpackcreator.Reference; +import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -21,16 +20,21 @@ import java.nio.file.Paths; import java.util.Comparator; import java.util.Objects; -class CreateModpackTest { +class CurseCreateModpackTest { @Mock Logger appLogger; - @InjectMocks - CreateModpack createModpack; + private CurseCreateModpack curseCreateModpack; + private LocalizationManager localizationManager; + + CurseCreateModpackTest() { + localizationManager = new LocalizationManager(); + curseCreateModpack = new CurseCreateModpack(localizationManager); + } @BeforeEach void setUp() { - FilesSetup.checkLocaleFile(); + localizationManager.checkLocaleFile(); MockitoAnnotations.openMocks(this); } @@ -49,7 +53,7 @@ class CreateModpackTest { .fileWithID(fileID)) .displayName(); String modpackDir = String.format("./src/test/resources/forge_tests/%s/%s", projectName, displayName); - boolean result = Reference.createModpack.curseForgeModpack(modpackDir, projectID, fileID); + boolean result = curseCreateModpack.curseForgeModpack(modpackDir, projectID, fileID); Assertions.assertTrue(result); String deleteFile = String.format("./src/test/resources/forge_tests/%s/%s", projectName, displayName); if (new File(deleteFile).isDirectory()) { @@ -72,13 +76,13 @@ class CreateModpackTest { @Test void testSetModloaderFabric() { - String result = Reference.createModpack.setModloader("fAbRiC"); + String result = curseCreateModpack.setModloader("fAbRiC"); Assertions.assertEquals("Fabric", result); } @Test void testSetModloaderForge() { - String result = Reference.createModpack.setModloader("fOrGe"); + String result = curseCreateModpack.setModloader("fOrGe"); Assertions.assertEquals("Forge", result); } } diff --git a/src/test/resources/fabric_tests/server_pack.zip b/src/test/resources/fabric_tests/server_pack.zip index 79933a2500c90e22474ca1a4073a6d5a130d06bc..d3dce8dc45057dd459f3df33f11ae45c61fa3e81 100644 GIT binary patch literal 148 zcmWIWW@Zs#;Nak3=(Cv{#DD|@fb87-l;W6@)Z!8#LoX|_h?yb4o1FushzY7Pz?+dt fgaOqAm>kFiRDf<?fHx}}NChJh+5u??5QhN(7jzT~ literal 664 zcmWIWW@Zs#;Nak3xZTwn#DE0Uf$Wt0^1Ph<#FY5l%)Hd(qQtZk-Qv`uveY8Iti+=D zwEUv<RK29c65TVq`I-zQ93F;eMl`rYOXp~>lW>=j_0_j$dfB=~G%nsb=Dg=V)f|D# z9M={li_e*SZ^5EhiPm;kc&rx78Pzqtdc$IO{fC%YezVE<lTM+1mijNfI;P66ckj5- z8u`oo+QEraCv6b!3^+Q2VWFSz;u}jZE|awoPhZ!Pvvkn{P4QkfXQ3lsm!C13#vZck zWOHB9iS_l%XB3_J7Aqbf;LXmV^XKux*+Ady0^$Ii{#7H=zr`7`eH-}>DTpw9uVY=d zS;6su)ov;KgEkMgMsS-r-2U-hN?iE)Ztrz>4L^6Baro%#t(Vyy%;dhxy{Oh@i{!5= z{TbnBN?Lq=O*yHpJG13U+J^JXZnCXOsaJj&|9pzJ*8ZvMOZC!^sYNXMDlc}4qi}&4 z>$ak4XF9ft9qXMUwbha%@rh@|^{-wp7aK`g8OZ2{M@5vpG5^8_^5{pgWpPu1-Z%jE zC?k^y10rgX0|6AZsDQ|b4)8`b6xl*h_#watAd?tFi!%beS=m7Pn1FC4kiN+X;sF5c C*6HK` -- GitLab From b2a8dcef2c7365e6937648a030bcdc7fe6452c2a Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 29 Apr 2021 08:30:35 +0200 Subject: [PATCH 02/91] refactor(DI): Fix passing locale to LocalizationManager --- src/main/java/de/griefed/serverpackcreator/Main.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/Main.java b/src/main/java/de/griefed/serverpackcreator/Main.java index 00f18f5da..9e1ccb157 100644 --- a/src/main/java/de/griefed/serverpackcreator/Main.java +++ b/src/main/java/de/griefed/serverpackcreator/Main.java @@ -36,9 +36,9 @@ public class Main { if (Arrays.asList(args).contains("-lang")) { try { - localizationManager.init(programArgs.get(programArgs.indexOf("-lang" + 1))); + localizationManager.init(programArgs.get(programArgs.indexOf("-lang") + 1)); } catch (IncorrectLanguageException e) { - appLogger.info(programArgs.get(programArgs.indexOf("-lang" + 1))); + appLogger.info(programArgs.get(programArgs.indexOf("-lang") + 1)); appLogger.error("Incorrect language specified, falling back to English (United States)..."); localizationManager.init(); } -- GitLab From 500e96e8d146367b0f1b554138a2220a2e726f28 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 29 Apr 2021 08:30:55 +0200 Subject: [PATCH 03/91] refactor(DI): gitignore stuff --- .gitignore | 2 ++ src/test/resources/fabric_tests/server_pack.zip | Bin 148 -> 148 bytes 2 files changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index d62867177..6438f6626 100644 --- a/.gitignore +++ b/.gitignore @@ -144,6 +144,8 @@ eclipse /src/test/resources/tests/server_pack/fabric-installer.jar /src/test/resources/tests/server_pack/forge-installer.jar /src/test/resources/forge_tests/Vanilla Forge +/src/test/resources/fabric_tests/server_pack.zip +/src/test/resources/forge_tests/server_pack.zip /serverpackcreator.conf /serverpackcreator.tmp /server_files diff --git a/src/test/resources/fabric_tests/server_pack.zip b/src/test/resources/fabric_tests/server_pack.zip index d3dce8dc45057dd459f3df33f11ae45c61fa3e81..067c3d76f899d289de92f8706d018008ae79ef46 100644 GIT binary patch delta 26 gcmbQjIE9fXz?+#xgn@&DgJG)EL>>nwAnE4@07Q`mw*UYD delta 26 gcmbQjIE9fXz?+#xgn@&DgQ3r6B98+Tko0o{07K0Mod5s; -- GitLab From ef8d1618eeecf22111dbda90381448ed8cd92236 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 29 Apr 2021 10:30:01 +0200 Subject: [PATCH 04/91] refactor(DI): Update CONTRIBUTING.md and README.md --- CONTRIBUTING.md | 8 ++++---- README.md | 10 +--------- .../resources/fabric_tests/server_pack.zip | Bin 148 -> 0 bytes .../fabric_tests/server_pack/mods/testmod.jar | 0 src/test/resources/forge_tests/server_pack.zip | Bin 664 -> 5418 bytes .../resources/testresources/server_pack.zip | Bin 664 -> 5418 bytes 6 files changed, 5 insertions(+), 13 deletions(-) delete mode 100644 src/test/resources/fabric_tests/server_pack.zip delete mode 100644 src/test/resources/fabric_tests/server_pack/mods/testmod.jar diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dae428839..ef6701259 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,14 +4,14 @@ - **The Main-class:** The Main-class of ServerPackCreator only passes the arguments from execution to the Handler-class. -- **Config file:** If you want to contribute to SPC, please make sure you do not change the `serverpackcreator.conf`-file. Ideally, any version of SPC will work with any config file, as they all have the same content. Chaning what's inside the `serverpackcreator.conf`-file would make versions incompatible to each other, but I want users to be able to simply download the newest version **without** having to migrate their config file or even worrying about such a thing. -Therefor, I ask that you do not touch the `serverpackcreator.conf`-file. +- **Config file:** If you want to contribute to SPC, please make sure you do not change the `serverpackcreator.conf`-file. Ideally, any version of SPC will work with any config file, as they all have the same content. Changing what's inside the `serverpackcreator.conf`-file would make versions incompatible to each other, but I want users to be able to simply download the newest version **without** having to migrate their config file or even worrying about such a thing. +Therefore, I ask that you do not touch the `serverpackcreator.conf`-file. - **Variable names:** Please keep variable names verbose i.e. `thisStoresSomething` or `checkForStuff` or some such. Variables like `a` and `tmpA` make code harder to read. We're not aiming for best performance or whatever, so we can have longer variable names if we want to. -- **Files:** If your changes introduce additional files to the ecosystem of ServerPackCreator, please define them in `Reference.java`. I reserve the right to reject PRs which introduce additional files to ServerPackCreator, depending on what they are for. +- **Access modifiers:** Because the files generated by this program are supposed to be distributed to multiple people, I try to keep methods and classes as closed-off as possible. It's not much, but it's something. Therefore, unless your method or class *absolutely* must be public, keep it package private or make it private completely. I reserve the right to refactor any such classes or methods. -- **Visibility:** Because the files generated by this program are supposed to be distributed to multiple people, I try to keep methods and classes as closed-off as possible. It's not much, but it's something. Therefor, unless your method or class *absolutely* must be public, keep it package private or make it private completely. I reserve the right to refactor any such classes or methods. +- **Translating:** If you wish to contribute to translating ServerPackCreator, have a look at the [resource bundles](https://github.com/Griefed/ServerPackCreator/tree/main/src/main/resources/de/griefed/resources/lang). Should you want to **add** a language to ServerPackCreator, add your locale in [LocalizationManager](https://github.com/Griefed/ServerPackCreator/blob/main/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java), copy the [lang_en_us.properties](https://github.com/Griefed/ServerPackCreator/blob/main/src/main/resources/de/griefed/resources/lang/lang_en_us.properties) to lang_your_locale.properties and start translating! ## Commits diff --git a/README.md b/README.md index a54f7b93a..f253af904 100644 --- a/README.md +++ b/README.md @@ -200,12 +200,4 @@ docker create \ # Contributing If you're a Java Pro and your eyes bulge when looking at my code, by all means, you're welcome to help me improve it in any way, shape, or form. -You're welcome to make [contributions](https://github.com/Griefed/ServerPackCreator/blob/main/CONTRIBUTING.md), or fork it and make your own version of it. It's LGPL-2.1 License for a reason. Do what you want with it. - -## Translating ServerPackCreator - -To add a new language to the app you need: - -Create resources/de/griefed/resources/lang/lang_language code.lang file. -Add language code to the SUPPORTED_LANGUAGES list in Reference. -Translate the app! \ No newline at end of file +You're welcome to make [contributions](https://github.com/Griefed/ServerPackCreator/blob/main/CONTRIBUTING.md), or fork it and make your own version of it. It's LGPL-2.1 License for a reason. Do what you want with it. \ No newline at end of file diff --git a/src/test/resources/fabric_tests/server_pack.zip b/src/test/resources/fabric_tests/server_pack.zip deleted file mode 100644 index 067c3d76f899d289de92f8706d018008ae79ef46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmWIWW@Zs#;Nak3nCdh)hye)*0NJ_uDaA1*sl_EghF(@;5i>)8H#-MN5ffBpfHxzP f2m`7KFgcJ3r~uu(0B=?{kP1d1v;)!(APxfnA`%oN diff --git a/src/test/resources/fabric_tests/server_pack/mods/testmod.jar b/src/test/resources/fabric_tests/server_pack/mods/testmod.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/test/resources/forge_tests/server_pack.zip b/src/test/resources/forge_tests/server_pack.zip index 79933a2500c90e22474ca1a4073a6d5a130d06bc..67e2c55730c7e43cd126257d3e8e4225ca41c77c 100644 GIT binary patch literal 5418 zcmeI0XH*l+wuVEKCcP=WMKKUi=`DzW^e)BF1eGd=CcT#r0SUcJ3ssP!v|xY$B1jD& z?GqwZN~E^{p<Mj#z2|t&I%lo(^ZvMd)~vl})~t8t-Sh7;&?X^e22fB?0H$N3i~zsI z&CB{J%;&{(nC(*=SEm=xo_N^Wdx1Tld3Znb5Oucou(5}EI6M=zv-JWGplHKyU%NMN z=42kKYQgbbxcZtpCzr0667gD8J&U!CiX}#~4fve?E5!uj3EP{L?*#~)tvqDxs$3EG z-QaNCIw@rGh*b&}A%X9`ZvvMUThn@###5vIYAWi{iS$HAQd)8?Q;fmqOhBQYZqZc9 zNGX>Ln?rTv^AbeCEw=b8DvVtRWdnE9$sc~~jevW6sR=2|^cXm_VzV*OCZ`ZNT`bJG zbo23Y8vI+oH~vGvo{m=V_q3h7%m92aS!o@wa=RRgU8zH1uECsI;@<QTo}G<p1*Kh$ zy|edf;NFg|wy0B_F|m4ux<`;|{q+-nu}rf8uSlJf)Lvn5R^*a>EvEF(EAO6$2+Z58 zqzZ%3X*DlJ9lCFrBMx|2M=9J3q{tdQ(g$8OvUbO(vNy<5*e+?BPabHk72Rc*yUhtU zgPMD-OYdL#WpszN)H?0bM*H840ss_%Yg)NRo(l=p-VB%9H~@h8GX3p8Mem5-krI{s z^`9G1hvx!n*Ul!u9A&aGnmRI_jL^_Uiq=o=Y;Xe)HjP!ud!m$)UB$xziWQCsO43)L zY*LL-dPY{>NZyBGLifG+f_a%^9f>;$ZCo`QQ`S8yY<mc4!bZzmnEeL!rFB5VdC@e_ zi{s4Y#|~7Zu(~wn-oCm>sym3p0Juk8-P-!2hzsUmG7|G9Uf&jIzagjaJ&t#zMUPp` zX(mD&9_OOS%DJBdI67pI>{Fyt5tME(YsoB0ECJP&jo~g~v`DF`E7c^`)YatGbT0sn z5gg$hVH^?E9lGsmbES{Tk=K#3NHQc4$%2$b(jdV|E~Fxo1Sx=I+H!ScbGw5SMv_`m zd55FI`rEM`qHc6<`fg%wuv!jF+G;>Rdr*5&hjlI84BZTm0ziRYLBr3V0v;V69Tpv- z9;zOGHfK0DGIwVVfMnz(jc&KyHs6+UQ*HRnsq%(YAJEf5InvkDCh-Sa)8qD@A!pAT zGl*Q5`LNpWyNanwJBv}WXus(6&b&)*(0&Wcatc&$s;B5SnrI+|(Nl=$&Ib>OCso>- zj9{ZUK4(*@X!}IBW0B!>tuR|exEO*zIuUBRz~25@^nR4Y&6>PnHJ{5tzf$64Ha~ri zeK^_*eu2vb_EyU?)bVtP>MWRxvJ1@x>1kf<-8;maBp%KMVa^w)Yz`r>j0=`dJqsp4 zt!C+?nYfULKdBstS1%sd!mOklpOW?%8(GEtAU?BbDPVba#6wDlZ(04!;;V3ea$Kiw z`ULnuLR2<ILgbuTUH&9t?i#o#MD$`zaqV1w<kN`46(5>DPD~^Fxwz5sq>_K0s@M-c z_^~Hi^4ZWud;v7%c0qNF!34ga=lFc(<YEc0gh$6O<L57E(1Q!?6r@6I&NeLvyB5-7 zPyz4311Z;*?Xu{pEn#JgHLIn~DDGN4?5sp3Asy7L<c|N+yR?~5*V`&>N#>D|A2rh& zN|MNdny!;O%QfA1v`vdJ^x49+;^)pL6$AH=rn;v3G|L=t<w^4~g<<XvacW$5H#e=t zU?Z$XKTsRovSEFZY9XZCuFLW<{Nfu5Th5aawY%+FHBolAbt|2hH8?Sa3DvxEW}|z8 ziZ-L3@2Et^{E{KAJ95Ry>xApQeiob8?ZG*x6Bk9)FV2?BSXAB<YC2C~+pDOS^9*dt z^^Bs4xE?Faq)pOGESDwRe=R^Y=X+eR#V6N?i1!u&vT{UkKgLlO7vb8~Bt&LK(4@tU z&Yn#DXO>X$4^o5l8HKO;!Qg5y$82#clX!RYq2{K@C9I$H^=qdVw_OZwy!JV{{eA6| zZyDWUF693g|A%{U_o#?M>tw=W|K?mAIqN7}hg$*63L%q}W*Gb^#gPR*e&p#c<Opo@ z<-OhYBV3PDQYHBhU{&InH?pelp(;)_f6luiFEO2wbzG)$oN-(Wdecc~bnxeJqbHdb zS#jE2njV*)DL4@V-hc2VeyY*xdR=KHSKM9ab~Boj3O*aj^~wi<<5V`|hbF>7<K;Eb zAC;zr3duI-sv4-7sw;zJ=~zAMmr-0${S}_75%oBNW96}<E(BVakiI=)iXVXn)=LJ~ zlR>^^L!gxjji$;~ni4%<D{>#3<~G#fB1<3jk2&qt&z!!DU8=DV3~A**{>j!mTc8mf zkaS8Dw*-4A7_!KJOnq4y35FOZo$BuGS^&|XP@SL_7m?HwnCbo5mdG|W%AkJ66I0-R zmG<g%>Tnad5N39Nwk@(vg)*pz@k9@}pR2u!VjdIEuZ{Dp#(>u0wdIZFDE|@0n$IO< z(5nsyQ;!TVmRQuS*2G2;ZEAn0Wj!{nyE!WeTjGIDa)5plSP>UAn-;Ihc-@$h(Ab3e zf(kmZ*ffTzrL$%Zy+rrK9qu546!QZV^RXWd<tMY+y!x$!@9*M`kB=8;W*s)kmj=bY zehte@M={ZY-W$^nWhonY&x$0zz|+@YXWnz-7FTQ`o-#A)@|_N6@PV&)C-u?N(f5UY zQzyGe{GJS@%5@7%CZahMTuU$%<U#d(`Dq-Y3)}A@8(b?z@kcU&fqCifkH_M=6&zBc z-W-fErDlI8G~<vpa!Hj#S%hMYv;Ggb6Flc8tNWfHPmkW=h~CbK-oc38-iRK4WN16< zIBPA7ttA-)+Q|y>Zd~-l<ryP3n;`-aI;a)HMxf)tn(&LE=b{Esd#Sp6(AL_5>=$_c z64p^uKWK0z8==vkQi;Ht)mxI6zBTkLFI}m>zwl8-&uO-qkfcRGEX&Ps2{#M*3|&+6 zHxGbSNfI}lii!s{B6=GV|49DH+pqye*_!A;vzq5s6?|sBaq-Oh)#Tu$tNd1q*B^XK zu1}QfWi58ODWEZ(?80xQp0_3SEq(bhUtYF!2NS_wMOUb{C>8pA3s*alWyw}%B{e(# zbWe5ReH9J(-GluRmuM)FrohHpx^Rk=)<d9h(nRTzxT9IE=x1FYV<p{TL7HJ1*|CT^ z<t}*Yt6nRwAphzBYZgik_RoIi-IMUhd><q>O5>*EYj_z^aghdF#7$!*k7S8(Uk0wh zkNd5%qa=ww%qO@KTW%u6v*DgKUsb|FAo0O4Bb-Dbd(5twoX<h4Tkh(!63}eI$tO$J z<D0#&IhW`P&_ql5ulBEvx$4Y2tMUjB`%AyHg9pv=<2v7SXw?neO8UmOMh|_XdNKXA z^hj8SZYf{W`0hvdu1^Zq+m3H&1hP{-B3{M7i#vr=gI%BAl&<y7t$3PSku-7DWZU^| zlk!X4HP22mGr^}5cHdpx-6o({bJ0>03w_<@L*quml?Kun6Pe?tvs$VqtM5+LaZ2^9 zQA*9YXJGc_X4YkKT#aQM^4(`=d+_;g1I3_=BI5_{%AA9v{z;Wh$rP7@<9i-NqpLKA zJIpaY`rf5WQyw<GF43Z9CE9~Va(TI>IxTmZ^z~IVGHkMLp*`YsAhTNPMyH&Oq<fim z_&XoncS^?>7>PE|`ow<F`f^fU5HllfH(Q<Q(Xx?GB;o^>$I^!n?L&N7h9}(Jf};k4 zIag={vB^?Jw5l7g0-RL(PU5w=Trk}`JUH=8FJHxV5T|d?g|B~N_C_SuPONsaewq<E zdxb95#3}hsw@h1yr<c^~jJMCL`$J7%-qs4|)-|(5<BikAwF85$nl4hM)K5I>M$N+i zJn)XdI@<76MHV0EIkir-TBARU-S_^Ym*2C=jtKS1t0@z0dAL6}vqJT{@<}_QwwU46 z&Wz}ro<1xT1dP{$0@qd+f=QqF*>sQISV<@<>AD(BsUtbplA#y&Q{DC=VJUr{HL!n1 zKEWH3sh*XvY-lf#e|OzG1-Va=51efBE#X#c0XFdx+V9J+$!yA4sw^A;vDU%-RbC>4 za^w$?K7rnLsT{mC*3BZFlc-~Y%|$P21rW?Zp|~R`rA-P8dyWDztTZtoUaQD5u=!rQ zAWxhy)PKulpbxGPjqqRQl&m^XmY3FdVR5}xPo0*2ovG7=T2+bhL=0gjq-dc?>0Au4 z8LV$DFEp5@tl1D&O#msPu$5LN8Yq3KlLT3Aht|?BnHE+J8q@uzdoY63$P=}1Z5Wfd z`m+ZqA=A`3k6<FBhZBCz{_&V_e_zBAJ5Sp77XH>qPTW2rFfaQBfxg_P3evPOfIKNw zw=jqGPG^t|JFhsddDBHr3>y_-Q@#QZ@5c!5X?3+GRfV1pv%jlJ!-kh_4F>pxp?t*s ztxV|x5M2$_v6v0UHvUPG_2aNW#p*0+In4Nr7Z&>msSvXu<uS)}=k3`Jh(uJt7Q^WQ zzg%pe8p)%Hcf_+KZTK_lL-1s)b%<K1kuW!5gGKbKyT<bsi2rvjp1Pk~H}pX&yX&Jd zUZg%lWsgNtkjB|`&|CL@oCnOq9{mu3YCYLiZ6K~wO21SjdwL#dCOLcFbOmp=W3-Rr z!~~(-WBoGXuEZZpyW2&0)DrV?4$%ciMu$=hwi=Aa3ARRjYx|xwI~U!&o$N+7S_g!f zEu?l~G;|o?Bn)si?Ut_iw+AkM+-?C4&1jzOM5Z|hda8jy;=+ja>#Pxv3$phj#KoY2 zR|o60v3*(QVa;>B%D5e+TYvO|FNg_<-7056UyYO03i}iKJQamXPoSdy=pIl}-E_x^ z*(S~?eV}*YJqGHnnUEKyZdJZp{~7khq3Uz}5#4b^8B0!5nY(1ZgPWyY^B(1ZCqyCr zTFFz>O&#lnN48!enCv~yqd!xfnlV7<2DACq^6~V*X{!xd(36IZ0cTiF>$gS}Q)8$+ zO;=^MR*4YvJJlBL;rpogOpZU^n#PP}`X1PQ&z$m)zZ2!F^TW<*a<}!+yp1idRoK@^ zS>k3Lfx&pbLE8Xk1Iu`=#XoVJGd<YUa%#Gy^t5D;#QI!9w44jOOTIC3YePejtuO~2 zkRWi(_&Jd$Iq-GgV204<4>61PE&97aEnac%rPI7tuBH}MYT+Z#p#o-vbB`_w-;f5+ zvjf<IgJ(&yk>7ary>oFd(NUaKFuHaVNDe(+5+mFWle1>tM<lXEnM6w8v9^w4`xDfe zbDf3kRt19I<gJj-I4IU2J{DANswOr5wmjJm6l>HPTT!m8Ha=F4V2=$bg6gU@j1?o~ zoJ|d1GlDA0#uXdX)M&;k5D%c*YVJ@AwMxUB*lb5G7Rj$4L0Sf=SktnoJdWuYbZ&;~ zaZ7xPC=05eA-%G^h)=<F9&9r|t`*Ai9jmMn*}TG8g1NENV-pGXJp4>gn-SI&mJo^w zgN5fuDD7E)n8BCDwFBqo=Z@0}&56XbMCcDQ%2HwS5rlBf?dRKk+d;LoKK!3f&n>^( zi1q9U`Y}OnY{{xWd&9CT<w6Q;BNQg=y6u<@gHL!z89o3VLV~H|Tb?BL<agTEe@#F$ zB~5<;4iC}y>GbC8A)TA^T|&!vp}Ni+;H`=1L@CWIEJGpf=%QiGqrQDUb$>JXR+OXV zH$_^88Ys&K2zaA7IvD0%*}rm8tzgP6zl)E6h-^(J%-fJIow>#be)ZBmmr12`1M1%2 zutOKyqhB{e?HeO|*5&wTucnR03V>hlT8ZJJmloU9f6&<FeOi@YkQ1mn?0W|)o>Bhd zUW~QPVhiaR-&2$r>c-|Rar<8_@lHw7|6*w|MYsQ6X>u8#P>%W|&}5V7OlFB!|8!Nk z>q#|>ddA*!)wex<oS>c}BRhkMpnJ>chuDsU!YZQEam_XC?cHLbp1K;`WUBI#hw!2i z%xpmH#_R{|E~>XcUTzcUP-=qn^a%T?C$+FA)r@ycX`1Df=ZpE2{9x$i>^r5Sr-K9N z4A#5{;fDCH!JBnVHQyk{p9BP^T{rgi;PLqj>kx=knpZk}UtdQfe!pnUXIjyN*lFJ9 z7m%X5Br*U%wQlY|0JvYff2VB*+C;?6m+a<$QQhxQ>ldo~$M_Gy-9L-|4v>EFu)oLl zW%-|odOH5nRQd}t{VVh&_&<`o6ac`VME@E@Q2}`WIz<Gy1`w3?&FxW`BwCdji|N12 z=ymVE*8hFWziZs@w}dhM-p1dx?X8mYerf)5Hqa)!^6LSlm&4`qjc+d%0D%7jWvNds delta 32 hcmZ3bHG_4-ZN|x~g;$EOvM~Sw6A-Qh(l;4FJOGqS2A%)_ diff --git a/src/test/resources/testresources/server_pack.zip b/src/test/resources/testresources/server_pack.zip index 79933a2500c90e22474ca1a4073a6d5a130d06bc..67e2c55730c7e43cd126257d3e8e4225ca41c77c 100644 GIT binary patch literal 5418 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%0D%7jWvNds delta 32 hcmZ3bHG_4-ZN|x~g;$EOvM~Sw6A-Qh(l;4FJOGqS2A%)_ -- GitLab From 3e2571c1d862c8c314efbe68d0968ca9e7506133 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 29 Apr 2021 10:31:08 +0200 Subject: [PATCH 05/91] refactor(DI): Include Minecraft version if modloader is Forge so Minecraft server jar is always deleted --- .../serverpackcreator/CreateServerPack.java | 15 ++++++++----- .../CreateServerPackTest.java | 22 ++++++++++++------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index 110e922d5..e52ad0214 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -111,7 +111,7 @@ public class CreateServerPack { appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.properties")); } if (configCheck.getIncludeZipCreation()) { - zipBuilder(configCheck.getModpackDir(), configCheck.getModLoader(), configCheck.getIncludeServerInstallation()); + zipBuilder(configCheck.getModpackDir(), configCheck.getModLoader(), configCheck.getIncludeServerInstallation(), configCheck.getMinecraftVersion()); } else { appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.zip")); } @@ -450,7 +450,8 @@ public class CreateServerPack { forgeInstaller, modLoader, modpackDir, - minecraftVersion, modLoaderVersion); + minecraftVersion, + modLoaderVersion); } /** Create a zip-archive of the serverpack, excluding Mojang's minecraft_server.jar. @@ -458,8 +459,9 @@ public class CreateServerPack { * @param modpackDir String. The directory where the zip-archive will be created and saved in. * @param modLoader String. Determines the name of Minecraft#s server jar which will be deleted from the zip-archive. * @param includeServerInstallation Boolean. Determines whether the Minecraft server jar needs to be deleted from the zip-archive. + * @param minecraftVersion String. The Minecraft version of which to delete the server jar. Used if modloader is Forge. */ - void zipBuilder(String modpackDir, String modLoader, Boolean includeServerInstallation) { + void zipBuilder(String modpackDir, String modLoader, Boolean includeServerInstallation, String minecraftVersion) { final Path sourceDir = Paths.get(String.format("%s/server_pack", modpackDir)); String zipFileName = sourceDir.toString().concat(".zip"); appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.zipbuilder.enter")); @@ -485,7 +487,7 @@ public class CreateServerPack { appLogger.error(localizationManager.getLocalizedString("serversetup.log.error.zipbuilder.create"), ex); } if (includeServerInstallation) { - deleteMinecraftJar(modLoader, modpackDir); + deleteMinecraftJar(modLoader, modpackDir, minecraftVersion); appLogger.warn(localizationManager.getLocalizedString("serversetup.log.warn.zipbuilder.minecraftjar1")); appLogger.warn(localizationManager.getLocalizedString("serversetup.log.warn.zipbuilder.minecraftjar2")); appLogger.warn(localizationManager.getLocalizedString("serversetup.log.warn.zipbuilder.minecraftjar3")); @@ -729,8 +731,9 @@ public class CreateServerPack { * With help from https://stackoverflow.com/questions/5244963/delete-files-from-a-zip-archive-without-decompressing-in-java-or-maybe-python and https://bugs.openjdk.java.net/browse/JDK-8186227 * @param modLoader String. Determines the name of the file to delete. * @param modpackDir String. /server_pack The directory in which the file will be deleted. + * @param minecraftVersion String. The Minecraft version of which to delete the server jar. Used if modloader is Forge. */ - void deleteMinecraftJar(String modLoader, String modpackDir) { + void deleteMinecraftJar(String modLoader, String modpackDir, String minecraftVersion) { if (modLoader.equalsIgnoreCase("Forge")) { appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.deleteminecraftjar.enter")); @@ -742,7 +745,7 @@ public class CreateServerPack { URI zipUri = URI.create("jar:" + serverpackZip.toUri()); try (FileSystem zipfs = FileSystems.newFileSystem(zipUri, zip_properties)) { - Path pathInZipfile = zipfs.getPath("minecraft_server.1.16.5.jar"); + Path pathInZipfile = zipfs.getPath(String.format("minecraft_server.%s.jar", minecraftVersion)); Files.delete(pathInZipfile); appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.deleteminecraftjar.success")); } catch (IOException ex) { diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java index e7bf95237..bbbda042b 100644 --- a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -300,22 +300,26 @@ class CreateServerPackTest { } @Test - void testZipBuilderFabric() { + void testZipBuilderFabric() throws IOException { //TODO: Figure out how to run this test on GitHub Runners if (!new File("/home/runner").isDirectory()) { + Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/fabric_tests/server_pack.zip"), REPLACE_EXISTING); + String minecraftVersion = "1.16.5"; String modLoader = "Fabric"; - String modpackDir = "./src/test/resources/fabric_tests"; - createServerPack.zipBuilder(modpackDir, modLoader, Boolean.TRUE); + String modpackDir = "src/test/resources/fabric_tests"; + createServerPack.zipBuilder(modpackDir, modLoader, Boolean.TRUE, minecraftVersion); } } @Test - void testZipBuilderForge() { + void testZipBuilderForge() throws IOException { //TODO: Figure out how to run this test on GitHub Runners if (!new File("/home/runner").isDirectory()) { + Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/forge_tests/server_pack.zip"), REPLACE_EXISTING); + String minecraftVersion = "1.16.5"; String modLoader = "Forge"; String modpackDir = "./src/test/resources/forge_tests"; - createServerPack.zipBuilder(modpackDir, modLoader, Boolean.TRUE); + createServerPack.zipBuilder(modpackDir, modLoader, Boolean.TRUE, minecraftVersion); } } @@ -383,17 +387,19 @@ class CreateServerPackTest { @Test void testDeleteMinecraftJarFabric() throws IOException { Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/fabric_tests/server_pack.zip"), REPLACE_EXISTING); + String minecraftVersion = "1.16.5"; String modLoader = "Fabric"; - String modpackDir = "./src/test/resources/forge_tests"; - createServerPack.deleteMinecraftJar(modLoader, modpackDir); + String modpackDir = "./src/test/resources/fabric_tests"; + createServerPack.deleteMinecraftJar(modLoader, modpackDir, minecraftVersion); } @Test void testDeleteMinecraftJarForge() throws IOException { Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/forge_tests/server_pack.zip"), REPLACE_EXISTING); + String minecraftVersion = "1.16.5"; String modLoader = "Forge"; String modpackDir = "./src/test/resources/forge_tests"; - createServerPack.deleteMinecraftJar(modLoader, modpackDir); + createServerPack.deleteMinecraftJar(modLoader, modpackDir, minecraftVersion); } @Test -- GitLab From c6dbf8c2455c50315f3d260b611a0c6a5b78a253 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 29 Apr 2021 10:31:25 +0200 Subject: [PATCH 06/91] refactor(DI): Make logger static again (whoops) --- src/main/java/de/griefed/serverpackcreator/FilesSetup.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java index 66c0e46c6..69b511d5f 100644 --- a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java +++ b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java @@ -9,7 +9,7 @@ import java.nio.file.Paths; public class FilesSetup { - private final Logger appLogger = LogManager.getLogger(FilesSetup.class); + private static final Logger appLogger = LogManager.getLogger(FilesSetup.class); private final File configFile = new File("serverpackcreator.conf"); private final File oldConfigFile = new File("creator.conf"); -- GitLab From 09ab7850a2814ace67c69da71fa9ceb00f07a2c8 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 29 Apr 2021 12:31:40 +0200 Subject: [PATCH 07/91] refactor(DI): Update docs --- docs/allclasses-frame.html | 31 +- docs/allclasses-noframe.html | 31 +- docs/constant-values.html | 60 +- .../griefed/serverpackcreator/CLISetup.html | 369 ---- .../serverpackcreator/ConfigCheck.html | 744 -------- .../serverpackcreator/Configuration.html | 1598 +++++++++++++++++ .../griefed/serverpackcreator/CopyFiles.html | 431 ----- .../serverpackcreator/CreateServerPack.html | 962 ++++++++++ .../griefed/serverpackcreator/FilesSetup.html | 340 ++-- .../de/griefed/serverpackcreator/Handler.html | 331 ---- docs/de/griefed/serverpackcreator/Main.html | 12 +- .../griefed/serverpackcreator/Reference.html | 1424 --------------- .../serverpackcreator/ServerSetup.html | 363 ---- .../serverpackcreator/ServerUtilities.html | 540 ------ ...teModpack.html => CurseCreateModpack.html} | 81 +- .../{Files.html => CurseFiles.html} | 48 +- .../{Minecraft.html => CurseMinecraft.html} | 58 +- .../{ModLoaders.html => CurseModLoaders.html} | 42 +- .../{Modpack.html => CurseModpack.html} | 99 +- .../{Splines.html => CurseSplines.html} | 68 +- .../curseforgemodpack/package-frame.html | 12 +- .../curseforgemodpack/package-summary.html | 12 +- .../curseforgemodpack/package-tree.html | 12 +- .../gui/{About.html => AboutTab.html} | 67 +- .../gui/{TabbedPane.html => CreateGui.html} | 78 +- ...rverPack.html => CreateServerPackTab.html} | 105 +- ...Log.html => ModloaderInstallerLogTab.html} | 78 +- ...rLog.html => ServerPackCreatorLogTab.html} | 78 +- .../serverpackcreator/gui/package-frame.html | 10 +- .../gui/package-summary.html | 10 +- .../serverpackcreator/gui/package-tree.html | 10 +- .../i18n/LocalizationManager.html | 176 +- .../serverpackcreator/i18n/package-tree.html | 4 - .../serverpackcreator/package-frame.html | 9 +- .../serverpackcreator/package-summary.html | 24 +- .../serverpackcreator/package-tree.html | 9 +- docs/index-all.html | 592 +++--- docs/overview-tree.html | 36 +- docs/serialized-form.html | 62 +- .../{ConfigCheck.java => Configuration.java} | 6 +- .../serverpackcreator/CreateServerPack.java | 36 +- .../de/griefed/serverpackcreator/Main.java | 12 +- .../serverpackcreator/gui/CreateGui.java | 14 +- .../gui/CreateServerPackTab.java | 52 +- .../serverpackcreator/ConfigCheckTest.java | 5 +- .../CreateServerPackTest.java | 4 +- .../serverpackcreator/FilesSetupTest.java | 5 +- 47 files changed, 3883 insertions(+), 5267 deletions(-) delete mode 100644 docs/de/griefed/serverpackcreator/CLISetup.html delete mode 100644 docs/de/griefed/serverpackcreator/ConfigCheck.html create mode 100644 docs/de/griefed/serverpackcreator/Configuration.html delete mode 100644 docs/de/griefed/serverpackcreator/CopyFiles.html create mode 100644 docs/de/griefed/serverpackcreator/CreateServerPack.html delete mode 100644 docs/de/griefed/serverpackcreator/Handler.html delete mode 100644 docs/de/griefed/serverpackcreator/Reference.html delete mode 100644 docs/de/griefed/serverpackcreator/ServerSetup.html delete mode 100644 docs/de/griefed/serverpackcreator/ServerUtilities.html rename docs/de/griefed/serverpackcreator/curseforgemodpack/{CreateModpack.html => CurseCreateModpack.html} (78%) rename docs/de/griefed/serverpackcreator/curseforgemodpack/{Files.html => CurseFiles.html} (81%) rename docs/de/griefed/serverpackcreator/curseforgemodpack/{Minecraft.html => CurseMinecraft.html} (75%) rename docs/de/griefed/serverpackcreator/curseforgemodpack/{ModLoaders.html => CurseModLoaders.html} (82%) rename docs/de/griefed/serverpackcreator/curseforgemodpack/{Modpack.html => CurseModpack.html} (70%) rename docs/de/griefed/serverpackcreator/curseforgemodpack/{Splines.html => CurseSplines.html} (76%) rename docs/de/griefed/serverpackcreator/gui/{About.html => AboutTab.html} (83%) rename docs/de/griefed/serverpackcreator/gui/{TabbedPane.html => CreateGui.html} (81%) rename docs/de/griefed/serverpackcreator/gui/{CreateServerPack.html => CreateServerPackTab.html} (73%) rename docs/de/griefed/serverpackcreator/gui/{ModloaderInstallerLog.html => ModloaderInstallerLogTab.html} (78%) rename docs/de/griefed/serverpackcreator/gui/{ServerPackCreatorLog.html => ServerPackCreatorLogTab.html} (78%) rename src/main/java/de/griefed/serverpackcreator/{ConfigCheck.java => Configuration.java} (99%) diff --git a/docs/allclasses-frame.html b/docs/allclasses-frame.html index 7b6e1fd9f..9386895c2 100644 --- a/docs/allclasses-frame.html +++ b/docs/allclasses-frame.html @@ -11,28 +11,23 @@ <h1 class="bar">All Classes</h1> <div class="indexContainer"> <ul> -<li><a href="de/griefed/serverpackcreator/gui/About.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">About</a></li> -<li><a href="de/griefed/serverpackcreator/CLISetup.html" title="class in de.griefed.serverpackcreator" target="classFrame">CLISetup</a></li> -<li><a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator" target="classFrame">ConfigCheck</a></li> -<li><a href="de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator" target="classFrame">CopyFiles</a></li> -<li><a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">CreateModpack</a></li> -<li><a href="de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">CreateServerPack</a></li> -<li><a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">Files</a></li> +<li><a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">AboutTab</a></li> +<li><a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator" target="classFrame">Configuration</a></li> +<li><a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">CreateGui</a></li> +<li><a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator" target="classFrame">CreateServerPack</a></li> +<li><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">CreateServerPackTab</a></li> +<li><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">CurseCreateModpack</a></li> +<li><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">CurseFiles</a></li> +<li><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">CurseMinecraft</a></li> +<li><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">CurseModLoaders</a></li> +<li><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">CurseModpack</a></li> +<li><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">CurseSplines</a></li> <li><a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator" target="classFrame">FilesSetup</a></li> -<li><a href="de/griefed/serverpackcreator/Handler.html" title="class in de.griefed.serverpackcreator" target="classFrame">Handler</a></li> <li><a href="de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n" target="classFrame">IncorrectLanguageException</a></li> <li><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n" target="classFrame">LocalizationManager</a></li> <li><a href="de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator" target="classFrame">Main</a></li> -<li><a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">Minecraft</a></li> -<li><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">ModloaderInstallerLog</a></li> -<li><a href="de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">ModLoaders</a></li> -<li><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">Modpack</a></li> -<li><a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator" target="classFrame">Reference</a></li> -<li><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">ServerPackCreatorLog</a></li> -<li><a href="de/griefed/serverpackcreator/ServerSetup.html" title="class in de.griefed.serverpackcreator" target="classFrame">ServerSetup</a></li> -<li><a href="de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator" target="classFrame">ServerUtilities</a></li> -<li><a href="de/griefed/serverpackcreator/curseforgemodpack/Splines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">Splines</a></li> -<li><a href="de/griefed/serverpackcreator/gui/TabbedPane.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">TabbedPane</a></li> +<li><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">ModloaderInstallerLogTab</a></li> +<li><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">ServerPackCreatorLogTab</a></li> </ul> </div> </body> diff --git a/docs/allclasses-noframe.html b/docs/allclasses-noframe.html index 8cd96da41..ea3196e74 100644 --- a/docs/allclasses-noframe.html +++ b/docs/allclasses-noframe.html @@ -11,28 +11,23 @@ <h1 class="bar">All Classes</h1> <div class="indexContainer"> <ul> -<li><a href="de/griefed/serverpackcreator/gui/About.html" title="class in de.griefed.serverpackcreator.gui">About</a></li> -<li><a href="de/griefed/serverpackcreator/CLISetup.html" title="class in de.griefed.serverpackcreator">CLISetup</a></li> -<li><a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></li> -<li><a href="de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator">CopyFiles</a></li> -<li><a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CreateModpack</a></li> -<li><a href="de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPack</a></li> -<li><a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Files</a></li> +<li><a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></li> +<li><a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></li> +<li><a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></li> +<li><a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></li> +<li><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></li> +<li><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></li> +<li><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></li> +<li><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></li> +<li><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a></li> +<li><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></li> +<li><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseSplines</a></li> <li><a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></li> -<li><a href="de/griefed/serverpackcreator/Handler.html" title="class in de.griefed.serverpackcreator">Handler</a></li> <li><a href="de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n">IncorrectLanguageException</a></li> <li><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></li> <li><a href="de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator">Main</a></li> -<li><a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Minecraft</a></li> -<li><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLog</a></li> -<li><a href="de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">ModLoaders</a></li> -<li><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></li> -<li><a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></li> -<li><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLog</a></li> -<li><a href="de/griefed/serverpackcreator/ServerSetup.html" title="class in de.griefed.serverpackcreator">ServerSetup</a></li> -<li><a href="de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator">ServerUtilities</a></li> -<li><a href="de/griefed/serverpackcreator/curseforgemodpack/Splines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Splines</a></li> -<li><a href="de/griefed/serverpackcreator/gui/TabbedPane.html" title="class in de.griefed.serverpackcreator.gui">TabbedPane</a></li> +<li><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a></li> +<li><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></li> </ul> </div> </body> diff --git a/docs/constant-values.html b/docs/constant-values.html index af6c06b9b..c98ea627c 100644 --- a/docs/constant-values.html +++ b/docs/constant-values.html @@ -81,62 +81,6 @@ <ul class="blockList"> <li class="blockList"> <table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values"> -<caption><span>de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></span><span class="tabEnd"> </span></caption> -<tr> -<th class="colFirst" scope="col">Modifier and Type</th> -<th scope="col">Constant Field</th> -<th class="colLast" scope="col">Value</th> -</tr> -<tbody> -<tr class="altColor"> -<td class="colFirst"><a name="de.griefed.serverpackcreator.Reference.CONFIG_GEN_ARGUMENT"> -<!-- --> -</a><code>private static final java.lang.String</code></td> -<td><code><a href="de/griefed/serverpackcreator/Reference.html#CONFIG_GEN_ARGUMENT">CONFIG_GEN_ARGUMENT</a></code></td> -<td class="colLast"><code>"-cgen"</code></td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><a name="de.griefed.serverpackcreator.Reference.FABRIC_MANIFEST_URL"> -<!-- --> -</a><code>private static final java.lang.String</code></td> -<td><code><a href="de/griefed/serverpackcreator/Reference.html#FABRIC_MANIFEST_URL">FABRIC_MANIFEST_URL</a></code></td> -<td class="colLast"><code>"https://maven.fabricmc.net/net/fabricmc/fabric-loader/maven-metadata.xml"</code></td> -</tr> -<tr class="altColor"> -<td class="colFirst"><a name="de.griefed.serverpackcreator.Reference.FORGE_MANIFEST_URL"> -<!-- --> -</a><code>private static final java.lang.String</code></td> -<td><code><a href="de/griefed/serverpackcreator/Reference.html#FORGE_MANIFEST_URL">FORGE_MANIFEST_URL</a></code></td> -<td class="colLast"><code>"https://files.minecraftforge.net/net/minecraftforge/forge/maven-metadata.json"</code></td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><a name="de.griefed.serverpackcreator.Reference.LANG_ARGUMENT"> -<!-- --> -</a><code>private static final java.lang.String</code></td> -<td><code><a href="de/griefed/serverpackcreator/Reference.html#LANG_ARGUMENT">LANG_ARGUMENT</a></code></td> -<td class="colLast"><code>"-lang"</code></td> -</tr> -<tr class="altColor"> -<td class="colFirst"><a name="de.griefed.serverpackcreator.Reference.MINECRAFT_MANIFEST_URL"> -<!-- --> -</a><code>private static final java.lang.String</code></td> -<td><code><a href="de/griefed/serverpackcreator/Reference.html#MINECRAFT_MANIFEST_URL">MINECRAFT_MANIFEST_URL</a></code></td> -<td class="colLast"><code>"https://launchermeta.mojang.com/mc/game/version_manifest.json"</code></td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><a name="de.griefed.serverpackcreator.Reference.RUN_CLI_ARGUMENT"> -<!-- --> -</a><code>private static final java.lang.String</code></td> -<td><code><a href="de/griefed/serverpackcreator/Reference.html#RUN_CLI_ARGUMENT">RUN_CLI_ARGUMENT</a></code></td> -<td class="colLast"><code>"-cli"</code></td> -</tr> -</tbody> -</table> -</li> -</ul> -<ul class="blockList"> -<li class="blockList"> -<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values"> <caption><span>de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></span><span class="tabEnd"> </span></caption> <tr> <th class="colFirst" scope="col">Modifier and Type</th> @@ -147,14 +91,14 @@ <tr class="altColor"> <td class="colFirst"><a name="de.griefed.serverpackcreator.i18n.LocalizationManager.COUNTRY_MAP_PATH"> <!-- --> -</a><code>private static final java.lang.String</code></td> +</a><code>private final java.lang.String</code></td> <td><code><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#COUNTRY_MAP_PATH">COUNTRY_MAP_PATH</a></code></td> <td class="colLast"><code>"country"</code></td> </tr> <tr class="rowColor"> <td class="colFirst"><a name="de.griefed.serverpackcreator.i18n.LocalizationManager.LANGUAGE_MAP_PATH"> <!-- --> -</a><code>private static final java.lang.String</code></td> +</a><code>private final java.lang.String</code></td> <td><code><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#LANGUAGE_MAP_PATH">LANGUAGE_MAP_PATH</a></code></td> <td class="colLast"><code>"language"</code></td> </tr> diff --git a/docs/de/griefed/serverpackcreator/CLISetup.html b/docs/de/griefed/serverpackcreator/CLISetup.html deleted file mode 100644 index 23358fc90..000000000 --- a/docs/de/griefed/serverpackcreator/CLISetup.html +++ /dev/null @@ -1,369 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<!-- NewPage --> -<html lang="de"> -<head> -<!-- Generated by javadoc --> -<title>CLISetup (serverpackcreator API)</title> -<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style"> -<script type="text/javascript" src="../../../script.js"></script> -</head> -<body> -<script type="text/javascript"><!-- - try { - if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="CLISetup (serverpackcreator API)"; - } - } - catch(err) { - } -//--> -var methods = {"i0":10,"i1":10,"i2":10,"i3":10}; -var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; -var altColor = "altColor"; -var rowColor = "rowColor"; -var tableTab = "tableTab"; -var activeTableTab = "activeTableTab"; -</script> -<noscript> -<div>JavaScript is disabled on your browser.</div> -</noscript> -<!-- ========= START OF TOP NAVBAR ======= --> -<div class="topNav"><a name="navbar.top"> -<!-- --> -</a> -<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div> -<a name="navbar.top.firstrow"> -<!-- --> -</a> -<ul class="navList" title="Navigation"> -<li><a href="../../../overview-summary.html">Overview</a></li> -<li><a href="package-summary.html">Package</a></li> -<li class="navBarCell1Rev">Class</li> -<li><a href="package-tree.html">Tree</a></li> -<li><a href="../../../deprecated-list.html">Deprecated</a></li> -<li><a href="../../../index-all.html">Index</a></li> -<li><a href="../../../help-doc.html">Help</a></li> -</ul> -</div> -<div class="subNav"> -<ul class="navList"> -<li>Prev Class</li> -<li><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> -</ul> -<ul class="navList"> -<li><a href="../../../index.html?de/griefed/serverpackcreator/CLISetup.html" target="_top">Frames</a></li> -<li><a href="CLISetup.html" target="_top">No Frames</a></li> -</ul> -<ul class="navList" id="allclasses_navbar_top"> -<li><a href="../../../allclasses-noframe.html">All Classes</a></li> -</ul> -<div> -<script type="text/javascript"><!-- - allClassesLink = document.getElementById("allclasses_navbar_top"); - if(window==top) { - allClassesLink.style.display = "block"; - } - else { - allClassesLink.style.display = "none"; - } - //--> -</script> -</div> -<div> -<ul class="subNavList"> -<li>Summary: </li> -<li>Nested | </li> -<li><a href="#field.summary">Field</a> | </li> -<li><a href="#constructor.summary">Constr</a> | </li> -<li><a href="#method.summary">Method</a></li> -</ul> -<ul class="subNavList"> -<li>Detail: </li> -<li><a href="#field.detail">Field</a> | </li> -<li><a href="#constructor.detail">Constr</a> | </li> -<li><a href="#method.detail">Method</a></li> -</ul> -</div> -<a name="skip.navbar.top"> -<!-- --> -</a></div> -<!-- ========= END OF TOP NAVBAR ========= --> -<!-- ======== START OF CLASS DATA ======== --> -<div class="header"> -<div class="subTitle">de.griefed.serverpackcreator</div> -<h2 title="Class CLISetup" class="title">Class CLISetup</h2> -</div> -<div class="contentContainer"> -<ul class="inheritance"> -<li>java.lang.Object</li> -<li> -<ul class="inheritance"> -<li>de.griefed.serverpackcreator.CLISetup</li> -</ul> -</li> -</ul> -<div class="description"> -<ul class="blockList"> -<li class="blockList"> -<hr> -<br> -<pre>public class <span class="typeNameLabel">CLISetup</span> -extends java.lang.Object</pre> -</li> -</ul> -</div> -<div class="summary"> -<ul class="blockList"> -<li class="blockList"> -<!-- =========== FIELD SUMMARY =========== --> -<ul class="blockList"> -<li class="blockList"><a name="field.summary"> -<!-- --> -</a> -<h3>Field Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation"> -<caption><span>Fields</span><span class="tabEnd"> </span></caption> -<tr> -<th class="colFirst" scope="col">Modifier and Type</th> -<th class="colLast" scope="col">Field and Description</th> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CLISetup.html#appLogger">appLogger</a></span></code> </td> -</tr> -</table> -</li> -</ul> -<!-- ======== CONSTRUCTOR SUMMARY ======== --> -<ul class="blockList"> -<li class="blockList"><a name="constructor.summary"> -<!-- --> -</a> -<h3>Constructor Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> -<caption><span>Constructors</span><span class="tabEnd"> </span></caption> -<tr> -<th class="colOne" scope="col">Constructor and Description</th> -</tr> -<tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CLISetup.html#CLISetup--">CLISetup</a></span>()</code> </td> -</tr> -</table> -</li> -</ul> -<!-- ========== METHOD SUMMARY =========== --> -<ul class="blockList"> -<li class="blockList"><a name="method.summary"> -<!-- --> -</a> -<h3>Method Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> -<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> -<tr> -<th class="colFirst" scope="col">Modifier and Type</th> -<th class="colLast" scope="col">Method and Description</th> -</tr> -<tr id="i0" class="altColor"> -<td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CLISetup.html#buildString-java.lang.String...-">buildString</a></span>(java.lang.String... args)</code> -<div class="block">Converts list of strings into concatenated string.</div> -</td> -</tr> -<tr id="i1" class="rowColor"> -<td class="colFirst"><code>private boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CLISetup.html#readBoolean--">readBoolean</a></span>()</code> -<div class="block">A helper method for config setup.</div> -</td> -</tr> -<tr id="i2" class="altColor"> -<td class="colFirst"><code>private java.util.List<java.lang.String></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CLISetup.html#readStringArray--">readStringArray</a></span>()</code> -<div class="block">A helper method for config setup.</div> -</td> -</tr> -<tr id="i3" class="rowColor"> -<td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CLISetup.html#setup--">setup</a></span>()</code> -<div class="block">CLI for config file generation.</div> -</td> -</tr> -</table> -<ul class="blockList"> -<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> -<!-- --> -</a> -<h3>Methods inherited from class java.lang.Object</h3> -<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li> -</ul> -</li> -</ul> -</li> -</ul> -</div> -<div class="details"> -<ul class="blockList"> -<li class="blockList"> -<!-- ============ FIELD DETAIL =========== --> -<ul class="blockList"> -<li class="blockList"><a name="field.detail"> -<!-- --> -</a> -<h3>Field Detail</h3> -<a name="appLogger"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>appLogger</h4> -<pre>private static final org.apache.logging.log4j.Logger appLogger</pre> -</li> -</ul> -</li> -</ul> -<!-- ========= CONSTRUCTOR DETAIL ======== --> -<ul class="blockList"> -<li class="blockList"><a name="constructor.detail"> -<!-- --> -</a> -<h3>Constructor Detail</h3> -<a name="CLISetup--"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>CLISetup</h4> -<pre>public CLISetup()</pre> -</li> -</ul> -</li> -</ul> -<!-- ============ METHOD DETAIL ========== --> -<ul class="blockList"> -<li class="blockList"><a name="method.detail"> -<!-- --> -</a> -<h3>Method Detail</h3> -<a name="setup--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>setup</h4> -<pre>void setup()</pre> -<div class="block">CLI for config file generation. Prompts user to enter config file values and then generates a config file with values entered by user.</div> -</li> -</ul> -<a name="readStringArray--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>readStringArray</h4> -<pre>private java.util.List<java.lang.String> readStringArray()</pre> -<div class="block">A helper method for config setup. Prompts user to enter the values that will be stored in arrays in config.</div> -<dl> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>String List. Returns list with user input values that will be stored in config.</dd> -</dl> -</li> -</ul> -<a name="buildString-java.lang.String...-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>buildString</h4> -<pre>public java.lang.String buildString(java.lang.String... args)</pre> -<div class="block">Converts list of strings into concatenated string.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>args</code> - Strings that will be concatenated into one string</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>String. Returns concatenated string that contains all provided values.</dd> -</dl> -</li> -</ul> -<a name="readBoolean--"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>readBoolean</h4> -<pre>private boolean readBoolean()</pre> -<div class="block">A helper method for config setup. Prompts user to enter boolean values that will be stored in config and checks entered values to prevent storing non-boolean values in boolean variables.</div> -<dl> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Converts to boolean and returns value entered by user that will be stored in config.</dd> -</dl> -</li> -</ul> -</li> -</ul> -</li> -</ul> -</div> -</div> -<!-- ========= END OF CLASS DATA ========= --> -<!-- ======= START OF BOTTOM NAVBAR ====== --> -<div class="bottomNav"><a name="navbar.bottom"> -<!-- --> -</a> -<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div> -<a name="navbar.bottom.firstrow"> -<!-- --> -</a> -<ul class="navList" title="Navigation"> -<li><a href="../../../overview-summary.html">Overview</a></li> -<li><a href="package-summary.html">Package</a></li> -<li class="navBarCell1Rev">Class</li> -<li><a href="package-tree.html">Tree</a></li> -<li><a href="../../../deprecated-list.html">Deprecated</a></li> -<li><a href="../../../index-all.html">Index</a></li> -<li><a href="../../../help-doc.html">Help</a></li> -</ul> -</div> -<div class="subNav"> -<ul class="navList"> -<li>Prev Class</li> -<li><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> -</ul> -<ul class="navList"> -<li><a href="../../../index.html?de/griefed/serverpackcreator/CLISetup.html" target="_top">Frames</a></li> -<li><a href="CLISetup.html" target="_top">No Frames</a></li> -</ul> -<ul class="navList" id="allclasses_navbar_bottom"> -<li><a href="../../../allclasses-noframe.html">All Classes</a></li> -</ul> -<div> -<script type="text/javascript"><!-- - allClassesLink = document.getElementById("allclasses_navbar_bottom"); - if(window==top) { - allClassesLink.style.display = "block"; - } - else { - allClassesLink.style.display = "none"; - } - //--> -</script> -</div> -<div> -<ul class="subNavList"> -<li>Summary: </li> -<li>Nested | </li> -<li><a href="#field.summary">Field</a> | </li> -<li><a href="#constructor.summary">Constr</a> | </li> -<li><a href="#method.summary">Method</a></li> -</ul> -<ul class="subNavList"> -<li>Detail: </li> -<li><a href="#field.detail">Field</a> | </li> -<li><a href="#constructor.detail">Constr</a> | </li> -<li><a href="#method.detail">Method</a></li> -</ul> -</div> -<a name="skip.navbar.bottom"> -<!-- --> -</a></div> -<!-- ======== END OF BOTTOM NAVBAR ======= --> -</body> -</html> diff --git a/docs/de/griefed/serverpackcreator/ConfigCheck.html b/docs/de/griefed/serverpackcreator/ConfigCheck.html deleted file mode 100644 index 26624ccde..000000000 --- a/docs/de/griefed/serverpackcreator/ConfigCheck.html +++ /dev/null @@ -1,744 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<!-- NewPage --> -<html lang="de"> -<head> -<!-- Generated by javadoc --> -<title>ConfigCheck (serverpackcreator API)</title> -<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style"> -<script type="text/javascript" src="../../../script.js"></script> -</head> -<body> -<script type="text/javascript"><!-- - try { - if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ConfigCheck (serverpackcreator API)"; - } - } - catch(err) { - } -//--> -var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10}; -var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; -var altColor = "altColor"; -var rowColor = "rowColor"; -var tableTab = "tableTab"; -var activeTableTab = "activeTableTab"; -</script> -<noscript> -<div>JavaScript is disabled on your browser.</div> -</noscript> -<!-- ========= START OF TOP NAVBAR ======= --> -<div class="topNav"><a name="navbar.top"> -<!-- --> -</a> -<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div> -<a name="navbar.top.firstrow"> -<!-- --> -</a> -<ul class="navList" title="Navigation"> -<li><a href="../../../overview-summary.html">Overview</a></li> -<li><a href="package-summary.html">Package</a></li> -<li class="navBarCell1Rev">Class</li> -<li><a href="package-tree.html">Tree</a></li> -<li><a href="../../../deprecated-list.html">Deprecated</a></li> -<li><a href="../../../index-all.html">Index</a></li> -<li><a href="../../../help-doc.html">Help</a></li> -</ul> -</div> -<div class="subNav"> -<ul class="navList"> -<li><a href="../../../de/griefed/serverpackcreator/CLISetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> -</ul> -<ul class="navList"> -<li><a href="../../../index.html?de/griefed/serverpackcreator/ConfigCheck.html" target="_top">Frames</a></li> -<li><a href="ConfigCheck.html" target="_top">No Frames</a></li> -</ul> -<ul class="navList" id="allclasses_navbar_top"> -<li><a href="../../../allclasses-noframe.html">All Classes</a></li> -</ul> -<div> -<script type="text/javascript"><!-- - allClassesLink = document.getElementById("allclasses_navbar_top"); - if(window==top) { - allClassesLink.style.display = "block"; - } - else { - allClassesLink.style.display = "none"; - } - //--> -</script> -</div> -<div> -<ul class="subNavList"> -<li>Summary: </li> -<li>Nested | </li> -<li><a href="#field.summary">Field</a> | </li> -<li><a href="#constructor.summary">Constr</a> | </li> -<li><a href="#method.summary">Method</a></li> -</ul> -<ul class="subNavList"> -<li>Detail: </li> -<li><a href="#field.detail">Field</a> | </li> -<li><a href="#constructor.detail">Constr</a> | </li> -<li><a href="#method.detail">Method</a></li> -</ul> -</div> -<a name="skip.navbar.top"> -<!-- --> -</a></div> -<!-- ========= END OF TOP NAVBAR ========= --> -<!-- ======== START OF CLASS DATA ======== --> -<div class="header"> -<div class="subTitle">de.griefed.serverpackcreator</div> -<h2 title="Class ConfigCheck" class="title">Class ConfigCheck</h2> -</div> -<div class="contentContainer"> -<ul class="inheritance"> -<li>java.lang.Object</li> -<li> -<ul class="inheritance"> -<li>de.griefed.serverpackcreator.ConfigCheck</li> -</ul> -</li> -</ul> -<div class="description"> -<ul class="blockList"> -<li class="blockList"> -<hr> -<br> -<pre>public class <span class="typeNameLabel">ConfigCheck</span> -extends java.lang.Object</pre> -</li> -</ul> -</div> -<div class="summary"> -<ul class="blockList"> -<li class="blockList"> -<!-- =========== FIELD SUMMARY =========== --> -<ul class="blockList"> -<li class="blockList"><a name="field.summary"> -<!-- --> -</a> -<h3>Field Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation"> -<caption><span>Fields</span><span class="tabEnd"> </span></caption> -<tr> -<th class="colFirst" scope="col">Modifier and Type</th> -<th class="colLast" scope="col">Field and Description</th> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#appLogger">appLogger</a></span></code> </td> -</tr> -</table> -</li> -</ul> -<!-- ======== CONSTRUCTOR SUMMARY ======== --> -<ul class="blockList"> -<li class="blockList"><a name="constructor.summary"> -<!-- --> -</a> -<h3>Constructor Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> -<caption><span>Constructors</span><span class="tabEnd"> </span></caption> -<tr> -<th class="colOne" scope="col">Constructor and Description</th> -</tr> -<tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#ConfigCheck--">ConfigCheck</a></span>()</code> </td> -</tr> -</table> -</li> -</ul> -<!-- ========== METHOD SUMMARY =========== --> -<ul class="blockList"> -<li class="blockList"><a name="method.summary"> -<!-- --> -</a> -<h3>Method Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> -<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> -<tr> -<th class="colFirst" scope="col">Modifier and Type</th> -<th class="colLast" scope="col">Method and Description</th> -</tr> -<tr id="i0" class="altColor"> -<td class="colFirst"><code>boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#checkConfigFile-java.io.File-">checkConfigFile</a></span>(java.io.File configFile)</code> -<div class="block">Check the config file for configuration errors.</div> -</td> -</tr> -<tr id="i1" class="rowColor"> -<td class="colFirst"><code>(package private) boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#checkCopyDirs-java.util.List-java.lang.String-">checkCopyDirs</a></span>(java.util.List<java.lang.String> copyDirs, - java.lang.String modpackDir)</code> -<div class="block">Check whether the specified directories exist in the modpack directory.</div> -</td> -</tr> -<tr id="i2" class="altColor"> -<td class="colFirst"><code>(package private) boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#checkCurseForge-java.lang.String-">checkCurseForge</a></span>(java.lang.String modpackDir)</code> -<div class="block">Checks whether the modpackDir contains a valid projectID,fileID combination.</div> -</td> -</tr> -<tr id="i3" class="rowColor"> -<td class="colFirst"><code>(package private) boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#checkJavaPath-java.lang.String-">checkJavaPath</a></span>(java.lang.String pathToJava)</code> -<div class="block">Checks whether the correct path to the Java installation was set.</div> -</td> -</tr> -<tr id="i4" class="altColor"> -<td class="colFirst"><code>(package private) boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#checkModloader-java.lang.String-">checkModloader</a></span>(java.lang.String modloader)</code> -<div class="block">Checks whether Forge or Fabric were specified as modloader.</div> -</td> -</tr> -<tr id="i5" class="rowColor"> -<td class="colFirst"><code>(package private) boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#checkModloaderVersion-java.lang.String-java.lang.String-">checkModloaderVersion</a></span>(java.lang.String modloader, - java.lang.String modloaderVersion)</code> -<div class="block">Determine whether to check for correct Forge or correct Fabric modloader version.</div> -</td> -</tr> -<tr id="i6" class="altColor"> -<td class="colFirst"><code>(package private) boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#checkModpackDir-java.lang.String-">checkModpackDir</a></span>(java.lang.String modpackDir)</code> -<div class="block">Check whether the specified modpack directory exists.</div> -</td> -</tr> -<tr id="i7" class="rowColor"> -<td class="colFirst"><code>private boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#containsFabric-de.griefed.serverpackcreator.curseforgemodpack.Modpack-">containsFabric</a></span>(<a href="../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a> modpack)</code> -<div class="block">Checks for the Jumploader mod in the project list of the modpack.</div> -</td> -</tr> -<tr id="i8" class="altColor"> -<td class="colFirst"><code>boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#convertToBoolean-java.lang.String-">convertToBoolean</a></span>(java.lang.String stringBoolean)</code> -<div class="block">Converts various strings to booleans.</div> -</td> -</tr> -<tr id="i9" class="rowColor"> -<td class="colFirst"><code>(package private) java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#getJavaPath-java.lang.String-">getJavaPath</a></span>(java.lang.String enteredPath)</code> -<div class="block">Automatically set Java path if none is specified</div> -</td> -</tr> -<tr id="i10" class="altColor"> -<td class="colFirst"><code>private boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#isCurse--">isCurse</a></span>()</code> -<div class="block">Checks whether the specified projectID,fileID combination is a valid CurseForge project and file and whether the resulting directory exists.</div> -</td> -</tr> -<tr id="i11" class="rowColor"> -<td class="colFirst"><code>private boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#isDir-java.lang.String-">isDir</a></span>(java.lang.String modpackDir)</code> -<div class="block">Checks whether the specified modpack exists.</div> -</td> -</tr> -<tr id="i12" class="altColor"> -<td class="colFirst"><code>(package private) boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#isFabricVersionCorrect-java.lang.String-">isFabricVersionCorrect</a></span>(java.lang.String fabricVersion)</code> -<div class="block">Check the specified Fabric version against Fabric's version manifest to validate the version.</div> -</td> -</tr> -<tr id="i13" class="rowColor"> -<td class="colFirst"><code>(package private) boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#isForgeVersionCorrect-java.lang.String-">isForgeVersionCorrect</a></span>(java.lang.String forgeVersion)</code> -<div class="block">Checks Forge version for errors (basically for its availability in Forge manifest)</div> -</td> -</tr> -<tr id="i14" class="altColor"> -<td class="colFirst"><code>(package private) boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#isMinecraftVersionCorrect-java.lang.String-">isMinecraftVersionCorrect</a></span>(java.lang.String minecraftVersion)</code> -<div class="block">Check the specified Minecraft version against Mojang's version manifest to validate the version.</div> -</td> -</tr> -<tr id="i15" class="rowColor"> -<td class="colFirst"><code>private java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#latestFabricLoader-java.lang.String-">latestFabricLoader</a></span>(java.lang.String modpackDir)</code> -<div class="block">Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer.</div> -</td> -</tr> -<tr id="i16" class="altColor"> -<td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#printConfig-java.lang.String-java.util.List-java.util.List-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-">printConfig</a></span>(java.lang.String modpackDirectory, - java.util.List<java.lang.String> clientsideMods, - java.util.List<java.lang.String> copyDirectories, - boolean installServer, - java.lang.String javaInstallPath, - java.lang.String minecraftVer, - java.lang.String modloader, - java.lang.String modloaderVersion, - boolean includeIcon, - boolean includeProperties, - boolean includeScripts, - boolean includeZip)</code> -<div class="block">Prints the configuration.</div> -</td> -</tr> -<tr id="i17" class="rowColor"> -<td class="colFirst"><code>(package private) java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#setModloader-java.lang.String-">setModloader</a></span>(java.lang.String modloader)</code> -<div class="block">Standardize the specified modloader.</div> -</td> -</tr> -<tr id="i18" class="altColor"> -<td class="colFirst"><code>private java.util.List<java.lang.String></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html#suggestCopyDirs-java.lang.String-">suggestCopyDirs</a></span>(java.lang.String modpackDir)</code> -<div class="block">Creates a list of suggested directories to include in server pack which is later on written to a new configuration file.</div> -</td> -</tr> -</table> -<ul class="blockList"> -<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> -<!-- --> -</a> -<h3>Methods inherited from class java.lang.Object</h3> -<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li> -</ul> -</li> -</ul> -</li> -</ul> -</div> -<div class="details"> -<ul class="blockList"> -<li class="blockList"> -<!-- ============ FIELD DETAIL =========== --> -<ul class="blockList"> -<li class="blockList"><a name="field.detail"> -<!-- --> -</a> -<h3>Field Detail</h3> -<a name="appLogger"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>appLogger</h4> -<pre>private static final org.apache.logging.log4j.Logger appLogger</pre> -</li> -</ul> -</li> -</ul> -<!-- ========= CONSTRUCTOR DETAIL ======== --> -<ul class="blockList"> -<li class="blockList"><a name="constructor.detail"> -<!-- --> -</a> -<h3>Constructor Detail</h3> -<a name="ConfigCheck--"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>ConfigCheck</h4> -<pre>public ConfigCheck()</pre> -</li> -</ul> -</li> -</ul> -<!-- ============ METHOD DETAIL ========== --> -<ul class="blockList"> -<li class="blockList"><a name="method.detail"> -<!-- --> -</a> -<h3>Method Detail</h3> -<a name="checkConfigFile-java.io.File-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>checkConfigFile</h4> -<pre>public boolean checkConfigFile(java.io.File configFile)</pre> -<div class="block">Check the config file for configuration errors. If an error is found, the log file will tell the user where the error is, so they can fix their config.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>configFile</code> - The configuration file to check. Must be a valid configuration file for serverpackcreator to work.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Return true if error is found in user's configuration. If an error is found, the application will exit in main.</dd> -</dl> -</li> -</ul> -<a name="isDir-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>isDir</h4> -<pre>private boolean isDir(java.lang.String modpackDir)</pre> -<div class="block">Checks whether the specified modpack exists. If it does, the config file is checked for errors. Should any error be found, it will return true so the configCheck method informs the user about an invalid configuration.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. Should an existing modpack be specified, all configurations are read from local file and the server pack is created, if config is correct.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if an error is found during configuration check. False if the configuration is deemed valid.</dd> -</dl> -</li> -</ul> -<a name="isCurse--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>isCurse</h4> -<pre>private boolean isCurse()</pre> -<div class="block">Checks whether the specified projectID,fileID combination is a valid CurseForge project and file and whether the resulting directory exists. If the directory does not exist, make calls to other methods which create the modpack. Parses information gathered from the modpack to later replace the previous configuration file.</div> -<dl> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Currently always returns true so serverpackcreator does not go straight into server pack creation after the creation of the specified modpack. Gives the user the chance to check their config before actually creating the server pack.</dd> -</dl> -</li> -</ul> -<a name="containsFabric-de.griefed.serverpackcreator.curseforgemodpack.Modpack-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>containsFabric</h4> -<pre>private boolean containsFabric(<a href="../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a> modpack)</pre> -<div class="block">Checks for the Jumploader mod in the project list of the modpack. If Jumploader is found, the modloader in the configuration will be set to Fabric.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpack</code> - Object. Contains information about our modpack. Used to get a list of all projects used in the modpack.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if Jumploader is found, false if not found.</dd> -</dl> -</li> -</ul> -<a name="suggestCopyDirs-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>suggestCopyDirs</h4> -<pre>private java.util.List<java.lang.String> suggestCopyDirs(java.lang.String modpackDir)</pre> -<div class="block">Creates a list of suggested directories to include in server pack which is later on written to a new configuration file.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. The directory for which to gather a list of directories.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>List, String. Returns a list of directories inside the modpack, excluding well known client-side only directories which would not be needed by a server pack. If you have suggestions to this list, open an issue on https://github.com/Griefed/ServerPackCreator/issues</dd> -</dl> -</li> -</ul> -<a name="checkCurseForge-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>checkCurseForge</h4> -<pre>boolean checkCurseForge(java.lang.String modpackDir)</pre> -<div class="block">Checks whether the modpackDir contains a valid projectID,fileID combination. ProjectIDs must be at least two digits long, fileIDs must be at least 5 digits long. Must be numbers separated by a ",".</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. The string which to check for a valid projectID,fileID combination.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the combination is deemed valid, false if not.</dd> -</dl> -</li> -</ul> -<a name="convertToBoolean-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>convertToBoolean</h4> -<pre>public boolean convertToBoolean(java.lang.String stringBoolean)</pre> -<div class="block">Converts various strings to booleans.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>stringBoolean</code> - String. The string which should be converted to boolean if it matches certain patterns.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns the corresponding boolean if match with pattern was found. If no match is found, assume and return false.</dd> -</dl> -</li> -</ul> -<a name="printConfig-java.lang.String-java.util.List-java.util.List-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>printConfig</h4> -<pre>void printConfig(java.lang.String modpackDirectory, - java.util.List<java.lang.String> clientsideMods, - java.util.List<java.lang.String> copyDirectories, - boolean installServer, - java.lang.String javaInstallPath, - java.lang.String minecraftVer, - java.lang.String modloader, - java.lang.String modloaderVersion, - boolean includeIcon, - boolean includeProperties, - boolean includeScripts, - boolean includeZip)</pre> -<div class="block">Prints the configuration.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDirectory</code> - String. Path to modpack directory.</dd> -<dd><code>clientsideMods</code> - String List. List of clientside mods to delete from server pack.</dd> -<dd><code>copyDirectories</code> - String List. List of directories to copy to server pack.</dd> -<dd><code>installServer</code> - Boolean. Whether to install the modloader server.</dd> -<dd><code>javaInstallPath</code> - String. Path to Java installation needed to install modloader server.</dd> -<dd><code>minecraftVer</code> - String. Minecraft version the modpack uses.</dd> -<dd><code>modloader</code> - String. Modloader the modpack uses.</dd> -<dd><code>modloaderVersion</code> - String. Version of the modloader the modpack uses.</dd> -<dd><code>includeIcon</code> - Boolean. Whether to include the server-icon.png in the server pack.</dd> -<dd><code>includeProperties</code> - Boolean. Whether to include the server.properties in the server pack.</dd> -<dd><code>includeScripts</code> - Boolean. Whether to include start scripts for the specified modloader in the server pack.</dd> -<dd><code>includeZip</code> - Boolean. Whether to create a zip-archive of the server pack.</dd> -</dl> -</li> -</ul> -<a name="checkModpackDir-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>checkModpackDir</h4> -<pre>boolean checkModpackDir(java.lang.String modpackDir)</pre> -<div class="block">Check whether the specified modpack directory exists.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. The path to the modpack directory.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the directory exists. False if not.</dd> -</dl> -</li> -</ul> -<a name="checkCopyDirs-java.util.List-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>checkCopyDirs</h4> -<pre>boolean checkCopyDirs(java.util.List<java.lang.String> copyDirs, - java.lang.String modpackDir)</pre> -<div class="block">Check whether the specified directories exist in the modpack directory.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>copyDirs</code> - String. The directories for which to check.</dd> -<dd><code>modpackDir</code> - String. The path to the modpack directory in which to check for directories.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if all directories exist. False if any one does not.</dd> -</dl> -</li> -</ul> -<a name="getJavaPath-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getJavaPath</h4> -<pre>java.lang.String getJavaPath(java.lang.String enteredPath)</pre> -<div class="block">Automatically set Java path if none is specified</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>enteredPath</code> - String. The path to check whether it is empty.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>String. Return the entered Java path if it is not empty. Automatically determine path if empty.</dd> -</dl> -</li> -</ul> -<a name="checkJavaPath-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>checkJavaPath</h4> -<pre>boolean checkJavaPath(java.lang.String pathToJava)</pre> -<div class="block">Checks whether the correct path to the Java installation was set.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>pathToJava</code> - String. The path to check for java.exe or java.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the path was correctly set. False if not.</dd> -</dl> -</li> -</ul> -<a name="checkModloader-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>checkModloader</h4> -<pre>boolean checkModloader(java.lang.String modloader)</pre> -<div class="block">Checks whether Forge or Fabric were specified as modloader.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modloader</code> - String. Check case insensitive for Forge or Fabric.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the specified modloader is either Forge or Fabric. False if not.</dd> -</dl> -</li> -</ul> -<a name="setModloader-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>setModloader</h4> -<pre>java.lang.String setModloader(java.lang.String modloader)</pre> -<div class="block">Standardize the specified modloader.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modloader</code> - String. If any case of Forge or Fabric was specified, return "Forge" or "Fabric", so users can enter "forge" or "fabric" or any combination of upper- and lowercase letters..</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>String. Returns a standardized String of the specified modloader.</dd> -</dl> -</li> -</ul> -<a name="checkModloaderVersion-java.lang.String-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>checkModloaderVersion</h4> -<pre>boolean checkModloaderVersion(java.lang.String modloader, - java.lang.String modloaderVersion)</pre> -<div class="block">Determine whether to check for correct Forge or correct Fabric modloader version.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modloader</code> - String. Determines whether the check for Forge or Fabric is called.</dd> -<dd><code>modloaderVersion</code> - String. The version of the modloader to check for.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the specified modloader version is correct. False if not.</dd> -</dl> -</li> -</ul> -<a name="isMinecraftVersionCorrect-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>isMinecraftVersionCorrect</h4> -<pre>boolean isMinecraftVersionCorrect(java.lang.String minecraftVersion)</pre> -<div class="block">Check the specified Minecraft version against Mojang's version manifest to validate the version.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>minecraftVersion</code> - Minecraft version to check.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the specified Minecraft version could be found in Mojang's manifest. False if not.</dd> -</dl> -</li> -</ul> -<a name="isFabricVersionCorrect-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>isFabricVersionCorrect</h4> -<pre>boolean isFabricVersionCorrect(java.lang.String fabricVersion)</pre> -<div class="block">Check the specified Fabric version against Fabric's version manifest to validate the version.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>fabricVersion</code> - String. The Fabric version to check.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the specified Fabric version could be found in Fabric's manifest. False if not.</dd> -</dl> -</li> -</ul> -<a name="isForgeVersionCorrect-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>isForgeVersionCorrect</h4> -<pre>boolean isForgeVersionCorrect(java.lang.String forgeVersion)</pre> -<div class="block">Checks Forge version for errors (basically for its availability in Forge manifest)</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>forgeVersion</code> - String. The Forge version to check.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if Forge version correct and false if it isn't correct.</dd> -</dl> -</li> -</ul> -<a name="latestFabricLoader-java.lang.String-"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>latestFabricLoader</h4> -<pre>private java.lang.String latestFabricLoader(java.lang.String modpackDir)</pre> -<div class="block">Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack The directory where the Fabric installer will be placed in.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the download was successful. False if not.</dd> -</dl> -</li> -</ul> -</li> -</ul> -</li> -</ul> -</div> -</div> -<!-- ========= END OF CLASS DATA ========= --> -<!-- ======= START OF BOTTOM NAVBAR ====== --> -<div class="bottomNav"><a name="navbar.bottom"> -<!-- --> -</a> -<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div> -<a name="navbar.bottom.firstrow"> -<!-- --> -</a> -<ul class="navList" title="Navigation"> -<li><a href="../../../overview-summary.html">Overview</a></li> -<li><a href="package-summary.html">Package</a></li> -<li class="navBarCell1Rev">Class</li> -<li><a href="package-tree.html">Tree</a></li> -<li><a href="../../../deprecated-list.html">Deprecated</a></li> -<li><a href="../../../index-all.html">Index</a></li> -<li><a href="../../../help-doc.html">Help</a></li> -</ul> -</div> -<div class="subNav"> -<ul class="navList"> -<li><a href="../../../de/griefed/serverpackcreator/CLISetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> -</ul> -<ul class="navList"> -<li><a href="../../../index.html?de/griefed/serverpackcreator/ConfigCheck.html" target="_top">Frames</a></li> -<li><a href="ConfigCheck.html" target="_top">No Frames</a></li> -</ul> -<ul class="navList" id="allclasses_navbar_bottom"> -<li><a href="../../../allclasses-noframe.html">All Classes</a></li> -</ul> -<div> -<script type="text/javascript"><!-- - allClassesLink = document.getElementById("allclasses_navbar_bottom"); - if(window==top) { - allClassesLink.style.display = "block"; - } - else { - allClassesLink.style.display = "none"; - } - //--> -</script> -</div> -<div> -<ul class="subNavList"> -<li>Summary: </li> -<li>Nested | </li> -<li><a href="#field.summary">Field</a> | </li> -<li><a href="#constructor.summary">Constr</a> | </li> -<li><a href="#method.summary">Method</a></li> -</ul> -<ul class="subNavList"> -<li>Detail: </li> -<li><a href="#field.detail">Field</a> | </li> -<li><a href="#constructor.detail">Constr</a> | </li> -<li><a href="#method.detail">Method</a></li> -</ul> -</div> -<a name="skip.navbar.bottom"> -<!-- --> -</a></div> -<!-- ======== END OF BOTTOM NAVBAR ======= --> -</body> -</html> diff --git a/docs/de/griefed/serverpackcreator/Configuration.html b/docs/de/griefed/serverpackcreator/Configuration.html new file mode 100644 index 000000000..7850ce453 --- /dev/null +++ b/docs/de/griefed/serverpackcreator/Configuration.html @@ -0,0 +1,1598 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!-- NewPage --> +<html lang="de"> +<head> +<!-- Generated by javadoc --> +<title>Configuration (serverpackcreator API)</title> +<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style"> +<script type="text/javascript" src="../../../script.js"></script> +</head> +<body> +<script type="text/javascript"><!-- + try { + if (location.href.indexOf('is-external=true') == -1) { + parent.document.title="Configuration (serverpackcreator API)"; + } + } + catch(err) { + } +//--> +var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10}; +var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; +var altColor = "altColor"; +var rowColor = "rowColor"; +var tableTab = "tableTab"; +var activeTableTab = "activeTableTab"; +</script> +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<!-- ========= START OF TOP NAVBAR ======= --> +<div class="topNav"><a name="navbar.top"> +<!-- --> +</a> +<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div> +<a name="navbar.top.firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../overview-summary.html">Overview</a></li> +<li><a href="package-summary.html">Package</a></li> +<li class="navBarCell1Rev">Class</li> +<li><a href="package-tree.html">Tree</a></li> +<li><a href="../../../deprecated-list.html">Deprecated</a></li> +<li><a href="../../../index-all.html">Index</a></li> +<li><a href="../../../help-doc.html">Help</a></li> +</ul> +</div> +<div class="subNav"> +<ul class="navList"> +<li>Prev Class</li> +<li><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../index.html?de/griefed/serverpackcreator/Configuration.html" target="_top">Frames</a></li> +<li><a href="Configuration.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_top"> +<li><a href="../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_top"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Nested | </li> +<li><a href="#field.summary">Field</a> | </li> +<li><a href="#constructor.summary">Constr</a> | </li> +<li><a href="#method.summary">Method</a></li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li><a href="#field.detail">Field</a> | </li> +<li><a href="#constructor.detail">Constr</a> | </li> +<li><a href="#method.detail">Method</a></li> +</ul> +</div> +<a name="skip.navbar.top"> +<!-- --> +</a></div> +<!-- ========= END OF TOP NAVBAR ========= --> +<!-- ======== START OF CLASS DATA ======== --> +<div class="header"> +<div class="subTitle">de.griefed.serverpackcreator</div> +<h2 title="Class Configuration" class="title">Class Configuration</h2> +</div> +<div class="contentContainer"> +<ul class="inheritance"> +<li>java.lang.Object</li> +<li> +<ul class="inheritance"> +<li>de.griefed.serverpackcreator.Configuration</li> +</ul> +</li> +</ul> +<div class="description"> +<ul class="blockList"> +<li class="blockList"> +<hr> +<br> +<pre>public class <span class="typeNameLabel">Configuration</span> +extends java.lang.Object</pre> +</li> +</ul> +</div> +<div class="summary"> +<ul class="blockList"> +<li class="blockList"> +<!-- =========== FIELD SUMMARY =========== --> +<ul class="blockList"> +<li class="blockList"><a name="field.summary"> +<!-- --> +</a> +<h3>Field Summary</h3> +<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation"> +<caption><span>Fields</span><span class="tabEnd"> </span></caption> +<tr> +<th class="colFirst" scope="col">Modifier and Type</th> +<th class="colLast" scope="col">Field and Description</th> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#appLogger">appLogger</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.util.List<java.lang.String></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#clientMods">clientMods</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private com.typesafe.config.Config</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#config">config</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#configFile">configFile</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.util.List<java.lang.String></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#copyDirs">copyDirs</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.util.List<java.lang.String></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#fallbackModsList">fallbackModsList</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.lang.Boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#includeServerIcon">includeServerIcon</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.lang.Boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#includeServerInstallation">includeServerInstallation</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.lang.Boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#includeServerProperties">includeServerProperties</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.lang.Boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#includeStartScripts">includeStartScripts</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.lang.Boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#includeZipCreation">includeZipCreation</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#javaPath">javaPath</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#localizationManager">localizationManager</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#minecraftVersion">minecraftVersion</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#modLoader">modLoader</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#modLoaderVersion">modLoaderVersion</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#modpackDir">modpackDir</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#oldConfigFile">oldConfigFile</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private int</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#projectFileID">projectFileID</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private int</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#projectID">projectID</a></span></code> </td> +</tr> +</table> +</li> +</ul> +<!-- ======== CONSTRUCTOR SUMMARY ======== --> +<ul class="blockList"> +<li class="blockList"><a name="constructor.summary"> +<!-- --> +</a> +<h3>Constructor Summary</h3> +<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> +<caption><span>Constructors</span><span class="tabEnd"> </span></caption> +<tr> +<th class="colOne" scope="col">Constructor and Description</th> +</tr> +<tr class="altColor"> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#Configuration-de.griefed.serverpackcreator.i18n.LocalizationManager-">Configuration</a></span>(<a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</code> </td> +</tr> +</table> +</li> +</ul> +<!-- ========== METHOD SUMMARY =========== --> +<ul class="blockList"> +<li class="blockList"><a name="method.summary"> +<!-- --> +</a> +<h3>Method Summary</h3> +<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> +<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> +<tr> +<th class="colFirst" scope="col">Modifier and Type</th> +<th class="colLast" scope="col">Method and Description</th> +</tr> +<tr id="i0" class="altColor"> +<td class="colFirst"><code>java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#buildString-java.lang.String...-">buildString</a></span>(java.lang.String... args)</code> +<div class="block">Converts list of strings into concatenated string.</div> +</td> +</tr> +<tr id="i1" class="rowColor"> +<td class="colFirst"><code>boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-">checkConfigFile</a></span>(java.io.File configFile)</code> +<div class="block">Check the config file for configuration errors.</div> +</td> +</tr> +<tr id="i2" class="altColor"> +<td class="colFirst"><code>(package private) boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#checkCopyDirs-java.util.List-java.lang.String-">checkCopyDirs</a></span>(java.util.List<java.lang.String> copyDirs, + java.lang.String modpackDir)</code> +<div class="block">Check whether the specified directories exist in the modpack directory.</div> +</td> +</tr> +<tr id="i3" class="rowColor"> +<td class="colFirst"><code>(package private) boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#checkCurseForge-java.lang.String-">checkCurseForge</a></span>(java.lang.String modpackDir)</code> +<div class="block">Checks whether the modpackDir contains a valid projectID,fileID combination.</div> +</td> +</tr> +<tr id="i4" class="altColor"> +<td class="colFirst"><code>(package private) boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#checkJavaPath-java.lang.String-">checkJavaPath</a></span>(java.lang.String pathToJava)</code> +<div class="block">Checks whether the correct path to the Java installation was set.</div> +</td> +</tr> +<tr id="i5" class="rowColor"> +<td class="colFirst"><code>(package private) boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#checkModloader-java.lang.String-">checkModloader</a></span>(java.lang.String modloader)</code> +<div class="block">Checks whether Forge or Fabric were specified as modloader.</div> +</td> +</tr> +<tr id="i6" class="altColor"> +<td class="colFirst"><code>(package private) boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#checkModloaderVersion-java.lang.String-java.lang.String-">checkModloaderVersion</a></span>(java.lang.String modloader, + java.lang.String modloaderVersion)</code> +<div class="block">Determine whether to check for correct Forge or correct Fabric modloader version.</div> +</td> +</tr> +<tr id="i7" class="rowColor"> +<td class="colFirst"><code>(package private) boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#checkModpackDir-java.lang.String-">checkModpackDir</a></span>(java.lang.String modpackDir)</code> +<div class="block">Check whether the specified modpack directory exists.</div> +</td> +</tr> +<tr id="i8" class="altColor"> +<td class="colFirst"><code>private boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#containsFabric-de.griefed.serverpackcreator.curseforgemodpack.CurseModpack-">containsFabric</a></span>(<a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a> modpack)</code> +<div class="block">Checks for the Jumploader mod in the project list of the modpack.</div> +</td> +</tr> +<tr id="i9" class="rowColor"> +<td class="colFirst"><code>boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#convertToBoolean-java.lang.String-">convertToBoolean</a></span>(java.lang.String stringBoolean)</code> +<div class="block">Converts various strings to booleans.</div> +</td> +</tr> +<tr id="i10" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#createConfigurationFile--">createConfigurationFile</a></span>()</code> +<div class="block">Generate new configuration file from CLI input.</div> +</td> +</tr> +<tr id="i11" class="rowColor"> +<td class="colFirst"><code>(package private) java.util.List<java.lang.String></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getClientMods--">getClientMods</a></span>()</code> </td> +</tr> +<tr id="i12" class="altColor"> +<td class="colFirst"><code>com.typesafe.config.Config</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getConfig--">getConfig</a></span>()</code> </td> +</tr> +<tr id="i13" class="rowColor"> +<td class="colFirst"><code>java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getConfigFile--">getConfigFile</a></span>()</code> </td> +</tr> +<tr id="i14" class="altColor"> +<td class="colFirst"><code>(package private) java.util.List<java.lang.String></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getCopyDirs--">getCopyDirs</a></span>()</code> </td> +</tr> +<tr id="i15" class="rowColor"> +<td class="colFirst"><code>(package private) java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getFabricManifestUrl--">getFabricManifestUrl</a></span>()</code> </td> +</tr> +<tr id="i16" class="altColor"> +<td class="colFirst"><code>(package private) java.util.List<java.lang.String></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getFallbackModsList--">getFallbackModsList</a></span>()</code> </td> +</tr> +<tr id="i17" class="rowColor"> +<td class="colFirst"><code>(package private) java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getForgeManifestUrl--">getForgeManifestUrl</a></span>()</code> </td> +</tr> +<tr id="i18" class="altColor"> +<td class="colFirst"><code>(package private) boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeServerIcon--">getIncludeServerIcon</a></span>()</code> </td> +</tr> +<tr id="i19" class="rowColor"> +<td class="colFirst"><code>(package private) boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeServerInstallation--">getIncludeServerInstallation</a></span>()</code> </td> +</tr> +<tr id="i20" class="altColor"> +<td class="colFirst"><code>(package private) boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeServerProperties--">getIncludeServerProperties</a></span>()</code> </td> +</tr> +<tr id="i21" class="rowColor"> +<td class="colFirst"><code>(package private) boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeStartScripts--">getIncludeStartScripts</a></span>()</code> </td> +</tr> +<tr id="i22" class="altColor"> +<td class="colFirst"><code>(package private) boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeZipCreation--">getIncludeZipCreation</a></span>()</code> </td> +</tr> +<tr id="i23" class="rowColor"> +<td class="colFirst"><code>(package private) java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getJavaPath--">getJavaPath</a></span>()</code> </td> +</tr> +<tr id="i24" class="altColor"> +<td class="colFirst"><code>(package private) java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getJavaPath-java.lang.String-">getJavaPath</a></span>(java.lang.String enteredPath)</code> +<div class="block">Automatically set Java path if none is specified</div> +</td> +</tr> +<tr id="i25" class="rowColor"> +<td class="colFirst"><code>(package private) java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getMinecraftManifestUrl--">getMinecraftManifestUrl</a></span>()</code> </td> +</tr> +<tr id="i26" class="altColor"> +<td class="colFirst"><code>(package private) java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getMinecraftVersion--">getMinecraftVersion</a></span>()</code> </td> +</tr> +<tr id="i27" class="rowColor"> +<td class="colFirst"><code>(package private) java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getModLoader--">getModLoader</a></span>()</code> </td> +</tr> +<tr id="i28" class="altColor"> +<td class="colFirst"><code>(package private) java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getModLoaderVersion--">getModLoaderVersion</a></span>()</code> </td> +</tr> +<tr id="i29" class="rowColor"> +<td class="colFirst"><code>(package private) java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getModpackDir--">getModpackDir</a></span>()</code> </td> +</tr> +<tr id="i30" class="altColor"> +<td class="colFirst"><code>java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getOldConfigFile--">getOldConfigFile</a></span>()</code> </td> +</tr> +<tr id="i31" class="rowColor"> +<td class="colFirst"><code>(package private) int</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getProjectFileID--">getProjectFileID</a></span>()</code> </td> +</tr> +<tr id="i32" class="altColor"> +<td class="colFirst"><code>(package private) int</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getProjectID--">getProjectID</a></span>()</code> </td> +</tr> +<tr id="i33" class="rowColor"> +<td class="colFirst"><code>private boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--">isCurse</a></span>()</code> +<div class="block">Checks whether the specified projectID,fileID combination is a valid CurseForge project and file and whether the resulting directory exists.</div> +</td> +</tr> +<tr id="i34" class="altColor"> +<td class="colFirst"><code>private boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#isDir-java.lang.String-">isDir</a></span>(java.lang.String modpackDir)</code> +<div class="block">Checks whether the specified modpack exists.</div> +</td> +</tr> +<tr id="i35" class="rowColor"> +<td class="colFirst"><code>(package private) boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#isFabricVersionCorrect-java.lang.String-">isFabricVersionCorrect</a></span>(java.lang.String fabricVersion)</code> +<div class="block">Check the specified Fabric version against Fabric's version manifest to validate the version.</div> +</td> +</tr> +<tr id="i36" class="altColor"> +<td class="colFirst"><code>(package private) boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#isForgeVersionCorrect-java.lang.String-">isForgeVersionCorrect</a></span>(java.lang.String forgeVersion)</code> +<div class="block">Checks Forge version for errors (basically for its availability in Forge manifest)</div> +</td> +</tr> +<tr id="i37" class="rowColor"> +<td class="colFirst"><code>(package private) boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#isMinecraftVersionCorrect-java.lang.String-">isMinecraftVersionCorrect</a></span>(java.lang.String minecraftVersion)</code> +<div class="block">Check the specified Minecraft version against Mojang's version manifest to validate the version.</div> +</td> +</tr> +<tr id="i38" class="altColor"> +<td class="colFirst"><code>private java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#latestFabricLoader-java.lang.String-">latestFabricLoader</a></span>(java.lang.String modpackDir)</code> +<div class="block">Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer.</div> +</td> +</tr> +<tr id="i39" class="rowColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#printConfig-java.lang.String-java.util.List-java.util.List-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-">printConfig</a></span>(java.lang.String modpackDirectory, + java.util.List<java.lang.String> clientsideMods, + java.util.List<java.lang.String> copyDirectories, + boolean installServer, + java.lang.String javaInstallPath, + java.lang.String minecraftVer, + java.lang.String modloader, + java.lang.String modloaderVersion, + boolean includeIcon, + boolean includeProperties, + boolean includeScripts, + boolean includeZip)</code> +<div class="block">Prints the configuration.</div> +</td> +</tr> +<tr id="i40" class="altColor"> +<td class="colFirst"><code>private boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#readBoolean--">readBoolean</a></span>()</code> +<div class="block">A helper method for config setup.</div> +</td> +</tr> +<tr id="i41" class="rowColor"> +<td class="colFirst"><code>private java.util.List<java.lang.String></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#readStringArray--">readStringArray</a></span>()</code> +<div class="block">A helper method for config setup.</div> +</td> +</tr> +<tr id="i42" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setClientMods-java.util.List-">setClientMods</a></span>(java.util.List<java.lang.String> newClientMods)</code> </td> +</tr> +<tr id="i43" class="rowColor"> +<td class="colFirst"><code>void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setConfig-com.typesafe.config.Config-">setConfig</a></span>(com.typesafe.config.Config newConfig)</code> </td> +</tr> +<tr id="i44" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setCopyDirs-java.util.List-">setCopyDirs</a></span>(java.util.List<java.lang.String> newCopyDirs)</code> </td> +</tr> +<tr id="i45" class="rowColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeServerIcon-boolean-">setIncludeServerIcon</a></span>(boolean newIncludeServerIcon)</code> </td> +</tr> +<tr id="i46" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeServerInstallation-boolean-">setIncludeServerInstallation</a></span>(boolean newIncludeServerInstallation)</code> </td> +</tr> +<tr id="i47" class="rowColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeServerProperties-boolean-">setIncludeServerProperties</a></span>(boolean newIncludeServerProperties)</code> </td> +</tr> +<tr id="i48" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeStartScripts-boolean-">setIncludeStartScripts</a></span>(boolean newIncludeStartScripts)</code> </td> +</tr> +<tr id="i49" class="rowColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeZipCreation-boolean-">setIncludeZipCreation</a></span>(boolean newIncludeZipCreation)</code> </td> +</tr> +<tr id="i50" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setJavaPath-java.lang.String-">setJavaPath</a></span>(java.lang.String newJavaPath)</code> </td> +</tr> +<tr id="i51" class="rowColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setMinecraftVersion-java.lang.String-">setMinecraftVersion</a></span>(java.lang.String newMinecraftVersion)</code> </td> +</tr> +<tr id="i52" class="altColor"> +<td class="colFirst"><code>(package private) java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setModloader-java.lang.String-">setModloader</a></span>(java.lang.String modloader)</code> +<div class="block">Standardize the specified modloader.</div> +</td> +</tr> +<tr id="i53" class="rowColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setModLoader-java.lang.String-">setModLoader</a></span>(java.lang.String newModLoader)</code> </td> +</tr> +<tr id="i54" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setModLoaderVersion-java.lang.String-">setModLoaderVersion</a></span>(java.lang.String newModLoaderVersion)</code> </td> +</tr> +<tr id="i55" class="rowColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setModpackDir-java.lang.String-">setModpackDir</a></span>(java.lang.String newModpackDir)</code> </td> +</tr> +<tr id="i56" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setProjectFileID-int-">setProjectFileID</a></span>(int newProjectFileID)</code> </td> +</tr> +<tr id="i57" class="rowColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setProjectID-int-">setProjectID</a></span>(int newProjectID)</code> </td> +</tr> +<tr id="i58" class="altColor"> +<td class="colFirst"><code>private java.util.List<java.lang.String></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#suggestCopyDirs-java.lang.String-">suggestCopyDirs</a></span>(java.lang.String modpackDir)</code> +<div class="block">Creates a list of suggested directories to include in server pack which is later on written to a new configuration file.</div> +</td> +</tr> +<tr id="i59" class="rowColor"> +<td class="colFirst"><code>boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#writeConfigToFile-java.lang.String-java.lang.String-java.lang.String-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-java.io.File-boolean-">writeConfigToFile</a></span>(java.lang.String modpackDir, + java.lang.String clientMods, + java.lang.String copyDirs, + boolean includeServer, + java.lang.String javaPath, + java.lang.String minecraftVersion, + java.lang.String modLoader, + java.lang.String modLoaderVersion, + boolean includeIcon, + boolean includeProperties, + boolean includeScripts, + boolean includeZip, + java.io.File fileName, + boolean isTemporary)</code> +<div class="block">Writes a new configuration file with the parameters passed to it.</div> +</td> +</tr> +</table> +<ul class="blockList"> +<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> +<!-- --> +</a> +<h3>Methods inherited from class java.lang.Object</h3> +<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li> +</ul> +</li> +</ul> +</li> +</ul> +</div> +<div class="details"> +<ul class="blockList"> +<li class="blockList"> +<!-- ============ FIELD DETAIL =========== --> +<ul class="blockList"> +<li class="blockList"><a name="field.detail"> +<!-- --> +</a> +<h3>Field Detail</h3> +<a name="appLogger"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>appLogger</h4> +<pre>private static final org.apache.logging.log4j.Logger appLogger</pre> +</li> +</ul> +<a name="oldConfigFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>oldConfigFile</h4> +<pre>private final java.io.File oldConfigFile</pre> +</li> +</ul> +<a name="configFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>configFile</h4> +<pre>private final java.io.File configFile</pre> +</li> +</ul> +<a name="localizationManager"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>localizationManager</h4> +<pre>private <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +</li> +</ul> +<a name="fallbackModsList"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>fallbackModsList</h4> +<pre>private final java.util.List<java.lang.String> fallbackModsList</pre> +</li> +</ul> +<a name="clientMods"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>clientMods</h4> +<pre>private java.util.List<java.lang.String> clientMods</pre> +</li> +</ul> +<a name="copyDirs"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>copyDirs</h4> +<pre>private java.util.List<java.lang.String> copyDirs</pre> +</li> +</ul> +<a name="modpackDir"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>modpackDir</h4> +<pre>private java.lang.String modpackDir</pre> +</li> +</ul> +<a name="javaPath"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>javaPath</h4> +<pre>private java.lang.String javaPath</pre> +</li> +</ul> +<a name="minecraftVersion"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>minecraftVersion</h4> +<pre>private java.lang.String minecraftVersion</pre> +</li> +</ul> +<a name="modLoader"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>modLoader</h4> +<pre>private java.lang.String modLoader</pre> +</li> +</ul> +<a name="modLoaderVersion"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>modLoaderVersion</h4> +<pre>private java.lang.String modLoaderVersion</pre> +</li> +</ul> +<a name="includeServerInstallation"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>includeServerInstallation</h4> +<pre>private java.lang.Boolean includeServerInstallation</pre> +</li> +</ul> +<a name="includeServerIcon"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>includeServerIcon</h4> +<pre>private java.lang.Boolean includeServerIcon</pre> +</li> +</ul> +<a name="includeServerProperties"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>includeServerProperties</h4> +<pre>private java.lang.Boolean includeServerProperties</pre> +</li> +</ul> +<a name="includeStartScripts"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>includeStartScripts</h4> +<pre>private java.lang.Boolean includeStartScripts</pre> +</li> +</ul> +<a name="includeZipCreation"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>includeZipCreation</h4> +<pre>private java.lang.Boolean includeZipCreation</pre> +</li> +</ul> +<a name="projectID"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>projectID</h4> +<pre>private int projectID</pre> +</li> +</ul> +<a name="projectFileID"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>projectFileID</h4> +<pre>private int projectFileID</pre> +</li> +</ul> +<a name="config"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>config</h4> +<pre>private com.typesafe.config.Config config</pre> +</li> +</ul> +</li> +</ul> +<!-- ========= CONSTRUCTOR DETAIL ======== --> +<ul class="blockList"> +<li class="blockList"><a name="constructor.detail"> +<!-- --> +</a> +<h3>Constructor Detail</h3> +<a name="Configuration-de.griefed.serverpackcreator.i18n.LocalizationManager-"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>Configuration</h4> +<pre>public Configuration(<a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</pre> +</li> +</ul> +</li> +</ul> +<!-- ============ METHOD DETAIL ========== --> +<ul class="blockList"> +<li class="blockList"><a name="method.detail"> +<!-- --> +</a> +<h3>Method Detail</h3> +<a name="getOldConfigFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getOldConfigFile</h4> +<pre>public java.io.File getOldConfigFile()</pre> +</li> +</ul> +<a name="getConfigFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getConfigFile</h4> +<pre>public java.io.File getConfigFile()</pre> +</li> +</ul> +<a name="getMinecraftManifestUrl--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getMinecraftManifestUrl</h4> +<pre>java.lang.String getMinecraftManifestUrl()</pre> +</li> +</ul> +<a name="getForgeManifestUrl--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getForgeManifestUrl</h4> +<pre>java.lang.String getForgeManifestUrl()</pre> +</li> +</ul> +<a name="getFabricManifestUrl--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getFabricManifestUrl</h4> +<pre>java.lang.String getFabricManifestUrl()</pre> +</li> +</ul> +<a name="getConfig--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getConfig</h4> +<pre>public com.typesafe.config.Config getConfig()</pre> +</li> +</ul> +<a name="setConfig-com.typesafe.config.Config-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setConfig</h4> +<pre>public void setConfig(com.typesafe.config.Config newConfig)</pre> +</li> +</ul> +<a name="getFallbackModsList--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getFallbackModsList</h4> +<pre>java.util.List<java.lang.String> getFallbackModsList()</pre> +</li> +</ul> +<a name="getClientMods--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getClientMods</h4> +<pre>java.util.List<java.lang.String> getClientMods()</pre> +</li> +</ul> +<a name="setClientMods-java.util.List-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setClientMods</h4> +<pre>void setClientMods(java.util.List<java.lang.String> newClientMods)</pre> +</li> +</ul> +<a name="getCopyDirs--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getCopyDirs</h4> +<pre>java.util.List<java.lang.String> getCopyDirs()</pre> +</li> +</ul> +<a name="setCopyDirs-java.util.List-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setCopyDirs</h4> +<pre>void setCopyDirs(java.util.List<java.lang.String> newCopyDirs)</pre> +</li> +</ul> +<a name="getModpackDir--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getModpackDir</h4> +<pre>java.lang.String getModpackDir()</pre> +</li> +</ul> +<a name="setModpackDir-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setModpackDir</h4> +<pre>void setModpackDir(java.lang.String newModpackDir)</pre> +</li> +</ul> +<a name="getJavaPath--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getJavaPath</h4> +<pre>java.lang.String getJavaPath()</pre> +</li> +</ul> +<a name="setJavaPath-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setJavaPath</h4> +<pre>void setJavaPath(java.lang.String newJavaPath)</pre> +</li> +</ul> +<a name="getMinecraftVersion--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getMinecraftVersion</h4> +<pre>java.lang.String getMinecraftVersion()</pre> +</li> +</ul> +<a name="setMinecraftVersion-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setMinecraftVersion</h4> +<pre>void setMinecraftVersion(java.lang.String newMinecraftVersion)</pre> +</li> +</ul> +<a name="getModLoader--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getModLoader</h4> +<pre>java.lang.String getModLoader()</pre> +</li> +</ul> +<a name="setModLoader-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setModLoader</h4> +<pre>void setModLoader(java.lang.String newModLoader)</pre> +</li> +</ul> +<a name="getModLoaderVersion--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getModLoaderVersion</h4> +<pre>java.lang.String getModLoaderVersion()</pre> +</li> +</ul> +<a name="setModLoaderVersion-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setModLoaderVersion</h4> +<pre>void setModLoaderVersion(java.lang.String newModLoaderVersion)</pre> +</li> +</ul> +<a name="getIncludeServerInstallation--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getIncludeServerInstallation</h4> +<pre>boolean getIncludeServerInstallation()</pre> +</li> +</ul> +<a name="setIncludeServerInstallation-boolean-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setIncludeServerInstallation</h4> +<pre>void setIncludeServerInstallation(boolean newIncludeServerInstallation)</pre> +</li> +</ul> +<a name="getIncludeServerIcon--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getIncludeServerIcon</h4> +<pre>boolean getIncludeServerIcon()</pre> +</li> +</ul> +<a name="setIncludeServerIcon-boolean-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setIncludeServerIcon</h4> +<pre>void setIncludeServerIcon(boolean newIncludeServerIcon)</pre> +</li> +</ul> +<a name="getIncludeServerProperties--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getIncludeServerProperties</h4> +<pre>boolean getIncludeServerProperties()</pre> +</li> +</ul> +<a name="setIncludeServerProperties-boolean-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setIncludeServerProperties</h4> +<pre>void setIncludeServerProperties(boolean newIncludeServerProperties)</pre> +</li> +</ul> +<a name="getIncludeStartScripts--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getIncludeStartScripts</h4> +<pre>boolean getIncludeStartScripts()</pre> +</li> +</ul> +<a name="setIncludeStartScripts-boolean-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setIncludeStartScripts</h4> +<pre>void setIncludeStartScripts(boolean newIncludeStartScripts)</pre> +</li> +</ul> +<a name="getIncludeZipCreation--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getIncludeZipCreation</h4> +<pre>boolean getIncludeZipCreation()</pre> +</li> +</ul> +<a name="setIncludeZipCreation-boolean-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setIncludeZipCreation</h4> +<pre>void setIncludeZipCreation(boolean newIncludeZipCreation)</pre> +</li> +</ul> +<a name="getProjectID--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getProjectID</h4> +<pre>int getProjectID()</pre> +</li> +</ul> +<a name="setProjectID-int-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setProjectID</h4> +<pre>void setProjectID(int newProjectID)</pre> +</li> +</ul> +<a name="getProjectFileID--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getProjectFileID</h4> +<pre>int getProjectFileID()</pre> +</li> +</ul> +<a name="setProjectFileID-int-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setProjectFileID</h4> +<pre>void setProjectFileID(int newProjectFileID)</pre> +</li> +</ul> +<a name="checkConfigFile-java.io.File-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>checkConfigFile</h4> +<pre>public boolean checkConfigFile(java.io.File configFile)</pre> +<div class="block">Check the config file for configuration errors. If an error is found, the log file will tell the user where the error is, so they can fix their config.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>configFile</code> - The configuration file to check. Must be a valid configuration file for serverpackcreator to work.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Return true if error is found in user's configuration. If an error is found, the application will exit in main.</dd> +</dl> +</li> +</ul> +<a name="isDir-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>isDir</h4> +<pre>private boolean isDir(java.lang.String modpackDir)</pre> +<div class="block">Checks whether the specified modpack exists. If it does, the config file is checked for errors. Should any error be found, it will return true so the configCheck method informs the user about an invalid configuration.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. Should an existing modpack be specified, all configurations are read from local file and the server pack is created, if config is correct.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns true if an error is found during configuration check. False if the configuration is deemed valid.</dd> +</dl> +</li> +</ul> +<a name="isCurse--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>isCurse</h4> +<pre>private boolean isCurse()</pre> +<div class="block">Checks whether the specified projectID,fileID combination is a valid CurseForge project and file and whether the resulting directory exists. If the directory does not exist, make calls to other methods which create the modpack. Parses information gathered from the modpack to later replace the previous configuration file.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Currently always returns true so serverpackcreator does not go straight into server pack creation after the creation of the specified modpack. Gives the user the chance to check their config before actually creating the server pack.</dd> +</dl> +</li> +</ul> +<a name="containsFabric-de.griefed.serverpackcreator.curseforgemodpack.CurseModpack-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>containsFabric</h4> +<pre>private boolean containsFabric(<a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a> modpack)</pre> +<div class="block">Checks for the Jumploader mod in the project list of the modpack. If Jumploader is found, the modloader in the configuration will be set to Fabric.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpack</code> - Object. Contains information about our modpack. Used to get a list of all projects used in the modpack.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns true if Jumploader is found, false if not found.</dd> +</dl> +</li> +</ul> +<a name="suggestCopyDirs-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>suggestCopyDirs</h4> +<pre>private java.util.List<java.lang.String> suggestCopyDirs(java.lang.String modpackDir)</pre> +<div class="block">Creates a list of suggested directories to include in server pack which is later on written to a new configuration file.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. The directory for which to gather a list of directories.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>List, String. Returns a list of directories inside the modpack, excluding well known client-side only directories which would not be needed by a server pack. If you have suggestions to this list, open an issue on https://github.com/Griefed/ServerPackCreator/issues</dd> +</dl> +</li> +</ul> +<a name="checkCurseForge-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>checkCurseForge</h4> +<pre>boolean checkCurseForge(java.lang.String modpackDir)</pre> +<div class="block">Checks whether the modpackDir contains a valid projectID,fileID combination. ProjectIDs must be at least two digits long, fileIDs must be at least 5 digits long. Must be numbers separated by a ",".</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. The string which to check for a valid projectID,fileID combination.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns true if the combination is deemed valid, false if not.</dd> +</dl> +</li> +</ul> +<a name="convertToBoolean-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>convertToBoolean</h4> +<pre>public boolean convertToBoolean(java.lang.String stringBoolean)</pre> +<div class="block">Converts various strings to booleans.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>stringBoolean</code> - String. The string which should be converted to boolean if it matches certain patterns.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns the corresponding boolean if match with pattern was found. If no match is found, assume and return false.</dd> +</dl> +</li> +</ul> +<a name="printConfig-java.lang.String-java.util.List-java.util.List-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>printConfig</h4> +<pre>void printConfig(java.lang.String modpackDirectory, + java.util.List<java.lang.String> clientsideMods, + java.util.List<java.lang.String> copyDirectories, + boolean installServer, + java.lang.String javaInstallPath, + java.lang.String minecraftVer, + java.lang.String modloader, + java.lang.String modloaderVersion, + boolean includeIcon, + boolean includeProperties, + boolean includeScripts, + boolean includeZip)</pre> +<div class="block">Prints the configuration.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDirectory</code> - String. Path to modpack directory.</dd> +<dd><code>clientsideMods</code> - String List. List of clientside mods to delete from server pack.</dd> +<dd><code>copyDirectories</code> - String List. List of directories to copy to server pack.</dd> +<dd><code>installServer</code> - Boolean. Whether to install the modloader server.</dd> +<dd><code>javaInstallPath</code> - String. Path to Java installation needed to install modloader server.</dd> +<dd><code>minecraftVer</code> - String. Minecraft version the modpack uses.</dd> +<dd><code>modloader</code> - String. Modloader the modpack uses.</dd> +<dd><code>modloaderVersion</code> - String. Version of the modloader the modpack uses.</dd> +<dd><code>includeIcon</code> - Boolean. Whether to include the server-icon.png in the server pack.</dd> +<dd><code>includeProperties</code> - Boolean. Whether to include the server.properties in the server pack.</dd> +<dd><code>includeScripts</code> - Boolean. Whether to include start scripts for the specified modloader in the server pack.</dd> +<dd><code>includeZip</code> - Boolean. Whether to create a zip-archive of the server pack.</dd> +</dl> +</li> +</ul> +<a name="checkModpackDir-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>checkModpackDir</h4> +<pre>boolean checkModpackDir(java.lang.String modpackDir)</pre> +<div class="block">Check whether the specified modpack directory exists.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. The path to the modpack directory.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns true if the directory exists. False if not.</dd> +</dl> +</li> +</ul> +<a name="checkCopyDirs-java.util.List-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>checkCopyDirs</h4> +<pre>boolean checkCopyDirs(java.util.List<java.lang.String> copyDirs, + java.lang.String modpackDir)</pre> +<div class="block">Check whether the specified directories exist in the modpack directory.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>copyDirs</code> - String. The directories for which to check.</dd> +<dd><code>modpackDir</code> - String. The path to the modpack directory in which to check for directories.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns true if all directories exist. False if any one does not.</dd> +</dl> +</li> +</ul> +<a name="getJavaPath-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getJavaPath</h4> +<pre>java.lang.String getJavaPath(java.lang.String enteredPath)</pre> +<div class="block">Automatically set Java path if none is specified</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>enteredPath</code> - String. The path to check whether it is empty.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Return the entered Java path if it is not empty. Automatically determine path if empty.</dd> +</dl> +</li> +</ul> +<a name="checkJavaPath-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>checkJavaPath</h4> +<pre>boolean checkJavaPath(java.lang.String pathToJava)</pre> +<div class="block">Checks whether the correct path to the Java installation was set.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>pathToJava</code> - String. The path to check for java.exe or java.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns true if the path was correctly set. False if not.</dd> +</dl> +</li> +</ul> +<a name="checkModloader-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>checkModloader</h4> +<pre>boolean checkModloader(java.lang.String modloader)</pre> +<div class="block">Checks whether Forge or Fabric were specified as modloader.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modloader</code> - String. Check case insensitive for Forge or Fabric.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns true if the specified modloader is either Forge or Fabric. False if not.</dd> +</dl> +</li> +</ul> +<a name="setModloader-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setModloader</h4> +<pre>java.lang.String setModloader(java.lang.String modloader)</pre> +<div class="block">Standardize the specified modloader.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modloader</code> - String. If any case of Forge or Fabric was specified, return "Forge" or "Fabric", so users can enter "forge" or "fabric" or any combination of upper- and lowercase letters..</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns a standardized String of the specified modloader.</dd> +</dl> +</li> +</ul> +<a name="checkModloaderVersion-java.lang.String-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>checkModloaderVersion</h4> +<pre>boolean checkModloaderVersion(java.lang.String modloader, + java.lang.String modloaderVersion)</pre> +<div class="block">Determine whether to check for correct Forge or correct Fabric modloader version.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modloader</code> - String. Determines whether the check for Forge or Fabric is called.</dd> +<dd><code>modloaderVersion</code> - String. The version of the modloader to check for.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns true if the specified modloader version is correct. False if not.</dd> +</dl> +</li> +</ul> +<a name="isMinecraftVersionCorrect-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>isMinecraftVersionCorrect</h4> +<pre>boolean isMinecraftVersionCorrect(java.lang.String minecraftVersion)</pre> +<div class="block">Check the specified Minecraft version against Mojang's version manifest to validate the version.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>minecraftVersion</code> - Minecraft version to check.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns true if the specified Minecraft version could be found in Mojang's manifest. False if not.</dd> +</dl> +</li> +</ul> +<a name="isFabricVersionCorrect-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>isFabricVersionCorrect</h4> +<pre>boolean isFabricVersionCorrect(java.lang.String fabricVersion)</pre> +<div class="block">Check the specified Fabric version against Fabric's version manifest to validate the version.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>fabricVersion</code> - String. The Fabric version to check.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns true if the specified Fabric version could be found in Fabric's manifest. False if not.</dd> +</dl> +</li> +</ul> +<a name="isForgeVersionCorrect-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>isForgeVersionCorrect</h4> +<pre>boolean isForgeVersionCorrect(java.lang.String forgeVersion)</pre> +<div class="block">Checks Forge version for errors (basically for its availability in Forge manifest)</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>forgeVersion</code> - String. The Forge version to check.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns true if Forge version correct and false if it isn't correct.</dd> +</dl> +</li> +</ul> +<a name="latestFabricLoader-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>latestFabricLoader</h4> +<pre>private java.lang.String latestFabricLoader(java.lang.String modpackDir)</pre> +<div class="block">Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. /server_pack The directory where the Fabric installer will be placed in.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns true if the download was successful. False if not.</dd> +</dl> +</li> +</ul> +<a name="createConfigurationFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>createConfigurationFile</h4> +<pre>void createConfigurationFile()</pre> +<div class="block">Generate new configuration file from CLI input. Prompts user to enter config file values and then generates a config file with values entered by user.</div> +</li> +</ul> +<a name="readStringArray--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>readStringArray</h4> +<pre>private java.util.List<java.lang.String> readStringArray()</pre> +<div class="block">A helper method for config setup. Prompts user to enter the values that will be stored in arrays in config.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String List. Returns list with user input values that will be stored in config.</dd> +</dl> +</li> +</ul> +<a name="buildString-java.lang.String...-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>buildString</h4> +<pre>public java.lang.String buildString(java.lang.String... args)</pre> +<div class="block">Converts list of strings into concatenated string.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>args</code> - Strings that will be concatenated into one string</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns concatenated string that contains all provided values.</dd> +</dl> +</li> +</ul> +<a name="readBoolean--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>readBoolean</h4> +<pre>private boolean readBoolean()</pre> +<div class="block">A helper method for config setup. Prompts user to enter boolean values that will be stored in config and checks entered values to prevent storing non-boolean values in boolean variables.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Converts to boolean and returns value entered by user that will be stored in config.</dd> +</dl> +</li> +</ul> +<a name="writeConfigToFile-java.lang.String-java.lang.String-java.lang.String-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-java.io.File-boolean-"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>writeConfigToFile</h4> +<pre>public boolean writeConfigToFile(java.lang.String modpackDir, + java.lang.String clientMods, + java.lang.String copyDirs, + boolean includeServer, + java.lang.String javaPath, + java.lang.String minecraftVersion, + java.lang.String modLoader, + java.lang.String modLoaderVersion, + boolean includeIcon, + boolean includeProperties, + boolean includeScripts, + boolean includeZip, + java.io.File fileName, + boolean isTemporary)</pre> +<div class="block">Writes a new configuration file with the parameters passed to it.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. The path to the modpack.</dd> +<dd><code>clientMods</code> - List, String. List of clientside-only mods.</dd> +<dd><code>copyDirs</code> - List, String. List of directories to include in server pack.</dd> +<dd><code>includeServer</code> - Boolean. Whether to include a modloader server installation.</dd> +<dd><code>javaPath</code> - String. Path to the java executable.</dd> +<dd><code>minecraftVersion</code> - String. Minecraft version used by the modpack and server pack.</dd> +<dd><code>modLoader</code> - String. Modloader used by the modpack and server pack. Ether Forge or Fabric.</dd> +<dd><code>modLoaderVersion</code> - String. Modloader version used by the modpack and server pack.</dd> +<dd><code>includeIcon</code> - Boolean. Whether to include a server-icon in the server pack.</dd> +<dd><code>includeProperties</code> - Boolean. Whether to include a properties file in the server pack.</dd> +<dd><code>includeScripts</code> - Boolean. Whether to include start scripts in the server pack.</dd> +<dd><code>includeZip</code> - Boolean. Whether to create a ZIP-archive of the server pack, excluding Mojang's Minecraft server jar.</dd> +<dd><code>fileName</code> - The name under which to write the new file.</dd> +<dd><code>isTemporary</code> - Decides whether to delete existing config-file. If isTemporary is false, existing config files will be deleted before writing the new file.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns true if the configuration file has been successfully written and old ones replaced.</dd> +</dl> +</li> +</ul> +</li> +</ul> +</li> +</ul> +</div> +</div> +<!-- ========= END OF CLASS DATA ========= --> +<!-- ======= START OF BOTTOM NAVBAR ====== --> +<div class="bottomNav"><a name="navbar.bottom"> +<!-- --> +</a> +<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div> +<a name="navbar.bottom.firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../overview-summary.html">Overview</a></li> +<li><a href="package-summary.html">Package</a></li> +<li class="navBarCell1Rev">Class</li> +<li><a href="package-tree.html">Tree</a></li> +<li><a href="../../../deprecated-list.html">Deprecated</a></li> +<li><a href="../../../index-all.html">Index</a></li> +<li><a href="../../../help-doc.html">Help</a></li> +</ul> +</div> +<div class="subNav"> +<ul class="navList"> +<li>Prev Class</li> +<li><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../index.html?de/griefed/serverpackcreator/Configuration.html" target="_top">Frames</a></li> +<li><a href="Configuration.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_bottom"> +<li><a href="../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_bottom"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Nested | </li> +<li><a href="#field.summary">Field</a> | </li> +<li><a href="#constructor.summary">Constr</a> | </li> +<li><a href="#method.summary">Method</a></li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li><a href="#field.detail">Field</a> | </li> +<li><a href="#constructor.detail">Constr</a> | </li> +<li><a href="#method.detail">Method</a></li> +</ul> +</div> +<a name="skip.navbar.bottom"> +<!-- --> +</a></div> +<!-- ======== END OF BOTTOM NAVBAR ======= --> +</body> +</html> diff --git a/docs/de/griefed/serverpackcreator/CopyFiles.html b/docs/de/griefed/serverpackcreator/CopyFiles.html deleted file mode 100644 index 7d0ef5a02..000000000 --- a/docs/de/griefed/serverpackcreator/CopyFiles.html +++ /dev/null @@ -1,431 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<!-- NewPage --> -<html lang="de"> -<head> -<!-- Generated by javadoc --> -<title>CopyFiles (serverpackcreator API)</title> -<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style"> -<script type="text/javascript" src="../../../script.js"></script> -</head> -<body> -<script type="text/javascript"><!-- - try { - if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="CopyFiles (serverpackcreator API)"; - } - } - catch(err) { - } -//--> -var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10}; -var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; -var altColor = "altColor"; -var rowColor = "rowColor"; -var tableTab = "tableTab"; -var activeTableTab = "activeTableTab"; -</script> -<noscript> -<div>JavaScript is disabled on your browser.</div> -</noscript> -<!-- ========= START OF TOP NAVBAR ======= --> -<div class="topNav"><a name="navbar.top"> -<!-- --> -</a> -<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div> -<a name="navbar.top.firstrow"> -<!-- --> -</a> -<ul class="navList" title="Navigation"> -<li><a href="../../../overview-summary.html">Overview</a></li> -<li><a href="package-summary.html">Package</a></li> -<li class="navBarCell1Rev">Class</li> -<li><a href="package-tree.html">Tree</a></li> -<li><a href="../../../deprecated-list.html">Deprecated</a></li> -<li><a href="../../../index-all.html">Index</a></li> -<li><a href="../../../help-doc.html">Help</a></li> -</ul> -</div> -<div class="subNav"> -<ul class="navList"> -<li><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> -</ul> -<ul class="navList"> -<li><a href="../../../index.html?de/griefed/serverpackcreator/CopyFiles.html" target="_top">Frames</a></li> -<li><a href="CopyFiles.html" target="_top">No Frames</a></li> -</ul> -<ul class="navList" id="allclasses_navbar_top"> -<li><a href="../../../allclasses-noframe.html">All Classes</a></li> -</ul> -<div> -<script type="text/javascript"><!-- - allClassesLink = document.getElementById("allclasses_navbar_top"); - if(window==top) { - allClassesLink.style.display = "block"; - } - else { - allClassesLink.style.display = "none"; - } - //--> -</script> -</div> -<div> -<ul class="subNavList"> -<li>Summary: </li> -<li>Nested | </li> -<li><a href="#field.summary">Field</a> | </li> -<li><a href="#constructor.summary">Constr</a> | </li> -<li><a href="#method.summary">Method</a></li> -</ul> -<ul class="subNavList"> -<li>Detail: </li> -<li><a href="#field.detail">Field</a> | </li> -<li><a href="#constructor.detail">Constr</a> | </li> -<li><a href="#method.detail">Method</a></li> -</ul> -</div> -<a name="skip.navbar.top"> -<!-- --> -</a></div> -<!-- ========= END OF TOP NAVBAR ========= --> -<!-- ======== START OF CLASS DATA ======== --> -<div class="header"> -<div class="subTitle">de.griefed.serverpackcreator</div> -<h2 title="Class CopyFiles" class="title">Class CopyFiles</h2> -</div> -<div class="contentContainer"> -<ul class="inheritance"> -<li>java.lang.Object</li> -<li> -<ul class="inheritance"> -<li>de.griefed.serverpackcreator.CopyFiles</li> -</ul> -</li> -</ul> -<div class="description"> -<ul class="blockList"> -<li class="blockList"> -<hr> -<br> -<pre>class <span class="typeNameLabel">CopyFiles</span> -extends java.lang.Object</pre> -</li> -</ul> -</div> -<div class="summary"> -<ul class="blockList"> -<li class="blockList"> -<!-- =========== FIELD SUMMARY =========== --> -<ul class="blockList"> -<li class="blockList"><a name="field.summary"> -<!-- --> -</a> -<h3>Field Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation"> -<caption><span>Fields</span><span class="tabEnd"> </span></caption> -<tr> -<th class="colFirst" scope="col">Modifier and Type</th> -<th class="colLast" scope="col">Field and Description</th> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CopyFiles.html#appLogger">appLogger</a></span></code> </td> -</tr> -</table> -</li> -</ul> -<!-- ======== CONSTRUCTOR SUMMARY ======== --> -<ul class="blockList"> -<li class="blockList"><a name="constructor.summary"> -<!-- --> -</a> -<h3>Constructor Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> -<caption><span>Constructors</span><span class="tabEnd"> </span></caption> -<tr> -<th class="colOne" scope="col">Constructor and Description</th> -</tr> -<tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CopyFiles.html#CopyFiles--">CopyFiles</a></span>()</code> </td> -</tr> -</table> -</li> -</ul> -<!-- ========== METHOD SUMMARY =========== --> -<ul class="blockList"> -<li class="blockList"><a name="method.summary"> -<!-- --> -</a> -<h3>Method Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> -<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> -<tr> -<th class="colFirst" scope="col">Modifier and Type</th> -<th class="colLast" scope="col">Method and Description</th> -</tr> -<tr id="i0" class="altColor"> -<td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CopyFiles.html#cleanupEnvironment-java.lang.String-">cleanupEnvironment</a></span>(java.lang.String modpackDir)</code> -<div class="block">Deletes files from previous runs of serverpackcreator.</div> -</td> -</tr> -<tr id="i1" class="rowColor"> -<td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CopyFiles.html#copyFiles-java.lang.String-java.util.List-java.util.List-">copyFiles</a></span>(java.lang.String modpackDir, - java.util.List<java.lang.String> copyDirs, - java.util.List<java.lang.String> clientMods)</code> -<div class="block">Copies all specified folders and their files to the modpackDir.</div> -</td> -</tr> -<tr id="i2" class="altColor"> -<td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CopyFiles.html#copyIcon-java.lang.String-">copyIcon</a></span>(java.lang.String modpackDir)</code> -<div class="block">Copies the server-icon.png into server_pack.</div> -</td> -</tr> -<tr id="i3" class="rowColor"> -<td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CopyFiles.html#copyProperties-java.lang.String-">copyProperties</a></span>(java.lang.String modpackDir)</code> -<div class="block">Copies the server.properties into server_pack.</div> -</td> -</tr> -<tr id="i4" class="altColor"> -<td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CopyFiles.html#copyStartScripts-java.lang.String-java.lang.String-boolean-">copyStartScripts</a></span>(java.lang.String modpackDir, - java.lang.String modLoader, - boolean includeStartScripts)</code> -<div class="block">Copies start scripts for Forge modloader into the server_pack folder.</div> -</td> -</tr> -<tr id="i5" class="rowColor"> -<td class="colFirst"><code>private java.util.List<java.lang.String></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CopyFiles.html#excludeClientMods-java.lang.String-java.util.List-">excludeClientMods</a></span>(java.lang.String modsDir, - java.util.List<java.lang.String> clientMods)</code> -<div class="block">Generate a list of all mods in a modpack EXCEPT clientside-only mods.</div> -</td> -</tr> -</table> -<ul class="blockList"> -<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> -<!-- --> -</a> -<h3>Methods inherited from class java.lang.Object</h3> -<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li> -</ul> -</li> -</ul> -</li> -</ul> -</div> -<div class="details"> -<ul class="blockList"> -<li class="blockList"> -<!-- ============ FIELD DETAIL =========== --> -<ul class="blockList"> -<li class="blockList"><a name="field.detail"> -<!-- --> -</a> -<h3>Field Detail</h3> -<a name="appLogger"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>appLogger</h4> -<pre>private static final org.apache.logging.log4j.Logger appLogger</pre> -</li> -</ul> -</li> -</ul> -<!-- ========= CONSTRUCTOR DETAIL ======== --> -<ul class="blockList"> -<li class="blockList"><a name="constructor.detail"> -<!-- --> -</a> -<h3>Constructor Detail</h3> -<a name="CopyFiles--"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>CopyFiles</h4> -<pre>CopyFiles()</pre> -</li> -</ul> -</li> -</ul> -<!-- ============ METHOD DETAIL ========== --> -<ul class="blockList"> -<li class="blockList"><a name="method.detail"> -<!-- --> -</a> -<h3>Method Detail</h3> -<a name="cleanupEnvironment-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>cleanupEnvironment</h4> -<pre>void cleanupEnvironment(java.lang.String modpackDir)</pre> -<div class="block">Deletes files from previous runs of serverpackcreator.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. The directory in where to check for files from previous runs.</dd> -</dl> -</li> -</ul> -<a name="copyStartScripts-java.lang.String-java.lang.String-boolean-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>copyStartScripts</h4> -<pre>void copyStartScripts(java.lang.String modpackDir, - java.lang.String modLoader, - boolean includeStartScripts)</pre> -<div class="block">Copies start scripts for Forge modloader into the server_pack folder.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. Files will be copied into subfolder server_pack. Checks for valid modpackDir are in ConfigCheck.</dd> -<dd><code>modLoader</code> - String. Determines whether start scripts for Forge or Fabric are copied to modpackDir. Checks for valid modLoader are in ConfigCheck.</dd> -<dd><code>includeStartScripts</code> - Boolean. Whether to include start scripts in server_pack. Boolean.</dd> -</dl> -</li> -</ul> -<a name="copyFiles-java.lang.String-java.util.List-java.util.List-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>copyFiles</h4> -<pre>void copyFiles(java.lang.String modpackDir, - java.util.List<java.lang.String> copyDirs, - java.util.List<java.lang.String> clientMods) - throws java.io.IOException</pre> -<div class="block">Copies all specified folders and their files to the modpackDir.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack. Directory where all directories listed in copyDirs will be copied into.</dd> -<dd><code>copyDirs</code> - String List. The folders and files within to copy.</dd> -<dd><code>clientMods</code> - String List. List of clientside-only mods NOT to copy to server pack.</dd> -<dt><span class="throwsLabel">Throws:</span></dt> -<dd><code>java.io.IOException</code> - Only print stacktrace if it does not start with java.nio.file.DirectoryNotEmptyException.</dd> -</dl> -</li> -</ul> -<a name="excludeClientMods-java.lang.String-java.util.List-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>excludeClientMods</h4> -<pre>private java.util.List<java.lang.String> excludeClientMods(java.lang.String modsDir, - java.util.List<java.lang.String> clientMods)</pre> -<div class="block">Generate a list of all mods in a modpack EXCEPT clientside-only mods. This list is then used by copyFiles.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modsDir</code> - String. /mods The directory in which to generate a list of all available mods.</dd> -<dd><code>clientMods</code> - List String. A list of all clientside-only mods passed by copyFiles, which is then removed from the list generated in this method.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>List String. A list of all mods inside the modpack excluding the specified clientside-only mods.</dd> -</dl> -</li> -</ul> -<a name="copyIcon-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>copyIcon</h4> -<pre>void copyIcon(java.lang.String modpackDir)</pre> -<div class="block">Copies the server-icon.png into server_pack.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack. Directory where the server-icon.png will be copied to.</dd> -</dl> -</li> -</ul> -<a name="copyProperties-java.lang.String-"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>copyProperties</h4> -<pre>void copyProperties(java.lang.String modpackDir)</pre> -<div class="block">Copies the server.properties into server_pack.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack. Directory where the server.properties. will be copied to.</dd> -</dl> -</li> -</ul> -</li> -</ul> -</li> -</ul> -</div> -</div> -<!-- ========= END OF CLASS DATA ========= --> -<!-- ======= START OF BOTTOM NAVBAR ====== --> -<div class="bottomNav"><a name="navbar.bottom"> -<!-- --> -</a> -<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div> -<a name="navbar.bottom.firstrow"> -<!-- --> -</a> -<ul class="navList" title="Navigation"> -<li><a href="../../../overview-summary.html">Overview</a></li> -<li><a href="package-summary.html">Package</a></li> -<li class="navBarCell1Rev">Class</li> -<li><a href="package-tree.html">Tree</a></li> -<li><a href="../../../deprecated-list.html">Deprecated</a></li> -<li><a href="../../../index-all.html">Index</a></li> -<li><a href="../../../help-doc.html">Help</a></li> -</ul> -</div> -<div class="subNav"> -<ul class="navList"> -<li><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> -</ul> -<ul class="navList"> -<li><a href="../../../index.html?de/griefed/serverpackcreator/CopyFiles.html" target="_top">Frames</a></li> -<li><a href="CopyFiles.html" target="_top">No Frames</a></li> -</ul> -<ul class="navList" id="allclasses_navbar_bottom"> -<li><a href="../../../allclasses-noframe.html">All Classes</a></li> -</ul> -<div> -<script type="text/javascript"><!-- - allClassesLink = document.getElementById("allclasses_navbar_bottom"); - if(window==top) { - allClassesLink.style.display = "block"; - } - else { - allClassesLink.style.display = "none"; - } - //--> -</script> -</div> -<div> -<ul class="subNavList"> -<li>Summary: </li> -<li>Nested | </li> -<li><a href="#field.summary">Field</a> | </li> -<li><a href="#constructor.summary">Constr</a> | </li> -<li><a href="#method.summary">Method</a></li> -</ul> -<ul class="subNavList"> -<li>Detail: </li> -<li><a href="#field.detail">Field</a> | </li> -<li><a href="#constructor.detail">Constr</a> | </li> -<li><a href="#method.detail">Method</a></li> -</ul> -</div> -<a name="skip.navbar.bottom"> -<!-- --> -</a></div> -<!-- ======== END OF BOTTOM NAVBAR ======= --> -</body> -</html> diff --git a/docs/de/griefed/serverpackcreator/CreateServerPack.html b/docs/de/griefed/serverpackcreator/CreateServerPack.html new file mode 100644 index 000000000..51d6a84c0 --- /dev/null +++ b/docs/de/griefed/serverpackcreator/CreateServerPack.html @@ -0,0 +1,962 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!-- NewPage --> +<html lang="de"> +<head> +<!-- Generated by javadoc --> +<title>CreateServerPack (serverpackcreator API)</title> +<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style"> +<script type="text/javascript" src="../../../script.js"></script> +</head> +<body> +<script type="text/javascript"><!-- + try { + if (location.href.indexOf('is-external=true') == -1) { + parent.document.title="CreateServerPack (serverpackcreator API)"; + } + } + catch(err) { + } +//--> +var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10}; +var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; +var altColor = "altColor"; +var rowColor = "rowColor"; +var tableTab = "tableTab"; +var activeTableTab = "activeTableTab"; +</script> +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<!-- ========= START OF TOP NAVBAR ======= --> +<div class="topNav"><a name="navbar.top"> +<!-- --> +</a> +<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div> +<a name="navbar.top.firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../overview-summary.html">Overview</a></li> +<li><a href="package-summary.html">Package</a></li> +<li class="navBarCell1Rev">Class</li> +<li><a href="package-tree.html">Tree</a></li> +<li><a href="../../../deprecated-list.html">Deprecated</a></li> +<li><a href="../../../index-all.html">Index</a></li> +<li><a href="../../../help-doc.html">Help</a></li> +</ul> +</div> +<div class="subNav"> +<ul class="navList"> +<li><a href="../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../index.html?de/griefed/serverpackcreator/CreateServerPack.html" target="_top">Frames</a></li> +<li><a href="CreateServerPack.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_top"> +<li><a href="../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_top"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Nested | </li> +<li><a href="#field.summary">Field</a> | </li> +<li><a href="#constructor.summary">Constr</a> | </li> +<li><a href="#method.summary">Method</a></li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li><a href="#field.detail">Field</a> | </li> +<li><a href="#constructor.detail">Constr</a> | </li> +<li><a href="#method.detail">Method</a></li> +</ul> +</div> +<a name="skip.navbar.top"> +<!-- --> +</a></div> +<!-- ========= END OF TOP NAVBAR ========= --> +<!-- ======== START OF CLASS DATA ======== --> +<div class="header"> +<div class="subTitle">de.griefed.serverpackcreator</div> +<h2 title="Class CreateServerPack" class="title">Class CreateServerPack</h2> +</div> +<div class="contentContainer"> +<ul class="inheritance"> +<li>java.lang.Object</li> +<li> +<ul class="inheritance"> +<li>de.griefed.serverpackcreator.CreateServerPack</li> +</ul> +</li> +</ul> +<div class="description"> +<ul class="blockList"> +<li class="blockList"> +<hr> +<br> +<pre>public class <span class="typeNameLabel">CreateServerPack</span> +extends java.lang.Object</pre> +</li> +</ul> +</div> +<div class="summary"> +<ul class="blockList"> +<li class="blockList"> +<!-- =========== FIELD SUMMARY =========== --> +<ul class="blockList"> +<li class="blockList"><a name="field.summary"> +<!-- --> +</a> +<h3>Field Summary</h3> +<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation"> +<caption><span>Fields</span><span class="tabEnd"> </span></caption> +<tr> +<th class="colFirst" scope="col">Modifier and Type</th> +<th class="colLast" scope="col">Field and Description</th> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#appLogger">appLogger</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private <a href="../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#configuration">configuration</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#fabricLinuxFile">fabricLinuxFile</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#fabricWindowsFile">fabricWindowsFile</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#forgeLinuxFile">forgeLinuxFile</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#forgeWindowsFile">forgeWindowsFile</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#iconFile">iconFile</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#installerLogger">installerLogger</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#localizationManager">localizationManager</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#propertiesFile">propertiesFile</a></span></code> </td> +</tr> +</table> +</li> +</ul> +<!-- ======== CONSTRUCTOR SUMMARY ======== --> +<ul class="blockList"> +<li class="blockList"><a name="constructor.summary"> +<!-- --> +</a> +<h3>Constructor Summary</h3> +<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> +<caption><span>Constructors</span><span class="tabEnd"> </span></caption> +<tr> +<th class="colOne" scope="col">Constructor and Description</th> +</tr> +<tr class="altColor"> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#CreateServerPack-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-">CreateServerPack</a></span>(<a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager, + <a href="../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfigCheck)</code> </td> +</tr> +</table> +</li> +</ul> +<!-- ========== METHOD SUMMARY =========== --> +<ul class="blockList"> +<li class="blockList"><a name="method.summary"> +<!-- --> +</a> +<h3>Method Summary</h3> +<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> +<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> +<tr> +<th class="colFirst" scope="col">Modifier and Type</th> +<th class="colLast" scope="col">Method and Description</th> +</tr> +<tr id="i0" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#cleanupEnvironment-java.lang.String-">cleanupEnvironment</a></span>(java.lang.String modpackDir)</code> +<div class="block">Deletes files from previous runs of serverpackcreator.</div> +</td> +</tr> +<tr id="i1" class="rowColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#cleanUpServerPack-java.io.File-java.io.File-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">cleanUpServerPack</a></span>(java.io.File fabricInstaller, + java.io.File forgeInstaller, + java.lang.String modLoader, + java.lang.String modpackDir, + java.lang.String minecraftVersion, + java.lang.String modLoaderVersion)</code> +<div class="block">Deletes remnant files from Fabric/Forge installation no longer needed.</div> +</td> +</tr> +<tr id="i2" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyFiles-java.lang.String-java.util.List-java.util.List-">copyFiles</a></span>(java.lang.String modpackDir, + java.util.List<java.lang.String> copyDirs, + java.util.List<java.lang.String> clientMods)</code> +<div class="block">Copies all specified folders and their files to the modpackDir.</div> +</td> +</tr> +<tr id="i3" class="rowColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyIcon-java.lang.String-">copyIcon</a></span>(java.lang.String modpackDir)</code> +<div class="block">Copies the server-icon.png into server_pack.</div> +</td> +</tr> +<tr id="i4" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyProperties-java.lang.String-">copyProperties</a></span>(java.lang.String modpackDir)</code> +<div class="block">Copies the server.properties into server_pack.</div> +</td> +</tr> +<tr id="i5" class="rowColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyStartScripts-java.lang.String-java.lang.String-boolean-">copyStartScripts</a></span>(java.lang.String modpackDir, + java.lang.String modLoader, + boolean includeStartScripts)</code> +<div class="block">Copies start scripts for Forge modloader into the server_pack folder.</div> +</td> +</tr> +<tr id="i6" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#deleteMinecraftJar-java.lang.String-java.lang.String-java.lang.String-">deleteMinecraftJar</a></span>(java.lang.String modLoader, + java.lang.String modpackDir, + java.lang.String minecraftVersion)</code> +<div class="block">Deletes Mojang's minecraft_server.jar from the zip-archive so users do not accidentally upload a file containing software from Mojang.</div> +</td> +</tr> +<tr id="i7" class="rowColor"> +<td class="colFirst"><code>(package private) boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#downloadFabricJar-java.lang.String-">downloadFabricJar</a></span>(java.lang.String modpackDir)</code> +<div class="block">Downloads the specified version of Fabric.</div> +</td> +</tr> +<tr id="i8" class="altColor"> +<td class="colFirst"><code>(package private) boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#downloadForgeJar-java.lang.String-java.lang.String-java.lang.String-">downloadForgeJar</a></span>(java.lang.String minecraftVersion, + java.lang.String modLoaderVersion, + java.lang.String modpackDir)</code> +<div class="block">Downloads the specified version of the Forge installer to be used in ServerSetup.installServer.</div> +</td> +</tr> +<tr id="i9" class="rowColor"> +<td class="colFirst"><code>(package private) java.util.List<java.lang.String></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#excludeClientMods-java.lang.String-java.util.List-">excludeClientMods</a></span>(java.lang.String modsDir, + java.util.List<java.lang.String> clientMods)</code> +<div class="block">Generate a list of all mods in a modpack EXCEPT clientside-only mods.</div> +</td> +</tr> +<tr id="i10" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#fabricBatch-java.lang.String-java.lang.String-">fabricBatch</a></span>(java.lang.String modpackDir, + java.lang.String minecraftVersion)</code> +<div class="block">Generates download scripts for Mojang's Minecraft server for Fabric,Windows.</div> +</td> +</tr> +<tr id="i11" class="rowColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#fabricShell-java.lang.String-java.lang.String-">fabricShell</a></span>(java.lang.String modpackDir, + java.lang.String minecraftVersion)</code> +<div class="block">Generates download scripts for Mojang's Minecraft server for Fabric,Linux.</div> +</td> +</tr> +<tr id="i12" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#forgeBatch-java.lang.String-java.lang.String-">forgeBatch</a></span>(java.lang.String modpackDir, + java.lang.String minecraftVersion)</code> +<div class="block">Generates download scripts for Mojang's Minecraft server for Forge,Windows.</div> +</td> +</tr> +<tr id="i13" class="rowColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#forgeShell-java.lang.String-java.lang.String-">forgeShell</a></span>(java.lang.String modpackDir, + java.lang.String minecraftVersion)</code> +<div class="block">Generates download scripts for Mojang's Minecraft server for Forge,Linux.</div> +</td> +</tr> +<tr id="i14" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#generateDownloadScripts-java.lang.String-java.lang.String-java.lang.String-">generateDownloadScripts</a></span>(java.lang.String modLoader, + java.lang.String modpackDir, + java.lang.String minecraftVersion)</code> +<div class="block">Calls methods for generating download scripts for Mojang's Minecraft server depending on the specified versions and modloader.</div> +</td> +</tr> +<tr id="i15" class="rowColor"> +<td class="colFirst"><code>java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getFabricLinuxFile--">getFabricLinuxFile</a></span>()</code> </td> +</tr> +<tr id="i16" class="altColor"> +<td class="colFirst"><code>java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getFabricWindowsFile--">getFabricWindowsFile</a></span>()</code> </td> +</tr> +<tr id="i17" class="rowColor"> +<td class="colFirst"><code>java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getForgeLinuxFile--">getForgeLinuxFile</a></span>()</code> </td> +</tr> +<tr id="i18" class="altColor"> +<td class="colFirst"><code>java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getForgeWindowsFile--">getForgeWindowsFile</a></span>()</code> </td> +</tr> +<tr id="i19" class="rowColor"> +<td class="colFirst"><code>java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getIconFile--">getIconFile</a></span>()</code> </td> +</tr> +<tr id="i20" class="altColor"> +<td class="colFirst"><code>java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getPropertiesFile--">getPropertiesFile</a></span>()</code> </td> +</tr> +<tr id="i21" class="rowColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#installServer-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">installServer</a></span>(java.lang.String modLoader, + java.lang.String modpackDir, + java.lang.String minecraftVersion, + java.lang.String modLoaderVersion, + java.lang.String javaPath)</code> +<div class="block">Installs the files for a Forge/Fabric server.</div> +</td> +</tr> +<tr id="i22" class="altColor"> +<td class="colFirst"><code>(package private) java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#latestFabricInstaller-java.lang.String-">latestFabricInstaller</a></span>(java.lang.String modpackDir)</code> +<div class="block">Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer.</div> +</td> +</tr> +<tr id="i23" class="rowColor"> +<td class="colFirst"><code>boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#run--">run</a></span>()</code> +<div class="block">Run when serverpackcreator is run in either -cli or -cgen mode.</div> +</td> +</tr> +<tr id="i24" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#zipBuilder-java.lang.String-java.lang.String-java.lang.Boolean-java.lang.String-">zipBuilder</a></span>(java.lang.String modpackDir, + java.lang.String modLoader, + java.lang.Boolean includeServerInstallation, + java.lang.String minecraftVersion)</code> +<div class="block">Create a zip-archive of the serverpack, excluding Mojang's minecraft_server.jar.</div> +</td> +</tr> +</table> +<ul class="blockList"> +<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> +<!-- --> +</a> +<h3>Methods inherited from class java.lang.Object</h3> +<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li> +</ul> +</li> +</ul> +</li> +</ul> +</div> +<div class="details"> +<ul class="blockList"> +<li class="blockList"> +<!-- ============ FIELD DETAIL =========== --> +<ul class="blockList"> +<li class="blockList"><a name="field.detail"> +<!-- --> +</a> +<h3>Field Detail</h3> +<a name="appLogger"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>appLogger</h4> +<pre>private static final org.apache.logging.log4j.Logger appLogger</pre> +</li> +</ul> +<a name="installerLogger"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>installerLogger</h4> +<pre>private static final org.apache.logging.log4j.Logger installerLogger</pre> +</li> +</ul> +<a name="configuration"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>configuration</h4> +<pre>private <a href="../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> configuration</pre> +</li> +</ul> +<a name="localizationManager"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>localizationManager</h4> +<pre>private <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +</li> +</ul> +<a name="propertiesFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>propertiesFile</h4> +<pre>private final java.io.File propertiesFile</pre> +</li> +</ul> +<a name="iconFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>iconFile</h4> +<pre>private final java.io.File iconFile</pre> +</li> +</ul> +<a name="forgeWindowsFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>forgeWindowsFile</h4> +<pre>private final java.io.File forgeWindowsFile</pre> +</li> +</ul> +<a name="forgeLinuxFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>forgeLinuxFile</h4> +<pre>private final java.io.File forgeLinuxFile</pre> +</li> +</ul> +<a name="fabricWindowsFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>fabricWindowsFile</h4> +<pre>private final java.io.File fabricWindowsFile</pre> +</li> +</ul> +<a name="fabricLinuxFile"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>fabricLinuxFile</h4> +<pre>private final java.io.File fabricLinuxFile</pre> +</li> +</ul> +</li> +</ul> +<!-- ========= CONSTRUCTOR DETAIL ======== --> +<ul class="blockList"> +<li class="blockList"><a name="constructor.detail"> +<!-- --> +</a> +<h3>Constructor Detail</h3> +<a name="CreateServerPack-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>CreateServerPack</h4> +<pre>public CreateServerPack(<a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager, + <a href="../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfigCheck)</pre> +</li> +</ul> +</li> +</ul> +<!-- ============ METHOD DETAIL ========== --> +<ul class="blockList"> +<li class="blockList"><a name="method.detail"> +<!-- --> +</a> +<h3>Method Detail</h3> +<a name="getPropertiesFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getPropertiesFile</h4> +<pre>public java.io.File getPropertiesFile()</pre> +</li> +</ul> +<a name="getIconFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getIconFile</h4> +<pre>public java.io.File getIconFile()</pre> +</li> +</ul> +<a name="getForgeWindowsFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getForgeWindowsFile</h4> +<pre>public java.io.File getForgeWindowsFile()</pre> +</li> +</ul> +<a name="getForgeLinuxFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getForgeLinuxFile</h4> +<pre>public java.io.File getForgeLinuxFile()</pre> +</li> +</ul> +<a name="getFabricWindowsFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getFabricWindowsFile</h4> +<pre>public java.io.File getFabricWindowsFile()</pre> +</li> +</ul> +<a name="getFabricLinuxFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getFabricLinuxFile</h4> +<pre>public java.io.File getFabricLinuxFile()</pre> +</li> +</ul> +<a name="run--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>run</h4> +<pre>public boolean run()</pre> +<div class="block">Run when serverpackcreator is run in either -cli or -cgen mode. Runs what used to be the main content in Main in pre-1.x.x. times. Inits config checks and, if config checks are successfull, calls methods to create the server pack.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Return true if the serverpack was successfully generated, false if not.</dd> +</dl> +</li> +</ul> +<a name="cleanupEnvironment-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>cleanupEnvironment</h4> +<pre>void cleanupEnvironment(java.lang.String modpackDir)</pre> +<div class="block">Deletes files from previous runs of serverpackcreator.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. The directory in where to check for files from previous runs.</dd> +</dl> +</li> +</ul> +<a name="copyStartScripts-java.lang.String-java.lang.String-boolean-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>copyStartScripts</h4> +<pre>void copyStartScripts(java.lang.String modpackDir, + java.lang.String modLoader, + boolean includeStartScripts)</pre> +<div class="block">Copies start scripts for Forge modloader into the server_pack folder.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. Files will be copied into subfolder server_pack. Checks for valid modpackDir are in ConfigCheck.</dd> +<dd><code>modLoader</code> - String. Determines whether start scripts for Forge or Fabric are copied to modpackDir. Checks for valid modLoader are in ConfigCheck.</dd> +<dd><code>includeStartScripts</code> - Boolean. Whether to include start scripts in server_pack. Boolean.</dd> +</dl> +</li> +</ul> +<a name="copyFiles-java.lang.String-java.util.List-java.util.List-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>copyFiles</h4> +<pre>void copyFiles(java.lang.String modpackDir, + java.util.List<java.lang.String> copyDirs, + java.util.List<java.lang.String> clientMods) + throws java.io.IOException</pre> +<div class="block">Copies all specified folders and their files to the modpackDir.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. /server_pack. Directory where all directories listed in copyDirs will be copied into.</dd> +<dd><code>copyDirs</code> - String List. The folders and files within to copy.</dd> +<dd><code>clientMods</code> - String List. List of clientside-only mods NOT to copy to server pack.</dd> +<dt><span class="throwsLabel">Throws:</span></dt> +<dd><code>java.io.IOException</code> - Only print stacktrace if it does not start with java.nio.file.DirectoryNotEmptyException.</dd> +</dl> +</li> +</ul> +<a name="excludeClientMods-java.lang.String-java.util.List-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>excludeClientMods</h4> +<pre>java.util.List<java.lang.String> excludeClientMods(java.lang.String modsDir, + java.util.List<java.lang.String> clientMods)</pre> +<div class="block">Generate a list of all mods in a modpack EXCEPT clientside-only mods. This list is then used by copyFiles.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modsDir</code> - String. /mods The directory in which to generate a list of all available mods.</dd> +<dd><code>clientMods</code> - List String. A list of all clientside-only mods passed by copyFiles, which is then removed from the list generated in this method.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>List String. A list of all mods inside the modpack excluding the specified clientside-only mods.</dd> +</dl> +</li> +</ul> +<a name="copyIcon-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>copyIcon</h4> +<pre>void copyIcon(java.lang.String modpackDir)</pre> +<div class="block">Copies the server-icon.png into server_pack.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. /server_pack. Directory where the server-icon.png will be copied to.</dd> +</dl> +</li> +</ul> +<a name="copyProperties-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>copyProperties</h4> +<pre>void copyProperties(java.lang.String modpackDir)</pre> +<div class="block">Copies the server.properties into server_pack.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. /server_pack. Directory where the server.properties. will be copied to.</dd> +</dl> +</li> +</ul> +<a name="installServer-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>installServer</h4> +<pre>void installServer(java.lang.String modLoader, + java.lang.String modpackDir, + java.lang.String minecraftVersion, + java.lang.String modLoaderVersion, + java.lang.String javaPath)</pre> +<div class="block">Installs the files for a Forge/Fabric server.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modLoader</code> - String. The modloader for which to install the server.</dd> +<dd><code>modpackDir</code> - String. /server_pack The directory where the modloader server will be installed in.</dd> +<dd><code>minecraftVersion</code> - String. The Minecraft version for which to install the modloader and Minecraft server.</dd> +<dd><code>modLoaderVersion</code> - String. The modloader version for which to install the modloader and Minecraft server.</dd> +<dd><code>javaPath</code> - String. Path to Java installation needed to execute the Fabric and Forge installers.</dd> +</dl> +</li> +</ul> +<a name="zipBuilder-java.lang.String-java.lang.String-java.lang.Boolean-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>zipBuilder</h4> +<pre>void zipBuilder(java.lang.String modpackDir, + java.lang.String modLoader, + java.lang.Boolean includeServerInstallation, + java.lang.String minecraftVersion)</pre> +<div class="block">Create a zip-archive of the serverpack, excluding Mojang's minecraft_server.jar. + With help from https://stackoverflow.com/questions/1091788/how-to-create-a-zip-file-in-java</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. The directory where the zip-archive will be created and saved in.</dd> +<dd><code>modLoader</code> - String. Determines the name of Minecraft#s server jar which will be deleted from the zip-archive.</dd> +<dd><code>includeServerInstallation</code> - Boolean. Determines whether the Minecraft server jar needs to be deleted from the zip-archive.</dd> +<dd><code>minecraftVersion</code> - String. The Minecraft version of which to delete the server jar. Used if modloader is Forge.</dd> +</dl> +</li> +</ul> +<a name="generateDownloadScripts-java.lang.String-java.lang.String-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>generateDownloadScripts</h4> +<pre>void generateDownloadScripts(java.lang.String modLoader, + java.lang.String modpackDir, + java.lang.String minecraftVersion)</pre> +<div class="block">Calls methods for generating download scripts for Mojang's Minecraft server depending on the specified versions and modloader.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modLoader</code> - String. The specified modloader determines the name under which Mojang's server jar will be downloaded as.</dd> +<dd><code>modpackDir</code> - String. /server_pack The directory where the scripts will be placed in.</dd> +<dd><code>minecraftVersion</code> - String. The version of the Minecraft server jar to download.</dd> +</dl> +</li> +</ul> +<a name="fabricShell-java.lang.String-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>fabricShell</h4> +<pre>void fabricShell(java.lang.String modpackDir, + java.lang.String minecraftVersion)</pre> +<div class="block">Generates download scripts for Mojang's Minecraft server for Fabric,Linux.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. /server_pack The directory where the scripts will be placed in.</dd> +<dd><code>minecraftVersion</code> - String. The version of the Minecraft server jar to download.</dd> +</dl> +</li> +</ul> +<a name="fabricBatch-java.lang.String-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>fabricBatch</h4> +<pre>void fabricBatch(java.lang.String modpackDir, + java.lang.String minecraftVersion)</pre> +<div class="block">Generates download scripts for Mojang's Minecraft server for Fabric,Windows.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. /server_pack The directory where the scripts will be placed in.</dd> +<dd><code>minecraftVersion</code> - String. The version of the Minecraft server jar to download.</dd> +</dl> +</li> +</ul> +<a name="forgeShell-java.lang.String-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>forgeShell</h4> +<pre>void forgeShell(java.lang.String modpackDir, + java.lang.String minecraftVersion)</pre> +<div class="block">Generates download scripts for Mojang's Minecraft server for Forge,Linux.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. /server_pack The directory where the scripts will be placed in.</dd> +<dd><code>minecraftVersion</code> - String. The version of the Minecraft server jar to download.</dd> +</dl> +</li> +</ul> +<a name="forgeBatch-java.lang.String-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>forgeBatch</h4> +<pre>void forgeBatch(java.lang.String modpackDir, + java.lang.String minecraftVersion)</pre> +<div class="block">Generates download scripts for Mojang's Minecraft server for Forge,Windows.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. /server_pack The directory where the scripts will be placed in.</dd> +<dd><code>minecraftVersion</code> - String. The version of the Minecraft server jar to download.</dd> +</dl> +</li> +</ul> +<a name="downloadFabricJar-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>downloadFabricJar</h4> +<pre>boolean downloadFabricJar(java.lang.String modpackDir)</pre> +<div class="block">Downloads the specified version of Fabric.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. /server_pack The directory where the Fabric installer will be placed in.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns true if the download was successful. False if not.</dd> +</dl> +</li> +</ul> +<a name="latestFabricInstaller-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>latestFabricInstaller</h4> +<pre>java.lang.String latestFabricInstaller(java.lang.String modpackDir)</pre> +<div class="block">Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modpackDir</code> - String. /server_pack The directory where the Fabric installer will be placed in.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns true if the download was successful. False if not.</dd> +</dl> +</li> +</ul> +<a name="downloadForgeJar-java.lang.String-java.lang.String-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>downloadForgeJar</h4> +<pre>boolean downloadForgeJar(java.lang.String minecraftVersion, + java.lang.String modLoaderVersion, + java.lang.String modpackDir)</pre> +<div class="block">Downloads the specified version of the Forge installer to be used in ServerSetup.installServer.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>minecraftVersion</code> - String. The Minecraft version corresponding to the Forge version. Minecraft version and Forge version build a pair.</dd> +<dd><code>modLoaderVersion</code> - String. The Forge version corresponding to the Minecraft version. Minecraft version and Forge version build a pair.</dd> +<dd><code>modpackDir</code> - String. /server_pack The directory where the Forge installer will be placed in.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns true if the download was successful. False if not.</dd> +</dl> +</li> +</ul> +<a name="deleteMinecraftJar-java.lang.String-java.lang.String-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>deleteMinecraftJar</h4> +<pre>void deleteMinecraftJar(java.lang.String modLoader, + java.lang.String modpackDir, + java.lang.String minecraftVersion)</pre> +<div class="block">Deletes Mojang's minecraft_server.jar from the zip-archive so users do not accidentally upload a file containing software from Mojang. + With help from https://stackoverflow.com/questions/5244963/delete-files-from-a-zip-archive-without-decompressing-in-java-or-maybe-python and https://bugs.openjdk.java.net/browse/JDK-8186227</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modLoader</code> - String. Determines the name of the file to delete.</dd> +<dd><code>modpackDir</code> - String. /server_pack The directory in which the file will be deleted.</dd> +<dd><code>minecraftVersion</code> - String. The Minecraft version of which to delete the server jar. Used if modloader is Forge.</dd> +</dl> +</li> +</ul> +<a name="cleanUpServerPack-java.io.File-java.io.File-java.lang.String-java.lang.String-java.lang.String-java.lang.String-"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>cleanUpServerPack</h4> +<pre>void cleanUpServerPack(java.io.File fabricInstaller, + java.io.File forgeInstaller, + java.lang.String modLoader, + java.lang.String modpackDir, + java.lang.String minecraftVersion, + java.lang.String modLoaderVersion)</pre> +<div class="block">Deletes remnant files from Fabric/Forge installation no longer needed.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>fabricInstaller</code> - File. Fabric installer to be deleted.</dd> +<dd><code>forgeInstaller</code> - File. Forge installer to be deleted.</dd> +<dd><code>modLoader</code> - String. Whether Forge or Fabric files are to be deleted.</dd> +<dd><code>modpackDir</code> - String. /server_pack The directory where files are to be deleted.</dd> +<dd><code>minecraftVersion</code> - String. Needed for renaming the Forge server jar to work with launch scripts provided by serverpackcreator.</dd> +<dd><code>modLoaderVersion</code> - String. Needed for renaming the Forge server jar to work with launch scripts provided by serverpackcreator.</dd> +</dl> +</li> +</ul> +</li> +</ul> +</li> +</ul> +</div> +</div> +<!-- ========= END OF CLASS DATA ========= --> +<!-- ======= START OF BOTTOM NAVBAR ====== --> +<div class="bottomNav"><a name="navbar.bottom"> +<!-- --> +</a> +<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div> +<a name="navbar.bottom.firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../overview-summary.html">Overview</a></li> +<li><a href="package-summary.html">Package</a></li> +<li class="navBarCell1Rev">Class</li> +<li><a href="package-tree.html">Tree</a></li> +<li><a href="../../../deprecated-list.html">Deprecated</a></li> +<li><a href="../../../index-all.html">Index</a></li> +<li><a href="../../../help-doc.html">Help</a></li> +</ul> +</div> +<div class="subNav"> +<ul class="navList"> +<li><a href="../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../index.html?de/griefed/serverpackcreator/CreateServerPack.html" target="_top">Frames</a></li> +<li><a href="CreateServerPack.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_bottom"> +<li><a href="../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_bottom"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Nested | </li> +<li><a href="#field.summary">Field</a> | </li> +<li><a href="#constructor.summary">Constr</a> | </li> +<li><a href="#method.summary">Method</a></li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li><a href="#field.detail">Field</a> | </li> +<li><a href="#constructor.detail">Constr</a> | </li> +<li><a href="#method.detail">Method</a></li> +</ul> +</div> +<a name="skip.navbar.bottom"> +<!-- --> +</a></div> +<!-- ======== END OF BOTTOM NAVBAR ======= --> +</body> +</html> diff --git a/docs/de/griefed/serverpackcreator/FilesSetup.html b/docs/de/griefed/serverpackcreator/FilesSetup.html index f962fe428..34c6204fe 100644 --- a/docs/de/griefed/serverpackcreator/FilesSetup.html +++ b/docs/de/griefed/serverpackcreator/FilesSetup.html @@ -17,8 +17,8 @@ catch(err) { } //--> -var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":9,"i8":10,"i9":10,"i10":9}; -var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; +var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10}; +var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; var altColor = "altColor"; var rowColor = "rowColor"; var tableTab = "tableTab"; @@ -47,8 +47,8 @@ var activeTableTab = "activeTableTab"; </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../de/griefed/serverpackcreator/Handler.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> <li><a href="../../../index.html?de/griefed/serverpackcreator/FilesSetup.html" target="_top">Frames</a></li> @@ -131,6 +131,42 @@ extends java.lang.Object</pre> <td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#appLogger">appLogger</a></span></code> </td> </tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#configFile">configFile</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#fabricLinuxFile">fabricLinuxFile</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#fabricWindowsFile">fabricWindowsFile</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#forgeLinuxFile">forgeLinuxFile</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#forgeWindowsFile">forgeWindowsFile</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#iconFile">iconFile</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#localizationManager">localizationManager</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#oldConfigFile">oldConfigFile</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#propertiesFile">propertiesFile</a></span></code> </td> +</tr> </table> </li> </ul> @@ -146,7 +182,7 @@ extends java.lang.Object</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#FilesSetup--">FilesSetup</a></span>()</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#FilesSetup-de.griefed.serverpackcreator.i18n.LocalizationManager-">FilesSetup</a></span>(<a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</code> </td> </tr> </table> </li> @@ -158,7 +194,7 @@ extends java.lang.Object</pre> </a> <h3>Method Summary</h3> <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> -<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> +<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> <tr> <th class="colFirst" scope="col">Modifier and Type</th> <th class="colLast" scope="col">Method and Description</th> @@ -206,41 +242,42 @@ extends java.lang.Object</pre> </td> </tr> <tr id="i7" class="rowColor"> -<td class="colFirst"><code>static boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#checkLocaleFile--">checkLocaleFile</a></span>()</code> -<div class="block">Check for existence of a lang.properties-file and if found assign language specified therein.</div> -</td> -</tr> -<tr id="i8" class="altColor"> <td class="colFirst"><code>(package private) void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#filesSetup--">filesSetup</a></span>()</code> <div class="block">Calls individual methods which check for existence of default files.</div> </td> </tr> +<tr id="i8" class="altColor"> +<td class="colFirst"><code>java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getConfigFile--">getConfigFile</a></span>()</code> </td> +</tr> <tr id="i9" class="rowColor"> -<td class="colFirst"><code>boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#writeConfigToFile-java.lang.String-java.lang.String-java.lang.String-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-java.io.File-boolean-">writeConfigToFile</a></span>(java.lang.String modpackDir, - java.lang.String clientMods, - java.lang.String copyDirs, - boolean includeServer, - java.lang.String javaPath, - java.lang.String minecraftVersion, - java.lang.String modLoader, - java.lang.String modLoaderVersion, - boolean includeIcon, - boolean includeProperties, - boolean includeScripts, - boolean includeZip, - java.io.File fileName, - boolean isTemporary)</code> -<div class="block">Writes a new configuration file with the parameters passed to it.</div> -</td> +<td class="colFirst"><code>java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getFabricLinuxFile--">getFabricLinuxFile</a></span>()</code> </td> </tr> <tr id="i10" class="altColor"> -<td class="colFirst"><code>static void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#writeLocaleToFile-java.lang.String-">writeLocaleToFile</a></span>(java.lang.String locale)</code> -<div class="block">Writes the specified locale from -lang your_locale to a lang.properties file to ensure every subsequent start of serverpackcreator is executed using said locale.</div> -</td> +<td class="colFirst"><code>java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getFabricWindowsFile--">getFabricWindowsFile</a></span>()</code> </td> +</tr> +<tr id="i11" class="rowColor"> +<td class="colFirst"><code>java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getForgeLinuxFile--">getForgeLinuxFile</a></span>()</code> </td> +</tr> +<tr id="i12" class="altColor"> +<td class="colFirst"><code>java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getForgeWindowsFile--">getForgeWindowsFile</a></span>()</code> </td> +</tr> +<tr id="i13" class="rowColor"> +<td class="colFirst"><code>java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getIconFile--">getIconFile</a></span>()</code> </td> +</tr> +<tr id="i14" class="altColor"> +<td class="colFirst"><code>java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getOldConfigFile--">getOldConfigFile</a></span>()</code> </td> +</tr> +<tr id="i15" class="rowColor"> +<td class="colFirst"><code>java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getPropertiesFile--">getPropertiesFile</a></span>()</code> </td> </tr> </table> <ul class="blockList"> @@ -267,12 +304,93 @@ extends java.lang.Object</pre> <a name="appLogger"> <!-- --> </a> -<ul class="blockListLast"> +<ul class="blockList"> <li class="blockList"> <h4>appLogger</h4> <pre>private static final org.apache.logging.log4j.Logger appLogger</pre> </li> </ul> +<a name="configFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>configFile</h4> +<pre>private final java.io.File configFile</pre> +</li> +</ul> +<a name="oldConfigFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>oldConfigFile</h4> +<pre>private final java.io.File oldConfigFile</pre> +</li> +</ul> +<a name="propertiesFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>propertiesFile</h4> +<pre>private final java.io.File propertiesFile</pre> +</li> +</ul> +<a name="iconFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>iconFile</h4> +<pre>private final java.io.File iconFile</pre> +</li> +</ul> +<a name="forgeWindowsFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>forgeWindowsFile</h4> +<pre>private final java.io.File forgeWindowsFile</pre> +</li> +</ul> +<a name="forgeLinuxFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>forgeLinuxFile</h4> +<pre>private final java.io.File forgeLinuxFile</pre> +</li> +</ul> +<a name="fabricWindowsFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>fabricWindowsFile</h4> +<pre>private final java.io.File fabricWindowsFile</pre> +</li> +</ul> +<a name="fabricLinuxFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>fabricLinuxFile</h4> +<pre>private final java.io.File fabricLinuxFile</pre> +</li> +</ul> +<a name="localizationManager"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>localizationManager</h4> +<pre>private <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +</li> +</ul> </li> </ul> <!-- ========= CONSTRUCTOR DETAIL ======== --> @@ -281,13 +399,13 @@ extends java.lang.Object</pre> <!-- --> </a> <h3>Constructor Detail</h3> -<a name="FilesSetup--"> +<a name="FilesSetup-de.griefed.serverpackcreator.i18n.LocalizationManager-"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>FilesSetup</h4> -<pre>public FilesSetup()</pre> +<pre>public FilesSetup(<a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</pre> </li> </ul> </li> @@ -298,6 +416,78 @@ extends java.lang.Object</pre> <!-- --> </a> <h3>Method Detail</h3> +<a name="getConfigFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getConfigFile</h4> +<pre>public java.io.File getConfigFile()</pre> +</li> +</ul> +<a name="getOldConfigFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getOldConfigFile</h4> +<pre>public java.io.File getOldConfigFile()</pre> +</li> +</ul> +<a name="getPropertiesFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getPropertiesFile</h4> +<pre>public java.io.File getPropertiesFile()</pre> +</li> +</ul> +<a name="getIconFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getIconFile</h4> +<pre>public java.io.File getIconFile()</pre> +</li> +</ul> +<a name="getForgeWindowsFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getForgeWindowsFile</h4> +<pre>public java.io.File getForgeWindowsFile()</pre> +</li> +</ul> +<a name="getForgeLinuxFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getForgeLinuxFile</h4> +<pre>public java.io.File getForgeLinuxFile()</pre> +</li> +</ul> +<a name="getFabricWindowsFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getFabricWindowsFile</h4> +<pre>public java.io.File getFabricWindowsFile()</pre> +</li> +</ul> +<a name="getFabricLinuxFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getFabricLinuxFile</h4> +<pre>public java.io.File getFabricLinuxFile()</pre> +</li> +</ul> <a name="filesSetup--"> <!-- --> </a> @@ -395,7 +585,7 @@ extends java.lang.Object</pre> <a name="checkForIcon--"> <!-- --> </a> -<ul class="blockList"> +<ul class="blockListLast"> <li class="blockList"> <h4>checkForIcon</h4> <pre>boolean checkForIcon()</pre> @@ -406,78 +596,6 @@ extends java.lang.Object</pre> </dl> </li> </ul> -<a name="checkLocaleFile--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>checkLocaleFile</h4> -<pre>public static boolean checkLocaleFile()</pre> -<div class="block">Check for existence of a lang.properties-file and if found assign language specified therein. If assigning the specified language fails because it is not supported, default to en_US. - This method should not contain the Localizationmanager, as the initialization of said manager is called from here. Therefore, localized string are not yet available.</div> -<dl> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Always returns true. Dirty hack until I one day figure out how to init Localization before UI start correctly.</dd> -</dl> -</li> -</ul> -<a name="writeLocaleToFile-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>writeLocaleToFile</h4> -<pre>public static void writeLocaleToFile(java.lang.String locale)</pre> -<div class="block">Writes the specified locale from -lang your_locale to a lang.properties file to ensure every subsequent start of serverpackcreator is executed using said locale.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>locale</code> - The locale the user specified when they ran serverpackcreator with -lang -your_locale. - This method should not contain the Localizationmanager, as the initialization of said manager is called from here. Therefore, localized string are not yet available.</dd> -</dl> -</li> -</ul> -<a name="writeConfigToFile-java.lang.String-java.lang.String-java.lang.String-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-java.io.File-boolean-"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>writeConfigToFile</h4> -<pre>public boolean writeConfigToFile(java.lang.String modpackDir, - java.lang.String clientMods, - java.lang.String copyDirs, - boolean includeServer, - java.lang.String javaPath, - java.lang.String minecraftVersion, - java.lang.String modLoader, - java.lang.String modLoaderVersion, - boolean includeIcon, - boolean includeProperties, - boolean includeScripts, - boolean includeZip, - java.io.File fileName, - boolean isTemporary)</pre> -<div class="block">Writes a new configuration file with the parameters passed to it.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. The path to the modpack.</dd> -<dd><code>clientMods</code> - List, String. List of clientside-only mods.</dd> -<dd><code>copyDirs</code> - List, String. List of directories to include in server pack.</dd> -<dd><code>includeServer</code> - Boolean. Whether to include a modloader server installation.</dd> -<dd><code>javaPath</code> - String. Path to the java executable.</dd> -<dd><code>minecraftVersion</code> - String. Minecraft version used by the modpack and server pack.</dd> -<dd><code>modLoader</code> - String. Modloader used by the modpack and server pack. Ether Forge or Fabric.</dd> -<dd><code>modLoaderVersion</code> - String. Modloader version used by the modpack and server pack.</dd> -<dd><code>includeIcon</code> - Boolean. Whether to include a server-icon in the server pack.</dd> -<dd><code>includeProperties</code> - Boolean. Whether to include a properties file in the server pack.</dd> -<dd><code>includeScripts</code> - Boolean. Whether to include start scripts in the server pack.</dd> -<dd><code>includeZip</code> - Boolean. Whether to create a ZIP-archive of the server pack, excluding Mojang's Minecraft server jar.</dd> -<dd><code>fileName</code> - The name under which to write the new file.</dd> -<dd><code>isTemporary</code> - Decides whether to delete existing config-file. If isTemporary is false, existing config files will be deleted before writing the new file.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the configuration file has been successfully written and old ones replaced.</dd> -</dl> -</li> -</ul> </li> </ul> </li> @@ -505,8 +623,8 @@ extends java.lang.Object</pre> </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../de/griefed/serverpackcreator/Handler.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> <li><a href="../../../index.html?de/griefed/serverpackcreator/FilesSetup.html" target="_top">Frames</a></li> diff --git a/docs/de/griefed/serverpackcreator/Handler.html b/docs/de/griefed/serverpackcreator/Handler.html deleted file mode 100644 index 2e53d6757..000000000 --- a/docs/de/griefed/serverpackcreator/Handler.html +++ /dev/null @@ -1,331 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<!-- NewPage --> -<html lang="de"> -<head> -<!-- Generated by javadoc --> -<title>Handler (serverpackcreator API)</title> -<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style"> -<script type="text/javascript" src="../../../script.js"></script> -</head> -<body> -<script type="text/javascript"><!-- - try { - if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Handler (serverpackcreator API)"; - } - } - catch(err) { - } -//--> -var methods = {"i0":9,"i1":9}; -var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]}; -var altColor = "altColor"; -var rowColor = "rowColor"; -var tableTab = "tableTab"; -var activeTableTab = "activeTableTab"; -</script> -<noscript> -<div>JavaScript is disabled on your browser.</div> -</noscript> -<!-- ========= START OF TOP NAVBAR ======= --> -<div class="topNav"><a name="navbar.top"> -<!-- --> -</a> -<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div> -<a name="navbar.top.firstrow"> -<!-- --> -</a> -<ul class="navList" title="Navigation"> -<li><a href="../../../overview-summary.html">Overview</a></li> -<li><a href="package-summary.html">Package</a></li> -<li class="navBarCell1Rev">Class</li> -<li><a href="package-tree.html">Tree</a></li> -<li><a href="../../../deprecated-list.html">Deprecated</a></li> -<li><a href="../../../index-all.html">Index</a></li> -<li><a href="../../../help-doc.html">Help</a></li> -</ul> -</div> -<div class="subNav"> -<ul class="navList"> -<li><a href="../../../de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> -</ul> -<ul class="navList"> -<li><a href="../../../index.html?de/griefed/serverpackcreator/Handler.html" target="_top">Frames</a></li> -<li><a href="Handler.html" target="_top">No Frames</a></li> -</ul> -<ul class="navList" id="allclasses_navbar_top"> -<li><a href="../../../allclasses-noframe.html">All Classes</a></li> -</ul> -<div> -<script type="text/javascript"><!-- - allClassesLink = document.getElementById("allclasses_navbar_top"); - if(window==top) { - allClassesLink.style.display = "block"; - } - else { - allClassesLink.style.display = "none"; - } - //--> -</script> -</div> -<div> -<ul class="subNavList"> -<li>Summary: </li> -<li>Nested | </li> -<li><a href="#field.summary">Field</a> | </li> -<li><a href="#constructor.summary">Constr</a> | </li> -<li><a href="#method.summary">Method</a></li> -</ul> -<ul class="subNavList"> -<li>Detail: </li> -<li><a href="#field.detail">Field</a> | </li> -<li><a href="#constructor.detail">Constr</a> | </li> -<li><a href="#method.detail">Method</a></li> -</ul> -</div> -<a name="skip.navbar.top"> -<!-- --> -</a></div> -<!-- ========= END OF TOP NAVBAR ========= --> -<!-- ======== START OF CLASS DATA ======== --> -<div class="header"> -<div class="subTitle">de.griefed.serverpackcreator</div> -<h2 title="Class Handler" class="title">Class Handler</h2> -</div> -<div class="contentContainer"> -<ul class="inheritance"> -<li>java.lang.Object</li> -<li> -<ul class="inheritance"> -<li>de.griefed.serverpackcreator.Handler</li> -</ul> -</li> -</ul> -<div class="description"> -<ul class="blockList"> -<li class="blockList"> -<hr> -<br> -<pre>public class <span class="typeNameLabel">Handler</span> -extends java.lang.Object</pre> -</li> -</ul> -</div> -<div class="summary"> -<ul class="blockList"> -<li class="blockList"> -<!-- =========== FIELD SUMMARY =========== --> -<ul class="blockList"> -<li class="blockList"><a name="field.summary"> -<!-- --> -</a> -<h3>Field Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation"> -<caption><span>Fields</span><span class="tabEnd"> </span></caption> -<tr> -<th class="colFirst" scope="col">Modifier and Type</th> -<th class="colLast" scope="col">Field and Description</th> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Handler.html#appLogger">appLogger</a></span></code> </td> -</tr> -</table> -</li> -</ul> -<!-- ======== CONSTRUCTOR SUMMARY ======== --> -<ul class="blockList"> -<li class="blockList"><a name="constructor.summary"> -<!-- --> -</a> -<h3>Constructor Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> -<caption><span>Constructors</span><span class="tabEnd"> </span></caption> -<tr> -<th class="colOne" scope="col">Constructor and Description</th> -</tr> -<tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Handler.html#Handler--">Handler</a></span>()</code> </td> -</tr> -</table> -</li> -</ul> -<!-- ========== METHOD SUMMARY =========== --> -<ul class="blockList"> -<li class="blockList"><a name="method.summary"> -<!-- --> -</a> -<h3>Method Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> -<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> -<tr> -<th class="colFirst" scope="col">Modifier and Type</th> -<th class="colLast" scope="col">Method and Description</th> -</tr> -<tr id="i0" class="altColor"> -<td class="colFirst"><code>(package private) static void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Handler.html#main-java.lang.String:A-">main</a></span>(java.lang.String[] args)</code> -<div class="block">Handler-class makes the calls to every other class where the actual magic is happening.</div> -</td> -</tr> -<tr id="i1" class="rowColor"> -<td class="colFirst"><code>static boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Handler.html#run--">run</a></span>()</code> -<div class="block">Run when serverpackcreator is run in either -cli or -cgen mode.</div> -</td> -</tr> -</table> -<ul class="blockList"> -<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> -<!-- --> -</a> -<h3>Methods inherited from class java.lang.Object</h3> -<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li> -</ul> -</li> -</ul> -</li> -</ul> -</div> -<div class="details"> -<ul class="blockList"> -<li class="blockList"> -<!-- ============ FIELD DETAIL =========== --> -<ul class="blockList"> -<li class="blockList"><a name="field.detail"> -<!-- --> -</a> -<h3>Field Detail</h3> -<a name="appLogger"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>appLogger</h4> -<pre>private static final org.apache.logging.log4j.Logger appLogger</pre> -</li> -</ul> -</li> -</ul> -<!-- ========= CONSTRUCTOR DETAIL ======== --> -<ul class="blockList"> -<li class="blockList"><a name="constructor.detail"> -<!-- --> -</a> -<h3>Constructor Detail</h3> -<a name="Handler--"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>Handler</h4> -<pre>public Handler()</pre> -</li> -</ul> -</li> -</ul> -<!-- ============ METHOD DETAIL ========== --> -<ul class="blockList"> -<li class="blockList"><a name="method.detail"> -<!-- --> -</a> -<h3>Method Detail</h3> -<a name="main-java.lang.String:A-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>main</h4> -<pre>static void main(java.lang.String[] args)</pre> -<div class="block">Handler-class makes the calls to every other class where the actual magic is happening. The main class of serverpackcreator should never contain code which does work on the server pack itself.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>args</code> - Command Line Argument determines whether serverpackcreator will start into normal operation mode or with a step-by-step generation of a configuration file.</dd> -</dl> -</li> -</ul> -<a name="run--"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>run</h4> -<pre>public static boolean run()</pre> -<div class="block">Run when serverpackcreator is run in either -cli or -cgen mode. Runs what used to be the main content in Main in pre-1.x.x. times. Inits config checks and, if config checks are successfull, calls methods to create the server pack.</div> -<dl> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Return true if the serverpack was successfully generated, false if not.</dd> -</dl> -</li> -</ul> -</li> -</ul> -</li> -</ul> -</div> -</div> -<!-- ========= END OF CLASS DATA ========= --> -<!-- ======= START OF BOTTOM NAVBAR ====== --> -<div class="bottomNav"><a name="navbar.bottom"> -<!-- --> -</a> -<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div> -<a name="navbar.bottom.firstrow"> -<!-- --> -</a> -<ul class="navList" title="Navigation"> -<li><a href="../../../overview-summary.html">Overview</a></li> -<li><a href="package-summary.html">Package</a></li> -<li class="navBarCell1Rev">Class</li> -<li><a href="package-tree.html">Tree</a></li> -<li><a href="../../../deprecated-list.html">Deprecated</a></li> -<li><a href="../../../index-all.html">Index</a></li> -<li><a href="../../../help-doc.html">Help</a></li> -</ul> -</div> -<div class="subNav"> -<ul class="navList"> -<li><a href="../../../de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> -</ul> -<ul class="navList"> -<li><a href="../../../index.html?de/griefed/serverpackcreator/Handler.html" target="_top">Frames</a></li> -<li><a href="Handler.html" target="_top">No Frames</a></li> -</ul> -<ul class="navList" id="allclasses_navbar_bottom"> -<li><a href="../../../allclasses-noframe.html">All Classes</a></li> -</ul> -<div> -<script type="text/javascript"><!-- - allClassesLink = document.getElementById("allclasses_navbar_bottom"); - if(window==top) { - allClassesLink.style.display = "block"; - } - else { - allClassesLink.style.display = "none"; - } - //--> -</script> -</div> -<div> -<ul class="subNavList"> -<li>Summary: </li> -<li>Nested | </li> -<li><a href="#field.summary">Field</a> | </li> -<li><a href="#constructor.summary">Constr</a> | </li> -<li><a href="#method.summary">Method</a></li> -</ul> -<ul class="subNavList"> -<li>Detail: </li> -<li><a href="#field.detail">Field</a> | </li> -<li><a href="#constructor.detail">Constr</a> | </li> -<li><a href="#method.detail">Method</a></li> -</ul> -</div> -<a name="skip.navbar.bottom"> -<!-- --> -</a></div> -<!-- ======== END OF BOTTOM NAVBAR ======= --> -</body> -</html> diff --git a/docs/de/griefed/serverpackcreator/Main.html b/docs/de/griefed/serverpackcreator/Main.html index 90ba76402..ebd1b2ce1 100644 --- a/docs/de/griefed/serverpackcreator/Main.html +++ b/docs/de/griefed/serverpackcreator/Main.html @@ -47,8 +47,8 @@ var activeTableTab = "activeTableTab"; </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../de/griefed/serverpackcreator/Handler.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> +<li>Next Class</li> </ul> <ul class="navList"> <li><a href="../../../index.html?de/griefed/serverpackcreator/Main.html" target="_top">Frames</a></li> @@ -232,10 +232,10 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>main</h4> <pre>public static void main(java.lang.String[] args)</pre> -<div class="block">Init and "main" has been moved to Handler-class. Main now only inits the Localizationmanager and passes the cli args, if any, to Handler, which then runs the usual operations as they used to be in pre-2.x.x</div> +<div class="block">Init and "main" has been moved to Handler-class. Main now only inits the LocalizationManager and passes the cli args, if any, to Handler, which then runs the usual operations as they used to be in pre-2.x.x</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>args</code> - Commandline arguments with which serverpackcreator is run. Passed to Handler-class which then decides what to do corresponding to input.</dd> +<dd><code>args</code> - Commandline arguments with which ServerPackCreator is run. Passed to Handler-class which then decides what to do corresponding to input.</dd> </dl> </li> </ul> @@ -266,8 +266,8 @@ extends java.lang.Object</pre> </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../de/griefed/serverpackcreator/Handler.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> +<li>Next Class</li> </ul> <ul class="navList"> <li><a href="../../../index.html?de/griefed/serverpackcreator/Main.html" target="_top">Frames</a></li> diff --git a/docs/de/griefed/serverpackcreator/Reference.html b/docs/de/griefed/serverpackcreator/Reference.html deleted file mode 100644 index a8f7a0329..000000000 --- a/docs/de/griefed/serverpackcreator/Reference.html +++ /dev/null @@ -1,1424 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<!-- NewPage --> -<html lang="de"> -<head> -<!-- Generated by javadoc --> -<title>Reference (serverpackcreator API)</title> -<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style"> -<script type="text/javascript" src="../../../script.js"></script> -</head> -<body> -<script type="text/javascript"><!-- - try { - if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Reference (serverpackcreator API)"; - } - } - catch(err) { - } -//--> -var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":9,"i19":9,"i20":9,"i21":9,"i22":9,"i23":9,"i24":9,"i25":9,"i26":9,"i27":9,"i28":9,"i29":9,"i30":9,"i31":9,"i32":9,"i33":9,"i34":9,"i35":9,"i36":9,"i37":9,"i38":9,"i39":9,"i40":9,"i41":9,"i42":9,"i43":9,"i44":9,"i45":9,"i46":9}; -var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]}; -var altColor = "altColor"; -var rowColor = "rowColor"; -var tableTab = "tableTab"; -var activeTableTab = "activeTableTab"; -</script> -<noscript> -<div>JavaScript is disabled on your browser.</div> -</noscript> -<!-- ========= START OF TOP NAVBAR ======= --> -<div class="topNav"><a name="navbar.top"> -<!-- --> -</a> -<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div> -<a name="navbar.top.firstrow"> -<!-- --> -</a> -<ul class="navList" title="Navigation"> -<li><a href="../../../overview-summary.html">Overview</a></li> -<li><a href="package-summary.html">Package</a></li> -<li class="navBarCell1Rev">Class</li> -<li><a href="package-tree.html">Tree</a></li> -<li><a href="../../../deprecated-list.html">Deprecated</a></li> -<li><a href="../../../index-all.html">Index</a></li> -<li><a href="../../../help-doc.html">Help</a></li> -</ul> -</div> -<div class="subNav"> -<ul class="navList"> -<li><a href="../../../de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../de/griefed/serverpackcreator/ServerSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> -</ul> -<ul class="navList"> -<li><a href="../../../index.html?de/griefed/serverpackcreator/Reference.html" target="_top">Frames</a></li> -<li><a href="Reference.html" target="_top">No Frames</a></li> -</ul> -<ul class="navList" id="allclasses_navbar_top"> -<li><a href="../../../allclasses-noframe.html">All Classes</a></li> -</ul> -<div> -<script type="text/javascript"><!-- - allClassesLink = document.getElementById("allclasses_navbar_top"); - if(window==top) { - allClassesLink.style.display = "block"; - } - else { - allClassesLink.style.display = "none"; - } - //--> -</script> -</div> -<div> -<ul class="subNavList"> -<li>Summary: </li> -<li>Nested | </li> -<li><a href="#field.summary">Field</a> | </li> -<li><a href="#constructor.summary">Constr</a> | </li> -<li><a href="#method.summary">Method</a></li> -</ul> -<ul class="subNavList"> -<li>Detail: </li> -<li><a href="#field.detail">Field</a> | </li> -<li><a href="#constructor.detail">Constr</a> | </li> -<li><a href="#method.detail">Method</a></li> -</ul> -</div> -<a name="skip.navbar.top"> -<!-- --> -</a></div> -<!-- ========= END OF TOP NAVBAR ========= --> -<!-- ======== START OF CLASS DATA ======== --> -<div class="header"> -<div class="subTitle">de.griefed.serverpackcreator</div> -<h2 title="Class Reference" class="title">Class Reference</h2> -</div> -<div class="contentContainer"> -<ul class="inheritance"> -<li>java.lang.Object</li> -<li> -<ul class="inheritance"> -<li>de.griefed.serverpackcreator.Reference</li> -</ul> -</li> -</ul> -<div class="description"> -<ul class="blockList"> -<li class="blockList"> -<dl> -<dt>Direct Known Subclasses:</dt> -<dd><a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dd> -</dl> -<hr> -<br> -<pre>public class <span class="typeNameLabel">Reference</span> -extends java.lang.Object</pre> -</li> -</ul> -</div> -<div class="summary"> -<ul class="blockList"> -<li class="blockList"> -<!-- =========== FIELD SUMMARY =========== --> -<ul class="blockList"> -<li class="blockList"><a name="field.summary"> -<!-- --> -</a> -<h3>Field Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation"> -<caption><span>Fields</span><span class="tabEnd"> </span></caption> -<tr> -<th class="colFirst" scope="col">Modifier and Type</th> -<th class="colLast" scope="col">Field and Description</th> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static java.util.List<java.lang.String></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#clientMods">clientMods</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>static <a href="../../../de/griefed/serverpackcreator/CLISetup.html" title="class in de.griefed.serverpackcreator">CLISetup</a></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#cliSetup">cliSetup</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static com.typesafe.config.Config</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#config">config</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>private static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#CONFIG_GEN_ARGUMENT">CONFIG_GEN_ARGUMENT</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>static <a href="../../../de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#configCheck">configCheck</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>private static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#configFile">configFile</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static java.util.List<java.lang.String></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#copyDirs">copyDirs</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>(package private) static <a href="../../../de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator">CopyFiles</a></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#copyFiles">copyFiles</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>static <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CreateModpack</a></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#createModpack">createModpack</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>private static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#FABRIC_MANIFEST_URL">FABRIC_MANIFEST_URL</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#fabricLinuxFile">fabricLinuxFile</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>private static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#fabricWindowsFile">fabricWindowsFile</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static java.util.List<java.lang.String></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#fallbackModsList">fallbackModsList</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>static <a href="../../../de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#filesSetup">filesSetup</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#FORGE_MANIFEST_URL">FORGE_MANIFEST_URL</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>private static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#forgeLinuxFile">forgeLinuxFile</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#forgeWindowsFile">forgeWindowsFile</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>private static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#iconFile">iconFile</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static java.lang.Boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#includeServerIcon">includeServerIcon</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>private static java.lang.Boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#includeServerInstallation">includeServerInstallation</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static java.lang.Boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#includeServerProperties">includeServerProperties</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>private static java.lang.Boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#includeStartScripts">includeStartScripts</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static java.lang.Boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#includeZipCreation">includeZipCreation</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>private static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#javaPath">javaPath</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#LANG_ARGUMENT">LANG_ARGUMENT</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>private static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#langPropertiesFile">langPropertiesFile</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#MINECRAFT_MANIFEST_URL">MINECRAFT_MANIFEST_URL</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>private static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#minecraftVersion">minecraftVersion</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#modLoader">modLoader</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>private static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#modLoaderVersion">modLoaderVersion</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#modpackDir">modpackDir</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>private static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#oldConfigFile">oldConfigFile</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static int</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#projectFileID">projectFileID</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>private static int</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#projectID">projectID</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#propertiesFile">propertiesFile</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>private static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#RUN_CLI_ARGUMENT">RUN_CLI_ARGUMENT</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>(package private) static <a href="../../../de/griefed/serverpackcreator/ServerSetup.html" title="class in de.griefed.serverpackcreator">ServerSetup</a></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#serverSetup">serverSetup</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>(package private) static <a href="../../../de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator">ServerUtilities</a></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#serverUtilities">serverUtilities</a></span></code> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static java.lang.String[]</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#SUPPORTED_LANGUAGES">SUPPORTED_LANGUAGES</a></span></code> </td> -</tr> -</table> -</li> -</ul> -<!-- ======== CONSTRUCTOR SUMMARY ======== --> -<ul class="blockList"> -<li class="blockList"><a name="constructor.summary"> -<!-- --> -</a> -<h3>Constructor Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> -<caption><span>Constructors</span><span class="tabEnd"> </span></caption> -<tr> -<th class="colOne" scope="col">Constructor and Description</th> -</tr> -<tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#Reference--">Reference</a></span>()</code> </td> -</tr> -</table> -</li> -</ul> -<!-- ========== METHOD SUMMARY =========== --> -<ul class="blockList"> -<li class="blockList"><a name="method.summary"> -<!-- --> -</a> -<h3>Method Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> -<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> -<tr> -<th class="colFirst" scope="col">Modifier and Type</th> -<th class="colLast" scope="col">Method and Description</th> -</tr> -<tr id="i0" class="altColor"> -<td class="colFirst"><code>(package private) static java.util.List<java.lang.String></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getClientMods--">getClientMods</a></span>()</code> </td> -</tr> -<tr id="i1" class="rowColor"> -<td class="colFirst"><code>static com.typesafe.config.Config</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getConfig--">getConfig</a></span>()</code> </td> -</tr> -<tr id="i2" class="altColor"> -<td class="colFirst"><code>static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getConfigFile--">getConfigFile</a></span>()</code> </td> -</tr> -<tr id="i3" class="rowColor"> -<td class="colFirst"><code>(package private) static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getConfigGenArgument--">getConfigGenArgument</a></span>()</code> </td> -</tr> -<tr id="i4" class="altColor"> -<td class="colFirst"><code>(package private) static java.util.List<java.lang.String></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getCopyDirs--">getCopyDirs</a></span>()</code> </td> -</tr> -<tr id="i5" class="rowColor"> -<td class="colFirst"><code>(package private) static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getFabricLinuxFile--">getFabricLinuxFile</a></span>()</code> </td> -</tr> -<tr id="i6" class="altColor"> -<td class="colFirst"><code>(package private) static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getFabricManifestUrl--">getFabricManifestUrl</a></span>()</code> </td> -</tr> -<tr id="i7" class="rowColor"> -<td class="colFirst"><code>(package private) static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getFabricWindowsFile--">getFabricWindowsFile</a></span>()</code> </td> -</tr> -<tr id="i8" class="altColor"> -<td class="colFirst"><code>(package private) static java.util.List<java.lang.String></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getFallbackModsList--">getFallbackModsList</a></span>()</code> </td> -</tr> -<tr id="i9" class="rowColor"> -<td class="colFirst"><code>(package private) static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getForgeLinuxFile--">getForgeLinuxFile</a></span>()</code> </td> -</tr> -<tr id="i10" class="altColor"> -<td class="colFirst"><code>(package private) static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getForgeManifestUrl--">getForgeManifestUrl</a></span>()</code> </td> -</tr> -<tr id="i11" class="rowColor"> -<td class="colFirst"><code>(package private) static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getForgeWindowsFile--">getForgeWindowsFile</a></span>()</code> </td> -</tr> -<tr id="i12" class="altColor"> -<td class="colFirst"><code>(package private) static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getIconFile--">getIconFile</a></span>()</code> </td> -</tr> -<tr id="i13" class="rowColor"> -<td class="colFirst"><code>(package private) static boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getIncludeServerIcon--">getIncludeServerIcon</a></span>()</code> </td> -</tr> -<tr id="i14" class="altColor"> -<td class="colFirst"><code>(package private) static boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getIncludeServerInstallation--">getIncludeServerInstallation</a></span>()</code> </td> -</tr> -<tr id="i15" class="rowColor"> -<td class="colFirst"><code>(package private) static boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getIncludeServerProperties--">getIncludeServerProperties</a></span>()</code> </td> -</tr> -<tr id="i16" class="altColor"> -<td class="colFirst"><code>(package private) static boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getIncludeStartScripts--">getIncludeStartScripts</a></span>()</code> </td> -</tr> -<tr id="i17" class="rowColor"> -<td class="colFirst"><code>(package private) static boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getIncludeZipCreation--">getIncludeZipCreation</a></span>()</code> </td> -</tr> -<tr id="i18" class="altColor"> -<td class="colFirst"><code>(package private) static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getJavaPath--">getJavaPath</a></span>()</code> </td> -</tr> -<tr id="i19" class="rowColor"> -<td class="colFirst"><code>(package private) static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getLangArgument--">getLangArgument</a></span>()</code> </td> -</tr> -<tr id="i20" class="altColor"> -<td class="colFirst"><code>(package private) static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getLangPropertiesFile--">getLangPropertiesFile</a></span>()</code> </td> -</tr> -<tr id="i21" class="rowColor"> -<td class="colFirst"><code>(package private) static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getMinecraftManifestUrl--">getMinecraftManifestUrl</a></span>()</code> </td> -</tr> -<tr id="i22" class="altColor"> -<td class="colFirst"><code>(package private) static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getMinecraftVersion--">getMinecraftVersion</a></span>()</code> </td> -</tr> -<tr id="i23" class="rowColor"> -<td class="colFirst"><code>(package private) static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getModLoader--">getModLoader</a></span>()</code> </td> -</tr> -<tr id="i24" class="altColor"> -<td class="colFirst"><code>(package private) static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getModLoaderVersion--">getModLoaderVersion</a></span>()</code> </td> -</tr> -<tr id="i25" class="rowColor"> -<td class="colFirst"><code>(package private) static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getModpackDir--">getModpackDir</a></span>()</code> </td> -</tr> -<tr id="i26" class="altColor"> -<td class="colFirst"><code>(package private) static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getOldConfigFile--">getOldConfigFile</a></span>()</code> </td> -</tr> -<tr id="i27" class="rowColor"> -<td class="colFirst"><code>(package private) static int</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getProjectFileID--">getProjectFileID</a></span>()</code> </td> -</tr> -<tr id="i28" class="altColor"> -<td class="colFirst"><code>(package private) static int</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getProjectID--">getProjectID</a></span>()</code> </td> -</tr> -<tr id="i29" class="rowColor"> -<td class="colFirst"><code>(package private) static java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getPropertiesFile--">getPropertiesFile</a></span>()</code> </td> -</tr> -<tr id="i30" class="altColor"> -<td class="colFirst"><code>(package private) static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getRunCliArgument--">getRunCliArgument</a></span>()</code> </td> -</tr> -<tr id="i31" class="rowColor"> -<td class="colFirst"><code>protected static java.lang.String[]</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#getSupportedLanguages--">getSupportedLanguages</a></span>()</code> </td> -</tr> -<tr id="i32" class="altColor"> -<td class="colFirst"><code>(package private) static void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#setClientMods-java.util.List-">setClientMods</a></span>(java.util.List<java.lang.String> newClientMods)</code> </td> -</tr> -<tr id="i33" class="rowColor"> -<td class="colFirst"><code>static void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#setConfig-com.typesafe.config.Config-">setConfig</a></span>(com.typesafe.config.Config newConfig)</code> </td> -</tr> -<tr id="i34" class="altColor"> -<td class="colFirst"><code>(package private) static void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#setCopyDirs-java.util.List-">setCopyDirs</a></span>(java.util.List<java.lang.String> newCopyDirs)</code> </td> -</tr> -<tr id="i35" class="rowColor"> -<td class="colFirst"><code>(package private) static void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#setIncludeServerIcon-boolean-">setIncludeServerIcon</a></span>(boolean newIncludeServerIcon)</code> </td> -</tr> -<tr id="i36" class="altColor"> -<td class="colFirst"><code>(package private) static void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#setIncludeServerInstallation-boolean-">setIncludeServerInstallation</a></span>(boolean newIncludeServerInstallation)</code> </td> -</tr> -<tr id="i37" class="rowColor"> -<td class="colFirst"><code>(package private) static void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#setIncludeServerProperties-boolean-">setIncludeServerProperties</a></span>(boolean newIncludeServerProperties)</code> </td> -</tr> -<tr id="i38" class="altColor"> -<td class="colFirst"><code>(package private) static void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#setIncludeStartScripts-boolean-">setIncludeStartScripts</a></span>(boolean newIncludeStartScripts)</code> </td> -</tr> -<tr id="i39" class="rowColor"> -<td class="colFirst"><code>(package private) static void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#setIncludeZipCreation-boolean-">setIncludeZipCreation</a></span>(boolean newIncludeZipCreation)</code> </td> -</tr> -<tr id="i40" class="altColor"> -<td class="colFirst"><code>(package private) static void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#setJavaPath-java.lang.String-">setJavaPath</a></span>(java.lang.String newJavaPath)</code> </td> -</tr> -<tr id="i41" class="rowColor"> -<td class="colFirst"><code>(package private) static void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#setMinecraftVersion-java.lang.String-">setMinecraftVersion</a></span>(java.lang.String newMinecraftVersion)</code> </td> -</tr> -<tr id="i42" class="altColor"> -<td class="colFirst"><code>(package private) static void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#setModLoader-java.lang.String-">setModLoader</a></span>(java.lang.String newModLoader)</code> </td> -</tr> -<tr id="i43" class="rowColor"> -<td class="colFirst"><code>(package private) static void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#setModLoaderVersion-java.lang.String-">setModLoaderVersion</a></span>(java.lang.String newModLoaderVersion)</code> </td> -</tr> -<tr id="i44" class="altColor"> -<td class="colFirst"><code>(package private) static void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#setModpackDir-java.lang.String-">setModpackDir</a></span>(java.lang.String newModpackDir)</code> </td> -</tr> -<tr id="i45" class="rowColor"> -<td class="colFirst"><code>(package private) static void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#setProjectFileID-int-">setProjectFileID</a></span>(int newProjectFileID)</code> </td> -</tr> -<tr id="i46" class="altColor"> -<td class="colFirst"><code>(package private) static void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Reference.html#setProjectID-int-">setProjectID</a></span>(int newProjectID)</code> </td> -</tr> -</table> -<ul class="blockList"> -<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> -<!-- --> -</a> -<h3>Methods inherited from class java.lang.Object</h3> -<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li> -</ul> -</li> -</ul> -</li> -</ul> -</div> -<div class="details"> -<ul class="blockList"> -<li class="blockList"> -<!-- ============ FIELD DETAIL =========== --> -<ul class="blockList"> -<li class="blockList"><a name="field.detail"> -<!-- --> -</a> -<h3>Field Detail</h3> -<a name="MINECRAFT_MANIFEST_URL"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>MINECRAFT_MANIFEST_URL</h4> -<pre>private static final java.lang.String MINECRAFT_MANIFEST_URL</pre> -<dl> -<dt><span class="seeLabel">See Also:</span></dt> -<dd><a href="../../../constant-values.html#de.griefed.serverpackcreator.Reference.MINECRAFT_MANIFEST_URL">Constant Field Values</a></dd> -</dl> -</li> -</ul> -<a name="FORGE_MANIFEST_URL"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>FORGE_MANIFEST_URL</h4> -<pre>private static final java.lang.String FORGE_MANIFEST_URL</pre> -<dl> -<dt><span class="seeLabel">See Also:</span></dt> -<dd><a href="../../../constant-values.html#de.griefed.serverpackcreator.Reference.FORGE_MANIFEST_URL">Constant Field Values</a></dd> -</dl> -</li> -</ul> -<a name="FABRIC_MANIFEST_URL"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>FABRIC_MANIFEST_URL</h4> -<pre>private static final java.lang.String FABRIC_MANIFEST_URL</pre> -<dl> -<dt><span class="seeLabel">See Also:</span></dt> -<dd><a href="../../../constant-values.html#de.griefed.serverpackcreator.Reference.FABRIC_MANIFEST_URL">Constant Field Values</a></dd> -</dl> -</li> -</ul> -<a name="LANG_ARGUMENT"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>LANG_ARGUMENT</h4> -<pre>private static final java.lang.String LANG_ARGUMENT</pre> -<dl> -<dt><span class="seeLabel">See Also:</span></dt> -<dd><a href="../../../constant-values.html#de.griefed.serverpackcreator.Reference.LANG_ARGUMENT">Constant Field Values</a></dd> -</dl> -</li> -</ul> -<a name="CONFIG_GEN_ARGUMENT"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>CONFIG_GEN_ARGUMENT</h4> -<pre>private static final java.lang.String CONFIG_GEN_ARGUMENT</pre> -<dl> -<dt><span class="seeLabel">See Also:</span></dt> -<dd><a href="../../../constant-values.html#de.griefed.serverpackcreator.Reference.CONFIG_GEN_ARGUMENT">Constant Field Values</a></dd> -</dl> -</li> -</ul> -<a name="RUN_CLI_ARGUMENT"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>RUN_CLI_ARGUMENT</h4> -<pre>private static final java.lang.String RUN_CLI_ARGUMENT</pre> -<dl> -<dt><span class="seeLabel">See Also:</span></dt> -<dd><a href="../../../constant-values.html#de.griefed.serverpackcreator.Reference.RUN_CLI_ARGUMENT">Constant Field Values</a></dd> -</dl> -</li> -</ul> -<a name="configFile"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>configFile</h4> -<pre>private static final java.io.File configFile</pre> -</li> -</ul> -<a name="oldConfigFile"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>oldConfigFile</h4> -<pre>private static final java.io.File oldConfigFile</pre> -</li> -</ul> -<a name="propertiesFile"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>propertiesFile</h4> -<pre>private static final java.io.File propertiesFile</pre> -</li> -</ul> -<a name="iconFile"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>iconFile</h4> -<pre>private static final java.io.File iconFile</pre> -</li> -</ul> -<a name="forgeWindowsFile"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>forgeWindowsFile</h4> -<pre>private static final java.io.File forgeWindowsFile</pre> -</li> -</ul> -<a name="forgeLinuxFile"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>forgeLinuxFile</h4> -<pre>private static final java.io.File forgeLinuxFile</pre> -</li> -</ul> -<a name="fabricWindowsFile"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>fabricWindowsFile</h4> -<pre>private static final java.io.File fabricWindowsFile</pre> -</li> -</ul> -<a name="fabricLinuxFile"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>fabricLinuxFile</h4> -<pre>private static final java.io.File fabricLinuxFile</pre> -</li> -</ul> -<a name="langPropertiesFile"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>langPropertiesFile</h4> -<pre>private static final java.io.File langPropertiesFile</pre> -</li> -</ul> -<a name="SUPPORTED_LANGUAGES"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>SUPPORTED_LANGUAGES</h4> -<pre>private static final java.lang.String[] SUPPORTED_LANGUAGES</pre> -</li> -</ul> -<a name="createModpack"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>createModpack</h4> -<pre>public static final <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CreateModpack</a> createModpack</pre> -</li> -</ul> -<a name="filesSetup"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>filesSetup</h4> -<pre>public static final <a href="../../../de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a> filesSetup</pre> -</li> -</ul> -<a name="cliSetup"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>cliSetup</h4> -<pre>public static final <a href="../../../de/griefed/serverpackcreator/CLISetup.html" title="class in de.griefed.serverpackcreator">CLISetup</a> cliSetup</pre> -</li> -</ul> -<a name="configCheck"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>configCheck</h4> -<pre>public static final <a href="../../../de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a> configCheck</pre> -</li> -</ul> -<a name="copyFiles"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>copyFiles</h4> -<pre>static final <a href="../../../de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator">CopyFiles</a> copyFiles</pre> -</li> -</ul> -<a name="serverSetup"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>serverSetup</h4> -<pre>static final <a href="../../../de/griefed/serverpackcreator/ServerSetup.html" title="class in de.griefed.serverpackcreator">ServerSetup</a> serverSetup</pre> -</li> -</ul> -<a name="serverUtilities"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>serverUtilities</h4> -<pre>static final <a href="../../../de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator">ServerUtilities</a> serverUtilities</pre> -</li> -</ul> -<a name="config"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>config</h4> -<pre>private static com.typesafe.config.Config config</pre> -</li> -</ul> -<a name="fallbackModsList"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>fallbackModsList</h4> -<pre>private static final java.util.List<java.lang.String> fallbackModsList</pre> -</li> -</ul> -<a name="clientMods"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>clientMods</h4> -<pre>private static java.util.List<java.lang.String> clientMods</pre> -</li> -</ul> -<a name="copyDirs"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>copyDirs</h4> -<pre>private static java.util.List<java.lang.String> copyDirs</pre> -</li> -</ul> -<a name="modpackDir"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>modpackDir</h4> -<pre>private static java.lang.String modpackDir</pre> -</li> -</ul> -<a name="javaPath"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>javaPath</h4> -<pre>private static java.lang.String javaPath</pre> -</li> -</ul> -<a name="minecraftVersion"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>minecraftVersion</h4> -<pre>private static java.lang.String minecraftVersion</pre> -</li> -</ul> -<a name="modLoader"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>modLoader</h4> -<pre>private static java.lang.String modLoader</pre> -</li> -</ul> -<a name="modLoaderVersion"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>modLoaderVersion</h4> -<pre>private static java.lang.String modLoaderVersion</pre> -</li> -</ul> -<a name="includeServerInstallation"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>includeServerInstallation</h4> -<pre>private static java.lang.Boolean includeServerInstallation</pre> -</li> -</ul> -<a name="includeServerIcon"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>includeServerIcon</h4> -<pre>private static java.lang.Boolean includeServerIcon</pre> -</li> -</ul> -<a name="includeServerProperties"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>includeServerProperties</h4> -<pre>private static java.lang.Boolean includeServerProperties</pre> -</li> -</ul> -<a name="includeStartScripts"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>includeStartScripts</h4> -<pre>private static java.lang.Boolean includeStartScripts</pre> -</li> -</ul> -<a name="includeZipCreation"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>includeZipCreation</h4> -<pre>private static java.lang.Boolean includeZipCreation</pre> -</li> -</ul> -<a name="projectID"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>projectID</h4> -<pre>private static int projectID</pre> -</li> -</ul> -<a name="projectFileID"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>projectFileID</h4> -<pre>private static int projectFileID</pre> -</li> -</ul> -</li> -</ul> -<!-- ========= CONSTRUCTOR DETAIL ======== --> -<ul class="blockList"> -<li class="blockList"><a name="constructor.detail"> -<!-- --> -</a> -<h3>Constructor Detail</h3> -<a name="Reference--"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>Reference</h4> -<pre>public Reference()</pre> -</li> -</ul> -</li> -</ul> -<!-- ============ METHOD DETAIL ========== --> -<ul class="blockList"> -<li class="blockList"><a name="method.detail"> -<!-- --> -</a> -<h3>Method Detail</h3> -<a name="getMinecraftManifestUrl--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getMinecraftManifestUrl</h4> -<pre>static java.lang.String getMinecraftManifestUrl()</pre> -</li> -</ul> -<a name="getForgeManifestUrl--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getForgeManifestUrl</h4> -<pre>static java.lang.String getForgeManifestUrl()</pre> -</li> -</ul> -<a name="getFabricManifestUrl--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getFabricManifestUrl</h4> -<pre>static java.lang.String getFabricManifestUrl()</pre> -</li> -</ul> -<a name="getLangArgument--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getLangArgument</h4> -<pre>static java.lang.String getLangArgument()</pre> -</li> -</ul> -<a name="getConfigGenArgument--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getConfigGenArgument</h4> -<pre>static java.lang.String getConfigGenArgument()</pre> -</li> -</ul> -<a name="getRunCliArgument--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getRunCliArgument</h4> -<pre>static java.lang.String getRunCliArgument()</pre> -</li> -</ul> -<a name="getConfigFile--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getConfigFile</h4> -<pre>public static java.io.File getConfigFile()</pre> -</li> -</ul> -<a name="getOldConfigFile--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getOldConfigFile</h4> -<pre>static java.io.File getOldConfigFile()</pre> -</li> -</ul> -<a name="getPropertiesFile--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getPropertiesFile</h4> -<pre>static java.io.File getPropertiesFile()</pre> -</li> -</ul> -<a name="getIconFile--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getIconFile</h4> -<pre>static java.io.File getIconFile()</pre> -</li> -</ul> -<a name="getForgeWindowsFile--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getForgeWindowsFile</h4> -<pre>static java.io.File getForgeWindowsFile()</pre> -</li> -</ul> -<a name="getForgeLinuxFile--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getForgeLinuxFile</h4> -<pre>static java.io.File getForgeLinuxFile()</pre> -</li> -</ul> -<a name="getFabricWindowsFile--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getFabricWindowsFile</h4> -<pre>static java.io.File getFabricWindowsFile()</pre> -</li> -</ul> -<a name="getFabricLinuxFile--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getFabricLinuxFile</h4> -<pre>static java.io.File getFabricLinuxFile()</pre> -</li> -</ul> -<a name="getLangPropertiesFile--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getLangPropertiesFile</h4> -<pre>static java.io.File getLangPropertiesFile()</pre> -</li> -</ul> -<a name="getSupportedLanguages--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getSupportedLanguages</h4> -<pre>protected static java.lang.String[] getSupportedLanguages()</pre> -</li> -</ul> -<a name="getConfig--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getConfig</h4> -<pre>public static com.typesafe.config.Config getConfig()</pre> -</li> -</ul> -<a name="setConfig-com.typesafe.config.Config-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>setConfig</h4> -<pre>public static void setConfig(com.typesafe.config.Config newConfig)</pre> -</li> -</ul> -<a name="getFallbackModsList--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getFallbackModsList</h4> -<pre>static java.util.List<java.lang.String> getFallbackModsList()</pre> -</li> -</ul> -<a name="getClientMods--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getClientMods</h4> -<pre>static java.util.List<java.lang.String> getClientMods()</pre> -</li> -</ul> -<a name="setClientMods-java.util.List-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>setClientMods</h4> -<pre>static void setClientMods(java.util.List<java.lang.String> newClientMods)</pre> -</li> -</ul> -<a name="getCopyDirs--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getCopyDirs</h4> -<pre>static java.util.List<java.lang.String> getCopyDirs()</pre> -</li> -</ul> -<a name="setCopyDirs-java.util.List-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>setCopyDirs</h4> -<pre>static void setCopyDirs(java.util.List<java.lang.String> newCopyDirs)</pre> -</li> -</ul> -<a name="getModpackDir--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getModpackDir</h4> -<pre>static java.lang.String getModpackDir()</pre> -</li> -</ul> -<a name="setModpackDir-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>setModpackDir</h4> -<pre>static void setModpackDir(java.lang.String newModpackDir)</pre> -</li> -</ul> -<a name="getJavaPath--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getJavaPath</h4> -<pre>static java.lang.String getJavaPath()</pre> -</li> -</ul> -<a name="setJavaPath-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>setJavaPath</h4> -<pre>static void setJavaPath(java.lang.String newJavaPath)</pre> -</li> -</ul> -<a name="getMinecraftVersion--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getMinecraftVersion</h4> -<pre>static java.lang.String getMinecraftVersion()</pre> -</li> -</ul> -<a name="setMinecraftVersion-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>setMinecraftVersion</h4> -<pre>static void setMinecraftVersion(java.lang.String newMinecraftVersion)</pre> -</li> -</ul> -<a name="getModLoader--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getModLoader</h4> -<pre>static java.lang.String getModLoader()</pre> -</li> -</ul> -<a name="setModLoader-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>setModLoader</h4> -<pre>static void setModLoader(java.lang.String newModLoader)</pre> -</li> -</ul> -<a name="getModLoaderVersion--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getModLoaderVersion</h4> -<pre>static java.lang.String getModLoaderVersion()</pre> -</li> -</ul> -<a name="setModLoaderVersion-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>setModLoaderVersion</h4> -<pre>static void setModLoaderVersion(java.lang.String newModLoaderVersion)</pre> -</li> -</ul> -<a name="getIncludeServerInstallation--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getIncludeServerInstallation</h4> -<pre>static boolean getIncludeServerInstallation()</pre> -</li> -</ul> -<a name="setIncludeServerInstallation-boolean-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>setIncludeServerInstallation</h4> -<pre>static void setIncludeServerInstallation(boolean newIncludeServerInstallation)</pre> -</li> -</ul> -<a name="getIncludeServerIcon--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getIncludeServerIcon</h4> -<pre>static boolean getIncludeServerIcon()</pre> -</li> -</ul> -<a name="setIncludeServerIcon-boolean-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>setIncludeServerIcon</h4> -<pre>static void setIncludeServerIcon(boolean newIncludeServerIcon)</pre> -</li> -</ul> -<a name="getIncludeServerProperties--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getIncludeServerProperties</h4> -<pre>static boolean getIncludeServerProperties()</pre> -</li> -</ul> -<a name="setIncludeServerProperties-boolean-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>setIncludeServerProperties</h4> -<pre>static void setIncludeServerProperties(boolean newIncludeServerProperties)</pre> -</li> -</ul> -<a name="getIncludeStartScripts--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getIncludeStartScripts</h4> -<pre>static boolean getIncludeStartScripts()</pre> -</li> -</ul> -<a name="setIncludeStartScripts-boolean-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>setIncludeStartScripts</h4> -<pre>static void setIncludeStartScripts(boolean newIncludeStartScripts)</pre> -</li> -</ul> -<a name="getIncludeZipCreation--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getIncludeZipCreation</h4> -<pre>static boolean getIncludeZipCreation()</pre> -</li> -</ul> -<a name="setIncludeZipCreation-boolean-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>setIncludeZipCreation</h4> -<pre>static void setIncludeZipCreation(boolean newIncludeZipCreation)</pre> -</li> -</ul> -<a name="getProjectID--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getProjectID</h4> -<pre>static int getProjectID()</pre> -</li> -</ul> -<a name="setProjectID-int-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>setProjectID</h4> -<pre>static void setProjectID(int newProjectID)</pre> -</li> -</ul> -<a name="getProjectFileID--"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>getProjectFileID</h4> -<pre>static int getProjectFileID()</pre> -</li> -</ul> -<a name="setProjectFileID-int-"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>setProjectFileID</h4> -<pre>static void setProjectFileID(int newProjectFileID)</pre> -</li> -</ul> -</li> -</ul> -</li> -</ul> -</div> -</div> -<!-- ========= END OF CLASS DATA ========= --> -<!-- ======= START OF BOTTOM NAVBAR ====== --> -<div class="bottomNav"><a name="navbar.bottom"> -<!-- --> -</a> -<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div> -<a name="navbar.bottom.firstrow"> -<!-- --> -</a> -<ul class="navList" title="Navigation"> -<li><a href="../../../overview-summary.html">Overview</a></li> -<li><a href="package-summary.html">Package</a></li> -<li class="navBarCell1Rev">Class</li> -<li><a href="package-tree.html">Tree</a></li> -<li><a href="../../../deprecated-list.html">Deprecated</a></li> -<li><a href="../../../index-all.html">Index</a></li> -<li><a href="../../../help-doc.html">Help</a></li> -</ul> -</div> -<div class="subNav"> -<ul class="navList"> -<li><a href="../../../de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../de/griefed/serverpackcreator/ServerSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> -</ul> -<ul class="navList"> -<li><a href="../../../index.html?de/griefed/serverpackcreator/Reference.html" target="_top">Frames</a></li> -<li><a href="Reference.html" target="_top">No Frames</a></li> -</ul> -<ul class="navList" id="allclasses_navbar_bottom"> -<li><a href="../../../allclasses-noframe.html">All Classes</a></li> -</ul> -<div> -<script type="text/javascript"><!-- - allClassesLink = document.getElementById("allclasses_navbar_bottom"); - if(window==top) { - allClassesLink.style.display = "block"; - } - else { - allClassesLink.style.display = "none"; - } - //--> -</script> -</div> -<div> -<ul class="subNavList"> -<li>Summary: </li> -<li>Nested | </li> -<li><a href="#field.summary">Field</a> | </li> -<li><a href="#constructor.summary">Constr</a> | </li> -<li><a href="#method.summary">Method</a></li> -</ul> -<ul class="subNavList"> -<li>Detail: </li> -<li><a href="#field.detail">Field</a> | </li> -<li><a href="#constructor.detail">Constr</a> | </li> -<li><a href="#method.detail">Method</a></li> -</ul> -</div> -<a name="skip.navbar.bottom"> -<!-- --> -</a></div> -<!-- ======== END OF BOTTOM NAVBAR ======= --> -</body> -</html> diff --git a/docs/de/griefed/serverpackcreator/ServerSetup.html b/docs/de/griefed/serverpackcreator/ServerSetup.html deleted file mode 100644 index 6d4a4dfb7..000000000 --- a/docs/de/griefed/serverpackcreator/ServerSetup.html +++ /dev/null @@ -1,363 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<!-- NewPage --> -<html lang="de"> -<head> -<!-- Generated by javadoc --> -<title>ServerSetup (serverpackcreator API)</title> -<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style"> -<script type="text/javascript" src="../../../script.js"></script> -</head> -<body> -<script type="text/javascript"><!-- - try { - if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ServerSetup (serverpackcreator API)"; - } - } - catch(err) { - } -//--> -var methods = {"i0":10,"i1":10}; -var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; -var altColor = "altColor"; -var rowColor = "rowColor"; -var tableTab = "tableTab"; -var activeTableTab = "activeTableTab"; -</script> -<noscript> -<div>JavaScript is disabled on your browser.</div> -</noscript> -<!-- ========= START OF TOP NAVBAR ======= --> -<div class="topNav"><a name="navbar.top"> -<!-- --> -</a> -<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div> -<a name="navbar.top.firstrow"> -<!-- --> -</a> -<ul class="navList" title="Navigation"> -<li><a href="../../../overview-summary.html">Overview</a></li> -<li><a href="package-summary.html">Package</a></li> -<li class="navBarCell1Rev">Class</li> -<li><a href="package-tree.html">Tree</a></li> -<li><a href="../../../deprecated-list.html">Deprecated</a></li> -<li><a href="../../../index-all.html">Index</a></li> -<li><a href="../../../help-doc.html">Help</a></li> -</ul> -</div> -<div class="subNav"> -<ul class="navList"> -<li><a href="../../../de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> -</ul> -<ul class="navList"> -<li><a href="../../../index.html?de/griefed/serverpackcreator/ServerSetup.html" target="_top">Frames</a></li> -<li><a href="ServerSetup.html" target="_top">No Frames</a></li> -</ul> -<ul class="navList" id="allclasses_navbar_top"> -<li><a href="../../../allclasses-noframe.html">All Classes</a></li> -</ul> -<div> -<script type="text/javascript"><!-- - allClassesLink = document.getElementById("allclasses_navbar_top"); - if(window==top) { - allClassesLink.style.display = "block"; - } - else { - allClassesLink.style.display = "none"; - } - //--> -</script> -</div> -<div> -<ul class="subNavList"> -<li>Summary: </li> -<li>Nested | </li> -<li><a href="#field.summary">Field</a> | </li> -<li><a href="#constructor.summary">Constr</a> | </li> -<li><a href="#method.summary">Method</a></li> -</ul> -<ul class="subNavList"> -<li>Detail: </li> -<li><a href="#field.detail">Field</a> | </li> -<li><a href="#constructor.detail">Constr</a> | </li> -<li><a href="#method.detail">Method</a></li> -</ul> -</div> -<a name="skip.navbar.top"> -<!-- --> -</a></div> -<!-- ========= END OF TOP NAVBAR ========= --> -<!-- ======== START OF CLASS DATA ======== --> -<div class="header"> -<div class="subTitle">de.griefed.serverpackcreator</div> -<h2 title="Class ServerSetup" class="title">Class ServerSetup</h2> -</div> -<div class="contentContainer"> -<ul class="inheritance"> -<li>java.lang.Object</li> -<li> -<ul class="inheritance"> -<li>de.griefed.serverpackcreator.ServerSetup</li> -</ul> -</li> -</ul> -<div class="description"> -<ul class="blockList"> -<li class="blockList"> -<hr> -<br> -<pre>class <span class="typeNameLabel">ServerSetup</span> -extends java.lang.Object</pre> -</li> -</ul> -</div> -<div class="summary"> -<ul class="blockList"> -<li class="blockList"> -<!-- =========== FIELD SUMMARY =========== --> -<ul class="blockList"> -<li class="blockList"><a name="field.summary"> -<!-- --> -</a> -<h3>Field Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation"> -<caption><span>Fields</span><span class="tabEnd"> </span></caption> -<tr> -<th class="colFirst" scope="col">Modifier and Type</th> -<th class="colLast" scope="col">Field and Description</th> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ServerSetup.html#appLogger">appLogger</a></span></code> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ServerSetup.html#installerLogger">installerLogger</a></span></code> </td> -</tr> -</table> -</li> -</ul> -<!-- ======== CONSTRUCTOR SUMMARY ======== --> -<ul class="blockList"> -<li class="blockList"><a name="constructor.summary"> -<!-- --> -</a> -<h3>Constructor Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> -<caption><span>Constructors</span><span class="tabEnd"> </span></caption> -<tr> -<th class="colOne" scope="col">Constructor and Description</th> -</tr> -<tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ServerSetup.html#ServerSetup--">ServerSetup</a></span>()</code> </td> -</tr> -</table> -</li> -</ul> -<!-- ========== METHOD SUMMARY =========== --> -<ul class="blockList"> -<li class="blockList"><a name="method.summary"> -<!-- --> -</a> -<h3>Method Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> -<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> -<tr> -<th class="colFirst" scope="col">Modifier and Type</th> -<th class="colLast" scope="col">Method and Description</th> -</tr> -<tr id="i0" class="altColor"> -<td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ServerSetup.html#installServer-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">installServer</a></span>(java.lang.String modLoader, - java.lang.String modpackDir, - java.lang.String minecraftVersion, - java.lang.String modLoaderVersion, - java.lang.String javaPath)</code> -<div class="block">Installs the files for a Forge/Fabric server.</div> -</td> -</tr> -<tr id="i1" class="rowColor"> -<td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ServerSetup.html#zipBuilder-java.lang.String-java.lang.String-java.lang.Boolean-">zipBuilder</a></span>(java.lang.String modpackDir, - java.lang.String modLoader, - java.lang.Boolean includeServerInstallation)</code> -<div class="block">Create a zip-archive of the serverpack, excluding Mojang's minecraft_server.jar.</div> -</td> -</tr> -</table> -<ul class="blockList"> -<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> -<!-- --> -</a> -<h3>Methods inherited from class java.lang.Object</h3> -<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li> -</ul> -</li> -</ul> -</li> -</ul> -</div> -<div class="details"> -<ul class="blockList"> -<li class="blockList"> -<!-- ============ FIELD DETAIL =========== --> -<ul class="blockList"> -<li class="blockList"><a name="field.detail"> -<!-- --> -</a> -<h3>Field Detail</h3> -<a name="appLogger"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>appLogger</h4> -<pre>private static final org.apache.logging.log4j.Logger appLogger</pre> -</li> -</ul> -<a name="installerLogger"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>installerLogger</h4> -<pre>private static final org.apache.logging.log4j.Logger installerLogger</pre> -</li> -</ul> -</li> -</ul> -<!-- ========= CONSTRUCTOR DETAIL ======== --> -<ul class="blockList"> -<li class="blockList"><a name="constructor.detail"> -<!-- --> -</a> -<h3>Constructor Detail</h3> -<a name="ServerSetup--"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>ServerSetup</h4> -<pre>ServerSetup()</pre> -</li> -</ul> -</li> -</ul> -<!-- ============ METHOD DETAIL ========== --> -<ul class="blockList"> -<li class="blockList"><a name="method.detail"> -<!-- --> -</a> -<h3>Method Detail</h3> -<a name="installServer-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>installServer</h4> -<pre>void installServer(java.lang.String modLoader, - java.lang.String modpackDir, - java.lang.String minecraftVersion, - java.lang.String modLoaderVersion, - java.lang.String javaPath)</pre> -<div class="block">Installs the files for a Forge/Fabric server.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modLoader</code> - String. The modloader for which to install the server.</dd> -<dd><code>modpackDir</code> - String. /server_pack The directory where the modloader server will be installed in.</dd> -<dd><code>minecraftVersion</code> - String. The Minecraft version for which to install the modloader and Minecraft server.</dd> -<dd><code>modLoaderVersion</code> - String. The modloader version for which to install the modloader and Minecraft server.</dd> -<dd><code>javaPath</code> - String. Path to Java installation needed to execute the Fabric and Forge installers.</dd> -</dl> -</li> -</ul> -<a name="zipBuilder-java.lang.String-java.lang.String-java.lang.Boolean-"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>zipBuilder</h4> -<pre>void zipBuilder(java.lang.String modpackDir, - java.lang.String modLoader, - java.lang.Boolean includeServerInstallation)</pre> -<div class="block">Create a zip-archive of the serverpack, excluding Mojang's minecraft_server.jar. - With help from https://stackoverflow.com/questions/1091788/how-to-create-a-zip-file-in-java</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. The directory where the zip-archive will be created and saved in.</dd> -<dd><code>modLoader</code> - String. Determines the name of Minecraft#s server jar which will be deleted from the zip-archive.</dd> -<dd><code>includeServerInstallation</code> - Boolean. Determines whether the Minecraft server jar needs to be deleted from the zip-archive.</dd> -</dl> -</li> -</ul> -</li> -</ul> -</li> -</ul> -</div> -</div> -<!-- ========= END OF CLASS DATA ========= --> -<!-- ======= START OF BOTTOM NAVBAR ====== --> -<div class="bottomNav"><a name="navbar.bottom"> -<!-- --> -</a> -<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div> -<a name="navbar.bottom.firstrow"> -<!-- --> -</a> -<ul class="navList" title="Navigation"> -<li><a href="../../../overview-summary.html">Overview</a></li> -<li><a href="package-summary.html">Package</a></li> -<li class="navBarCell1Rev">Class</li> -<li><a href="package-tree.html">Tree</a></li> -<li><a href="../../../deprecated-list.html">Deprecated</a></li> -<li><a href="../../../index-all.html">Index</a></li> -<li><a href="../../../help-doc.html">Help</a></li> -</ul> -</div> -<div class="subNav"> -<ul class="navList"> -<li><a href="../../../de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Next Class</span></a></li> -</ul> -<ul class="navList"> -<li><a href="../../../index.html?de/griefed/serverpackcreator/ServerSetup.html" target="_top">Frames</a></li> -<li><a href="ServerSetup.html" target="_top">No Frames</a></li> -</ul> -<ul class="navList" id="allclasses_navbar_bottom"> -<li><a href="../../../allclasses-noframe.html">All Classes</a></li> -</ul> -<div> -<script type="text/javascript"><!-- - allClassesLink = document.getElementById("allclasses_navbar_bottom"); - if(window==top) { - allClassesLink.style.display = "block"; - } - else { - allClassesLink.style.display = "none"; - } - //--> -</script> -</div> -<div> -<ul class="subNavList"> -<li>Summary: </li> -<li>Nested | </li> -<li><a href="#field.summary">Field</a> | </li> -<li><a href="#constructor.summary">Constr</a> | </li> -<li><a href="#method.summary">Method</a></li> -</ul> -<ul class="subNavList"> -<li>Detail: </li> -<li><a href="#field.detail">Field</a> | </li> -<li><a href="#constructor.detail">Constr</a> | </li> -<li><a href="#method.detail">Method</a></li> -</ul> -</div> -<a name="skip.navbar.bottom"> -<!-- --> -</a></div> -<!-- ======== END OF BOTTOM NAVBAR ======= --> -</body> -</html> diff --git a/docs/de/griefed/serverpackcreator/ServerUtilities.html b/docs/de/griefed/serverpackcreator/ServerUtilities.html deleted file mode 100644 index 0dd69a275..000000000 --- a/docs/de/griefed/serverpackcreator/ServerUtilities.html +++ /dev/null @@ -1,540 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<!-- NewPage --> -<html lang="de"> -<head> -<!-- Generated by javadoc --> -<title>ServerUtilities (serverpackcreator API)</title> -<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style"> -<script type="text/javascript" src="../../../script.js"></script> -</head> -<body> -<script type="text/javascript"><!-- - try { - if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ServerUtilities (serverpackcreator API)"; - } - } - catch(err) { - } -//--> -var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10}; -var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; -var altColor = "altColor"; -var rowColor = "rowColor"; -var tableTab = "tableTab"; -var activeTableTab = "activeTableTab"; -</script> -<noscript> -<div>JavaScript is disabled on your browser.</div> -</noscript> -<!-- ========= START OF TOP NAVBAR ======= --> -<div class="topNav"><a name="navbar.top"> -<!-- --> -</a> -<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div> -<a name="navbar.top.firstrow"> -<!-- --> -</a> -<ul class="navList" title="Navigation"> -<li><a href="../../../overview-summary.html">Overview</a></li> -<li><a href="package-summary.html">Package</a></li> -<li class="navBarCell1Rev">Class</li> -<li><a href="package-tree.html">Tree</a></li> -<li><a href="../../../deprecated-list.html">Deprecated</a></li> -<li><a href="../../../index-all.html">Index</a></li> -<li><a href="../../../help-doc.html">Help</a></li> -</ul> -</div> -<div class="subNav"> -<ul class="navList"> -<li><a href="../../../de/griefed/serverpackcreator/ServerSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> -<li>Next Class</li> -</ul> -<ul class="navList"> -<li><a href="../../../index.html?de/griefed/serverpackcreator/ServerUtilities.html" target="_top">Frames</a></li> -<li><a href="ServerUtilities.html" target="_top">No Frames</a></li> -</ul> -<ul class="navList" id="allclasses_navbar_top"> -<li><a href="../../../allclasses-noframe.html">All Classes</a></li> -</ul> -<div> -<script type="text/javascript"><!-- - allClassesLink = document.getElementById("allclasses_navbar_top"); - if(window==top) { - allClassesLink.style.display = "block"; - } - else { - allClassesLink.style.display = "none"; - } - //--> -</script> -</div> -<div> -<ul class="subNavList"> -<li>Summary: </li> -<li>Nested | </li> -<li><a href="#field.summary">Field</a> | </li> -<li><a href="#constructor.summary">Constr</a> | </li> -<li><a href="#method.summary">Method</a></li> -</ul> -<ul class="subNavList"> -<li>Detail: </li> -<li><a href="#field.detail">Field</a> | </li> -<li><a href="#constructor.detail">Constr</a> | </li> -<li><a href="#method.detail">Method</a></li> -</ul> -</div> -<a name="skip.navbar.top"> -<!-- --> -</a></div> -<!-- ========= END OF TOP NAVBAR ========= --> -<!-- ======== START OF CLASS DATA ======== --> -<div class="header"> -<div class="subTitle">de.griefed.serverpackcreator</div> -<h2 title="Class ServerUtilities" class="title">Class ServerUtilities</h2> -</div> -<div class="contentContainer"> -<ul class="inheritance"> -<li>java.lang.Object</li> -<li> -<ul class="inheritance"> -<li>de.griefed.serverpackcreator.ServerUtilities</li> -</ul> -</li> -</ul> -<div class="description"> -<ul class="blockList"> -<li class="blockList"> -<hr> -<br> -<pre>class <span class="typeNameLabel">ServerUtilities</span> -extends java.lang.Object</pre> -</li> -</ul> -</div> -<div class="summary"> -<ul class="blockList"> -<li class="blockList"> -<!-- =========== FIELD SUMMARY =========== --> -<ul class="blockList"> -<li class="blockList"><a name="field.summary"> -<!-- --> -</a> -<h3>Field Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation"> -<caption><span>Fields</span><span class="tabEnd"> </span></caption> -<tr> -<th class="colFirst" scope="col">Modifier and Type</th> -<th class="colLast" scope="col">Field and Description</th> -</tr> -<tr class="altColor"> -<td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ServerUtilities.html#appLogger">appLogger</a></span></code> </td> -</tr> -</table> -</li> -</ul> -<!-- ======== CONSTRUCTOR SUMMARY ======== --> -<ul class="blockList"> -<li class="blockList"><a name="constructor.summary"> -<!-- --> -</a> -<h3>Constructor Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> -<caption><span>Constructors</span><span class="tabEnd"> </span></caption> -<tr> -<th class="colOne" scope="col">Constructor and Description</th> -</tr> -<tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ServerUtilities.html#ServerUtilities--">ServerUtilities</a></span>()</code> </td> -</tr> -</table> -</li> -</ul> -<!-- ========== METHOD SUMMARY =========== --> -<ul class="blockList"> -<li class="blockList"><a name="method.summary"> -<!-- --> -</a> -<h3>Method Summary</h3> -<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> -<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> -<tr> -<th class="colFirst" scope="col">Modifier and Type</th> -<th class="colLast" scope="col">Method and Description</th> -</tr> -<tr id="i0" class="altColor"> -<td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ServerUtilities.html#cleanUpServerPack-java.io.File-java.io.File-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">cleanUpServerPack</a></span>(java.io.File fabricInstaller, - java.io.File forgeInstaller, - java.lang.String modLoader, - java.lang.String modpackDir, - java.lang.String minecraftVersion, - java.lang.String modLoaderVersion)</code> -<div class="block">Deletes remnant files from Fabric/Forge installation no longer needed.</div> -</td> -</tr> -<tr id="i1" class="rowColor"> -<td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ServerUtilities.html#deleteMinecraftJar-java.lang.String-java.lang.String-">deleteMinecraftJar</a></span>(java.lang.String modLoader, - java.lang.String modpackDir)</code> -<div class="block">Deletes Mojang's minecraft_server.jar from the zip-archive so users do not accidentally upload a file containing software from Mojang.</div> -</td> -</tr> -<tr id="i2" class="altColor"> -<td class="colFirst"><code>(package private) boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ServerUtilities.html#downloadFabricJar-java.lang.String-">downloadFabricJar</a></span>(java.lang.String modpackDir)</code> -<div class="block">Downloads the specified version of Fabric.</div> -</td> -</tr> -<tr id="i3" class="rowColor"> -<td class="colFirst"><code>(package private) boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ServerUtilities.html#downloadForgeJar-java.lang.String-java.lang.String-java.lang.String-">downloadForgeJar</a></span>(java.lang.String minecraftVersion, - java.lang.String modLoaderVersion, - java.lang.String modpackDir)</code> -<div class="block">Downloads the specified version of the Forge installer to be used in ServerSetup.installServer.</div> -</td> -</tr> -<tr id="i4" class="altColor"> -<td class="colFirst"><code>private void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ServerUtilities.html#fabricBatch-java.lang.String-java.lang.String-">fabricBatch</a></span>(java.lang.String modpackDir, - java.lang.String minecraftVersion)</code> -<div class="block">Generates download scripts for Mojang's Minecraft server for Fabric,Windows.</div> -</td> -</tr> -<tr id="i5" class="rowColor"> -<td class="colFirst"><code>private void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ServerUtilities.html#fabricShell-java.lang.String-java.lang.String-">fabricShell</a></span>(java.lang.String modpackDir, - java.lang.String minecraftVersion)</code> -<div class="block">Generates download scripts for Mojang's Minecraft server for Fabric,Linux.</div> -</td> -</tr> -<tr id="i6" class="altColor"> -<td class="colFirst"><code>private void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ServerUtilities.html#forgeBatch-java.lang.String-java.lang.String-">forgeBatch</a></span>(java.lang.String modpackDir, - java.lang.String minecraftVersion)</code> -<div class="block">Generates download scripts for Mojang's Minecraft server for Forge,Windows.</div> -</td> -</tr> -<tr id="i7" class="rowColor"> -<td class="colFirst"><code>private void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ServerUtilities.html#forgeShell-java.lang.String-java.lang.String-">forgeShell</a></span>(java.lang.String modpackDir, - java.lang.String minecraftVersion)</code> -<div class="block">Generates download scripts for Mojang's Minecraft server for Forge,Linux.</div> -</td> -</tr> -<tr id="i8" class="altColor"> -<td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ServerUtilities.html#generateDownloadScripts-java.lang.String-java.lang.String-java.lang.String-">generateDownloadScripts</a></span>(java.lang.String modLoader, - java.lang.String modpackDir, - java.lang.String minecraftVersion)</code> -<div class="block">Calls methods for generating download scripts for Mojang's Minecraft server depending on the specified versions and modloader.</div> -</td> -</tr> -<tr id="i9" class="rowColor"> -<td class="colFirst"><code>private java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/ServerUtilities.html#latestFabricInstaller-java.lang.String-">latestFabricInstaller</a></span>(java.lang.String modpackDir)</code> -<div class="block">Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer.</div> -</td> -</tr> -</table> -<ul class="blockList"> -<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> -<!-- --> -</a> -<h3>Methods inherited from class java.lang.Object</h3> -<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li> -</ul> -</li> -</ul> -</li> -</ul> -</div> -<div class="details"> -<ul class="blockList"> -<li class="blockList"> -<!-- ============ FIELD DETAIL =========== --> -<ul class="blockList"> -<li class="blockList"><a name="field.detail"> -<!-- --> -</a> -<h3>Field Detail</h3> -<a name="appLogger"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>appLogger</h4> -<pre>private static final org.apache.logging.log4j.Logger appLogger</pre> -</li> -</ul> -</li> -</ul> -<!-- ========= CONSTRUCTOR DETAIL ======== --> -<ul class="blockList"> -<li class="blockList"><a name="constructor.detail"> -<!-- --> -</a> -<h3>Constructor Detail</h3> -<a name="ServerUtilities--"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>ServerUtilities</h4> -<pre>ServerUtilities()</pre> -</li> -</ul> -</li> -</ul> -<!-- ============ METHOD DETAIL ========== --> -<ul class="blockList"> -<li class="blockList"><a name="method.detail"> -<!-- --> -</a> -<h3>Method Detail</h3> -<a name="generateDownloadScripts-java.lang.String-java.lang.String-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>generateDownloadScripts</h4> -<pre>void generateDownloadScripts(java.lang.String modLoader, - java.lang.String modpackDir, - java.lang.String minecraftVersion)</pre> -<div class="block">Calls methods for generating download scripts for Mojang's Minecraft server depending on the specified versions and modloader.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modLoader</code> - String. The specified modloader determines the name under which Mojang's server jar will be downloaded as.</dd> -<dd><code>modpackDir</code> - String. /server_pack The directory where the scripts will be placed in.</dd> -<dd><code>minecraftVersion</code> - String. The version of the Minecraft server jar to download.</dd> -</dl> -</li> -</ul> -<a name="fabricShell-java.lang.String-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>fabricShell</h4> -<pre>private void fabricShell(java.lang.String modpackDir, - java.lang.String minecraftVersion)</pre> -<div class="block">Generates download scripts for Mojang's Minecraft server for Fabric,Linux.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack The directory where the scripts will be placed in.</dd> -<dd><code>minecraftVersion</code> - String. The version of the Minecraft server jar to download.</dd> -</dl> -</li> -</ul> -<a name="fabricBatch-java.lang.String-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>fabricBatch</h4> -<pre>private void fabricBatch(java.lang.String modpackDir, - java.lang.String minecraftVersion)</pre> -<div class="block">Generates download scripts for Mojang's Minecraft server for Fabric,Windows.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack The directory where the scripts will be placed in.</dd> -<dd><code>minecraftVersion</code> - String. The version of the Minecraft server jar to download.</dd> -</dl> -</li> -</ul> -<a name="forgeShell-java.lang.String-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>forgeShell</h4> -<pre>private void forgeShell(java.lang.String modpackDir, - java.lang.String minecraftVersion)</pre> -<div class="block">Generates download scripts for Mojang's Minecraft server for Forge,Linux.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack The directory where the scripts will be placed in.</dd> -<dd><code>minecraftVersion</code> - String. The version of the Minecraft server jar to download.</dd> -</dl> -</li> -</ul> -<a name="forgeBatch-java.lang.String-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>forgeBatch</h4> -<pre>private void forgeBatch(java.lang.String modpackDir, - java.lang.String minecraftVersion)</pre> -<div class="block">Generates download scripts for Mojang's Minecraft server for Forge,Windows.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack The directory where the scripts will be placed in.</dd> -<dd><code>minecraftVersion</code> - String. The version of the Minecraft server jar to download.</dd> -</dl> -</li> -</ul> -<a name="downloadFabricJar-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>downloadFabricJar</h4> -<pre>boolean downloadFabricJar(java.lang.String modpackDir)</pre> -<div class="block">Downloads the specified version of Fabric.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack The directory where the Fabric installer will be placed in.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the download was successful. False if not.</dd> -</dl> -</li> -</ul> -<a name="latestFabricInstaller-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>latestFabricInstaller</h4> -<pre>private java.lang.String latestFabricInstaller(java.lang.String modpackDir)</pre> -<div class="block">Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack The directory where the Fabric installer will be placed in.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the download was successful. False if not.</dd> -</dl> -</li> -</ul> -<a name="downloadForgeJar-java.lang.String-java.lang.String-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>downloadForgeJar</h4> -<pre>boolean downloadForgeJar(java.lang.String minecraftVersion, - java.lang.String modLoaderVersion, - java.lang.String modpackDir)</pre> -<div class="block">Downloads the specified version of the Forge installer to be used in ServerSetup.installServer.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>minecraftVersion</code> - String. The Minecraft version corresponding to the Forge version. Minecraft version and Forge version build a pair.</dd> -<dd><code>modLoaderVersion</code> - String. The Forge version corresponding to the Minecraft version. Minecraft version and Forge version build a pair.</dd> -<dd><code>modpackDir</code> - String. /server_pack The directory where the Forge installer will be placed in.</dd> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the download was successful. False if not.</dd> -</dl> -</li> -</ul> -<a name="deleteMinecraftJar-java.lang.String-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>deleteMinecraftJar</h4> -<pre>void deleteMinecraftJar(java.lang.String modLoader, - java.lang.String modpackDir)</pre> -<div class="block">Deletes Mojang's minecraft_server.jar from the zip-archive so users do not accidentally upload a file containing software from Mojang. - With help from https://stackoverflow.com/questions/5244963/delete-files-from-a-zip-archive-without-decompressing-in-java-or-maybe-python and https://bugs.openjdk.java.net/browse/JDK-8186227</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modLoader</code> - String. Determines the name of the file to delete.</dd> -<dd><code>modpackDir</code> - String. /server_pack The directory in which the file will be deleted.</dd> -</dl> -</li> -</ul> -<a name="cleanUpServerPack-java.io.File-java.io.File-java.lang.String-java.lang.String-java.lang.String-java.lang.String-"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>cleanUpServerPack</h4> -<pre>void cleanUpServerPack(java.io.File fabricInstaller, - java.io.File forgeInstaller, - java.lang.String modLoader, - java.lang.String modpackDir, - java.lang.String minecraftVersion, - java.lang.String modLoaderVersion)</pre> -<div class="block">Deletes remnant files from Fabric/Forge installation no longer needed.</div> -<dl> -<dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>fabricInstaller</code> - File. Fabric installer to be deleted.</dd> -<dd><code>forgeInstaller</code> - File. Forge installer to be deleted.</dd> -<dd><code>modLoader</code> - String. Whether Forge or Fabric files are to be deleted.</dd> -<dd><code>modpackDir</code> - String. /server_pack The directory where files are to be deleted.</dd> -<dd><code>minecraftVersion</code> - String. Needed for renaming the Forge server jar to work with launch scripts provided by serverpackcreator.</dd> -<dd><code>modLoaderVersion</code> - String. Needed for renaming the Forge server jar to work with launch scripts provided by serverpackcreator.</dd> -</dl> -</li> -</ul> -</li> -</ul> -</li> -</ul> -</div> -</div> -<!-- ========= END OF CLASS DATA ========= --> -<!-- ======= START OF BOTTOM NAVBAR ====== --> -<div class="bottomNav"><a name="navbar.bottom"> -<!-- --> -</a> -<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div> -<a name="navbar.bottom.firstrow"> -<!-- --> -</a> -<ul class="navList" title="Navigation"> -<li><a href="../../../overview-summary.html">Overview</a></li> -<li><a href="package-summary.html">Package</a></li> -<li class="navBarCell1Rev">Class</li> -<li><a href="package-tree.html">Tree</a></li> -<li><a href="../../../deprecated-list.html">Deprecated</a></li> -<li><a href="../../../index-all.html">Index</a></li> -<li><a href="../../../help-doc.html">Help</a></li> -</ul> -</div> -<div class="subNav"> -<ul class="navList"> -<li><a href="../../../de/griefed/serverpackcreator/ServerSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Prev Class</span></a></li> -<li>Next Class</li> -</ul> -<ul class="navList"> -<li><a href="../../../index.html?de/griefed/serverpackcreator/ServerUtilities.html" target="_top">Frames</a></li> -<li><a href="ServerUtilities.html" target="_top">No Frames</a></li> -</ul> -<ul class="navList" id="allclasses_navbar_bottom"> -<li><a href="../../../allclasses-noframe.html">All Classes</a></li> -</ul> -<div> -<script type="text/javascript"><!-- - allClassesLink = document.getElementById("allclasses_navbar_bottom"); - if(window==top) { - allClassesLink.style.display = "block"; - } - else { - allClassesLink.style.display = "none"; - } - //--> -</script> -</div> -<div> -<ul class="subNavList"> -<li>Summary: </li> -<li>Nested | </li> -<li><a href="#field.summary">Field</a> | </li> -<li><a href="#constructor.summary">Constr</a> | </li> -<li><a href="#method.summary">Method</a></li> -</ul> -<ul class="subNavList"> -<li>Detail: </li> -<li><a href="#field.detail">Field</a> | </li> -<li><a href="#constructor.detail">Constr</a> | </li> -<li><a href="#method.detail">Method</a></li> -</ul> -</div> -<a name="skip.navbar.bottom"> -<!-- --> -</a></div> -<!-- ======== END OF BOTTOM NAVBAR ======= --> -</body> -</html> diff --git a/docs/de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html similarity index 78% rename from docs/de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html rename to docs/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html index b3bffd8a2..6b9f41b19 100644 --- a/docs/de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html +++ b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html @@ -3,7 +3,7 @@ <html lang="de"> <head> <!-- Generated by javadoc --> -<title>CreateModpack (serverpackcreator API)</title> +<title>CurseCreateModpack (serverpackcreator API)</title> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <script type="text/javascript" src="../../../../script.js"></script> </head> @@ -11,7 +11,7 @@ <script type="text/javascript"><!-- try { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="CreateModpack (serverpackcreator API)"; + parent.document.title="CurseCreateModpack (serverpackcreator API)"; } } catch(err) { @@ -48,11 +48,11 @@ var activeTableTab = "activeTableTab"; <div class="subNav"> <ul class="navList"> <li>Prev Class</li> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" target="_top">Frames</a></li> -<li><a href="CreateModpack.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" target="_top">Frames</a></li> +<li><a href="CurseCreateModpack.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_top"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> @@ -91,14 +91,14 @@ var activeTableTab = "activeTableTab"; <!-- ======== START OF CLASS DATA ======== --> <div class="header"> <div class="subTitle">de.griefed.serverpackcreator.curseforgemodpack</div> -<h2 title="Class CreateModpack" class="title">Class CreateModpack</h2> +<h2 title="Class CurseCreateModpack" class="title">Class CurseCreateModpack</h2> </div> <div class="contentContainer"> <ul class="inheritance"> <li>java.lang.Object</li> <li> <ul class="inheritance"> -<li>de.griefed.serverpackcreator.curseforgemodpack.CreateModpack</li> +<li>de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack</li> </ul> </li> </ul> @@ -107,7 +107,7 @@ var activeTableTab = "activeTableTab"; <li class="blockList"> <hr> <br> -<pre>public class <span class="typeNameLabel">CreateModpack</span> +<pre>public class <span class="typeNameLabel">CurseCreateModpack</span> extends java.lang.Object</pre> </li> </ul> @@ -129,19 +129,23 @@ extends java.lang.Object</pre> </tr> <tr class="altColor"> <td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#appLogger">appLogger</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#appLogger">appLogger</a></span></code> </td> </tr> <tr class="rowColor"> -<td class="colFirst"><code>private static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#fileDiskName">fileDiskName</a></span></code> </td> +<td class="colFirst"><code>private java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#fileDiskName">fileDiskName</a></span></code> </td> </tr> <tr class="altColor"> -<td class="colFirst"><code>private static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#fileName">fileName</a></span></code> </td> +<td class="colFirst"><code>private java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#fileName">fileName</a></span></code> </td> </tr> <tr class="rowColor"> -<td class="colFirst"><code>private static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#projectName">projectName</a></span></code> </td> +<td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#localizationManager">localizationManager</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#projectName">projectName</a></span></code> </td> </tr> </table> </li> @@ -158,7 +162,7 @@ extends java.lang.Object</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#CreateModpack--">CreateModpack</a></span>()</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#CurseCreateModpack-de.griefed.serverpackcreator.i18n.LocalizationManager-">CurseCreateModpack</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</code> </td> </tr> </table> </li> @@ -177,19 +181,19 @@ extends java.lang.Object</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>private boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#checkCurseForgeDir-java.lang.String-">checkCurseForgeDir</a></span>(java.lang.String modpackDir)</code> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#checkCurseForgeDir-java.lang.String-">checkCurseForgeDir</a></span>(java.lang.String modpackDir)</code> <div class="block">Check whether the folder for the specified CurseForge projectID/fileID exists.</div> </td> </tr> <tr id="i1" class="rowColor"> <td class="colFirst"><code>private void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#copyOverride-java.lang.String-">copyOverride</a></span>(java.lang.String modpackDir)</code> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#copyOverride-java.lang.String-">copyOverride</a></span>(java.lang.String modpackDir)</code> <div class="block">Copies all folders and the files therein to the parent modpack directory.</div> </td> </tr> <tr id="i2" class="altColor"> <td class="colFirst"><code>boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-">curseForgeModpack</a></span>(java.lang.String modpackDir, +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-">curseForgeModpack</a></span>(java.lang.String modpackDir, java.lang.Integer projectID, java.lang.Integer fileID)</code> <div class="block">Gets the names of the specified project and file and makes calls to methods which create the modpack so we can then create a server pack from it.</div> @@ -197,13 +201,13 @@ extends java.lang.Object</pre> </tr> <tr id="i3" class="rowColor"> <td class="colFirst"><code>private void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#downloadMods-java.lang.String-">downloadMods</a></span>(java.lang.String modpackDir)</code> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#downloadMods-java.lang.String-">downloadMods</a></span>(java.lang.String modpackDir)</code> <div class="block">Downloads all mods specified in the modpack's manifest.json file.</div> </td> </tr> <tr id="i4" class="altColor"> <td class="colFirst"><code>private void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#initializeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-">initializeModpack</a></span>(java.lang.String modpackDir, +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#initializeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-">initializeModpack</a></span>(java.lang.String modpackDir, java.lang.Integer projectID, java.lang.Integer fileID)</code> <div class="block">Downloads the specified file of the specified project to a directory which is the combination of the project name and file display name.</div> @@ -211,20 +215,20 @@ extends java.lang.Object</pre> </tr> <tr id="i5" class="rowColor"> <td class="colFirst"><code>private java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#newFile-java.io.File-java.util.zip.ZipEntry-">newFile</a></span>(java.io.File destinationDir, +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#newFile-java.io.File-java.util.zip.ZipEntry-">newFile</a></span>(java.io.File destinationDir, java.util.zip.ZipEntry zipEntry)</code> <div class="block">Helper-Method for unzipArchive.</div> </td> </tr> <tr id="i6" class="altColor"> <td class="colFirst"><code>(package private) java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#setModloader-java.lang.String-">setModloader</a></span>(java.lang.String modloader)</code> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#setModloader-java.lang.String-">setModloader</a></span>(java.lang.String modloader)</code> <div class="block">Standardize the specified modloader.</div> </td> </tr> <tr id="i7" class="rowColor"> <td class="colFirst"><code>private void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#unzipArchive-java.lang.String-java.lang.String-">unzipArchive</a></span>(java.lang.String zipFile, +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#unzipArchive-java.lang.String-java.lang.String-">unzipArchive</a></span>(java.lang.String zipFile, java.lang.String modpackDir)</code> <div class="block">With help from: https://www.baeldung.com/java-compress-and-uncompress Unzips the downloaded modpack archive to a directory.</div> @@ -267,7 +271,7 @@ extends java.lang.Object</pre> <ul class="blockList"> <li class="blockList"> <h4>projectName</h4> -<pre>private static java.lang.String projectName</pre> +<pre>private java.lang.String projectName</pre> </li> </ul> <a name="fileName"> @@ -276,16 +280,25 @@ extends java.lang.Object</pre> <ul class="blockList"> <li class="blockList"> <h4>fileName</h4> -<pre>private static java.lang.String fileName</pre> +<pre>private java.lang.String fileName</pre> </li> </ul> <a name="fileDiskName"> <!-- --> </a> -<ul class="blockListLast"> +<ul class="blockList"> <li class="blockList"> <h4>fileDiskName</h4> -<pre>private static java.lang.String fileDiskName</pre> +<pre>private java.lang.String fileDiskName</pre> +</li> +</ul> +<a name="localizationManager"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>localizationManager</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> </li> </ul> </li> @@ -296,13 +309,13 @@ extends java.lang.Object</pre> <!-- --> </a> <h3>Constructor Detail</h3> -<a name="CreateModpack--"> +<a name="CurseCreateModpack-de.griefed.serverpackcreator.i18n.LocalizationManager-"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>CreateModpack</h4> -<pre>public CreateModpack()</pre> +<h4>CurseCreateModpack</h4> +<pre>public CurseCreateModpack(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</pre> </li> </ul> </li> @@ -474,11 +487,11 @@ extends java.lang.Object</pre> <div class="subNav"> <ul class="navList"> <li>Prev Class</li> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" target="_top">Frames</a></li> -<li><a href="CreateModpack.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" target="_top">Frames</a></li> +<li><a href="CurseCreateModpack.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_bottom"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> diff --git a/docs/de/griefed/serverpackcreator/curseforgemodpack/Files.html b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html similarity index 81% rename from docs/de/griefed/serverpackcreator/curseforgemodpack/Files.html rename to docs/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html index 596b7cec9..265587130 100644 --- a/docs/de/griefed/serverpackcreator/curseforgemodpack/Files.html +++ b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html @@ -3,7 +3,7 @@ <html lang="de"> <head> <!-- Generated by javadoc --> -<title>Files (serverpackcreator API)</title> +<title>CurseFiles (serverpackcreator API)</title> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <script type="text/javascript" src="../../../../script.js"></script> </head> @@ -11,7 +11,7 @@ <script type="text/javascript"><!-- try { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Files (serverpackcreator API)"; + parent.document.title="CurseFiles (serverpackcreator API)"; } } catch(err) { @@ -47,12 +47,12 @@ var activeTableTab = "activeTableTab"; </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/Files.html" target="_top">Frames</a></li> -<li><a href="Files.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" target="_top">Frames</a></li> +<li><a href="CurseFiles.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_top"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> @@ -91,14 +91,14 @@ var activeTableTab = "activeTableTab"; <!-- ======== START OF CLASS DATA ======== --> <div class="header"> <div class="subTitle">de.griefed.serverpackcreator.curseforgemodpack</div> -<h2 title="Class Files" class="title">Class Files</h2> +<h2 title="Class CurseFiles" class="title">Class CurseFiles</h2> </div> <div class="contentContainer"> <ul class="inheritance"> <li>java.lang.Object</li> <li> <ul class="inheritance"> -<li>de.griefed.serverpackcreator.curseforgemodpack.Files</li> +<li>de.griefed.serverpackcreator.curseforgemodpack.CurseFiles</li> </ul> </li> </ul> @@ -107,7 +107,7 @@ var activeTableTab = "activeTableTab"; <li class="blockList"> <hr> <br> -<pre>public class <span class="typeNameLabel">Files</span> +<pre>public class <span class="typeNameLabel">CurseFiles</span> extends java.lang.Object</pre> </li> </ul> @@ -129,11 +129,11 @@ extends java.lang.Object</pre> </tr> <tr class="altColor"> <td class="colFirst"><code>private java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html#fileID">fileID</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#fileID">fileID</a></span></code> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>private java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html#projectID">projectID</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#projectID">projectID</a></span></code> </td> </tr> </table> </li> @@ -150,7 +150,7 @@ extends java.lang.Object</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html#Files--">Files</a></span>()</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#CurseFiles--">CurseFiles</a></span>()</code> </td> </tr> </table> </li> @@ -169,23 +169,23 @@ extends java.lang.Object</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html#getFileID--">getFileID</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#getFileID--">getFileID</a></span>()</code> </td> </tr> <tr id="i1" class="rowColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html#getProjectID--">getProjectID</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#getProjectID--">getProjectID</a></span>()</code> </td> </tr> <tr id="i2" class="altColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html#setFileID-java.lang.String-">setFileID</a></span>(java.lang.String fileID)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#setFileID-java.lang.String-">setFileID</a></span>(java.lang.String fileID)</code> </td> </tr> <tr id="i3" class="rowColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html#setProjectID-java.lang.String-">setProjectID</a></span>(java.lang.String projectID)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#setProjectID-java.lang.String-">setProjectID</a></span>(java.lang.String projectID)</code> </td> </tr> <tr id="i4" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html#toString--">toString</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#toString--">toString</a></span>()</code> </td> </tr> </table> <ul class="blockList"> @@ -235,13 +235,13 @@ extends java.lang.Object</pre> <!-- --> </a> <h3>Constructor Detail</h3> -<a name="Files--"> +<a name="CurseFiles--"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>Files</h4> -<pre>public Files()</pre> +<h4>CurseFiles</h4> +<pre>public CurseFiles()</pre> </li> </ul> </li> @@ -328,12 +328,12 @@ extends java.lang.Object</pre> </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/Files.html" target="_top">Frames</a></li> -<li><a href="Files.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" target="_top">Frames</a></li> +<li><a href="CurseFiles.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_bottom"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> diff --git a/docs/de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html similarity index 75% rename from docs/de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html rename to docs/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html index d2f6f2e01..5989e2acf 100644 --- a/docs/de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html +++ b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html @@ -3,7 +3,7 @@ <html lang="de"> <head> <!-- Generated by javadoc --> -<title>Minecraft (serverpackcreator API)</title> +<title>CurseMinecraft (serverpackcreator API)</title> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <script type="text/javascript" src="../../../../script.js"></script> </head> @@ -11,7 +11,7 @@ <script type="text/javascript"><!-- try { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Minecraft (serverpackcreator API)"; + parent.document.title="CurseMinecraft (serverpackcreator API)"; } } catch(err) { @@ -47,12 +47,12 @@ var activeTableTab = "activeTableTab"; </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" target="_top">Frames</a></li> -<li><a href="Minecraft.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" target="_top">Frames</a></li> +<li><a href="CurseMinecraft.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_top"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> @@ -91,14 +91,14 @@ var activeTableTab = "activeTableTab"; <!-- ======== START OF CLASS DATA ======== --> <div class="header"> <div class="subTitle">de.griefed.serverpackcreator.curseforgemodpack</div> -<h2 title="Class Minecraft" class="title">Class Minecraft</h2> +<h2 title="Class CurseMinecraft" class="title">Class CurseMinecraft</h2> </div> <div class="contentContainer"> <ul class="inheritance"> <li>java.lang.Object</li> <li> <ul class="inheritance"> -<li>de.griefed.serverpackcreator.curseforgemodpack.Minecraft</li> +<li>de.griefed.serverpackcreator.curseforgemodpack.CurseMinecraft</li> </ul> </li> </ul> @@ -107,7 +107,7 @@ var activeTableTab = "activeTableTab"; <li class="blockList"> <hr> <br> -<pre>class <span class="typeNameLabel">Minecraft</span> +<pre>class <span class="typeNameLabel">CurseMinecraft</span> extends java.lang.Object</pre> </li> </ul> @@ -128,12 +128,12 @@ extends java.lang.Object</pre> <th class="colLast" scope="col">Field and Description</th> </tr> <tr class="altColor"> -<td class="colFirst"><code>private java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">ModLoaders</a>></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html#modLoaders">modLoaders</a></span></code> </td> +<td class="colFirst"><code>private java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a>></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#modLoaders">modLoaders</a></span></code> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>private java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html#version">version</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#version">version</a></span></code> </td> </tr> </table> </li> @@ -150,7 +150,7 @@ extends java.lang.Object</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html#Minecraft--">Minecraft</a></span>()</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#CurseMinecraft--">CurseMinecraft</a></span>()</code> </td> </tr> </table> </li> @@ -168,24 +168,24 @@ extends java.lang.Object</pre> <th class="colLast" scope="col">Method and Description</th> </tr> <tr id="i0" class="altColor"> -<td class="colFirst"><code>java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">ModLoaders</a>></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html#getModLoaders--">getModLoaders</a></span>()</code> </td> +<td class="colFirst"><code>java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a>></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#getModLoaders--">getModLoaders</a></span>()</code> </td> </tr> <tr id="i1" class="rowColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html#getVersion--">getVersion</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#getVersion--">getVersion</a></span>()</code> </td> </tr> <tr id="i2" class="altColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html#setModLoaders-java.util.List-">setModLoaders</a></span>(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">ModLoaders</a>> modLoaders)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#setModLoaders-java.util.List-">setModLoaders</a></span>(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a>> modLoaders)</code> </td> </tr> <tr id="i3" class="rowColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html#setVersion-java.lang.String-">setVersion</a></span>(java.lang.String version)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#setVersion-java.lang.String-">setVersion</a></span>(java.lang.String version)</code> </td> </tr> <tr id="i4" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html#toString--">toString</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#toString--">toString</a></span>()</code> </td> </tr> </table> <ul class="blockList"> @@ -224,7 +224,7 @@ extends java.lang.Object</pre> <ul class="blockListLast"> <li class="blockList"> <h4>modLoaders</h4> -<pre>private java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">ModLoaders</a>> modLoaders</pre> +<pre>private java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a>> modLoaders</pre> </li> </ul> </li> @@ -235,13 +235,13 @@ extends java.lang.Object</pre> <!-- --> </a> <h3>Constructor Detail</h3> -<a name="Minecraft--"> +<a name="CurseMinecraft--"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>Minecraft</h4> -<pre>Minecraft()</pre> +<h4>CurseMinecraft</h4> +<pre>CurseMinecraft()</pre> </li> </ul> </li> @@ -276,7 +276,7 @@ extends java.lang.Object</pre> <ul class="blockList"> <li class="blockList"> <h4>getModLoaders</h4> -<pre>public java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">ModLoaders</a>> getModLoaders()</pre> +<pre>public java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a>> getModLoaders()</pre> </li> </ul> <a name="setModLoaders-java.util.List-"> @@ -285,7 +285,7 @@ extends java.lang.Object</pre> <ul class="blockList"> <li class="blockList"> <h4>setModLoaders</h4> -<pre>public void setModLoaders(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">ModLoaders</a>> modLoaders)</pre> +<pre>public void setModLoaders(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a>> modLoaders)</pre> </li> </ul> <a name="toString--"> @@ -328,12 +328,12 @@ extends java.lang.Object</pre> </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" target="_top">Frames</a></li> -<li><a href="Minecraft.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" target="_top">Frames</a></li> +<li><a href="CurseMinecraft.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_bottom"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> diff --git a/docs/de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html similarity index 82% rename from docs/de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html rename to docs/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html index b7a16c9ae..f12e1bd49 100644 --- a/docs/de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html +++ b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html @@ -3,7 +3,7 @@ <html lang="de"> <head> <!-- Generated by javadoc --> -<title>ModLoaders (serverpackcreator API)</title> +<title>CurseModLoaders (serverpackcreator API)</title> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <script type="text/javascript" src="../../../../script.js"></script> </head> @@ -11,7 +11,7 @@ <script type="text/javascript"><!-- try { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ModLoaders (serverpackcreator API)"; + parent.document.title="CurseModLoaders (serverpackcreator API)"; } } catch(err) { @@ -47,12 +47,12 @@ var activeTableTab = "activeTableTab"; </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" target="_top">Frames</a></li> -<li><a href="ModLoaders.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" target="_top">Frames</a></li> +<li><a href="CurseModLoaders.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_top"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> @@ -91,14 +91,14 @@ var activeTableTab = "activeTableTab"; <!-- ======== START OF CLASS DATA ======== --> <div class="header"> <div class="subTitle">de.griefed.serverpackcreator.curseforgemodpack</div> -<h2 title="Class ModLoaders" class="title">Class ModLoaders</h2> +<h2 title="Class CurseModLoaders" class="title">Class CurseModLoaders</h2> </div> <div class="contentContainer"> <ul class="inheritance"> <li>java.lang.Object</li> <li> <ul class="inheritance"> -<li>de.griefed.serverpackcreator.curseforgemodpack.ModLoaders</li> +<li>de.griefed.serverpackcreator.curseforgemodpack.CurseModLoaders</li> </ul> </li> </ul> @@ -107,7 +107,7 @@ var activeTableTab = "activeTableTab"; <li class="blockList"> <hr> <br> -<pre>class <span class="typeNameLabel">ModLoaders</span> +<pre>class <span class="typeNameLabel">CurseModLoaders</span> extends java.lang.Object</pre> </li> </ul> @@ -129,7 +129,7 @@ extends java.lang.Object</pre> </tr> <tr class="altColor"> <td class="colFirst"><code>private java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html#id">id</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#id">id</a></span></code> </td> </tr> </table> </li> @@ -146,7 +146,7 @@ extends java.lang.Object</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html#ModLoaders--">ModLoaders</a></span>()</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#CurseModLoaders--">CurseModLoaders</a></span>()</code> </td> </tr> </table> </li> @@ -165,15 +165,15 @@ extends java.lang.Object</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html#getId--">getId</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#getId--">getId</a></span>()</code> </td> </tr> <tr id="i1" class="rowColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html#setId-java.lang.String-">setId</a></span>(java.lang.String id)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#setId-java.lang.String-">setId</a></span>(java.lang.String id)</code> </td> </tr> <tr id="i2" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html#toString--">toString</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#toString--">toString</a></span>()</code> </td> </tr> </table> <ul class="blockList"> @@ -214,13 +214,13 @@ extends java.lang.Object</pre> <!-- --> </a> <h3>Constructor Detail</h3> -<a name="ModLoaders--"> +<a name="CurseModLoaders--"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>ModLoaders</h4> -<pre>ModLoaders()</pre> +<h4>CurseModLoaders</h4> +<pre>CurseModLoaders()</pre> </li> </ul> </li> @@ -289,12 +289,12 @@ extends java.lang.Object</pre> </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" target="_top">Frames</a></li> -<li><a href="ModLoaders.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" target="_top">Frames</a></li> +<li><a href="CurseModLoaders.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_bottom"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> diff --git a/docs/de/griefed/serverpackcreator/curseforgemodpack/Modpack.html b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html similarity index 70% rename from docs/de/griefed/serverpackcreator/curseforgemodpack/Modpack.html rename to docs/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html index 72d59cd81..6b71df42e 100644 --- a/docs/de/griefed/serverpackcreator/curseforgemodpack/Modpack.html +++ b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html @@ -3,7 +3,7 @@ <html lang="de"> <head> <!-- Generated by javadoc --> -<title>Modpack (serverpackcreator API)</title> +<title>CurseModpack (serverpackcreator API)</title> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <script type="text/javascript" src="../../../../script.js"></script> </head> @@ -11,13 +11,13 @@ <script type="text/javascript"><!-- try { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Modpack (serverpackcreator API)"; + parent.document.title="CurseModpack (serverpackcreator API)"; } } catch(err) { } //--> -var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10}; +var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10}; var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; var altColor = "altColor"; var rowColor = "rowColor"; @@ -47,12 +47,12 @@ var activeTableTab = "activeTableTab"; </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Splines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" target="_top">Frames</a></li> -<li><a href="Modpack.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" target="_top">Frames</a></li> +<li><a href="CurseModpack.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_top"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> @@ -91,14 +91,14 @@ var activeTableTab = "activeTableTab"; <!-- ======== START OF CLASS DATA ======== --> <div class="header"> <div class="subTitle">de.griefed.serverpackcreator.curseforgemodpack</div> -<h2 title="Class Modpack" class="title">Class Modpack</h2> +<h2 title="Class CurseModpack" class="title">Class CurseModpack</h2> </div> <div class="contentContainer"> <ul class="inheritance"> <li>java.lang.Object</li> <li> <ul class="inheritance"> -<li>de.griefed.serverpackcreator.curseforgemodpack.Modpack</li> +<li>de.griefed.serverpackcreator.curseforgemodpack.CurseModpack</li> </ul> </li> </ul> @@ -107,7 +107,7 @@ var activeTableTab = "activeTableTab"; <li class="blockList"> <hr> <br> -<pre>public class <span class="typeNameLabel">Modpack</span> +<pre>public class <span class="typeNameLabel">CurseModpack</span> extends java.lang.Object</pre> </li> </ul> @@ -129,23 +129,23 @@ extends java.lang.Object</pre> </tr> <tr class="altColor"> <td class="colFirst"><code>private java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#author">author</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#author">author</a></span></code> </td> </tr> <tr class="rowColor"> -<td class="colFirst"><code>private java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Files</a>></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#files">files</a></span></code> </td> +<td class="colFirst"><code>private java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a>></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#files">files</a></span></code> </td> </tr> <tr class="altColor"> -<td class="colFirst"><code>private java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Minecraft</a>></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#minecraft">minecraft</a></span></code> </td> +<td class="colFirst"><code>private java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a>></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#minecraft">minecraft</a></span></code> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>private java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#name">name</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#name">name</a></span></code> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>private java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#version">version</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#version">version</a></span></code> </td> </tr> </table> </li> @@ -162,7 +162,7 @@ extends java.lang.Object</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#Modpack--">Modpack</a></span>()</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#CurseModpack--">CurseModpack</a></span>()</code> </td> </tr> </table> </li> @@ -181,47 +181,43 @@ extends java.lang.Object</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#getAuthor--">getAuthor</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getAuthor--">getAuthor</a></span>()</code> </td> </tr> <tr id="i1" class="rowColor"> -<td class="colFirst"><code>java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Files</a>></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#getFiles--">getFiles</a></span>()</code> </td> +<td class="colFirst"><code>java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a>></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getFiles--">getFiles</a></span>()</code> </td> </tr> <tr id="i2" class="altColor"> -<td class="colFirst"><code>java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Minecraft</a>></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#getMinecraft--">getMinecraft</a></span>()</code> </td> +<td class="colFirst"><code>java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a>></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getMinecraft--">getMinecraft</a></span>()</code> </td> </tr> <tr id="i3" class="rowColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#getName--">getName</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getName--">getName</a></span>()</code> </td> </tr> <tr id="i4" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#getVersion--">getVersion</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getVersion--">getVersion</a></span>()</code> </td> </tr> <tr id="i5" class="rowColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#setAuthor-java.lang.String-">setAuthor</a></span>(java.lang.String author)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setFiles-java.util.List-">setFiles</a></span>(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a>> files)</code> </td> </tr> <tr id="i6" class="altColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#setFiles-java.util.List-">setFiles</a></span>(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Files</a>> files)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setMinecraft-java.util.List-">setMinecraft</a></span>(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a>> minecraft)</code> </td> </tr> <tr id="i7" class="rowColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#setMinecraft-java.util.List-">setMinecraft</a></span>(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Minecraft</a>> minecraft)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setName-java.lang.String-">setName</a></span>(java.lang.String name)</code> </td> </tr> <tr id="i8" class="altColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#setName-java.lang.String-">setName</a></span>(java.lang.String name)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setVersion-java.lang.String-">setVersion</a></span>(java.lang.String version)</code> </td> </tr> <tr id="i9" class="rowColor"> -<td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#setVersion-java.lang.String-">setVersion</a></span>(java.lang.String version)</code> </td> -</tr> -<tr id="i10" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#toString--">toString</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#toString--">toString</a></span>()</code> </td> </tr> </table> <ul class="blockList"> @@ -251,7 +247,7 @@ extends java.lang.Object</pre> <ul class="blockList"> <li class="blockList"> <h4>minecraft</h4> -<pre>private java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Minecraft</a>> minecraft</pre> +<pre>private java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a>> minecraft</pre> </li> </ul> <a name="name"> @@ -287,7 +283,7 @@ extends java.lang.Object</pre> <ul class="blockListLast"> <li class="blockList"> <h4>files</h4> -<pre>private java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Files</a>> files</pre> +<pre>private java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a>> files</pre> </li> </ul> </li> @@ -298,13 +294,13 @@ extends java.lang.Object</pre> <!-- --> </a> <h3>Constructor Detail</h3> -<a name="Modpack--"> +<a name="CurseModpack--"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>Modpack</h4> -<pre>public Modpack()</pre> +<h4>CurseModpack</h4> +<pre>public CurseModpack()</pre> </li> </ul> </li> @@ -321,7 +317,7 @@ extends java.lang.Object</pre> <ul class="blockList"> <li class="blockList"> <h4>getMinecraft</h4> -<pre>public java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Minecraft</a>> getMinecraft()</pre> +<pre>public java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a>> getMinecraft()</pre> </li> </ul> <a name="setMinecraft-java.util.List-"> @@ -330,7 +326,7 @@ extends java.lang.Object</pre> <ul class="blockList"> <li class="blockList"> <h4>setMinecraft</h4> -<pre>public void setMinecraft(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Minecraft</a>> minecraft)</pre> +<pre>public void setMinecraft(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a>> minecraft)</pre> </li> </ul> <a name="getName--"> @@ -378,22 +374,13 @@ extends java.lang.Object</pre> <pre>public java.lang.String getAuthor()</pre> </li> </ul> -<a name="setAuthor-java.lang.String-"> -<!-- --> -</a> -<ul class="blockList"> -<li class="blockList"> -<h4>setAuthor</h4> -<pre>public void setAuthor(java.lang.String author)</pre> -</li> -</ul> <a name="getFiles--"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>getFiles</h4> -<pre>public java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Files</a>> getFiles()</pre> +<pre>public java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a>> getFiles()</pre> </li> </ul> <a name="setFiles-java.util.List-"> @@ -402,7 +389,7 @@ extends java.lang.Object</pre> <ul class="blockList"> <li class="blockList"> <h4>setFiles</h4> -<pre>public void setFiles(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Files</a>> files)</pre> +<pre>public void setFiles(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a>> files)</pre> </li> </ul> <a name="toString--"> @@ -445,12 +432,12 @@ extends java.lang.Object</pre> </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Splines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" target="_top">Frames</a></li> -<li><a href="Modpack.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" target="_top">Frames</a></li> +<li><a href="CurseModpack.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_bottom"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> diff --git a/docs/de/griefed/serverpackcreator/curseforgemodpack/Splines.html b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html similarity index 76% rename from docs/de/griefed/serverpackcreator/curseforgemodpack/Splines.html rename to docs/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html index 55d5c3180..c85ff1e0c 100644 --- a/docs/de/griefed/serverpackcreator/curseforgemodpack/Splines.html +++ b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html @@ -3,7 +3,7 @@ <html lang="de"> <head> <!-- Generated by javadoc --> -<title>Splines (serverpackcreator API)</title> +<title>CurseSplines (serverpackcreator API)</title> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <script type="text/javascript" src="../../../../script.js"></script> </head> @@ -11,14 +11,14 @@ <script type="text/javascript"><!-- try { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="Splines (serverpackcreator API)"; + parent.document.title="CurseSplines (serverpackcreator API)"; } } catch(err) { } //--> -var methods = {"i0":9,"i1":9,"i2":9}; -var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]}; +var methods = {"i0":10,"i1":10,"i2":10}; +var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; var altColor = "altColor"; var rowColor = "rowColor"; var tableTab = "tableTab"; @@ -47,12 +47,12 @@ var activeTableTab = "activeTableTab"; </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> <li>Next Class</li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/Splines.html" target="_top">Frames</a></li> -<li><a href="Splines.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" target="_top">Frames</a></li> +<li><a href="CurseSplines.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_top"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> @@ -91,14 +91,14 @@ var activeTableTab = "activeTableTab"; <!-- ======== START OF CLASS DATA ======== --> <div class="header"> <div class="subTitle">de.griefed.serverpackcreator.curseforgemodpack</div> -<h2 title="Class Splines" class="title">Class Splines</h2> +<h2 title="Class CurseSplines" class="title">Class CurseSplines</h2> </div> <div class="contentContainer"> <ul class="inheritance"> <li>java.lang.Object</li> <li> <ul class="inheritance"> -<li>de.griefed.serverpackcreator.curseforgemodpack.Splines</li> +<li>de.griefed.serverpackcreator.curseforgemodpack.CurseSplines</li> </ul> </li> </ul> @@ -107,7 +107,7 @@ var activeTableTab = "activeTableTab"; <li class="blockList"> <hr> <br> -<pre>class <span class="typeNameLabel">Splines</span> +<pre>class <span class="typeNameLabel">CurseSplines</span> extends java.lang.Object</pre> </li> </ul> @@ -128,8 +128,8 @@ extends java.lang.Object</pre> <th class="colLast" scope="col">Field and Description</th> </tr> <tr class="altColor"> -<td class="colFirst"><code>private static java.lang.String[]</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Splines.html#reticulating">reticulating</a></span></code> </td> +<td class="colFirst"><code>private java.lang.String[]</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulating">reticulating</a></span></code> </td> </tr> </table> </li> @@ -146,7 +146,7 @@ extends java.lang.Object</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Splines.html#Splines--">Splines</a></span>()</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#CurseSplines--">CurseSplines</a></span>()</code> </td> </tr> </table> </li> @@ -158,22 +158,22 @@ extends java.lang.Object</pre> </a> <h3>Method Summary</h3> <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> -<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> +<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> <tr> <th class="colFirst" scope="col">Modifier and Type</th> <th class="colLast" scope="col">Method and Description</th> </tr> <tr id="i0" class="altColor"> -<td class="colFirst"><code>private static int</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Splines.html#getRandomInt--">getRandomInt</a></span>()</code> </td> +<td class="colFirst"><code>private int</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getRandomInt--">getRandomInt</a></span>()</code> </td> </tr> <tr id="i1" class="rowColor"> -<td class="colFirst"><code>static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Splines.html#getSplines--">getSplines</a></span>()</code> </td> +<td class="colFirst"><code>private java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getSpline--">getSpline</a></span>()</code> </td> </tr> <tr id="i2" class="altColor"> -<td class="colFirst"><code>private static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Splines.html#setSplines--">setSplines</a></span>()</code> </td> +<td class="colFirst"><code>java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulate--">reticulate</a></span>()</code> </td> </tr> </table> <ul class="blockList"> @@ -203,7 +203,7 @@ extends java.lang.Object</pre> <ul class="blockListLast"> <li class="blockList"> <h4>reticulating</h4> -<pre>private static final java.lang.String[] reticulating</pre> +<pre>private final java.lang.String[] reticulating</pre> </li> </ul> </li> @@ -214,13 +214,13 @@ extends java.lang.Object</pre> <!-- --> </a> <h3>Constructor Detail</h3> -<a name="Splines--"> +<a name="CurseSplines--"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>Splines</h4> -<pre>Splines()</pre> +<h4>CurseSplines</h4> +<pre>CurseSplines()</pre> </li> </ul> </li> @@ -237,25 +237,25 @@ extends java.lang.Object</pre> <ul class="blockList"> <li class="blockList"> <h4>getRandomInt</h4> -<pre>private static int getRandomInt()</pre> +<pre>private int getRandomInt()</pre> </li> </ul> -<a name="setSplines--"> +<a name="getSpline--"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> -<h4>setSplines</h4> -<pre>private static java.lang.String setSplines()</pre> +<h4>getSpline</h4> +<pre>private java.lang.String getSpline()</pre> </li> </ul> -<a name="getSplines--"> +<a name="reticulate--"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>getSplines</h4> -<pre>public static java.lang.String getSplines()</pre> +<h4>reticulate</h4> +<pre>public java.lang.String reticulate()</pre> </li> </ul> </li> @@ -285,12 +285,12 @@ extends java.lang.Object</pre> </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Prev Class</span></a></li> <li>Next Class</li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/Splines.html" target="_top">Frames</a></li> -<li><a href="Splines.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" target="_top">Frames</a></li> +<li><a href="CurseSplines.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_bottom"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> diff --git a/docs/de/griefed/serverpackcreator/curseforgemodpack/package-frame.html b/docs/de/griefed/serverpackcreator/curseforgemodpack/package-frame.html index 9fff4ae22..aeb20fef3 100644 --- a/docs/de/griefed/serverpackcreator/curseforgemodpack/package-frame.html +++ b/docs/de/griefed/serverpackcreator/curseforgemodpack/package-frame.html @@ -12,12 +12,12 @@ <div class="indexContainer"> <h2 title="Classes">Classes</h2> <ul title="Classes"> -<li><a href="CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">CreateModpack</a></li> -<li><a href="Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">Files</a></li> -<li><a href="Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">Minecraft</a></li> -<li><a href="ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">ModLoaders</a></li> -<li><a href="Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">Modpack</a></li> -<li><a href="Splines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">Splines</a></li> +<li><a href="CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">CurseCreateModpack</a></li> +<li><a href="CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">CurseFiles</a></li> +<li><a href="CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">CurseMinecraft</a></li> +<li><a href="CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">CurseModLoaders</a></li> +<li><a href="CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">CurseModpack</a></li> +<li><a href="CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack" target="classFrame">CurseSplines</a></li> </ul> </div> </body> diff --git a/docs/de/griefed/serverpackcreator/curseforgemodpack/package-summary.html b/docs/de/griefed/serverpackcreator/curseforgemodpack/package-summary.html index 0429cd77a..802b0cf25 100644 --- a/docs/de/griefed/serverpackcreator/curseforgemodpack/package-summary.html +++ b/docs/de/griefed/serverpackcreator/curseforgemodpack/package-summary.html @@ -81,27 +81,27 @@ </tr> <tbody> <tr class="altColor"> -<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CreateModpack</a></td> +<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></td> <td class="colLast"> </td> </tr> <tr class="rowColor"> -<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Files</a></td> +<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></td> <td class="colLast"> </td> </tr> <tr class="altColor"> -<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Minecraft</a></td> +<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></td> <td class="colLast"> </td> </tr> <tr class="rowColor"> -<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">ModLoaders</a></td> +<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a></td> <td class="colLast"> </td> </tr> <tr class="altColor"> -<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></td> +<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></td> <td class="colLast"> </td> </tr> <tr class="rowColor"> -<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Splines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Splines</a></td> +<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseSplines</a></td> <td class="colLast"> </td> </tr> </tbody> diff --git a/docs/de/griefed/serverpackcreator/curseforgemodpack/package-tree.html b/docs/de/griefed/serverpackcreator/curseforgemodpack/package-tree.html index 9ffee1e19..e02405bdf 100644 --- a/docs/de/griefed/serverpackcreator/curseforgemodpack/package-tree.html +++ b/docs/de/griefed/serverpackcreator/curseforgemodpack/package-tree.html @@ -79,12 +79,12 @@ <ul> <li type="circle">java.lang.Object <ul> -<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CreateModpack</span></a></li> -<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Files</span></a></li> -<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Minecraft</span></a></li> -<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">ModLoaders</span></a></li> -<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Modpack</span></a></li> -<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/Splines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Splines</span></a></li> +<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseCreateModpack</span></a></li> +<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseFiles</span></a></li> +<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseMinecraft</span></a></li> +<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseModLoaders</span></a></li> +<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseModpack</span></a></li> +<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseSplines</span></a></li> </ul> </li> </ul> diff --git a/docs/de/griefed/serverpackcreator/gui/About.html b/docs/de/griefed/serverpackcreator/gui/AboutTab.html similarity index 83% rename from docs/de/griefed/serverpackcreator/gui/About.html rename to docs/de/griefed/serverpackcreator/gui/AboutTab.html index 8c3e6ab48..43070616e 100644 --- a/docs/de/griefed/serverpackcreator/gui/About.html +++ b/docs/de/griefed/serverpackcreator/gui/AboutTab.html @@ -3,7 +3,7 @@ <html lang="de"> <head> <!-- Generated by javadoc --> -<title>About (serverpackcreator API)</title> +<title>AboutTab (serverpackcreator API)</title> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <script type="text/javascript" src="../../../../script.js"></script> </head> @@ -11,7 +11,7 @@ <script type="text/javascript"><!-- try { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="About (serverpackcreator API)"; + parent.document.title="AboutTab (serverpackcreator API)"; } } catch(err) { @@ -48,11 +48,11 @@ var activeTableTab = "activeTableTab"; <div class="subNav"> <ul class="navList"> <li>Prev Class</li> -<li><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/About.html" target="_top">Frames</a></li> -<li><a href="About.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/AboutTab.html" target="_top">Frames</a></li> +<li><a href="AboutTab.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_top"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> @@ -91,7 +91,7 @@ var activeTableTab = "activeTableTab"; <!-- ======== START OF CLASS DATA ======== --> <div class="header"> <div class="subTitle">de.griefed.serverpackcreator.gui</div> -<h2 title="Class About" class="title">Class About</h2> +<h2 title="Class AboutTab" class="title">Class AboutTab</h2> </div> <div class="contentContainer"> <ul class="inheritance"> @@ -101,7 +101,7 @@ var activeTableTab = "activeTableTab"; <li>java.awt.Component</li> <li> <ul class="inheritance"> -<li>de.griefed.serverpackcreator.gui.About</li> +<li>de.griefed.serverpackcreator.gui.AboutTab</li> </ul> </li> </ul> @@ -116,7 +116,7 @@ var activeTableTab = "activeTableTab"; </dl> <hr> <br> -<pre>class <span class="typeNameLabel">About</span> +<pre>class <span class="typeNameLabel">AboutTab</span> extends java.awt.Component</pre> </li> </ul> @@ -153,23 +153,27 @@ extends java.awt.Component</pre> </tr> <tr class="altColor"> <td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/About.html#appLogger">appLogger</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#appLogger">appLogger</a></span></code> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>private javax.swing.ImageIcon</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/About.html#issueIcon">issueIcon</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#issueIcon">issueIcon</a></span></code> </td> </tr> <tr class="altColor"> -<td class="colFirst"><code>private java.awt.Dimension</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/About.html#miscButtonDimension">miscButtonDimension</a></span></code> </td> +<td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#localizationManager">localizationManager</a></span></code> </td> </tr> <tr class="rowColor"> -<td class="colFirst"><code>private javax.swing.ImageIcon</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/About.html#pastebinIcon">pastebinIcon</a></span></code> </td> +<td class="colFirst"><code>private java.awt.Dimension</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#miscButtonDimension">miscButtonDimension</a></span></code> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>private javax.swing.ImageIcon</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/About.html#prosperIcon">prosperIcon</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#pastebinIcon">pastebinIcon</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.ImageIcon</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#prosperIcon">prosperIcon</a></span></code> </td> </tr> </table> <ul class="blockList"> @@ -200,7 +204,7 @@ extends java.awt.Component</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/About.html#About--">About</a></span>()</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#AboutTab-de.griefed.serverpackcreator.i18n.LocalizationManager-">AboutTab</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</code> </td> </tr> </table> </li> @@ -219,7 +223,7 @@ extends java.awt.Component</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>(package private) javax.swing.JComponent</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/About.html#about--">about</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#aboutTab--">aboutTab</a></span>()</code> </td> </tr> </table> <ul class="blockList"> @@ -289,12 +293,21 @@ extends java.awt.Component</pre> <a name="prosperIcon"> <!-- --> </a> -<ul class="blockListLast"> +<ul class="blockList"> <li class="blockList"> <h4>prosperIcon</h4> <pre>private final javax.swing.ImageIcon prosperIcon</pre> </li> </ul> +<a name="localizationManager"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>localizationManager</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +</li> +</ul> </li> </ul> <!-- ========= CONSTRUCTOR DETAIL ======== --> @@ -303,13 +316,13 @@ extends java.awt.Component</pre> <!-- --> </a> <h3>Constructor Detail</h3> -<a name="About--"> +<a name="AboutTab-de.griefed.serverpackcreator.i18n.LocalizationManager-"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>About</h4> -<pre>About()</pre> +<h4>AboutTab</h4> +<pre>public AboutTab(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</pre> </li> </ul> </li> @@ -320,13 +333,13 @@ extends java.awt.Component</pre> <!-- --> </a> <h3>Method Detail</h3> -<a name="about--"> +<a name="aboutTab--"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>about</h4> -<pre>javax.swing.JComponent about()</pre> +<h4>aboutTab</h4> +<pre>javax.swing.JComponent aboutTab()</pre> </li> </ul> </li> @@ -357,11 +370,11 @@ extends java.awt.Component</pre> <div class="subNav"> <ul class="navList"> <li>Prev Class</li> -<li><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/About.html" target="_top">Frames</a></li> -<li><a href="About.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/AboutTab.html" target="_top">Frames</a></li> +<li><a href="AboutTab.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_bottom"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> diff --git a/docs/de/griefed/serverpackcreator/gui/TabbedPane.html b/docs/de/griefed/serverpackcreator/gui/CreateGui.html similarity index 81% rename from docs/de/griefed/serverpackcreator/gui/TabbedPane.html rename to docs/de/griefed/serverpackcreator/gui/CreateGui.html index 375c35c75..0dc4b6863 100644 --- a/docs/de/griefed/serverpackcreator/gui/TabbedPane.html +++ b/docs/de/griefed/serverpackcreator/gui/CreateGui.html @@ -3,7 +3,7 @@ <html lang="de"> <head> <!-- Generated by javadoc --> -<title>TabbedPane (serverpackcreator API)</title> +<title>CreateGui (serverpackcreator API)</title> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <script type="text/javascript" src="../../../../script.js"></script> </head> @@ -11,7 +11,7 @@ <script type="text/javascript"><!-- try { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="TabbedPane (serverpackcreator API)"; + parent.document.title="CreateGui (serverpackcreator API)"; } } catch(err) { @@ -47,12 +47,12 @@ var activeTableTab = "activeTableTab"; </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> -<li>Next Class</li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/TabbedPane.html" target="_top">Frames</a></li> -<li><a href="TabbedPane.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/CreateGui.html" target="_top">Frames</a></li> +<li><a href="CreateGui.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_top"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> @@ -91,7 +91,7 @@ var activeTableTab = "activeTableTab"; <!-- ======== START OF CLASS DATA ======== --> <div class="header"> <div class="subTitle">de.griefed.serverpackcreator.gui</div> -<h2 title="Class TabbedPane" class="title">Class TabbedPane</h2> +<h2 title="Class CreateGui" class="title">Class CreateGui</h2> </div> <div class="contentContainer"> <ul class="inheritance"> @@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab"; <li>javax.swing.JPanel</li> <li> <ul class="inheritance"> -<li>de.griefed.serverpackcreator.gui.TabbedPane</li> +<li>de.griefed.serverpackcreator.gui.CreateGui</li> </ul> </li> </ul> @@ -131,11 +131,11 @@ var activeTableTab = "activeTableTab"; </dl> <hr> <br> -<pre>public class <span class="typeNameLabel">TabbedPane</span> +<pre>public class <span class="typeNameLabel">CreateGui</span> extends javax.swing.JPanel</pre> <dl> <dt><span class="seeLabel">See Also:</span></dt> -<dd><a href="../../../../serialized-form.html#de.griefed.serverpackcreator.gui.TabbedPane">Serialized Form</a></dd> +<dd><a href="../../../../serialized-form.html#de.griefed.serverpackcreator.gui.CreateGui">Serialized Form</a></dd> </dl> </li> </ul> @@ -193,19 +193,27 @@ extends javax.swing.JPanel</pre> </tr> <tr class="altColor"> <td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/TabbedPane.html#appLogger">appLogger</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#appLogger">appLogger</a></span></code> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>private javax.swing.ImageIcon</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/TabbedPane.html#bannerIcon">bannerIcon</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#bannerIcon">bannerIcon</a></span></code> </td> </tr> <tr class="altColor"> +<td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#configuration">configuration</a></span></code> </td> +</tr> +<tr class="rowColor"> <td class="colFirst"><code>private java.awt.Image</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/TabbedPane.html#icon">icon</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#icon">icon</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#localizationManager">localizationManager</a></span></code> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>private java.awt.Dimension</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/TabbedPane.html#windowDimension">windowDimension</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#windowDimension">windowDimension</a></span></code> </td> </tr> </table> <ul class="blockList"> @@ -243,7 +251,8 @@ extends javax.swing.JPanel</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/TabbedPane.html#TabbedPane--">TabbedPane</a></span>()</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#CreateGui-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-">CreateGui</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager, + <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfigCheck)</code> </td> </tr> </table> </li> @@ -262,11 +271,11 @@ extends javax.swing.JPanel</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>private void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/TabbedPane.html#createAndShowGUI--">createAndShowGUI</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#createAndShowGUI--">createAndShowGUI</a></span>()</code> </td> </tr> <tr id="i1" class="rowColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/TabbedPane.html#mainGUI--">mainGUI</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#mainGUI--">mainGUI</a></span>()</code> </td> </tr> </table> <ul class="blockList"> @@ -348,12 +357,30 @@ extends javax.swing.JPanel</pre> <a name="windowDimension"> <!-- --> </a> -<ul class="blockListLast"> +<ul class="blockList"> <li class="blockList"> <h4>windowDimension</h4> <pre>private final java.awt.Dimension windowDimension</pre> </li> </ul> +<a name="localizationManager"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>localizationManager</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +</li> +</ul> +<a name="configuration"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>configuration</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> configuration</pre> +</li> +</ul> </li> </ul> <!-- ========= CONSTRUCTOR DETAIL ======== --> @@ -362,13 +389,14 @@ extends javax.swing.JPanel</pre> <!-- --> </a> <h3>Constructor Detail</h3> -<a name="TabbedPane--"> +<a name="CreateGui-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>TabbedPane</h4> -<pre>public TabbedPane()</pre> +<h4>CreateGui</h4> +<pre>public CreateGui(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager, + <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfigCheck)</pre> </li> </ul> </li> @@ -424,12 +452,12 @@ extends javax.swing.JPanel</pre> </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> -<li>Next Class</li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/TabbedPane.html" target="_top">Frames</a></li> -<li><a href="TabbedPane.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/CreateGui.html" target="_top">Frames</a></li> +<li><a href="CreateGui.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_bottom"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> diff --git a/docs/de/griefed/serverpackcreator/gui/CreateServerPack.html b/docs/de/griefed/serverpackcreator/gui/CreateServerPackTab.html similarity index 73% rename from docs/de/griefed/serverpackcreator/gui/CreateServerPack.html rename to docs/de/griefed/serverpackcreator/gui/CreateServerPackTab.html index 97351160a..a30a2928e 100644 --- a/docs/de/griefed/serverpackcreator/gui/CreateServerPack.html +++ b/docs/de/griefed/serverpackcreator/gui/CreateServerPackTab.html @@ -3,7 +3,7 @@ <html lang="de"> <head> <!-- Generated by javadoc --> -<title>CreateServerPack (serverpackcreator API)</title> +<title>CreateServerPackTab (serverpackcreator API)</title> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <script type="text/javascript" src="../../../../script.js"></script> </head> @@ -11,7 +11,7 @@ <script type="text/javascript"><!-- try { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="CreateServerPack (serverpackcreator API)"; + parent.document.title="CreateServerPackTab (serverpackcreator API)"; } } catch(err) { @@ -47,12 +47,12 @@ var activeTableTab = "activeTableTab"; </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/gui/About.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/CreateServerPack.html" target="_top">Frames</a></li> -<li><a href="CreateServerPack.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/CreateServerPackTab.html" target="_top">Frames</a></li> +<li><a href="CreateServerPackTab.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_top"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> @@ -91,7 +91,7 @@ var activeTableTab = "activeTableTab"; <!-- ======== START OF CLASS DATA ======== --> <div class="header"> <div class="subTitle">de.griefed.serverpackcreator.gui</div> -<h2 title="Class CreateServerPack" class="title">Class CreateServerPack</h2> +<h2 title="Class CreateServerPackTab" class="title">Class CreateServerPackTab</h2> </div> <div class="contentContainer"> <ul class="inheritance"> @@ -101,7 +101,7 @@ var activeTableTab = "activeTableTab"; <li>java.awt.Component</li> <li> <ul class="inheritance"> -<li>de.griefed.serverpackcreator.gui.CreateServerPack</li> +<li>de.griefed.serverpackcreator.gui.CreateServerPackTab</li> </ul> </li> </ul> @@ -116,8 +116,12 @@ var activeTableTab = "activeTableTab"; </dl> <hr> <br> -<pre>class <span class="typeNameLabel">CreateServerPack</span> +<pre>public class <span class="typeNameLabel">CreateServerPackTab</span> extends java.awt.Component</pre> +<dl> +<dt><span class="seeLabel">See Also:</span></dt> +<dd><a href="../../../../serialized-form.html#de.griefed.serverpackcreator.gui.CreateServerPackTab">Serialized Form</a></dd> +</dl> </li> </ul> </div> @@ -153,31 +157,43 @@ extends java.awt.Component</pre> </tr> <tr class="altColor"> <td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPack.html#appLogger">appLogger</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#appLogger">appLogger</a></span></code> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>private java.awt.Dimension</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPack.html#chooserDimension">chooserDimension</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#chooserDimension">chooserDimension</a></span></code> </td> </tr> <tr class="altColor"> +<td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#configuration">configuration</a></span></code> </td> +</tr> +<tr class="rowColor"> <td class="colFirst"><code>private java.awt.Dimension</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPack.html#folderButtonDimension">folderButtonDimension</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#folderButtonDimension">folderButtonDimension</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.ImageIcon</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#folderIcon">folderIcon</a></span></code> </td> </tr> <tr class="rowColor"> <td class="colFirst"><code>private javax.swing.ImageIcon</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPack.html#folderIcon">folderIcon</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#helpIcon">helpIcon</a></span></code> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>private javax.swing.ImageIcon</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPack.html#loadIcon">loadIcon</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#loadIcon">loadIcon</a></span></code> </td> </tr> <tr class="rowColor"> -<td class="colFirst"><code>private java.awt.Dimension</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPack.html#miscButtonDimension">miscButtonDimension</a></span></code> </td> +<td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#localizationManager">localizationManager</a></span></code> </td> </tr> <tr class="altColor"> +<td class="colFirst"><code>private java.awt.Dimension</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#miscButtonDimension">miscButtonDimension</a></span></code> </td> +</tr> +<tr class="rowColor"> <td class="colFirst"><code>private javax.swing.ImageIcon</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPack.html#startGeneration">startGeneration</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#startGeneration">startGeneration</a></span></code> </td> </tr> </table> <ul class="blockList"> @@ -208,7 +224,8 @@ extends java.awt.Component</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPack.html#CreateServerPack--">CreateServerPack</a></span>()</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#CreateServerPackTab-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-">CreateServerPackTab</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager, + <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfigCheck)</code> </td> </tr> </table> </li> @@ -227,7 +244,7 @@ extends java.awt.Component</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>(package private) javax.swing.JComponent</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPack.html#createServerPack--">createServerPack</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#createServerPackTab--">createServerPackTab</a></span>()</code> </td> </tr> </table> <ul class="blockList"> @@ -294,6 +311,15 @@ extends java.awt.Component</pre> <pre>private final javax.swing.ImageIcon startGeneration</pre> </li> </ul> +<a name="helpIcon"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>helpIcon</h4> +<pre>private final javax.swing.ImageIcon helpIcon</pre> +</li> +</ul> <a name="folderButtonDimension"> <!-- --> </a> @@ -315,12 +341,30 @@ extends java.awt.Component</pre> <a name="chooserDimension"> <!-- --> </a> -<ul class="blockListLast"> +<ul class="blockList"> <li class="blockList"> <h4>chooserDimension</h4> <pre>private final java.awt.Dimension chooserDimension</pre> </li> </ul> +<a name="configuration"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>configuration</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> configuration</pre> +</li> +</ul> +<a name="localizationManager"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>localizationManager</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +</li> +</ul> </li> </ul> <!-- ========= CONSTRUCTOR DETAIL ======== --> @@ -329,13 +373,14 @@ extends java.awt.Component</pre> <!-- --> </a> <h3>Constructor Detail</h3> -<a name="CreateServerPack--"> +<a name="CreateServerPackTab-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>CreateServerPack</h4> -<pre>CreateServerPack()</pre> +<h4>CreateServerPackTab</h4> +<pre>public CreateServerPackTab(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager, + <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfigCheck)</pre> </li> </ul> </li> @@ -346,13 +391,13 @@ extends java.awt.Component</pre> <!-- --> </a> <h3>Method Detail</h3> -<a name="createServerPack--"> +<a name="createServerPackTab--"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>createServerPack</h4> -<pre>javax.swing.JComponent createServerPack()</pre> +<h4>createServerPackTab</h4> +<pre>javax.swing.JComponent createServerPackTab()</pre> </li> </ul> </li> @@ -382,12 +427,12 @@ extends java.awt.Component</pre> </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/gui/About.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/CreateServerPack.html" target="_top">Frames</a></li> -<li><a href="CreateServerPack.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/CreateServerPackTab.html" target="_top">Frames</a></li> +<li><a href="CreateServerPackTab.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_bottom"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> diff --git a/docs/de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html b/docs/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html similarity index 78% rename from docs/de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html rename to docs/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html index 08f1a27b6..aea07d964 100644 --- a/docs/de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html +++ b/docs/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html @@ -3,7 +3,7 @@ <html lang="de"> <head> <!-- Generated by javadoc --> -<title>ModloaderInstallerLog (serverpackcreator API)</title> +<title>ModloaderInstallerLogTab (serverpackcreator API)</title> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <script type="text/javascript" src="../../../../script.js"></script> </head> @@ -11,7 +11,7 @@ <script type="text/javascript"><!-- try { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ModloaderInstallerLog (serverpackcreator API)"; + parent.document.title="ModloaderInstallerLogTab (serverpackcreator API)"; } } catch(err) { @@ -47,12 +47,12 @@ var activeTableTab = "activeTableTab"; </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html" target="_top">Frames</a></li> -<li><a href="ModloaderInstallerLog.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" target="_top">Frames</a></li> +<li><a href="ModloaderInstallerLogTab.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_top"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> @@ -73,13 +73,13 @@ var activeTableTab = "activeTableTab"; <ul class="subNavList"> <li>Summary: </li> <li><a href="#nested.classes.inherited.from.class.java.awt.Component">Nested</a> | </li> -<li><a href="#fields.inherited.from.class.java.awt.Component">Field</a> | </li> +<li><a href="#field.summary">Field</a> | </li> <li><a href="#constructor.summary">Constr</a> | </li> <li><a href="#method.summary">Method</a></li> </ul> <ul class="subNavList"> <li>Detail: </li> -<li>Field | </li> +<li><a href="#field.detail">Field</a> | </li> <li><a href="#constructor.detail">Constr</a> | </li> <li><a href="#method.detail">Method</a></li> </ul> @@ -91,7 +91,7 @@ var activeTableTab = "activeTableTab"; <!-- ======== START OF CLASS DATA ======== --> <div class="header"> <div class="subTitle">de.griefed.serverpackcreator.gui</div> -<h2 title="Class ModloaderInstallerLog" class="title">Class ModloaderInstallerLog</h2> +<h2 title="Class ModloaderInstallerLogTab" class="title">Class ModloaderInstallerLogTab</h2> </div> <div class="contentContainer"> <ul class="inheritance"> @@ -101,7 +101,7 @@ var activeTableTab = "activeTableTab"; <li>java.awt.Component</li> <li> <ul class="inheritance"> -<li>de.griefed.serverpackcreator.gui.ModloaderInstallerLog</li> +<li>de.griefed.serverpackcreator.gui.ModloaderInstallerLogTab</li> </ul> </li> </ul> @@ -116,7 +116,7 @@ var activeTableTab = "activeTableTab"; </dl> <hr> <br> -<pre>class <span class="typeNameLabel">ModloaderInstallerLog</span> +<pre>class <span class="typeNameLabel">ModloaderInstallerLogTab</span> extends java.awt.Component</pre> </li> </ul> @@ -145,6 +145,17 @@ extends java.awt.Component</pre> <!-- --> </a> <h3>Field Summary</h3> +<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation"> +<caption><span>Fields</span><span class="tabEnd"> </span></caption> +<tr> +<th class="colFirst" scope="col">Modifier and Type</th> +<th class="colLast" scope="col">Field and Description</th> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#localizationManager">localizationManager</a></span></code> </td> +</tr> +</table> <ul class="blockList"> <li class="blockList"><a name="fields.inherited.from.class.java.awt.Component"> <!-- --> @@ -173,7 +184,7 @@ extends java.awt.Component</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html#ModloaderInstallerLog--">ModloaderInstallerLog</a></span>()</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#ModloaderInstallerLogTab-de.griefed.serverpackcreator.i18n.LocalizationManager-">ModloaderInstallerLogTab</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</code> </td> </tr> </table> </li> @@ -192,7 +203,7 @@ extends java.awt.Component</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>(package private) javax.swing.JComponent</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html#modloaderInstallerLog--">modloaderInstallerLog</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#modloaderInstallerLogTab--">modloaderInstallerLogTab</a></span>()</code> </td> </tr> </table> <ul class="blockList"> @@ -217,19 +228,36 @@ extends java.awt.Component</pre> <div class="details"> <ul class="blockList"> <li class="blockList"> +<!-- ============ FIELD DETAIL =========== --> +<ul class="blockList"> +<li class="blockList"><a name="field.detail"> +<!-- --> +</a> +<h3>Field Detail</h3> +<a name="localizationManager"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>localizationManager</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +</li> +</ul> +</li> +</ul> <!-- ========= CONSTRUCTOR DETAIL ======== --> <ul class="blockList"> <li class="blockList"><a name="constructor.detail"> <!-- --> </a> <h3>Constructor Detail</h3> -<a name="ModloaderInstallerLog--"> +<a name="ModloaderInstallerLogTab-de.griefed.serverpackcreator.i18n.LocalizationManager-"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>ModloaderInstallerLog</h4> -<pre>ModloaderInstallerLog()</pre> +<h4>ModloaderInstallerLogTab</h4> +<pre>public ModloaderInstallerLogTab(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</pre> </li> </ul> </li> @@ -240,13 +268,13 @@ extends java.awt.Component</pre> <!-- --> </a> <h3>Method Detail</h3> -<a name="modloaderInstallerLog--"> +<a name="modloaderInstallerLogTab--"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>modloaderInstallerLog</h4> -<pre>javax.swing.JComponent modloaderInstallerLog()</pre> +<h4>modloaderInstallerLogTab</h4> +<pre>javax.swing.JComponent modloaderInstallerLogTab()</pre> </li> </ul> </li> @@ -276,12 +304,12 @@ extends java.awt.Component</pre> </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html" target="_top">Frames</a></li> -<li><a href="ModloaderInstallerLog.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" target="_top">Frames</a></li> +<li><a href="ModloaderInstallerLogTab.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_bottom"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> @@ -302,13 +330,13 @@ extends java.awt.Component</pre> <ul class="subNavList"> <li>Summary: </li> <li><a href="#nested.classes.inherited.from.class.java.awt.Component">Nested</a> | </li> -<li><a href="#fields.inherited.from.class.java.awt.Component">Field</a> | </li> +<li><a href="#field.summary">Field</a> | </li> <li><a href="#constructor.summary">Constr</a> | </li> <li><a href="#method.summary">Method</a></li> </ul> <ul class="subNavList"> <li>Detail: </li> -<li>Field | </li> +<li><a href="#field.detail">Field</a> | </li> <li><a href="#constructor.detail">Constr</a> | </li> <li><a href="#method.detail">Method</a></li> </ul> diff --git a/docs/de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html b/docs/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html similarity index 78% rename from docs/de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html rename to docs/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html index 8fa1f7bad..aac0717bc 100644 --- a/docs/de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html +++ b/docs/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html @@ -3,7 +3,7 @@ <html lang="de"> <head> <!-- Generated by javadoc --> -<title>ServerPackCreatorLog (serverpackcreator API)</title> +<title>ServerPackCreatorLogTab (serverpackcreator API)</title> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <script type="text/javascript" src="../../../../script.js"></script> </head> @@ -11,7 +11,7 @@ <script type="text/javascript"><!-- try { if (location.href.indexOf('is-external=true') == -1) { - parent.document.title="ServerPackCreatorLog (serverpackcreator API)"; + parent.document.title="ServerPackCreatorLogTab (serverpackcreator API)"; } } catch(err) { @@ -47,12 +47,12 @@ var activeTableTab = "activeTableTab"; </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../../de/griefed/serverpackcreator/gui/TabbedPane.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> +<li>Next Class</li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html" target="_top">Frames</a></li> -<li><a href="ServerPackCreatorLog.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" target="_top">Frames</a></li> +<li><a href="ServerPackCreatorLogTab.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_top"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> @@ -73,13 +73,13 @@ var activeTableTab = "activeTableTab"; <ul class="subNavList"> <li>Summary: </li> <li><a href="#nested.classes.inherited.from.class.java.awt.Component">Nested</a> | </li> -<li><a href="#fields.inherited.from.class.java.awt.Component">Field</a> | </li> +<li><a href="#field.summary">Field</a> | </li> <li><a href="#constructor.summary">Constr</a> | </li> <li><a href="#method.summary">Method</a></li> </ul> <ul class="subNavList"> <li>Detail: </li> -<li>Field | </li> +<li><a href="#field.detail">Field</a> | </li> <li><a href="#constructor.detail">Constr</a> | </li> <li><a href="#method.detail">Method</a></li> </ul> @@ -91,7 +91,7 @@ var activeTableTab = "activeTableTab"; <!-- ======== START OF CLASS DATA ======== --> <div class="header"> <div class="subTitle">de.griefed.serverpackcreator.gui</div> -<h2 title="Class ServerPackCreatorLog" class="title">Class ServerPackCreatorLog</h2> +<h2 title="Class ServerPackCreatorLogTab" class="title">Class ServerPackCreatorLogTab</h2> </div> <div class="contentContainer"> <ul class="inheritance"> @@ -101,7 +101,7 @@ var activeTableTab = "activeTableTab"; <li>java.awt.Component</li> <li> <ul class="inheritance"> -<li>de.griefed.serverpackcreator.gui.ServerPackCreatorLog</li> +<li>de.griefed.serverpackcreator.gui.ServerPackCreatorLogTab</li> </ul> </li> </ul> @@ -116,7 +116,7 @@ var activeTableTab = "activeTableTab"; </dl> <hr> <br> -<pre>class <span class="typeNameLabel">ServerPackCreatorLog</span> +<pre>class <span class="typeNameLabel">ServerPackCreatorLogTab</span> extends java.awt.Component</pre> </li> </ul> @@ -145,6 +145,17 @@ extends java.awt.Component</pre> <!-- --> </a> <h3>Field Summary</h3> +<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation"> +<caption><span>Fields</span><span class="tabEnd"> </span></caption> +<tr> +<th class="colFirst" scope="col">Modifier and Type</th> +<th class="colLast" scope="col">Field and Description</th> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#localizationManager">localizationManager</a></span></code> </td> +</tr> +</table> <ul class="blockList"> <li class="blockList"><a name="fields.inherited.from.class.java.awt.Component"> <!-- --> @@ -173,7 +184,7 @@ extends java.awt.Component</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html#ServerPackCreatorLog--">ServerPackCreatorLog</a></span>()</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#ServerPackCreatorLogTab-de.griefed.serverpackcreator.i18n.LocalizationManager-">ServerPackCreatorLogTab</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</code> </td> </tr> </table> </li> @@ -192,7 +203,7 @@ extends java.awt.Component</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>(package private) javax.swing.JComponent</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html#serverPackCreatorLog--">serverPackCreatorLog</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#serverPackCreatorLogTab--">serverPackCreatorLogTab</a></span>()</code> </td> </tr> </table> <ul class="blockList"> @@ -217,19 +228,36 @@ extends java.awt.Component</pre> <div class="details"> <ul class="blockList"> <li class="blockList"> +<!-- ============ FIELD DETAIL =========== --> +<ul class="blockList"> +<li class="blockList"><a name="field.detail"> +<!-- --> +</a> +<h3>Field Detail</h3> +<a name="localizationManager"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>localizationManager</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +</li> +</ul> +</li> +</ul> <!-- ========= CONSTRUCTOR DETAIL ======== --> <ul class="blockList"> <li class="blockList"><a name="constructor.detail"> <!-- --> </a> <h3>Constructor Detail</h3> -<a name="ServerPackCreatorLog--"> +<a name="ServerPackCreatorLogTab-de.griefed.serverpackcreator.i18n.LocalizationManager-"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>ServerPackCreatorLog</h4> -<pre>ServerPackCreatorLog()</pre> +<h4>ServerPackCreatorLogTab</h4> +<pre>public ServerPackCreatorLogTab(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</pre> </li> </ul> </li> @@ -240,13 +268,13 @@ extends java.awt.Component</pre> <!-- --> </a> <h3>Method Detail</h3> -<a name="serverPackCreatorLog--"> +<a name="serverPackCreatorLogTab--"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>serverPackCreatorLog</h4> -<pre>javax.swing.JComponent serverPackCreatorLog()</pre> +<h4>serverPackCreatorLogTab</h4> +<pre>javax.swing.JComponent serverPackCreatorLogTab()</pre> </li> </ul> </li> @@ -276,12 +304,12 @@ extends java.awt.Component</pre> </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> -<li><a href="../../../../de/griefed/serverpackcreator/gui/TabbedPane.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> +<li>Next Class</li> </ul> <ul class="navList"> -<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html" target="_top">Frames</a></li> -<li><a href="ServerPackCreatorLog.html" target="_top">No Frames</a></li> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" target="_top">Frames</a></li> +<li><a href="ServerPackCreatorLogTab.html" target="_top">No Frames</a></li> </ul> <ul class="navList" id="allclasses_navbar_bottom"> <li><a href="../../../../allclasses-noframe.html">All Classes</a></li> @@ -302,13 +330,13 @@ extends java.awt.Component</pre> <ul class="subNavList"> <li>Summary: </li> <li><a href="#nested.classes.inherited.from.class.java.awt.Component">Nested</a> | </li> -<li><a href="#fields.inherited.from.class.java.awt.Component">Field</a> | </li> +<li><a href="#field.summary">Field</a> | </li> <li><a href="#constructor.summary">Constr</a> | </li> <li><a href="#method.summary">Method</a></li> </ul> <ul class="subNavList"> <li>Detail: </li> -<li>Field | </li> +<li><a href="#field.detail">Field</a> | </li> <li><a href="#constructor.detail">Constr</a> | </li> <li><a href="#method.detail">Method</a></li> </ul> diff --git a/docs/de/griefed/serverpackcreator/gui/package-frame.html b/docs/de/griefed/serverpackcreator/gui/package-frame.html index 046693cee..f2da25ef0 100644 --- a/docs/de/griefed/serverpackcreator/gui/package-frame.html +++ b/docs/de/griefed/serverpackcreator/gui/package-frame.html @@ -12,11 +12,11 @@ <div class="indexContainer"> <h2 title="Classes">Classes</h2> <ul title="Classes"> -<li><a href="About.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">About</a></li> -<li><a href="CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">CreateServerPack</a></li> -<li><a href="ModloaderInstallerLog.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">ModloaderInstallerLog</a></li> -<li><a href="ServerPackCreatorLog.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">ServerPackCreatorLog</a></li> -<li><a href="TabbedPane.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">TabbedPane</a></li> +<li><a href="AboutTab.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">AboutTab</a></li> +<li><a href="CreateGui.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">CreateGui</a></li> +<li><a href="CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">CreateServerPackTab</a></li> +<li><a href="ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">ModloaderInstallerLogTab</a></li> +<li><a href="ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">ServerPackCreatorLogTab</a></li> </ul> </div> </body> diff --git a/docs/de/griefed/serverpackcreator/gui/package-summary.html b/docs/de/griefed/serverpackcreator/gui/package-summary.html index 80956a8a8..2215a12ad 100644 --- a/docs/de/griefed/serverpackcreator/gui/package-summary.html +++ b/docs/de/griefed/serverpackcreator/gui/package-summary.html @@ -81,23 +81,23 @@ </tr> <tbody> <tr class="altColor"> -<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/About.html" title="class in de.griefed.serverpackcreator.gui">About</a></td> +<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></td> <td class="colLast"> </td> </tr> <tr class="rowColor"> -<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPack</a></td> +<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></td> <td class="colLast"> </td> </tr> <tr class="altColor"> -<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLog</a></td> +<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></td> <td class="colLast"> </td> </tr> <tr class="rowColor"> -<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLog</a></td> +<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a></td> <td class="colLast"> </td> </tr> <tr class="altColor"> -<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/TabbedPane.html" title="class in de.griefed.serverpackcreator.gui">TabbedPane</a></td> +<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></td> <td class="colLast"> </td> </tr> </tbody> diff --git a/docs/de/griefed/serverpackcreator/gui/package-tree.html b/docs/de/griefed/serverpackcreator/gui/package-tree.html index 53e7f8ba3..1dfc101db 100644 --- a/docs/de/griefed/serverpackcreator/gui/package-tree.html +++ b/docs/de/griefed/serverpackcreator/gui/package-tree.html @@ -81,23 +81,23 @@ <ul> <li type="circle">java.awt.Component (implements java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable) <ul> -<li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/About.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">About</span></a></li> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">AboutTab</span></a></li> <li type="circle">java.awt.Container <ul> <li type="circle">javax.swing.JComponent (implements java.io.Serializable) <ul> <li type="circle">javax.swing.JPanel (implements javax.accessibility.Accessible) <ul> -<li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/TabbedPane.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">TabbedPane</span></a></li> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateGui</span></a></li> </ul> </li> </ul> </li> </ul> </li> -<li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateServerPack</span></a></li> -<li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ModloaderInstallerLog</span></a></li> -<li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ServerPackCreatorLog</span></a></li> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateServerPackTab</span></a></li> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ModloaderInstallerLogTab</span></a></li> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ServerPackCreatorLogTab</span></a></li> </ul> </li> </ul> diff --git a/docs/de/griefed/serverpackcreator/i18n/LocalizationManager.html b/docs/de/griefed/serverpackcreator/i18n/LocalizationManager.html index 0198beeb9..e42752bb2 100644 --- a/docs/de/griefed/serverpackcreator/i18n/LocalizationManager.html +++ b/docs/de/griefed/serverpackcreator/i18n/LocalizationManager.html @@ -17,8 +17,8 @@ catch(err) { } //--> -var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9}; -var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]}; +var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10}; +var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; var altColor = "altColor"; var rowColor = "rowColor"; var tableTab = "tableTab"; @@ -98,22 +98,17 @@ var activeTableTab = "activeTableTab"; <li>java.lang.Object</li> <li> <ul class="inheritance"> -<li><a href="../../../../de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">de.griefed.serverpackcreator.Reference</a></li> -<li> -<ul class="inheritance"> <li>de.griefed.serverpackcreator.i18n.LocalizationManager</li> </ul> </li> </ul> -</li> -</ul> <div class="description"> <ul class="blockList"> <li class="blockList"> <hr> <br> <pre>public class <span class="typeNameLabel">LocalizationManager</span> -extends <a href="../../../../de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></pre> +extends java.lang.Object</pre> <div class="block">This class is localization manager for your application. <p>To use it, firstly run LocalizationManager.init(). Then use LocalizationManager.getLocalizedString() to find the localized string in config file. @@ -140,39 +135,40 @@ extends <a href="../../../../de/griefed/serverpackcreator/Reference.html" title= <th class="colLast" scope="col">Field and Description</th> </tr> <tr class="altColor"> -<td class="colFirst"><code>private static java.lang.String</code></td> +<td class="colFirst"><code>private java.lang.String</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#COUNTRY_MAP_PATH">COUNTRY_MAP_PATH</a></span></code> </td> </tr> <tr class="rowColor"> -<td class="colFirst"><code>private static java.util.Map<java.lang.String,java.lang.String></code></td> +<td class="colFirst"><code>private java.util.Map<java.lang.String,java.lang.String></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#currentLanguage">currentLanguage</a></span></code> <div class="block">Current language of application, mapped for easier further reference.</div> </td> </tr> <tr class="altColor"> -<td class="colFirst"><code>private static java.lang.String</code></td> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#langPropertiesFile">langPropertiesFile</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.lang.String</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#LANGUAGE_MAP_PATH">LANGUAGE_MAP_PATH</a></span></code> <div class="block">Keys that used for current language mapping.</div> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#localeLogger">localeLogger</a></span></code> </td> </tr> -<tr class="altColor"> -<td class="colFirst"><code>private static java.util.ResourceBundle</code></td> +<tr class="rowColor"> +<td class="colFirst"><code>private java.util.ResourceBundle</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#localeResources">localeResources</a></span></code> <div class="block">Localized strings that application uses.</div> </td> </tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.lang.String[]</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#SUPPORTED_LANGUAGES">SUPPORTED_LANGUAGES</a></span></code> </td> +</tr> </table> -<ul class="blockList"> -<li class="blockList"><a name="fields.inherited.from.class.de.griefed.serverpackcreator.Reference"> -<!-- --> -</a> -<h3>Fields inherited from class de.griefed.serverpackcreator.<a href="../../../../de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></h3> -<code><a href="../../../../de/griefed/serverpackcreator/Reference.html#cliSetup">cliSetup</a>, <a href="../../../../de/griefed/serverpackcreator/Reference.html#configCheck">configCheck</a>, <a href="../../../../de/griefed/serverpackcreator/Reference.html#createModpack">createModpack</a>, <a href="../../../../de/griefed/serverpackcreator/Reference.html#filesSetup">filesSetup</a></code></li> -</ul> </li> </ul> <!-- ======== CONSTRUCTOR SUMMARY ======== --> @@ -199,48 +195,57 @@ extends <a href="../../../../de/griefed/serverpackcreator/Reference.html" title= </a> <h3>Method Summary</h3> <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> -<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> +<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> <tr> <th class="colFirst" scope="col">Modifier and Type</th> <th class="colLast" scope="col">Method and Description</th> </tr> <tr id="i0" class="altColor"> -<td class="colFirst"><code>static java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocale--">getLocale</a></span>()</code> </td> +<td class="colFirst"><code>boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#checkLocaleFile--">checkLocaleFile</a></span>()</code> +<div class="block">Check for existence of a lang.properties-file and if found assign language specified therein.</div> +</td> </tr> <tr id="i1" class="rowColor"> -<td class="colFirst"><code>static java.lang.String</code></td> +<td class="colFirst"><code>(package private) java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLangPropertiesFile--">getLangPropertiesFile</a></span>()</code> </td> +</tr> +<tr id="i2" class="altColor"> +<td class="colFirst"><code>java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocale--">getLocale</a></span>()</code> </td> +</tr> +<tr id="i3" class="rowColor"> +<td class="colFirst"><code>java.lang.String</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocalizedString-java.lang.String-">getLocalizedString</a></span>(java.lang.String languageKey)</code> <div class="block">Gets localized string from localization resource bundle.</div> </td> </tr> -<tr id="i2" class="altColor"> -<td class="colFirst"><code>static java.lang.String[]</code></td> +<tr id="i4" class="altColor"> +<td class="colFirst"><code>(package private) java.lang.String[]</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getSupportedLanguages--">getSupportedLanguages</a></span>()</code> </td> </tr> -<tr id="i3" class="rowColor"> -<td class="colFirst"><code>static void</code></td> +<tr id="i5" class="rowColor"> +<td class="colFirst"><code>void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#init--">init</a></span>()</code> <div class="block">Initializer with default localization properties path.</div> </td> </tr> -<tr id="i4" class="altColor"> -<td class="colFirst"><code>static void</code></td> +<tr id="i6" class="altColor"> +<td class="colFirst"><code>void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.io.File-">init</a></span>(java.io.File localePropertiesFile)</code> </td> </tr> -<tr id="i5" class="rowColor"> -<td class="colFirst"><code>static void</code></td> +<tr id="i7" class="rowColor"> +<td class="colFirst"><code>void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.lang.String-">init</a></span>(java.lang.String locale)</code> </td> </tr> +<tr id="i8" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#writeLocaleToFile-java.lang.String-">writeLocaleToFile</a></span>(java.lang.String locale)</code> +<div class="block">Writes the specified locale from -lang your_locale to a lang.properties file to ensure every subsequent start of serverpackcreator is executed using said locale.</div> +</td> +</tr> </table> <ul class="blockList"> -<li class="blockList"><a name="methods.inherited.from.class.de.griefed.serverpackcreator.Reference"> -<!-- --> -</a> -<h3>Methods inherited from class de.griefed.serverpackcreator.<a href="../../../../de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></h3> -<code><a href="../../../../de/griefed/serverpackcreator/Reference.html#getConfig--">getConfig</a>, <a href="../../../../de/griefed/serverpackcreator/Reference.html#getConfigFile--">getConfigFile</a>, <a href="../../../../de/griefed/serverpackcreator/Reference.html#setConfig-com.typesafe.config.Config-">setConfig</a></code></li> -</ul> -<ul class="blockList"> <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> <!-- --> </a> @@ -270,13 +275,22 @@ extends <a href="../../../../de/griefed/serverpackcreator/Reference.html" title= <pre>private static final org.apache.logging.log4j.Logger localeLogger</pre> </li> </ul> +<a name="langPropertiesFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>langPropertiesFile</h4> +<pre>private final java.io.File langPropertiesFile</pre> +</li> +</ul> <a name="currentLanguage"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>currentLanguage</h4> -<pre>private static java.util.Map<java.lang.String,java.lang.String> currentLanguage</pre> +<pre>private java.util.Map<java.lang.String,java.lang.String> currentLanguage</pre> <div class="block">Current language of application, mapped for easier further reference.</div> </li> </ul> @@ -286,7 +300,7 @@ extends <a href="../../../../de/griefed/serverpackcreator/Reference.html" title= <ul class="blockList"> <li class="blockList"> <h4>localeResources</h4> -<pre>private static java.util.ResourceBundle localeResources</pre> +<pre>private java.util.ResourceBundle localeResources</pre> <div class="block">Localized strings that application uses.</div> </li> </ul> @@ -296,7 +310,7 @@ extends <a href="../../../../de/griefed/serverpackcreator/Reference.html" title= <ul class="blockList"> <li class="blockList"> <h4>LANGUAGE_MAP_PATH</h4> -<pre>private static final java.lang.String LANGUAGE_MAP_PATH</pre> +<pre>private final java.lang.String LANGUAGE_MAP_PATH</pre> <div class="block">Keys that used for current language mapping.</div> <dl> <dt><span class="seeLabel">See Also:</span></dt> @@ -307,16 +321,25 @@ extends <a href="../../../../de/griefed/serverpackcreator/Reference.html" title= <a name="COUNTRY_MAP_PATH"> <!-- --> </a> -<ul class="blockListLast"> +<ul class="blockList"> <li class="blockList"> <h4>COUNTRY_MAP_PATH</h4> -<pre>private static final java.lang.String COUNTRY_MAP_PATH</pre> +<pre>private final java.lang.String COUNTRY_MAP_PATH</pre> <dl> <dt><span class="seeLabel">See Also:</span></dt> <dd><a href="../../../../constant-values.html#de.griefed.serverpackcreator.i18n.LocalizationManager.COUNTRY_MAP_PATH">Constant Field Values</a></dd> </dl> </li> </ul> +<a name="SUPPORTED_LANGUAGES"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>SUPPORTED_LANGUAGES</h4> +<pre>private final java.lang.String[] SUPPORTED_LANGUAGES</pre> +</li> +</ul> </li> </ul> <!-- ========= CONSTRUCTOR DETAIL ======== --> @@ -342,14 +365,41 @@ extends <a href="../../../../de/griefed/serverpackcreator/Reference.html" title= <!-- --> </a> <h3>Method Detail</h3> +<a name="getSupportedLanguages--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getSupportedLanguages</h4> +<pre>java.lang.String[] getSupportedLanguages()</pre> +</li> +</ul> +<a name="getLangPropertiesFile--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getLangPropertiesFile</h4> +<pre>java.io.File getLangPropertiesFile()</pre> +</li> +</ul> +<a name="getLocale--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getLocale</h4> +<pre>public java.lang.String getLocale()</pre> +</li> +</ul> <a name="init-java.lang.String-"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>init</h4> -<pre>public static void init(java.lang.String locale) - throws <a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n">IncorrectLanguageException</a></pre> +<pre>public void init(java.lang.String locale) + throws <a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n">IncorrectLanguageException</a></pre> <dl> <dt><span class="paramLabel">Parameters:</span></dt> <dd><code>locale</code> - Locale to be used by application in this run.</dd> @@ -364,8 +414,8 @@ extends <a href="../../../../de/griefed/serverpackcreator/Reference.html" title= <ul class="blockList"> <li class="blockList"> <h4>init</h4> -<pre>public static void init(java.io.File localePropertiesFile) - throws <a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n">IncorrectLanguageException</a></pre> +<pre>public void init(java.io.File localePropertiesFile) + throws <a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n">IncorrectLanguageException</a></pre> <dl> <dt><span class="paramLabel">Parameters:</span></dt> <dd><code>localePropertiesFile</code> - Path to the properties file with the language specified.</dd> @@ -380,7 +430,7 @@ extends <a href="../../../../de/griefed/serverpackcreator/Reference.html" title= <ul class="blockList"> <li class="blockList"> <h4>init</h4> -<pre>public static void init()</pre> +<pre>public void init()</pre> <div class="block">Initializer with default localization properties path.</div> </li> </ul> @@ -390,7 +440,7 @@ extends <a href="../../../../de/griefed/serverpackcreator/Reference.html" title= <ul class="blockList"> <li class="blockList"> <h4>getLocalizedString</h4> -<pre>public static java.lang.String getLocalizedString(java.lang.String languageKey)</pre> +<pre>public java.lang.String getLocalizedString(java.lang.String languageKey)</pre> <div class="block">Gets localized string from localization resource bundle.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> @@ -400,22 +450,34 @@ extends <a href="../../../../de/griefed/serverpackcreator/Reference.html" title= </dl> </li> </ul> -<a name="getLocale--"> +<a name="checkLocaleFile--"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> -<h4>getLocale</h4> -<pre>public static java.lang.String getLocale()</pre> +<h4>checkLocaleFile</h4> +<pre>public boolean checkLocaleFile()</pre> +<div class="block">Check for existence of a lang.properties-file and if found assign language specified therein. If assigning the specified language fails because it is not supported, default to en_US. + This method should not contain the LocalizationManager, as the initialization of said manager is called from here. Therefore, localized string are not yet available.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Always returns true. Dirty hack until I one day figure out how to init Localization before UI start correctly.</dd> +</dl> </li> </ul> -<a name="getSupportedLanguages--"> +<a name="writeLocaleToFile-java.lang.String-"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>getSupportedLanguages</h4> -<pre>public static java.lang.String[] getSupportedLanguages()</pre> +<h4>writeLocaleToFile</h4> +<pre>void writeLocaleToFile(java.lang.String locale)</pre> +<div class="block">Writes the specified locale from -lang your_locale to a lang.properties file to ensure every subsequent start of serverpackcreator is executed using said locale.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>locale</code> - The locale the user specified when they ran serverpackcreator with -lang -your_locale. + This method should not contain the LocalizationManager, as the initialization of said manager is called from here. Therefore, localized string are not yet available.</dd> +</dl> </li> </ul> </li> diff --git a/docs/de/griefed/serverpackcreator/i18n/package-tree.html b/docs/de/griefed/serverpackcreator/i18n/package-tree.html index 1d106f8d7..e14296934 100644 --- a/docs/de/griefed/serverpackcreator/i18n/package-tree.html +++ b/docs/de/griefed/serverpackcreator/i18n/package-tree.html @@ -79,11 +79,7 @@ <ul> <li type="circle">java.lang.Object <ul> -<li type="circle">de.griefed.serverpackcreator.<a href="../../../../de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Reference</span></a> -<ul> <li type="circle">de.griefed.serverpackcreator.i18n.<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><span class="typeNameLink">LocalizationManager</span></a></li> -</ul> -</li> <li type="circle">java.lang.Throwable (implements java.io.Serializable) <ul> <li type="circle">java.lang.Exception diff --git a/docs/de/griefed/serverpackcreator/package-frame.html b/docs/de/griefed/serverpackcreator/package-frame.html index 9761358dc..306be273d 100644 --- a/docs/de/griefed/serverpackcreator/package-frame.html +++ b/docs/de/griefed/serverpackcreator/package-frame.html @@ -12,15 +12,10 @@ <div class="indexContainer"> <h2 title="Classes">Classes</h2> <ul title="Classes"> -<li><a href="CLISetup.html" title="class in de.griefed.serverpackcreator" target="classFrame">CLISetup</a></li> -<li><a href="ConfigCheck.html" title="class in de.griefed.serverpackcreator" target="classFrame">ConfigCheck</a></li> -<li><a href="CopyFiles.html" title="class in de.griefed.serverpackcreator" target="classFrame">CopyFiles</a></li> +<li><a href="Configuration.html" title="class in de.griefed.serverpackcreator" target="classFrame">Configuration</a></li> +<li><a href="CreateServerPack.html" title="class in de.griefed.serverpackcreator" target="classFrame">CreateServerPack</a></li> <li><a href="FilesSetup.html" title="class in de.griefed.serverpackcreator" target="classFrame">FilesSetup</a></li> -<li><a href="Handler.html" title="class in de.griefed.serverpackcreator" target="classFrame">Handler</a></li> <li><a href="Main.html" title="class in de.griefed.serverpackcreator" target="classFrame">Main</a></li> -<li><a href="Reference.html" title="class in de.griefed.serverpackcreator" target="classFrame">Reference</a></li> -<li><a href="ServerSetup.html" title="class in de.griefed.serverpackcreator" target="classFrame">ServerSetup</a></li> -<li><a href="ServerUtilities.html" title="class in de.griefed.serverpackcreator" target="classFrame">ServerUtilities</a></li> </ul> </div> </body> diff --git a/docs/de/griefed/serverpackcreator/package-summary.html b/docs/de/griefed/serverpackcreator/package-summary.html index b6a34c924..1eb964f52 100644 --- a/docs/de/griefed/serverpackcreator/package-summary.html +++ b/docs/de/griefed/serverpackcreator/package-summary.html @@ -81,41 +81,21 @@ </tr> <tbody> <tr class="altColor"> -<td class="colFirst"><a href="../../../de/griefed/serverpackcreator/CLISetup.html" title="class in de.griefed.serverpackcreator">CLISetup</a></td> +<td class="colFirst"><a href="../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></td> <td class="colLast"> </td> </tr> <tr class="rowColor"> -<td class="colFirst"><a href="../../../de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></td> +<td class="colFirst"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></td> <td class="colLast"> </td> </tr> <tr class="altColor"> -<td class="colFirst"><a href="../../../de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator">CopyFiles</a></td> -<td class="colLast"> </td> -</tr> -<tr class="rowColor"> <td class="colFirst"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></td> <td class="colLast"> </td> </tr> -<tr class="altColor"> -<td class="colFirst"><a href="../../../de/griefed/serverpackcreator/Handler.html" title="class in de.griefed.serverpackcreator">Handler</a></td> -<td class="colLast"> </td> -</tr> <tr class="rowColor"> <td class="colFirst"><a href="../../../de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator">Main</a></td> <td class="colLast"> </td> </tr> -<tr class="altColor"> -<td class="colFirst"><a href="../../../de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></td> -<td class="colLast"> </td> -</tr> -<tr class="rowColor"> -<td class="colFirst"><a href="../../../de/griefed/serverpackcreator/ServerSetup.html" title="class in de.griefed.serverpackcreator">ServerSetup</a></td> -<td class="colLast"> </td> -</tr> -<tr class="altColor"> -<td class="colFirst"><a href="../../../de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator">ServerUtilities</a></td> -<td class="colLast"> </td> -</tr> </tbody> </table> </li> diff --git a/docs/de/griefed/serverpackcreator/package-tree.html b/docs/de/griefed/serverpackcreator/package-tree.html index 9f68de07b..9052f5b95 100644 --- a/docs/de/griefed/serverpackcreator/package-tree.html +++ b/docs/de/griefed/serverpackcreator/package-tree.html @@ -79,15 +79,10 @@ <ul> <li type="circle">java.lang.Object <ul> -<li type="circle">de.griefed.serverpackcreator.<a href="../../../de/griefed/serverpackcreator/CLISetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">CLISetup</span></a></li> -<li type="circle">de.griefed.serverpackcreator.<a href="../../../de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">ConfigCheck</span></a></li> -<li type="circle">de.griefed.serverpackcreator.<a href="../../../de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">CopyFiles</span></a></li> +<li type="circle">de.griefed.serverpackcreator.<a href="../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Configuration</span></a></li> +<li type="circle">de.griefed.serverpackcreator.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">CreateServerPack</span></a></li> <li type="circle">de.griefed.serverpackcreator.<a href="../../../de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">FilesSetup</span></a></li> -<li type="circle">de.griefed.serverpackcreator.<a href="../../../de/griefed/serverpackcreator/Handler.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Handler</span></a></li> <li type="circle">de.griefed.serverpackcreator.<a href="../../../de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Main</span></a></li> -<li type="circle">de.griefed.serverpackcreator.<a href="../../../de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Reference</span></a></li> -<li type="circle">de.griefed.serverpackcreator.<a href="../../../de/griefed/serverpackcreator/ServerSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">ServerSetup</span></a></li> -<li type="circle">de.griefed.serverpackcreator.<a href="../../../de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">ServerUtilities</span></a></li> </ul> </li> </ul> diff --git a/docs/index-all.html b/docs/index-all.html index a93cc335f..20f3a8570 100644 --- a/docs/index-all.html +++ b/docs/index-all.html @@ -72,37 +72,29 @@ </a> <h2 class="title">A</h2> <dl> -<dt><a href="de/griefed/serverpackcreator/gui/About.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">About</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> +<dt><a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">AboutTab</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/About.html#About--">About()</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/About.html" title="class in de.griefed.serverpackcreator.gui">About</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#AboutTab-de.griefed.serverpackcreator.i18n.LocalizationManager-">AboutTab(LocalizationManager)</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/About.html#about--">about()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/About.html" title="class in de.griefed.serverpackcreator.gui">About</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#aboutTab--">aboutTab()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CLISetup.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CLISetup.html" title="class in de.griefed.serverpackcreator">CLISetup</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CopyFiles.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator">CopyFiles</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CreateModpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/About.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/About.html" title="class in de.griefed.serverpackcreator.gui">About</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPack.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/TabbedPane.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/TabbedPane.html" title="class in de.griefed.serverpackcreator.gui">TabbedPane</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Handler.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Handler.html" title="class in de.griefed.serverpackcreator">Handler</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Main.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator">Main</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ServerSetup.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerSetup.html" title="class in de.griefed.serverpackcreator">ServerSetup</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ServerUtilities.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator">ServerUtilities</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#author">author</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#author">author</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> </dl> <a name="I:B"> @@ -110,9 +102,9 @@ </a> <h2 class="title">B</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/TabbedPane.html#bannerIcon">bannerIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/TabbedPane.html" title="class in de.griefed.serverpackcreator.gui">TabbedPane</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#bannerIcon">bannerIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CLISetup.html#buildString-java.lang.String...-">buildString(String...)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CLISetup.html" title="class in de.griefed.serverpackcreator">CLISetup</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#buildString-java.lang.String...-">buildString(String...)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Converts list of strings into concatenated string.</div> </dd> @@ -122,19 +114,19 @@ </a> <h2 class="title">C</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#checkConfigFile-java.io.File-">checkConfigFile(File)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-">checkConfigFile(File)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Check the config file for configuration errors.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#checkCopyDirs-java.util.List-java.lang.String-">checkCopyDirs(List<String>, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#checkCopyDirs-java.util.List-java.lang.String-">checkCopyDirs(List<String>, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Check whether the specified directories exist in the modpack directory.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#checkCurseForge-java.lang.String-">checkCurseForge(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#checkCurseForge-java.lang.String-">checkCurseForge(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Checks whether the modpackDir contains a valid projectID,fileID combination.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#checkCurseForgeDir-java.lang.String-">checkCurseForgeDir(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CreateModpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#checkCurseForgeDir-java.lang.String-">checkCurseForgeDir(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> <div class="block">Check whether the folder for the specified CurseForge projectID/fileID exists.</div> </dd> @@ -166,116 +158,138 @@ <dd> <div class="block">Checks for existence of server.properties file.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#checkJavaPath-java.lang.String-">checkJavaPath(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#checkJavaPath-java.lang.String-">checkJavaPath(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Checks whether the correct path to the Java installation was set.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#checkLocaleFile--">checkLocaleFile()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#checkLocaleFile--">checkLocaleFile()</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> <div class="block">Check for existence of a lang.properties-file and if found assign language specified therein.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#checkModloader-java.lang.String-">checkModloader(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#checkModloader-java.lang.String-">checkModloader(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Checks whether Forge or Fabric were specified as modloader.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#checkModloaderVersion-java.lang.String-java.lang.String-">checkModloaderVersion(String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#checkModloaderVersion-java.lang.String-java.lang.String-">checkModloaderVersion(String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Determine whether to check for correct Forge or correct Fabric modloader version.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#checkModpackDir-java.lang.String-">checkModpackDir(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#checkModpackDir-java.lang.String-">checkModpackDir(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Check whether the specified modpack directory exists.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPack.html#chooserDimension">chooserDimension</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#chooserDimension">chooserDimension</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CopyFiles.html#cleanupEnvironment-java.lang.String-">cleanupEnvironment(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator">CopyFiles</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#cleanupEnvironment-java.lang.String-">cleanupEnvironment(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Deletes files from previous runs of serverpackcreator.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ServerUtilities.html#cleanUpServerPack-java.io.File-java.io.File-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">cleanUpServerPack(File, File, String, String, String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator">ServerUtilities</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#cleanUpServerPack-java.io.File-java.io.File-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">cleanUpServerPack(File, File, String, String, String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Deletes remnant files from Fabric/Forge installation no longer needed.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#clientMods">clientMods</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> -<dd> </dd> -<dt><a href="de/griefed/serverpackcreator/CLISetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">CLISetup</span></a> - Class in <a href="de/griefed/serverpackcreator/package-summary.html">de.griefed.serverpackcreator</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#clientMods">clientMods</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CLISetup.html#CLISetup--">CLISetup()</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CLISetup.html" title="class in de.griefed.serverpackcreator">CLISetup</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#config">config</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#cliSetup">cliSetup</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#configFile">configFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#config">config</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#configFile">configFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#CONFIG_GEN_ARGUMENT">CONFIG_GEN_ARGUMENT</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Configuration</span></a> - Class in <a href="de/griefed/serverpackcreator/package-summary.html">de.griefed.serverpackcreator</a></dt> <dd> </dd> -<dt><a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">ConfigCheck</span></a> - Class in <a href="de/griefed/serverpackcreator/package-summary.html">de.griefed.serverpackcreator</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#Configuration-de.griefed.serverpackcreator.i18n.LocalizationManager-">Configuration(LocalizationManager)</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#ConfigCheck--">ConfigCheck()</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#configuration">configuration</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#configCheck">configCheck</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#configuration">configuration</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#configFile">configFile</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#configuration">configuration</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#containsFabric-de.griefed.serverpackcreator.curseforgemodpack.Modpack-">containsFabric(Modpack)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#containsFabric-de.griefed.serverpackcreator.curseforgemodpack.CurseModpack-">containsFabric(CurseModpack)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Checks for the Jumploader mod in the project list of the modpack.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#convertToBoolean-java.lang.String-">convertToBoolean(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#convertToBoolean-java.lang.String-">convertToBoolean(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Converts various strings to booleans.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#copyDirs">copyDirs</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#copyDirs">copyDirs</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><a href="de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">CopyFiles</span></a> - Class in <a href="de/griefed/serverpackcreator/package-summary.html">de.griefed.serverpackcreator</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CopyFiles.html#CopyFiles--">CopyFiles()</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator">CopyFiles</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CopyFiles.html#copyFiles-java.lang.String-java.util.List-java.util.List-">copyFiles(String, List<String>, List<String>)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator">CopyFiles</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#copyFiles-java.lang.String-java.util.List-java.util.List-">copyFiles(String, List<String>, List<String>)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Copies all specified folders and their files to the modpackDir.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#copyFiles">copyFiles</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CopyFiles.html#copyIcon-java.lang.String-">copyIcon(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator">CopyFiles</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#copyIcon-java.lang.String-">copyIcon(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Copies the server-icon.png into server_pack.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#copyOverride-java.lang.String-">copyOverride(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CreateModpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#copyOverride-java.lang.String-">copyOverride(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> <div class="block">Copies all folders and the files therein to the parent modpack directory.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CopyFiles.html#copyProperties-java.lang.String-">copyProperties(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator">CopyFiles</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#copyProperties-java.lang.String-">copyProperties(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Copies the server.properties into server_pack.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CopyFiles.html#copyStartScripts-java.lang.String-java.lang.String-boolean-">copyStartScripts(String, String, boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator">CopyFiles</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#copyStartScripts-java.lang.String-java.lang.String-boolean-">copyStartScripts(String, String, boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Copies start scripts for Forge modloader into the server_pack folder.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#COUNTRY_MAP_PATH">COUNTRY_MAP_PATH</a></span> - Static variable in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#COUNTRY_MAP_PATH">COUNTRY_MAP_PATH</a></span> - Variable in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/TabbedPane.html#createAndShowGUI--">createAndShowGUI()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/TabbedPane.html" title="class in de.griefed.serverpackcreator.gui">TabbedPane</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#createAndShowGUI--">createAndShowGUI()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#createConfigurationFile--">createConfigurationFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dd> +<div class="block">Generate new configuration file from CLI input.</div> +</dd> +<dt><a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateGui</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> <dd> </dd> -<dt><a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CreateModpack</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#CreateGui-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-">CreateGui(LocalizationManager, Configuration)</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#CreateModpack--">CreateModpack()</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CreateModpack</a></dt> +<dt><a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">CreateServerPack</span></a> - Class in <a href="de/griefed/serverpackcreator/package-summary.html">de.griefed.serverpackcreator</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#createModpack">createModpack</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#CreateServerPack-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-">CreateServerPack(LocalizationManager, Configuration)</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> -<dt><a href="de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateServerPack</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> +<dt><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateServerPackTab</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPack.html#CreateServerPack--">CreateServerPack()</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#CreateServerPackTab-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-">CreateServerPackTab(LocalizationManager, Configuration)</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPack.html#createServerPack--">createServerPack()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#createServerPackTab--">createServerPackTab()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#currentLanguage">currentLanguage</a></span> - Static variable in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#currentLanguage">currentLanguage</a></span> - Variable in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> <div class="block">Current language of application, mapped for easier further reference.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-">curseForgeModpack(String, Integer, Integer)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CreateModpack</a></dt> +<dt><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseCreateModpack</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#CurseCreateModpack-de.griefed.serverpackcreator.i18n.LocalizationManager-">CurseCreateModpack(LocalizationManager)</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> +<dd> </dd> +<dt><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseFiles</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#CurseFiles--">CurseFiles()</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-">curseForgeModpack(String, Integer, Integer)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> <div class="block">Gets the names of the specified project and file and makes calls to methods which create the modpack so we can then create a server pack from it.</div> </dd> +<dt><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseMinecraft</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#CurseMinecraft--">CurseMinecraft()</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> +<dd> </dd> +<dt><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseModLoaders</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#CurseModLoaders--">CurseModLoaders()</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a></dt> +<dd> </dd> +<dt><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseModpack</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#CurseModpack--">CurseModpack()</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> +<dd> </dd> +<dt><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseSplines</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#CurseSplines--">CurseSplines()</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseSplines</a></dt> +<dd> </dd> </dl> <a name="I:D"> <!-- --> @@ -290,19 +304,19 @@ <dd> </dd> <dt><a href="de/griefed/serverpackcreator/i18n/package-summary.html">de.griefed.serverpackcreator.i18n</a> - package de.griefed.serverpackcreator.i18n</dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ServerUtilities.html#deleteMinecraftJar-java.lang.String-java.lang.String-">deleteMinecraftJar(String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator">ServerUtilities</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#deleteMinecraftJar-java.lang.String-java.lang.String-java.lang.String-">deleteMinecraftJar(String, String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Deletes Mojang's minecraft_server.jar from the zip-archive so users do not accidentally upload a file containing software from Mojang.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ServerUtilities.html#downloadFabricJar-java.lang.String-">downloadFabricJar(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator">ServerUtilities</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#downloadFabricJar-java.lang.String-">downloadFabricJar(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Downloads the specified version of Fabric.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ServerUtilities.html#downloadForgeJar-java.lang.String-java.lang.String-java.lang.String-">downloadForgeJar(String, String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator">ServerUtilities</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#downloadForgeJar-java.lang.String-java.lang.String-java.lang.String-">downloadForgeJar(String, String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Downloads the specified version of the Forge installer to be used in ServerSetup.installServer.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#downloadMods-java.lang.String-">downloadMods(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CreateModpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#downloadMods-java.lang.String-">downloadMods(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> <div class="block">Downloads all mods specified in the modpack's manifest.json file.</div> </dd> @@ -312,7 +326,7 @@ </a> <h2 class="title">E</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CopyFiles.html#excludeClientMods-java.lang.String-java.util.List-">excludeClientMods(String, List<String>)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator">CopyFiles</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#excludeClientMods-java.lang.String-java.util.List-">excludeClientMods(String, List<String>)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Generate a list of all mods in a modpack EXCEPT clientside-only mods.</div> </dd> @@ -322,61 +336,59 @@ </a> <h2 class="title">F</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#FABRIC_MANIFEST_URL">FABRIC_MANIFEST_URL</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ServerUtilities.html#fabricBatch-java.lang.String-java.lang.String-">fabricBatch(String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator">ServerUtilities</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#fabricBatch-java.lang.String-java.lang.String-">fabricBatch(String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Generates download scripts for Mojang's Minecraft server for Fabric,Windows.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#fabricLinuxFile">fabricLinuxFile</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#fabricLinuxFile">fabricLinuxFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#fabricLinuxFile">fabricLinuxFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ServerUtilities.html#fabricShell-java.lang.String-java.lang.String-">fabricShell(String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator">ServerUtilities</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#fabricShell-java.lang.String-java.lang.String-">fabricShell(String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Generates download scripts for Mojang's Minecraft server for Fabric,Linux.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#fabricWindowsFile">fabricWindowsFile</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#fabricWindowsFile">fabricWindowsFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#fallbackModsList">fallbackModsList</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#fabricWindowsFile">fabricWindowsFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#fileDiskName">fileDiskName</a></span> - Static variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CreateModpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#fallbackModsList">fallbackModsList</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html#fileID">fileID</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Files</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#fileDiskName">fileDiskName</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#fileName">fileName</a></span> - Static variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CreateModpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#fileID">fileID</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> <dd> </dd> -<dt><a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Files</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#fileName">fileName</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html#Files--">Files()</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Files</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#files">files</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#files">files</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> <dt><a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">FilesSetup</span></a> - Class in <a href="de/griefed/serverpackcreator/package-summary.html">de.griefed.serverpackcreator</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#FilesSetup--">FilesSetup()</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#FilesSetup-de.griefed.serverpackcreator.i18n.LocalizationManager-">FilesSetup(LocalizationManager)</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#filesSetup--">filesSetup()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> <div class="block">Calls individual methods which check for existence of default files.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#filesSetup">filesSetup</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPack.html#folderButtonDimension">folderButtonDimension</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPack</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPack.html#folderIcon">folderIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#folderButtonDimension">folderButtonDimension</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#FORGE_MANIFEST_URL">FORGE_MANIFEST_URL</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#folderIcon">folderIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ServerUtilities.html#forgeBatch-java.lang.String-java.lang.String-">forgeBatch(String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator">ServerUtilities</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#forgeBatch-java.lang.String-java.lang.String-">forgeBatch(String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Generates download scripts for Mojang's Minecraft server for Forge,Windows.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#forgeLinuxFile">forgeLinuxFile</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#forgeLinuxFile">forgeLinuxFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ServerUtilities.html#forgeShell-java.lang.String-java.lang.String-">forgeShell(String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator">ServerUtilities</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#forgeLinuxFile">forgeLinuxFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#forgeShell-java.lang.String-java.lang.String-">forgeShell(String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Generates download scripts for Mojang's Minecraft server for Forge,Linux.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#forgeWindowsFile">forgeWindowsFile</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#forgeWindowsFile">forgeWindowsFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#forgeWindowsFile">forgeWindowsFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> </dl> <a name="I:G"> @@ -384,109 +396,117 @@ </a> <h2 class="title">G</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ServerUtilities.html#generateDownloadScripts-java.lang.String-java.lang.String-java.lang.String-">generateDownloadScripts(String, String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator">ServerUtilities</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#generateDownloadScripts-java.lang.String-java.lang.String-java.lang.String-">generateDownloadScripts(String, String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Calls methods for generating download scripts for Mojang's Minecraft server depending on the specified versions and modloader.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#getAuthor--">getAuthor()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getAuthor--">getAuthor()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getClientMods--">getClientMods()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getClientMods--">getClientMods()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getConfig--">getConfig()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getConfig--">getConfig()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getConfigFile--">getConfigFile()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getConfigFile--">getConfigFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getConfigGenArgument--">getConfigGenArgument()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#getConfigFile--">getConfigFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getCopyDirs--">getCopyDirs()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getCopyDirs--">getCopyDirs()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getFabricLinuxFile--">getFabricLinuxFile()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#getFabricLinuxFile--">getFabricLinuxFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getFabricManifestUrl--">getFabricManifestUrl()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#getFabricLinuxFile--">getFabricLinuxFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getFabricWindowsFile--">getFabricWindowsFile()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getFabricManifestUrl--">getFabricManifestUrl()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getFallbackModsList--">getFallbackModsList()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#getFabricWindowsFile--">getFabricWindowsFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html#getFileID--">getFileID()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Files</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#getFabricWindowsFile--">getFabricWindowsFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#getFiles--">getFiles()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getFallbackModsList--">getFallbackModsList()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getForgeLinuxFile--">getForgeLinuxFile()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#getFileID--">getFileID()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getForgeManifestUrl--">getForgeManifestUrl()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getFiles--">getFiles()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getForgeWindowsFile--">getForgeWindowsFile()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#getForgeLinuxFile--">getForgeLinuxFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getIconFile--">getIconFile()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#getForgeLinuxFile--">getForgeLinuxFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html#getId--">getId()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">ModLoaders</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getForgeManifestUrl--">getForgeManifestUrl()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getIncludeServerIcon--">getIncludeServerIcon()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#getForgeWindowsFile--">getForgeWindowsFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getIncludeServerInstallation--">getIncludeServerInstallation()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#getForgeWindowsFile--">getForgeWindowsFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getIncludeServerProperties--">getIncludeServerProperties()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#getIconFile--">getIconFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getIncludeStartScripts--">getIncludeStartScripts()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#getIconFile--">getIconFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getIncludeZipCreation--">getIncludeZipCreation()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#getId--">getId()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#getJavaPath-java.lang.String-">getJavaPath(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getIncludeServerIcon--">getIncludeServerIcon()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getIncludeServerInstallation--">getIncludeServerInstallation()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getIncludeServerProperties--">getIncludeServerProperties()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getIncludeStartScripts--">getIncludeStartScripts()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getIncludeZipCreation--">getIncludeZipCreation()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getJavaPath--">getJavaPath()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getJavaPath-java.lang.String-">getJavaPath(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Automatically set Java path if none is specified</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getJavaPath--">getJavaPath()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getLangArgument--">getLangArgument()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLangPropertiesFile--">getLangPropertiesFile()</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getLangPropertiesFile--">getLangPropertiesFile()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocale--">getLocale()</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocale--">getLocale()</a></span> - Static method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocalizedString-java.lang.String-">getLocalizedString(String)</a></span> - Static method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocalizedString-java.lang.String-">getLocalizedString(String)</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> <div class="block">Gets localized string from localization resource bundle.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#getMinecraft--">getMinecraft()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getMinecraft--">getMinecraft()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getMinecraftManifestUrl--">getMinecraftManifestUrl()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getMinecraftManifestUrl--">getMinecraftManifestUrl()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getMinecraftVersion--">getMinecraftVersion()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getMinecraftVersion--">getMinecraftVersion()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getModLoader--">getModLoader()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getModLoader--">getModLoader()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html#getModLoaders--">getModLoaders()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Minecraft</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#getModLoaders--">getModLoaders()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getModLoaderVersion--">getModLoaderVersion()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getModLoaderVersion--">getModLoaderVersion()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getModpackDir--">getModpackDir()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getModpackDir--">getModpackDir()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#getName--">getName()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getName--">getName()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getOldConfigFile--">getOldConfigFile()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getOldConfigFile--">getOldConfigFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getProjectFileID--">getProjectFileID()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#getOldConfigFile--">getOldConfigFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html#getProjectID--">getProjectID()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Files</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getProjectFileID--">getProjectFileID()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getProjectID--">getProjectID()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getProjectID--">getProjectID()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getPropertiesFile--">getPropertiesFile()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#getProjectID--">getProjectID()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Splines.html#getRandomInt--">getRandomInt()</a></span> - Static method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Splines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Splines</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#getPropertiesFile--">getPropertiesFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getRunCliArgument--">getRunCliArgument()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#getPropertiesFile--">getPropertiesFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Splines.html#getSplines--">getSplines()</a></span> - Static method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Splines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Splines</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getRandomInt--">getRandomInt()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseSplines</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#getSupportedLanguages--">getSupportedLanguages()</a></span> - Static method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getSpline--">getSpline()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseSplines</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#getSupportedLanguages--">getSupportedLanguages()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#getSupportedLanguages--">getSupportedLanguages()</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html#getVersion--">getVersion()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Minecraft</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#getVersion--">getVersion()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#getVersion--">getVersion()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getVersion--">getVersion()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> </dl> <a name="I:H"> @@ -494,9 +514,7 @@ </a> <h2 class="title">H</h2> <dl> -<dt><a href="de/griefed/serverpackcreator/Handler.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Handler</span></a> - Class in <a href="de/griefed/serverpackcreator/package-summary.html">de.griefed.serverpackcreator</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Handler.html#Handler--">Handler()</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Handler.html" title="class in de.griefed.serverpackcreator">Handler</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#helpIcon">helpIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> </dl> <a name="I:I"> @@ -504,21 +522,23 @@ </a> <h2 class="title">I</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/TabbedPane.html#icon">icon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/TabbedPane.html" title="class in de.griefed.serverpackcreator.gui">TabbedPane</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#icon">icon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#iconFile">iconFile</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#iconFile">iconFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html#id">id</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">ModLoaders</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#iconFile">iconFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#includeServerIcon">includeServerIcon</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#id">id</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#includeServerInstallation">includeServerInstallation</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#includeServerIcon">includeServerIcon</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#includeServerProperties">includeServerProperties</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#includeServerInstallation">includeServerInstallation</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#includeStartScripts">includeStartScripts</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#includeServerProperties">includeServerProperties</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#includeZipCreation">includeZipCreation</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#includeStartScripts">includeStartScripts</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#includeZipCreation">includeZipCreation</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> <dt><a href="de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n"><span class="typeNameLink">IncorrectLanguageException</span></a> - Exception in <a href="de/griefed/serverpackcreator/i18n/package-summary.html">de.griefed.serverpackcreator.i18n</a></dt> <dd> </dd> @@ -530,45 +550,45 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html#IncorrectLanguageException-java.lang.Throwable-">IncorrectLanguageException(Throwable)</a></span> - Constructor for exception de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n">IncorrectLanguageException</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.lang.String-">init(String)</a></span> - Static method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.lang.String-">init(String)</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.io.File-">init(File)</a></span> - Static method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.io.File-">init(File)</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#init--">init()</a></span> - Static method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#init--">init()</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> <div class="block">Initializer with default localization properties path.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#initializeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-">initializeModpack(String, Integer, Integer)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CreateModpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#initializeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-">initializeModpack(String, Integer, Integer)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> <div class="block">Downloads the specified file of the specified project to a directory which is the combination of the project name and file display name.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ServerSetup.html#installerLogger">installerLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerSetup.html" title="class in de.griefed.serverpackcreator">ServerSetup</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#installerLogger">installerLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ServerSetup.html#installServer-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">installServer(String, String, String, String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerSetup.html" title="class in de.griefed.serverpackcreator">ServerSetup</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#installServer-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">installServer(String, String, String, String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Installs the files for a Forge/Fabric server.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#isCurse--">isCurse()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#isCurse--">isCurse()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Checks whether the specified projectID,fileID combination is a valid CurseForge project and file and whether the resulting directory exists.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#isDir-java.lang.String-">isDir(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#isDir-java.lang.String-">isDir(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Checks whether the specified modpack exists.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#isFabricVersionCorrect-java.lang.String-">isFabricVersionCorrect(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#isFabricVersionCorrect-java.lang.String-">isFabricVersionCorrect(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Check the specified Fabric version against Fabric's version manifest to validate the version.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#isForgeVersionCorrect-java.lang.String-">isForgeVersionCorrect(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#isForgeVersionCorrect-java.lang.String-">isForgeVersionCorrect(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Checks Forge version for errors (basically for its availability in Forge manifest)</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#isMinecraftVersionCorrect-java.lang.String-">isMinecraftVersionCorrect(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#isMinecraftVersionCorrect-java.lang.String-">isMinecraftVersionCorrect(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Check the specified Minecraft version against Mojang's version manifest to validate the version.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/About.html#issueIcon">issueIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/About.html" title="class in de.griefed.serverpackcreator.gui">About</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#issueIcon">issueIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> <dd> </dd> </dl> <a name="I:J"> @@ -576,7 +596,7 @@ </a> <h2 class="title">J</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#javaPath">javaPath</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#javaPath">javaPath</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> </dl> <a name="I:L"> @@ -584,30 +604,46 @@ </a> <h2 class="title">L</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#LANG_ARGUMENT">LANG_ARGUMENT</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#langPropertiesFile">langPropertiesFile</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#langPropertiesFile">langPropertiesFile</a></span> - Variable in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#LANGUAGE_MAP_PATH">LANGUAGE_MAP_PATH</a></span> - Static variable in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#LANGUAGE_MAP_PATH">LANGUAGE_MAP_PATH</a></span> - Variable in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> <div class="block">Keys that used for current language mapping.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ServerUtilities.html#latestFabricInstaller-java.lang.String-">latestFabricInstaller(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator">ServerUtilities</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#latestFabricInstaller-java.lang.String-">latestFabricInstaller(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#latestFabricLoader-java.lang.String-">latestFabricLoader(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#latestFabricLoader-java.lang.String-">latestFabricLoader(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPack.html#loadIcon">loadIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#loadIcon">loadIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#localeLogger">localeLogger</a></span> - Static variable in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#localeResources">localeResources</a></span> - Static variable in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#localeResources">localeResources</a></span> - Variable in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> <div class="block">Localized strings that application uses.</div> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#localizationManager">localizationManager</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#localizationManager">localizationManager</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#localizationManager">localizationManager</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#localizationManager">localizationManager</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#localizationManager">localizationManager</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#localizationManager">localizationManager</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#localizationManager">localizationManager</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#localizationManager">localizationManager</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#localizationManager">localizationManager</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></dt> +<dd> </dd> <dt><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><span class="typeNameLink">LocalizationManager</span></a> - Class in <a href="de/griefed/serverpackcreator/i18n/package-summary.html">de.griefed.serverpackcreator.i18n</a></dt> <dd> <div class="block">This class is localization manager for your application.</div> @@ -620,10 +656,6 @@ </a> <h2 class="title">M</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Handler.html#main-java.lang.String:A-">main(String[])</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Handler.html" title="class in de.griefed.serverpackcreator">Handler</a></dt> -<dd> -<div class="block">Handler-class makes the calls to every other class where the actual magic is happening.</div> -</dd> <dt><a href="de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Main</span></a> - Class in <a href="de/griefed/serverpackcreator/package-summary.html">de.griefed.serverpackcreator</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Main.html#Main--">Main()</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator">Main</a></dt> @@ -632,43 +664,29 @@ <dd> <div class="block">Init and "main" has been moved to Handler-class.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/TabbedPane.html#mainGUI--">mainGUI()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/TabbedPane.html" title="class in de.griefed.serverpackcreator.gui">TabbedPane</a></dt> -<dd> </dd> -<dt><a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Minecraft</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html#Minecraft--">Minecraft()</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Minecraft</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#minecraft">minecraft</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#MINECRAFT_MANIFEST_URL">MINECRAFT_MANIFEST_URL</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#minecraftVersion">minecraftVersion</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/About.html#miscButtonDimension">miscButtonDimension</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/About.html" title="class in de.griefed.serverpackcreator.gui">About</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#mainGUI--">mainGUI()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPack.html#miscButtonDimension">miscButtonDimension</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#minecraft">minecraft</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#modLoader">modLoader</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#minecraftVersion">minecraftVersion</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ModloaderInstallerLog</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#miscButtonDimension">miscButtonDimension</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html#ModloaderInstallerLog--">ModloaderInstallerLog()</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLog</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#miscButtonDimension">miscButtonDimension</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html#modloaderInstallerLog--">modloaderInstallerLog()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLog</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#modLoader">modLoader</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html#modLoaders">modLoaders</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Minecraft</a></dt> +<dt><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ModloaderInstallerLogTab</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> <dd> </dd> -<dt><a href="de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">ModLoaders</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#ModloaderInstallerLogTab-de.griefed.serverpackcreator.i18n.LocalizationManager-">ModloaderInstallerLogTab(LocalizationManager)</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html#ModLoaders--">ModLoaders()</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">ModLoaders</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#modloaderInstallerLogTab--">modloaderInstallerLogTab()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#modLoaderVersion">modLoaderVersion</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#modLoaders">modLoaders</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> <dd> </dd> -<dt><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Modpack</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#modLoaderVersion">modLoaderVersion</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#Modpack--">Modpack()</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#modpackDir">modpackDir</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#modpackDir">modpackDir</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> </dl> <a name="I:N"> @@ -676,9 +694,9 @@ </a> <h2 class="title">N</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#name">name</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#name">name</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#newFile-java.io.File-java.util.zip.ZipEntry-">newFile(File, ZipEntry)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CreateModpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#newFile-java.io.File-java.util.zip.ZipEntry-">newFile(File, ZipEntry)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> <div class="block">Helper-Method for unzipArchive.</div> </dd> @@ -688,7 +706,9 @@ </a> <h2 class="title">O</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#oldConfigFile">oldConfigFile</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#oldConfigFile">oldConfigFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#oldConfigFile">oldConfigFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> </dl> <a name="I:P"> @@ -696,23 +716,25 @@ </a> <h2 class="title">P</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/About.html#pastebinIcon">pastebinIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/About.html" title="class in de.griefed.serverpackcreator.gui">About</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#pastebinIcon">pastebinIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#printConfig-java.lang.String-java.util.List-java.util.List-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-">printConfig(String, List<String>, List<String>, boolean, String, String, String, String, boolean, boolean, boolean, boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#printConfig-java.lang.String-java.util.List-java.util.List-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-">printConfig(String, List<String>, List<String>, boolean, String, String, String, String, boolean, boolean, boolean, boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Prints the configuration.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#projectFileID">projectFileID</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#projectFileID">projectFileID</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#projectID">projectID</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html#projectID">projectID</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Files</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#projectID">projectID</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#projectID">projectID</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#projectName">projectName</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#projectName">projectName</a></span> - Static variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CreateModpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#propertiesFile">propertiesFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#propertiesFile">propertiesFile</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#propertiesFile">propertiesFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/About.html#prosperIcon">prosperIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/About.html" title="class in de.griefed.serverpackcreator.gui">About</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#prosperIcon">prosperIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> <dd> </dd> </dl> <a name="I:R"> @@ -720,125 +742,97 @@ </a> <h2 class="title">R</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CLISetup.html#readBoolean--">readBoolean()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CLISetup.html" title="class in de.griefed.serverpackcreator">CLISetup</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#readBoolean--">readBoolean()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">A helper method for config setup.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CLISetup.html#readStringArray--">readStringArray()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CLISetup.html" title="class in de.griefed.serverpackcreator">CLISetup</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#readStringArray--">readStringArray()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">A helper method for config setup.</div> </dd> -<dt><a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Reference</span></a> - Class in <a href="de/griefed/serverpackcreator/package-summary.html">de.griefed.serverpackcreator</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulate--">reticulate()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseSplines</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#Reference--">Reference()</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulating">reticulating</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseSplines</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Splines.html#reticulating">reticulating</a></span> - Static variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Splines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Splines</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Handler.html#run--">run()</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Handler.html" title="class in de.griefed.serverpackcreator">Handler</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#run--">run()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Run when serverpackcreator is run in either -cli or -cgen mode.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#RUN_CLI_ARGUMENT">RUN_CLI_ARGUMENT</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> -<dd> </dd> </dl> <a name="I:S"> <!-- --> </a> <h2 class="title">S</h2> <dl> -<dt><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ServerPackCreatorLog</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html#ServerPackCreatorLog--">ServerPackCreatorLog()</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLog</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html#serverPackCreatorLog--">serverPackCreatorLog()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLog</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#serverSetup">serverSetup</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> -<dd> </dd> -<dt><a href="de/griefed/serverpackcreator/ServerSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">ServerSetup</span></a> - Class in <a href="de/griefed/serverpackcreator/package-summary.html">de.griefed.serverpackcreator</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ServerSetup.html#ServerSetup--">ServerSetup()</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerSetup.html" title="class in de.griefed.serverpackcreator">ServerSetup</a></dt> +<dt><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ServerPackCreatorLogTab</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#serverUtilities">serverUtilities</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#ServerPackCreatorLogTab-de.griefed.serverpackcreator.i18n.LocalizationManager-">ServerPackCreatorLogTab(LocalizationManager)</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></dt> <dd> </dd> -<dt><a href="de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">ServerUtilities</span></a> - Class in <a href="de/griefed/serverpackcreator/package-summary.html">de.griefed.serverpackcreator</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#serverPackCreatorLogTab--">serverPackCreatorLogTab()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ServerUtilities.html#ServerUtilities--">ServerUtilities()</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator">ServerUtilities</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setClientMods-java.util.List-">setClientMods(List<String>)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#setAuthor-java.lang.String-">setAuthor(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setConfig-com.typesafe.config.Config-">setConfig(Config)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#setClientMods-java.util.List-">setClientMods(List<String>)</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setCopyDirs-java.util.List-">setCopyDirs(List<String>)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#setConfig-com.typesafe.config.Config-">setConfig(Config)</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#setFileID-java.lang.String-">setFileID(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#setCopyDirs-java.util.List-">setCopyDirs(List<String>)</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setFiles-java.util.List-">setFiles(List<CurseFiles>)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html#setFileID-java.lang.String-">setFileID(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Files</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#setId-java.lang.String-">setId(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#setFiles-java.util.List-">setFiles(List<Files>)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setIncludeServerIcon-boolean-">setIncludeServerIcon(boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html#setId-java.lang.String-">setId(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">ModLoaders</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setIncludeServerInstallation-boolean-">setIncludeServerInstallation(boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#setIncludeServerIcon-boolean-">setIncludeServerIcon(boolean)</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setIncludeServerProperties-boolean-">setIncludeServerProperties(boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#setIncludeServerInstallation-boolean-">setIncludeServerInstallation(boolean)</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setIncludeStartScripts-boolean-">setIncludeStartScripts(boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#setIncludeServerProperties-boolean-">setIncludeServerProperties(boolean)</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setIncludeZipCreation-boolean-">setIncludeZipCreation(boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#setIncludeStartScripts-boolean-">setIncludeStartScripts(boolean)</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setJavaPath-java.lang.String-">setJavaPath(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#setIncludeZipCreation-boolean-">setIncludeZipCreation(boolean)</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setMinecraft-java.util.List-">setMinecraft(List<CurseMinecraft>)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#setJavaPath-java.lang.String-">setJavaPath(String)</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setMinecraftVersion-java.lang.String-">setMinecraftVersion(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#setMinecraft-java.util.List-">setMinecraft(List<Minecraft>)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setModLoader-java.lang.String-">setModLoader(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#setMinecraftVersion-java.lang.String-">setMinecraftVersion(String)</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#setModloader-java.lang.String-">setModloader(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setModloader-java.lang.String-">setModloader(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Standardize the specified modloader.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#setModloader-java.lang.String-">setModloader(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CreateModpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#setModloader-java.lang.String-">setModloader(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> <div class="block">Standardize the specified modloader.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#setModLoader-java.lang.String-">setModLoader(String)</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html#setModLoaders-java.util.List-">setModLoaders(List<ModLoaders>)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Minecraft</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#setModLoaderVersion-java.lang.String-">setModLoaderVersion(String)</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#setModLoaders-java.util.List-">setModLoaders(List<CurseModLoaders>)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#setModpackDir-java.lang.String-">setModpackDir(String)</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setModLoaderVersion-java.lang.String-">setModLoaderVersion(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#setName-java.lang.String-">setName(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setModpackDir-java.lang.String-">setModpackDir(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#setProjectFileID-int-">setProjectFileID(int)</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setName-java.lang.String-">setName(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html#setProjectID-java.lang.String-">setProjectID(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Files</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setProjectFileID-int-">setProjectFileID(int)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#setProjectID-int-">setProjectID(int)</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setProjectID-int-">setProjectID(int)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Splines.html#setSplines--">setSplines()</a></span> - Static method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Splines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Splines</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#setProjectID-java.lang.String-">setProjectID(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CLISetup.html#setup--">setup()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CLISetup.html" title="class in de.griefed.serverpackcreator">CLISetup</a></dt> -<dd> -<div class="block">CLI for config file generation.</div> -</dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html#setVersion-java.lang.String-">setVersion(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Minecraft</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#setVersion-java.lang.String-">setVersion(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#setVersion-java.lang.String-">setVersion(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setVersion-java.lang.String-">setVersion(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> -<dt><a href="de/griefed/serverpackcreator/curseforgemodpack/Splines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Splines</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#startGeneration">startGeneration</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Splines.html#Splines--">Splines()</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Splines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Splines</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPack.html#startGeneration">startGeneration</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPack</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ConfigCheck.html#suggestCopyDirs-java.lang.String-">suggestCopyDirs(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator">ConfigCheck</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#suggestCopyDirs-java.lang.String-">suggestCopyDirs(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Creates a list of suggested directories to include in server pack which is later on written to a new configuration file.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Reference.html#SUPPORTED_LANGUAGES">SUPPORTED_LANGUAGES</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator">Reference</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#SUPPORTED_LANGUAGES">SUPPORTED_LANGUAGES</a></span> - Variable in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> </dd> </dl> <a name="I:T"> @@ -846,17 +840,13 @@ </a> <h2 class="title">T</h2> <dl> -<dt><a href="de/griefed/serverpackcreator/gui/TabbedPane.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">TabbedPane</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/TabbedPane.html#TabbedPane--">TabbedPane()</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/TabbedPane.html" title="class in de.griefed.serverpackcreator.gui">TabbedPane</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html#toString--">toString()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Files</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#toString--">toString()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html#toString--">toString()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Minecraft</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#toString--">toString()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html#toString--">toString()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">ModLoaders</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#toString--">toString()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#toString--">toString()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#toString--">toString()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> </dl> <a name="I:U"> @@ -864,7 +854,7 @@ </a> <h2 class="title">U</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html#unzipArchive-java.lang.String-java.lang.String-">unzipArchive(String, String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CreateModpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#unzipArchive-java.lang.String-java.lang.String-">unzipArchive(String, String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> <div class="block">With help from: https://www.baeldung.com/java-compress-and-uncompress Unzips the downloaded modpack archive to a directory.</div> @@ -875,9 +865,9 @@ </a> <h2 class="title">V</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html#version">version</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Minecraft</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#version">version</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html#version">version</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">Modpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#version">version</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> </dl> <a name="I:W"> @@ -885,13 +875,13 @@ </a> <h2 class="title">W</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/TabbedPane.html#windowDimension">windowDimension</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/TabbedPane.html" title="class in de.griefed.serverpackcreator.gui">TabbedPane</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#windowDimension">windowDimension</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#writeConfigToFile-java.lang.String-java.lang.String-java.lang.String-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-java.io.File-boolean-">writeConfigToFile(String, String, String, boolean, String, String, String, String, boolean, boolean, boolean, boolean, File, boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#writeConfigToFile-java.lang.String-java.lang.String-java.lang.String-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-java.io.File-boolean-">writeConfigToFile(String, String, String, boolean, String, String, String, String, boolean, boolean, boolean, boolean, File, boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Writes a new configuration file with the parameters passed to it.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#writeLocaleToFile-java.lang.String-">writeLocaleToFile(String)</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#writeLocaleToFile-java.lang.String-">writeLocaleToFile(String)</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> <div class="block">Writes the specified locale from -lang your_locale to a lang.properties file to ensure every subsequent start of serverpackcreator is executed using said locale.</div> </dd> @@ -901,7 +891,7 @@ </a> <h2 class="title">Z</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/ServerSetup.html#zipBuilder-java.lang.String-java.lang.String-java.lang.Boolean-">zipBuilder(String, String, Boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerSetup.html" title="class in de.griefed.serverpackcreator">ServerSetup</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#zipBuilder-java.lang.String-java.lang.String-java.lang.Boolean-java.lang.String-">zipBuilder(String, String, Boolean, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> <div class="block">Create a zip-archive of the serverpack, excluding Mojang's minecraft_server.jar.</div> </dd> diff --git a/docs/overview-tree.html b/docs/overview-tree.html index f8ba07867..d9ca2afb7 100644 --- a/docs/overview-tree.html +++ b/docs/overview-tree.html @@ -82,46 +82,38 @@ <ul> <li type="circle">java.lang.Object <ul> -<li type="circle">de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CLISetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">CLISetup</span></a></li> <li type="circle">java.awt.Component (implements java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable) <ul> -<li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/About.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">About</span></a></li> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">AboutTab</span></a></li> <li type="circle">java.awt.Container <ul> <li type="circle">javax.swing.JComponent (implements java.io.Serializable) <ul> <li type="circle">javax.swing.JPanel (implements javax.accessibility.Accessible) <ul> -<li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/TabbedPane.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">TabbedPane</span></a></li> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateGui</span></a></li> </ul> </li> </ul> </li> </ul> </li> -<li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPack.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateServerPack</span></a></li> -<li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLog.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ModloaderInstallerLog</span></a></li> -<li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLog.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ServerPackCreatorLog</span></a></li> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateServerPackTab</span></a></li> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ModloaderInstallerLogTab</span></a></li> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ServerPackCreatorLogTab</span></a></li> </ul> </li> -<li type="circle">de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ConfigCheck.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">ConfigCheck</span></a></li> -<li type="circle">de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CopyFiles.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">CopyFiles</span></a></li> -<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CreateModpack</span></a></li> -<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Files.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Files</span></a></li> +<li type="circle">de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Configuration</span></a></li> +<li type="circle">de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">CreateServerPack</span></a></li> +<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseCreateModpack</span></a></li> +<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseFiles</span></a></li> +<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseMinecraft</span></a></li> +<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseModLoaders</span></a></li> +<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseModpack</span></a></li> +<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseSplines</span></a></li> <li type="circle">de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">FilesSetup</span></a></li> -<li type="circle">de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Handler.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Handler</span></a></li> -<li type="circle">de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Main</span></a></li> -<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Minecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Minecraft</span></a></li> -<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/ModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">ModLoaders</span></a></li> -<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Modpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Modpack</span></a></li> -<li type="circle">de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Reference.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Reference</span></a> -<ul> <li type="circle">de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><span class="typeNameLink">LocalizationManager</span></a></li> -</ul> -</li> -<li type="circle">de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">ServerSetup</span></a></li> -<li type="circle">de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/ServerUtilities.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">ServerUtilities</span></a></li> -<li type="circle">de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/Splines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">Splines</span></a></li> +<li type="circle">de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Main</span></a></li> <li type="circle">java.lang.Throwable (implements java.io.Serializable) <ul> <li type="circle">java.lang.Exception diff --git a/docs/serialized-form.html b/docs/serialized-form.html index 83423bd3a..f972898ce 100644 --- a/docs/serialized-form.html +++ b/docs/serialized-form.html @@ -75,10 +75,10 @@ <li class="blockList"> <h2 title="Package">Package de.griefed.serverpackcreator.gui</h2> <ul class="blockList"> -<li class="blockList"><a name="de.griefed.serverpackcreator.gui.TabbedPane"> +<li class="blockList"><a name="de.griefed.serverpackcreator.gui.CreateGui"> <!-- --> </a> -<h3>Class <a href="de/griefed/serverpackcreator/gui/TabbedPane.html" title="class in de.griefed.serverpackcreator.gui">de.griefed.serverpackcreator.gui.TabbedPane</a> extends javax.swing.JPanel implements Serializable</h3> +<h3>Class <a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">de.griefed.serverpackcreator.gui.CreateGui</a> extends javax.swing.JPanel implements Serializable</h3> <ul class="blockList"> <li class="blockList"> <h3>Serialized Fields</h3> @@ -91,10 +91,66 @@ <h4>icon</h4> <pre>java.awt.Image icon</pre> </li> -<li class="blockListLast"> +<li class="blockList"> <h4>windowDimension</h4> <pre>java.awt.Dimension windowDimension</pre> </li> +<li class="blockList"> +<h4>localizationManager</h4> +<pre><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +</li> +<li class="blockListLast"> +<h4>configuration</h4> +<pre><a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> configuration</pre> +</li> +</ul> +</li> +</ul> +</li> +<li class="blockList"><a name="de.griefed.serverpackcreator.gui.CreateServerPackTab"> +<!-- --> +</a> +<h3>Class <a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">de.griefed.serverpackcreator.gui.CreateServerPackTab</a> extends java.awt.Component implements Serializable</h3> +<ul class="blockList"> +<li class="blockList"> +<h3>Serialized Fields</h3> +<ul class="blockList"> +<li class="blockList"> +<h4>loadIcon</h4> +<pre>javax.swing.ImageIcon loadIcon</pre> +</li> +<li class="blockList"> +<h4>folderIcon</h4> +<pre>javax.swing.ImageIcon folderIcon</pre> +</li> +<li class="blockList"> +<h4>startGeneration</h4> +<pre>javax.swing.ImageIcon startGeneration</pre> +</li> +<li class="blockList"> +<h4>helpIcon</h4> +<pre>javax.swing.ImageIcon helpIcon</pre> +</li> +<li class="blockList"> +<h4>folderButtonDimension</h4> +<pre>java.awt.Dimension folderButtonDimension</pre> +</li> +<li class="blockList"> +<h4>miscButtonDimension</h4> +<pre>java.awt.Dimension miscButtonDimension</pre> +</li> +<li class="blockList"> +<h4>chooserDimension</h4> +<pre>java.awt.Dimension chooserDimension</pre> +</li> +<li class="blockList"> +<h4>configuration</h4> +<pre><a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> configuration</pre> +</li> +<li class="blockListLast"> +<h4>localizationManager</h4> +<pre><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +</li> </ul> </li> </ul> diff --git a/src/main/java/de/griefed/serverpackcreator/ConfigCheck.java b/src/main/java/de/griefed/serverpackcreator/Configuration.java similarity index 99% rename from src/main/java/de/griefed/serverpackcreator/ConfigCheck.java rename to src/main/java/de/griefed/serverpackcreator/Configuration.java index 65fa849e8..cd3e08d54 100644 --- a/src/main/java/de/griefed/serverpackcreator/ConfigCheck.java +++ b/src/main/java/de/griefed/serverpackcreator/Configuration.java @@ -28,14 +28,14 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.util.*; -public class ConfigCheck { +public class Configuration { - private static final Logger appLogger = LogManager.getLogger(ConfigCheck.class); + private static final Logger appLogger = LogManager.getLogger(Configuration.class); private final File oldConfigFile = new File("creator.conf"); private final File configFile = new File("serverpackcreator.conf"); private LocalizationManager localizationManager; - public ConfigCheck(LocalizationManager injectedLocalizationManager) { + public Configuration(LocalizationManager injectedLocalizationManager) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); } diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index e52ad0214..c971ae536 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -34,7 +34,7 @@ public class CreateServerPack { private static final Logger appLogger = LogManager.getLogger(FilesSetup.class); private static final Logger installerLogger = LogManager.getLogger("InstallerLogger"); - private ConfigCheck configCheck; + private Configuration configuration; private LocalizationManager localizationManager; private final File propertiesFile = new File("server.properties"); private final File iconFile = new File("server-icon.png"); @@ -44,7 +44,7 @@ public class CreateServerPack { private final File fabricLinuxFile = new File("start-fabric.sh"); - public CreateServerPack(LocalizationManager injectedLocalizationManager, ConfigCheck injectedConfigCheck) { + public CreateServerPack(LocalizationManager injectedLocalizationManager, Configuration injectedConfigCheck) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); } @@ -52,10 +52,10 @@ public class CreateServerPack { this.localizationManager = injectedLocalizationManager; if (injectedConfigCheck == null) { - this.configCheck = new ConfigCheck(localizationManager); + this.configuration = new Configuration(localizationManager); } - this.configCheck = injectedConfigCheck; + this.configuration = injectedConfigCheck; } public File getPropertiesFile() { @@ -87,36 +87,36 @@ public class CreateServerPack { * @return Return true if the serverpack was successfully generated, false if not. */ public boolean run() { - if (!configCheck.checkConfigFile(configCheck.getConfigFile())) { - cleanupEnvironment(configCheck.getModpackDir()); + if (!configuration.checkConfigFile(configuration.getConfigFile())) { + cleanupEnvironment(configuration.getModpackDir()); try { - copyFiles(configCheck.getModpackDir(), configCheck.getCopyDirs(), configCheck.getClientMods()); + copyFiles(configuration.getModpackDir(), configuration.getCopyDirs(), configuration.getClientMods()); } catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("handler.log.error.runincli.copyfiles"), ex); } - copyStartScripts(configCheck.getModpackDir(), configCheck.getModLoader(), configCheck.getIncludeStartScripts()); - if (configCheck.getIncludeServerInstallation()) { - installServer(configCheck.getModLoader(), configCheck.getModpackDir(), configCheck.getMinecraftVersion(), configCheck.getModLoaderVersion(), configCheck.getJavaPath()); + copyStartScripts(configuration.getModpackDir(), configuration.getModLoader(), configuration.getIncludeStartScripts()); + if (configuration.getIncludeServerInstallation()) { + installServer(configuration.getModLoader(), configuration.getModpackDir(), configuration.getMinecraftVersion(), configuration.getModLoaderVersion(), configuration.getJavaPath()); } else { appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.server")); } - if (configCheck.getIncludeServerIcon()) { - copyIcon(configCheck.getModpackDir()); + if (configuration.getIncludeServerIcon()) { + copyIcon(configuration.getModpackDir()); } else { appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.icon")); } - if (configCheck.getIncludeServerProperties()) { - copyProperties(configCheck.getModpackDir()); + if (configuration.getIncludeServerProperties()) { + copyProperties(configuration.getModpackDir()); } else { appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.properties")); } - if (configCheck.getIncludeZipCreation()) { - zipBuilder(configCheck.getModpackDir(), configCheck.getModLoader(), configCheck.getIncludeServerInstallation(), configCheck.getMinecraftVersion()); + if (configuration.getIncludeZipCreation()) { + zipBuilder(configuration.getModpackDir(), configuration.getModLoader(), configuration.getIncludeServerInstallation(), configuration.getMinecraftVersion()); } else { appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.zip")); } - appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.runincli.serverpack"), configCheck.getModpackDir())); - appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.runincli.archive"), configCheck.getModpackDir())); + appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.runincli.serverpack"), configuration.getModpackDir())); + appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.runincli.archive"), configuration.getModpackDir())); appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.finish")); return true; } else { diff --git a/src/main/java/de/griefed/serverpackcreator/Main.java b/src/main/java/de/griefed/serverpackcreator/Main.java index 9e1ccb157..747ac0390 100644 --- a/src/main/java/de/griefed/serverpackcreator/Main.java +++ b/src/main/java/de/griefed/serverpackcreator/Main.java @@ -21,9 +21,10 @@ public class Main { */ public static void main(String[] args) { LocalizationManager localizationManager = new LocalizationManager(); - ConfigCheck configCheck = new ConfigCheck(localizationManager); + Configuration configuration = new Configuration(localizationManager); FilesSetup filesSetup = new FilesSetup(localizationManager); - CreateServerPack createServerPack = new CreateServerPack(localizationManager, configCheck); + CreateServerPack createServerPack = new CreateServerPack(localizationManager, configuration); + CreateGui tabbedPane = new CreateGui(localizationManager, configuration); List<String> programArgs = Arrays.asList(args); @@ -78,7 +79,7 @@ public class Main { if (Arrays.asList(args).contains("-cgen")) { - configCheck.createConfigurationFile(); + configuration.createConfigurationFile(); if (createServerPack.run()) { System.exit(0); @@ -90,7 +91,7 @@ public class Main { if (!new File("creator.conf").exists() && !new File("serverpackcreator.conf").exists()) { - configCheck.createConfigurationFile(); + configuration.createConfigurationFile(); } if (createServerPack.run()) { @@ -102,7 +103,7 @@ public class Main { if (!new File("creator.conf").exists() && !new File("serverpackcreator.conf").exists()) { - configCheck.createConfigurationFile(); + configuration.createConfigurationFile(); } if (createServerPack.run()) { @@ -113,7 +114,6 @@ public class Main { } else { - CreateGui tabbedPane = new CreateGui(localizationManager, configCheck); tabbedPane.mainGUI(); } diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java index 3a6cd483e..cdd6becb6 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java @@ -3,7 +3,7 @@ package de.griefed.serverpackcreator.gui; import com.typesafe.config.Config; import com.typesafe.config.ConfigException; import com.typesafe.config.ConfigFactory; -import de.griefed.serverpackcreator.ConfigCheck; +import de.griefed.serverpackcreator.Configuration; import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -22,9 +22,9 @@ public class CreateGui extends JPanel { private final Dimension windowDimension = new Dimension(800,860); private LocalizationManager localizationManager; - private ConfigCheck configCheck; + private Configuration configuration; - public CreateGui(LocalizationManager injectedLocalizationManager, ConfigCheck injectedConfigCheck) { + public CreateGui(LocalizationManager injectedLocalizationManager, Configuration injectedConfigCheck) { super(new GridLayout(1, 1)); if (injectedLocalizationManager == null) { @@ -34,14 +34,14 @@ public class CreateGui extends JPanel { } if (injectedConfigCheck == null) { - this.configCheck = new ConfigCheck(localizationManager); + this.configuration = new Configuration(localizationManager); } else { - this.configCheck = injectedConfigCheck; + this.configuration = injectedConfigCheck; } JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); - tabbedPane.addTab(localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.title"), null, new CreateServerPackTab(localizationManager, configCheck).createServerPackTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.tip")); + tabbedPane.addTab(localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.title"), null, new CreateServerPackTab(localizationManager, configuration).createServerPackTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.tip")); tabbedPane.setMnemonicAt(0, KeyEvent.VK_1); tabbedPane.addTab(localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.title"), null, new ServerPackCreatorLogTab(localizationManager).serverPackCreatorLogTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.tip")); @@ -110,7 +110,7 @@ public class CreateGui extends JPanel { banner.setOpaque(false); frame.add(banner, BorderLayout.PAGE_START); - frame.add(new CreateGui(localizationManager, configCheck), BorderLayout.CENTER); + frame.add(new CreateGui(localizationManager, configuration), BorderLayout.CENTER); frame.setPreferredSize(windowDimension); frame.setMaximumSize(windowDimension); diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java index 358e57324..9733d6374 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java @@ -2,7 +2,7 @@ package de.griefed.serverpackcreator.gui; import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; -import de.griefed.serverpackcreator.ConfigCheck; +import de.griefed.serverpackcreator.Configuration; import de.griefed.serverpackcreator.CreateServerPack; import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.commons.io.input.Tailer; @@ -34,10 +34,10 @@ public class CreateServerPackTab extends Component { private final Dimension miscButtonDimension = new Dimension(50,50); private final Dimension chooserDimension = new Dimension(750,450); - private ConfigCheck configCheck; + private Configuration configuration; private LocalizationManager localizationManager; - public CreateServerPackTab(LocalizationManager injectedLocalizationManager, ConfigCheck injectedConfigCheck) { + public CreateServerPackTab(LocalizationManager injectedLocalizationManager, Configuration injectedConfigCheck) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); } else { @@ -45,9 +45,9 @@ public class CreateServerPackTab extends Component { } if (injectedConfigCheck == null) { - this.configCheck = new ConfigCheck(localizationManager); + this.configuration = new Configuration(localizationManager); } else { - this.configCheck = injectedConfigCheck; + this.configuration = injectedConfigCheck; } } @@ -272,7 +272,7 @@ public class CreateServerPackTab extends Component { clientModsFilenames.add(clientMods[i].getName()); } - textClientMods.setText(configCheck.buildString(Arrays.toString(clientModsFilenames.toArray(new String[0])))); + textClientMods.setText(configuration.buildString(Arrays.toString(clientModsFilenames.toArray(new String[0])))); appLogger.info(String.format(localizationManager.getLocalizedString("createserverpack.log.info.buttonclientmods"), clientModsFilenames)); } }); @@ -311,7 +311,7 @@ public class CreateServerPackTab extends Component { copyDirsNames.add(copyDirs[i].getName()); } - textCopyDirs.setText(configCheck.buildString(Arrays.toString(copyDirsNames.toArray(new String[0])))); + textCopyDirs.setText(configuration.buildString(Arrays.toString(copyDirsNames.toArray(new String[0])))); appLogger.info(String.format(localizationManager.getLocalizedString("createserverpack.log.info.buttoncopydirs"), copyDirsNames)); } }); @@ -389,9 +389,9 @@ public class CreateServerPackTab extends Component { textModpackDir.setText(newConfigFile.getString("modpackDir")); - textClientMods.setText(configCheck.buildString(newConfigFile.getStringList("clientMods").toString())); + textClientMods.setText(configuration.buildString(newConfigFile.getStringList("clientMods").toString())); - textCopyDirs.setText(configCheck.buildString(newConfigFile.getStringList("copyDirs").toString())); + textCopyDirs.setText(configuration.buildString(newConfigFile.getStringList("copyDirs").toString())); textJavaPath.setText(newConfigFile.getString("javaPath")); @@ -401,15 +401,15 @@ public class CreateServerPackTab extends Component { textModloaderVersion.setText(newConfigFile.getString("modLoaderVersion")); - checkBoxServer.setSelected(configCheck.convertToBoolean(newConfigFile.getString("includeServerInstallation"))); + checkBoxServer.setSelected(configuration.convertToBoolean(newConfigFile.getString("includeServerInstallation"))); - checkBoxIcon.setSelected(configCheck.convertToBoolean(newConfigFile.getString("includeServerIcon"))); + checkBoxIcon.setSelected(configuration.convertToBoolean(newConfigFile.getString("includeServerIcon"))); - checkBoxProperties.setSelected(configCheck.convertToBoolean(newConfigFile.getString("includeServerProperties"))); + checkBoxProperties.setSelected(configuration.convertToBoolean(newConfigFile.getString("includeServerProperties"))); - checkBoxScripts.setSelected(configCheck.convertToBoolean(newConfigFile.getString("includeStartScripts"))); + checkBoxScripts.setSelected(configuration.convertToBoolean(newConfigFile.getString("includeStartScripts"))); - checkBoxZIP.setSelected(configCheck.convertToBoolean(newConfigFile.getString("includeZipCreation"))); + checkBoxZIP.setSelected(configuration.convertToBoolean(newConfigFile.getString("includeZipCreation"))); appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile.finish")); } @@ -501,7 +501,7 @@ public class CreateServerPackTab extends Component { appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.start")); labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.start")); - configCheck.writeConfigToFile( + configuration.writeConfigToFile( textModpackDir.getText(), textClientMods.getText(), textCopyDirs.getText(), @@ -517,7 +517,7 @@ public class CreateServerPackTab extends Component { new File("serverpackcreator.tmp"), true ); - if (!configCheck.checkConfigFile(new File("serverpackcreator.tmp"))) { + if (!configuration.checkConfigFile(new File("serverpackcreator.tmp"))) { appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.checked")); labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.checked")); @@ -534,7 +534,7 @@ public class CreateServerPackTab extends Component { appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.writing")); labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.writing")); - configCheck.writeConfigToFile( + configuration.writeConfigToFile( textModpackDir.getText(), textClientMods.getText(), textCopyDirs.getText(), @@ -547,7 +547,7 @@ public class CreateServerPackTab extends Component { checkBoxProperties.isSelected(), checkBoxScripts.isSelected(), checkBoxZIP.isSelected(), - configCheck.getConfigFile(), + configuration.getConfigFile(), false ); @@ -565,7 +565,7 @@ public class CreateServerPackTab extends Component { final ExecutorService executorService = Executors.newSingleThreadExecutor(); executorService.execute(() -> { - CreateServerPack createServerPack = new CreateServerPack(localizationManager, configCheck); + CreateServerPack createServerPack = new CreateServerPack(localizationManager, configuration); if (createServerPack.run()) { tailer.stop(); @@ -642,9 +642,9 @@ public class CreateServerPackTab extends Component { textModpackDir.setText(config.getString("modpackDir")); - textClientMods.setText(configCheck.buildString(config.getStringList("clientMods").toString())); + textClientMods.setText(configuration.buildString(config.getStringList("clientMods").toString())); - textCopyDirs.setText(configCheck.buildString(config.getStringList("copyDirs").toString())); + textCopyDirs.setText(configuration.buildString(config.getStringList("copyDirs").toString())); textJavaPath.setText(config.getString("javaPath")); @@ -654,15 +654,15 @@ public class CreateServerPackTab extends Component { textModloaderVersion.setText(config.getString("modLoaderVersion")); - checkBoxServer.setSelected(configCheck.convertToBoolean(config.getString("includeServerInstallation"))); + checkBoxServer.setSelected(configuration.convertToBoolean(config.getString("includeServerInstallation"))); - checkBoxIcon.setSelected(configCheck.convertToBoolean(config.getString("includeServerIcon"))); + checkBoxIcon.setSelected(configuration.convertToBoolean(config.getString("includeServerIcon"))); - checkBoxProperties.setSelected(configCheck.convertToBoolean(config.getString("includeServerProperties"))); + checkBoxProperties.setSelected(configuration.convertToBoolean(config.getString("includeServerProperties"))); - checkBoxScripts.setSelected(configCheck.convertToBoolean(config.getString("includeStartScripts"))); + checkBoxScripts.setSelected(configuration.convertToBoolean(config.getString("includeStartScripts"))); - checkBoxZIP.setSelected(configCheck.convertToBoolean(config.getString("includeZipCreation"))); + checkBoxZIP.setSelected(configuration.convertToBoolean(config.getString("includeZipCreation"))); appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile.finish")); } diff --git a/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java b/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java index fa9ed5e99..6ba502407 100644 --- a/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java +++ b/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java @@ -6,7 +6,6 @@ import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -23,12 +22,12 @@ class ConfigCheckTest { @Mock Logger appLogger; - private ConfigCheck configCheck; + private Configuration configCheck; private LocalizationManager localizationManager; ConfigCheckTest() { localizationManager = new LocalizationManager(); - configCheck = new ConfigCheck(localizationManager); + configCheck = new Configuration(localizationManager); } @BeforeEach diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java index bbbda042b..898465b6a 100644 --- a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -27,11 +27,11 @@ class CreateServerPackTest { private CreateServerPack createServerPack; private FilesSetup filesSetup; private LocalizationManager localizationManager; - private ConfigCheck configCheck; + private Configuration configCheck; CreateServerPackTest() { localizationManager = new LocalizationManager(); - configCheck = new ConfigCheck(localizationManager); + configCheck = new Configuration(localizationManager); createServerPack = new CreateServerPack(localizationManager, configCheck); filesSetup = new FilesSetup(localizationManager); } diff --git a/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java b/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java index 0b60fcab3..7ae65770c 100644 --- a/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java +++ b/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java @@ -5,7 +5,6 @@ import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -23,13 +22,13 @@ class FilesSetupTest { Logger appLogger; private FilesSetup filesSetup; - private ConfigCheck configCheck; + private Configuration configCheck; private LocalizationManager localizationManager; FilesSetupTest() { localizationManager = new LocalizationManager(); filesSetup = new FilesSetup(localizationManager); - configCheck = new ConfigCheck(localizationManager); + configCheck = new Configuration(localizationManager); } @BeforeEach -- GitLab From 02afe0923fff907094883184a89415e010f67a36 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 29 Apr 2021 12:54:22 +0200 Subject: [PATCH 08/91] refactor(DI): Update run configurations for local runs (not for public consumption, you would need to reconfigure this) --- .runConfigurations/Main.run.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.runConfigurations/Main.run.xml b/.runConfigurations/Main.run.xml index ce268a8f0..e510cb0b6 100644 --- a/.runConfigurations/Main.run.xml +++ b/.runConfigurations/Main.run.xml @@ -1,6 +1,6 @@ <component name="ProjectRunConfigurationManager"> <configuration default="false" name="Main" type="Application" factoryName="Application" nameIsGenerated="true"> - <option name="ALTERNATIVE_JRE_PATH" value="1.8" /> + <option name="ALTERNATIVE_JRE_PATH" value="1.8 (2)" /> <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" /> <option name="MAIN_CLASS_NAME" value="de.griefed.serverpackcreator.Main" /> <module name="serverpackcreator.main" /> -- GitLab From d8c5eeea754ffdbde8bc2a3a79e4fbfbf8b17b36 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 29 Apr 2021 13:01:58 +0200 Subject: [PATCH 09/91] refactor(DI): Fix initialization of LocalizationManager in regards to GUI. Rename injectedConfigCheck to injectedConfiguration --- .../java/de/griefed/serverpackcreator/CreateServerPack.java | 6 +++--- src/main/java/de/griefed/serverpackcreator/Main.java | 3 ++- .../java/de/griefed/serverpackcreator/gui/CreateGui.java | 6 +++--- .../griefed/serverpackcreator/gui/CreateServerPackTab.java | 6 +++--- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index c971ae536..2f49c7abd 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -44,18 +44,18 @@ public class CreateServerPack { private final File fabricLinuxFile = new File("start-fabric.sh"); - public CreateServerPack(LocalizationManager injectedLocalizationManager, Configuration injectedConfigCheck) { + public CreateServerPack(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); } this.localizationManager = injectedLocalizationManager; - if (injectedConfigCheck == null) { + if (injectedConfiguration == null) { this.configuration = new Configuration(localizationManager); } - this.configuration = injectedConfigCheck; + this.configuration = injectedConfiguration; } public File getPropertiesFile() { diff --git a/src/main/java/de/griefed/serverpackcreator/Main.java b/src/main/java/de/griefed/serverpackcreator/Main.java index 747ac0390..23e70c075 100644 --- a/src/main/java/de/griefed/serverpackcreator/Main.java +++ b/src/main/java/de/griefed/serverpackcreator/Main.java @@ -24,7 +24,7 @@ public class Main { Configuration configuration = new Configuration(localizationManager); FilesSetup filesSetup = new FilesSetup(localizationManager); CreateServerPack createServerPack = new CreateServerPack(localizationManager, configuration); - CreateGui tabbedPane = new CreateGui(localizationManager, configuration); + List<String> programArgs = Arrays.asList(args); @@ -114,6 +114,7 @@ public class Main { } else { + CreateGui tabbedPane = new CreateGui(localizationManager, configuration); tabbedPane.mainGUI(); } diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java index cdd6becb6..8eddcafab 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java @@ -24,7 +24,7 @@ public class CreateGui extends JPanel { private LocalizationManager localizationManager; private Configuration configuration; - public CreateGui(LocalizationManager injectedLocalizationManager, Configuration injectedConfigCheck) { + public CreateGui(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration) { super(new GridLayout(1, 1)); if (injectedLocalizationManager == null) { @@ -33,10 +33,10 @@ public class CreateGui extends JPanel { this.localizationManager = injectedLocalizationManager; } - if (injectedConfigCheck == null) { + if (injectedConfiguration == null) { this.configuration = new Configuration(localizationManager); } else { - this.configuration = injectedConfigCheck; + this.configuration = injectedConfiguration; } JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java index 9733d6374..79a36e5a7 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java @@ -37,17 +37,17 @@ public class CreateServerPackTab extends Component { private Configuration configuration; private LocalizationManager localizationManager; - public CreateServerPackTab(LocalizationManager injectedLocalizationManager, Configuration injectedConfigCheck) { + public CreateServerPackTab(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); } else { this.localizationManager = injectedLocalizationManager; } - if (injectedConfigCheck == null) { + if (injectedConfiguration == null) { this.configuration = new Configuration(localizationManager); } else { - this.configuration = injectedConfigCheck; + this.configuration = injectedConfiguration; } } -- GitLab From fffe21631ab0d328894c2bc8e1c717af3eadd4bc Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 29 Apr 2021 13:14:14 +0200 Subject: [PATCH 10/91] refactor(DI): Set up constructors properly --- .../de/griefed/serverpackcreator/CreateServerPack.java | 8 ++++---- .../java/de/griefed/serverpackcreator/FilesSetup.java | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index 2f49c7abd..17fe114df 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -47,15 +47,15 @@ public class CreateServerPack { public CreateServerPack(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); + } else { + this.localizationManager = injectedLocalizationManager; } - this.localizationManager = injectedLocalizationManager; - if (injectedConfiguration == null) { this.configuration = new Configuration(localizationManager); + } else { + this.configuration = injectedConfiguration; } - - this.configuration = injectedConfiguration; } public File getPropertiesFile() { diff --git a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java index 69b511d5f..24212bf44 100644 --- a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java +++ b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java @@ -25,8 +25,9 @@ public class FilesSetup { public FilesSetup(LocalizationManager injectedLocalizationManager) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); + } else { + this.localizationManager = injectedLocalizationManager; } - this.localizationManager = injectedLocalizationManager; } public File getConfigFile() { -- GitLab From 020a492d81a18f92b91dbff24fafcc13233a2f8e Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 29 Apr 2021 13:29:00 +0200 Subject: [PATCH 11/91] refactor(DI): Set up constructors properly --- src/main/java/de/griefed/serverpackcreator/Configuration.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/griefed/serverpackcreator/Configuration.java b/src/main/java/de/griefed/serverpackcreator/Configuration.java index cd3e08d54..7a1e1b71e 100644 --- a/src/main/java/de/griefed/serverpackcreator/Configuration.java +++ b/src/main/java/de/griefed/serverpackcreator/Configuration.java @@ -38,8 +38,9 @@ public class Configuration { public Configuration(LocalizationManager injectedLocalizationManager) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); + } else { + this.localizationManager = injectedLocalizationManager; } - this.localizationManager = injectedLocalizationManager; } //-- If you wish to expand this list, fork this repository, make your changes, and submit a PR ------------------------- -- GitLab From 1580465b4322bae57fe1be994d3039be0e59ed22 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 29 Apr 2021 14:19:33 +0200 Subject: [PATCH 12/91] =?UTF-8?q?refactor(DI):=20Don't=20run=20on=20GitHub?= =?UTF-8?q?....because=20waihfvpo=C3=B6ihdrsgeds?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serverpackcreator/gui/CreateServerPackTab.java | 8 +------- .../serverpackcreator/CreateServerPackTest.java | 11 +++++++---- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java index 79a36e5a7..9aa89671c 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java @@ -638,8 +638,6 @@ public class CreateServerPackTab extends Component { File configFile = new File("serverpackcreator.conf"); Config config = ConfigFactory.parseFile(configFile); - appLogger.info(String.format(localizationManager.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile"), configFile)); - textModpackDir.setText(config.getString("modpackDir")); textClientMods.setText(configuration.buildString(config.getStringList("clientMods").toString())); @@ -663,12 +661,8 @@ public class CreateServerPackTab extends Component { checkBoxScripts.setSelected(configuration.convertToBoolean(config.getString("includeStartScripts"))); checkBoxZIP.setSelected(configuration.convertToBoolean(config.getString("includeZipCreation"))); - - appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile.finish")); } - } catch (NullPointerException ignored) { - - } + } catch (NullPointerException ignored) {} return createServerPackPanel; } diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java index 898465b6a..9e5885b9c 100644 --- a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -48,10 +48,13 @@ class CreateServerPackTest { @Test void testCleanupEnvironment() throws IOException { - String modpackDir = "./src/test/resources/cleanup_tests"; - Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/cleanup_tests/server_pack.zip"), REPLACE_EXISTING); - Files.createDirectories(Paths.get(String.format("%s/server_pack",modpackDir))); - createServerPack.cleanupEnvironment(modpackDir); + //TODO: Figure out how to run this test on GitHub Runners + if (!new File("/home/runner").isDirectory()) { + String modpackDir = "./src/test/resources/cleanup_tests"; + Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/cleanup_tests/server_pack.zip"), REPLACE_EXISTING); + Files.createDirectories(Paths.get(String.format("%s/server_pack", modpackDir))); + createServerPack.cleanupEnvironment(modpackDir); + } } @SuppressWarnings("ResultOfMethodCallIgnored") -- GitLab From f3d95f080ed955558ac60448fa038e234932d4bd Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 29 Apr 2021 14:20:24 +0200 Subject: [PATCH 13/91] refactor(DI): Prioritize LocalizationManager during setup --- .../de/griefed/serverpackcreator/Main.java | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/Main.java b/src/main/java/de/griefed/serverpackcreator/Main.java index 23e70c075..e5681cef5 100644 --- a/src/main/java/de/griefed/serverpackcreator/Main.java +++ b/src/main/java/de/griefed/serverpackcreator/Main.java @@ -20,21 +20,9 @@ public class Main { * @param args Commandline arguments with which ServerPackCreator is run. Passed to Handler-class which then decides what to do corresponding to input. */ public static void main(String[] args) { - LocalizationManager localizationManager = new LocalizationManager(); - Configuration configuration = new Configuration(localizationManager); - FilesSetup filesSetup = new FilesSetup(localizationManager); - CreateServerPack createServerPack = new CreateServerPack(localizationManager, configuration); - - List<String> programArgs = Arrays.asList(args); - String jarPath = null, - jarName = null, - javaVersion = null, - osArch = null, - osName = null, - osVersion = null; - + LocalizationManager localizationManager = new LocalizationManager(); if (Arrays.asList(args).contains("-lang")) { try { localizationManager.init(programArgs.get(programArgs.indexOf("-lang") + 1)); @@ -47,6 +35,18 @@ public class Main { localizationManager.checkLocaleFile(); } + Configuration configuration = new Configuration(localizationManager); + FilesSetup filesSetup = new FilesSetup(localizationManager); + CreateServerPack createServerPack = new CreateServerPack(localizationManager, configuration); + CreateGui tabbedPane = new CreateGui(localizationManager, configuration); + + String jarPath = null, + jarName = null, + javaVersion = null, + osArch = null, + osName = null, + osVersion = null; + appLogger.warn(localizationManager.getLocalizedString("handler.log.warn.wip0")); appLogger.warn(localizationManager.getLocalizedString("handler.log.warn.wip1")); appLogger.warn(localizationManager.getLocalizedString("handler.log.warn.wip2")); @@ -76,7 +76,6 @@ public class Main { filesSetup.filesSetup(); - if (Arrays.asList(args).contains("-cgen")) { configuration.createConfigurationFile(); @@ -114,7 +113,6 @@ public class Main { } else { - CreateGui tabbedPane = new CreateGui(localizationManager, configuration); tabbedPane.mainGUI(); } -- GitLab From 766c776fcd1ce7a0eb2bc3380fc460b46e6497d5 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 29 Apr 2021 14:57:43 +0200 Subject: [PATCH 14/91] refactor(DI): CurseCreateModpack injection --- .../serverpackcreator/Configuration.java | 158 ++++++++++++++++-- .../serverpackcreator/CreateServerPack.java | 12 +- .../de/griefed/serverpackcreator/Main.java | 8 +- .../serverpackcreator/gui/CreateGui.java | 16 +- .../gui/CreateServerPackTab.java | 14 +- .../serverpackcreator/ConfigCheckTest.java | 5 +- .../CreateServerPackTest.java | 7 +- .../serverpackcreator/FilesSetupTest.java | 5 +- 8 files changed, 199 insertions(+), 26 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/Configuration.java b/src/main/java/de/griefed/serverpackcreator/Configuration.java index 7a1e1b71e..f30962f0f 100644 --- a/src/main/java/de/griefed/serverpackcreator/Configuration.java +++ b/src/main/java/de/griefed/serverpackcreator/Configuration.java @@ -34,13 +34,20 @@ public class Configuration { private final File oldConfigFile = new File("creator.conf"); private final File configFile = new File("serverpackcreator.conf"); private LocalizationManager localizationManager; + private CurseCreateModpack curseCreateModpack; - public Configuration(LocalizationManager injectedLocalizationManager) { + public Configuration(LocalizationManager injectedLocalizationManager, CurseCreateModpack injectedCurseCreateModpack) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); } else { this.localizationManager = injectedLocalizationManager; } + + if (injectedCurseCreateModpack == null) { + this.curseCreateModpack = new CurseCreateModpack(localizationManager); + } else { + this.curseCreateModpack = injectedCurseCreateModpack; + } } //-- If you wish to expand this list, fork this repository, make your changes, and submit a PR ------------------------- @@ -343,8 +350,6 @@ public class Configuration { setModpackDir(String.format("./%s/%s", projectName, displayName)); - CurseCreateModpack curseCreateModpack = new CurseCreateModpack(localizationManager); - if (curseCreateModpack.curseForgeModpack(getModpackDir(), getProjectID(), getProjectFileID())) { try { byte[] jsonData = Files.readAllBytes(Paths.get(String.format("%s/manifest.json", getModpackDir()))); @@ -357,6 +362,7 @@ public class Configuration { .getMinecraft() .toString() .split(","); + String[] modLoaderVersion = minecraftLoaderVersions[1] .replace("[", "") .replace("]", "") @@ -366,24 +372,34 @@ public class Configuration { if (containsFabric(modpack)) { appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.iscurse.fabric")); + setModLoader("Fabric"); setModLoaderVersion(latestFabricLoader(getModpackDir())); + } else { + setModLoader(setModloader(modLoaderVersion[0])); setModLoaderVersion(modLoaderVersion[1]); + } } catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.iscurse.json"), ex); } if (checkJavaPath(getConfig().getString("javaPath").replace("\\","/"))) { + setJavaPath(getConfig().getString("javaPath").replace("\\","/")); + } else { String tmpJavaPath = getJavaPath(getConfig().getString("javaPath").replace("\\","/")); + if (checkJavaPath(tmpJavaPath)) { setJavaPath(tmpJavaPath); } + } setCopyDirs(suggestCopyDirs(getModpackDir())); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.iscurse.replace")); + writeConfigToFile( getModpackDir(), buildString(getClientMods().toString()), @@ -411,9 +427,11 @@ public class Configuration { */ private boolean containsFabric(CurseModpack modpack) { boolean hasJumploader = false; + for (int i = 0; i < modpack.getFiles().size(); i++) { - String[] mods; - mods = modpack.getFiles().get(i).toString().split(","); + + String[] mods = modpack.getFiles().get(i).toString().split(","); + if (mods[0].equalsIgnoreCase("361988") || mods[0].equalsIgnoreCase("306612")) { appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.containsfabric")); hasJumploader = true; @@ -434,6 +452,7 @@ public class Configuration { "packmenu", "resourcepacks" }; + String[] copyDirs = new String[0]; List<String> dirList; File directories = new File(modpackDir); @@ -441,12 +460,16 @@ public class Configuration { String[] dirArray = directories.list((current, name) -> new File(current, name).isDirectory()); if (dirArray != null) { + dirList = new ArrayList<>(Arrays.asList(dirArray)); List<String> doNotCopyList = new ArrayList<>(Arrays.asList(dirsNotToCopy)); + for (int i = 0; i < dirsNotToCopy.length; i++) { dirList.remove(doNotCopyList.get(i)); } + copyDirs = dirList.toArray(new String[0]); + appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.suggestcopydirs.list"), dirList)); return Arrays.asList(copyDirs.clone()); @@ -465,8 +488,11 @@ public class Configuration { boolean configCorrect = false; if (modpackDir.matches("[0-9]{2,},[0-9]{5,}")) { + projectFileIds = modpackDir.split(","); + setProjectID(Integer.parseInt(projectFileIds[0])); + setProjectFileID(Integer.parseInt(projectFileIds[1])); appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkcurseforge.info")); @@ -486,22 +512,26 @@ public class Configuration { */ public boolean convertToBoolean(String stringBoolean) { boolean returnBoolean; + if (stringBoolean.matches("[Tt]rue") || stringBoolean.matches("1") || stringBoolean.matches("[Yy]es") || stringBoolean.matches("[Yy]")) { returnBoolean = true; + } else if (stringBoolean.matches("[Ff]alse") || stringBoolean.matches("0") || stringBoolean.matches("[Nn]o") || stringBoolean.matches("[Nn]" )) { returnBoolean = false; + } else { appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.converttoboolean.warn")); returnBoolean = false; } + return returnBoolean; } @@ -531,21 +561,30 @@ public class Configuration { boolean includeProperties, boolean includeScripts, boolean includeZip) { + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.printconfig.start")); appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.modpackdir"), modpackDirectory)); + if (clientsideMods.size() == 0) { appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.printconfig.noclientmods")); } else { + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.printconfig.clientmods")); for (int i = 0; i < clientsideMods.size(); i++) { appLogger.info(String.format(" %s", clientsideMods.get(i))); } + } appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.printconfig.copydirs")); + if (copyDirectories != null) { + for (int i = 0; i < copyDirectories.size(); i++) { appLogger.info(String.format(" %s", copyDirectories.get(i))); } - } else { appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.printconfig.copydirs")); } + + } else { + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.printconfig.copydirs")); + } appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.server"), installServer)); appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.javapath"), javaInstallPath)); @@ -564,12 +603,19 @@ public class Configuration { */ boolean checkModpackDir(String modpackDir) { boolean configCorrect = false; + if (modpackDir.equals("")) { + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkmodpackdir")); + } else if (!(new File(modpackDir).isDirectory())) { + appLogger.warn(String.format(localizationManager.getLocalizedString("configcheck.log.warn.checkmodpackdir"), modpackDir)); + } else { + configCorrect = true; + } return configCorrect; } @@ -581,13 +627,20 @@ public class Configuration { */ boolean checkCopyDirs(List<String> copyDirs, String modpackDir) { boolean configCorrect = true; + if (copyDirs.isEmpty()) { + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkcopydirs.empty")); configCorrect = false; + } else { + for (int i = 0; i < copyDirs.size(); i++) { + File directory = new File(String.format("%s/%s", modpackDir, copyDirs.get(i))); + if (!directory.exists() || !directory.isDirectory()) { + appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.checkcopydirs.notfound"), directory.getAbsolutePath())); configCorrect = false; } @@ -602,15 +655,22 @@ public class Configuration { */ String getJavaPath(String enteredPath) { String autoJavaPath; + if (enteredPath.equals("")) { + appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.getjavapath.empty")); autoJavaPath = String.format("%s/bin/java",System.getProperty("java.home").replace("\\", "/")); + if (autoJavaPath.startsWith("C:")) { + autoJavaPath = String.format("%s.exe", autoJavaPath); } + appLogger.warn(String.format(localizationManager.getLocalizedString("configcheck.log.warn.getjavapath.set"), autoJavaPath)); return autoJavaPath; + } else { + appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.warn.getjavapath.set"), enteredPath)); return enteredPath; } @@ -622,10 +682,15 @@ public class Configuration { */ boolean checkJavaPath(String pathToJava) { boolean configCorrect = false; + if (new File(pathToJava).exists() && pathToJava.endsWith("java.exe")) { + configCorrect = true; + } else if (new File(pathToJava).exists() && pathToJava.endsWith("java")) { + configCorrect = true; + } else { appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkjavapath")); } @@ -638,9 +703,13 @@ public class Configuration { */ boolean checkModloader(String modloader) { boolean configCorrect = false; + if (modloader.equalsIgnoreCase("Forge") || modloader.equalsIgnoreCase("Fabric")) { + configCorrect = true; + } else { + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkmodloader")); } return configCorrect; @@ -652,9 +721,13 @@ public class Configuration { */ String setModloader(String modloader) { String returnLoader = null; + if (modloader.equalsIgnoreCase("Forge")) { + returnLoader = "Forge"; + } else if (modloader.equalsIgnoreCase("Fabric")) { + returnLoader = "Fabric"; } return returnLoader; @@ -667,10 +740,15 @@ public class Configuration { */ boolean checkModloaderVersion(String modloader, String modloaderVersion) { boolean isVersionCorrect = false; + if (modloader.equalsIgnoreCase("Forge") && isForgeVersionCorrect(modloaderVersion)) { + isVersionCorrect = true; + } else if (modloader.equalsIgnoreCase("Fabric") && isFabricVersionCorrect(modloaderVersion)) { + isVersionCorrect = true; + } else { appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkmodloaderversion")); } @@ -691,36 +769,50 @@ public class Configuration { try { downloadManifestOutputStream = new FileOutputStream("mcmanifest.json"); } catch (FileNotFoundException ex) { + appLogger.debug(localizationManager.getLocalizedString("configcheck.log.debug.isminecraftversioncorrect"), ex); + File file = new File("mcmanifest.json"); + if (!file.exists()) { + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isminecraftversioncorrect.create")); boolean jsonCreated = file.createNewFile(); + if (jsonCreated) { + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isminecraftversioncorrect.created")); + } else { + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isminecraftversioncorrect.parse")); } } downloadManifestOutputStream = new FileOutputStream("mcmanifest.json"); } FileChannel downloadManifestOutputStreamChannel = downloadManifestOutputStream.getChannel(); + downloadManifestOutputStream.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE); downloadManifestOutputStream.flush(); downloadManifestOutputStream.close(); + readableByteChannel.close(); downloadManifestOutputStreamChannel.close(); File manifestJsonFile = new File("mcmanifest.json"); Scanner jsonReader = new Scanner(manifestJsonFile); + String jsonData = jsonReader.nextLine(); jsonReader.close(); + jsonData = jsonData.replaceAll("\\s", ""); boolean contains = jsonData.trim().contains(String.format("\"id\":\"%s\"", minecraftVersion)); manifestJsonFile.deleteOnExit(); + return contains; } catch (Exception ex) { + appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.isminecraftversioncorrect.validate"), minecraftVersion), ex); return false; } @@ -737,19 +829,27 @@ public class Configuration { boolean isFabricVersionCorrect(String fabricVersion) { try { URL manifestJsonURL = new URL(getFabricManifestUrl()); + ReadableByteChannel readableByteChannel = Channels.newChannel(manifestJsonURL.openStream()); + FileOutputStream downloadManifestOutputStream; try { downloadManifestOutputStream = new FileOutputStream("fabric-manifest.xml"); } catch (FileNotFoundException ex) { + appLogger.debug(localizationManager.getLocalizedString("configcheck.log.debug.isfabricversioncorrect"), ex); File file = new File("fabric-manifest.xml"); + if (!file.exists()){ + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isfabricversioncorrect.create")); boolean jsonCreated = file.createNewFile(); + if (jsonCreated) { + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isfabricversioncorrect.created")); + } else { appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isfabricversioncorrect.parse")); } @@ -757,29 +857,42 @@ public class Configuration { downloadManifestOutputStream = new FileOutputStream("fabric-manifest.xml"); } FileChannel downloadManifestOutputStreamChannel = downloadManifestOutputStream.getChannel(); + downloadManifestOutputStream.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE); downloadManifestOutputStream.flush(); downloadManifestOutputStream.close(); + readableByteChannel.close(); downloadManifestOutputStreamChannel.close(); File manifestXMLFile = new File("fabric-manifest.xml"); Scanner xmlReader = new Scanner(manifestXMLFile); + ArrayList<String> dataList = new ArrayList<>(); + while (xmlReader.hasNextLine()) { dataList.add(xmlReader.nextLine()); } + String[] dataArray = new String[dataList.size()]; + String manifestXML; + dataList.toArray(dataArray); + manifestXML = Arrays.toString(dataArray); + xmlReader.close(); + manifestXML = manifestXML.replaceAll("\\s", ""); boolean contains = manifestXML.trim().contains(String.format("%s", fabricVersion)); + manifestXMLFile.deleteOnExit(); + return contains; } catch (Exception ex) { + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isfabricversioncorrect.validate"), ex); return false; } @@ -796,44 +909,67 @@ public class Configuration { FileOutputStream downloadManifestOutputStream; try { + downloadManifestOutputStream = new FileOutputStream("forge-manifest.json"); + } catch (FileNotFoundException ex) { + appLogger.debug(localizationManager.getLocalizedString("configcheck.log.debug.isforgeversioncorrect"), ex); File file = new File("forge-manifest.json"); + if (!file.exists()){ + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isforgeversioncorrect.create")); + boolean jsonCreated = file.createNewFile(); + if (jsonCreated) { + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isforgeversioncorrect.created")); } else { + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isforgeversioncorrect.parse")); } } downloadManifestOutputStream = new FileOutputStream("forge-manifest.json"); } FileChannel downloadManifestOutputStreamChannel = downloadManifestOutputStream.getChannel(); + downloadManifestOutputStream.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE); downloadManifestOutputStream.flush(); downloadManifestOutputStream.close(); + readableByteChannel.close(); downloadManifestOutputStreamChannel.close(); File manifestJsonFile = new File("forge-manifest.json"); + manifestJsonFile.deleteOnExit(); + Scanner jsonReader = new Scanner(manifestJsonFile); + ArrayList<String> dataList = new ArrayList<>(); + while (jsonReader.hasNextLine()) { dataList.add(jsonReader.nextLine()); } + String[] dataArray = new String[dataList.size()]; + String manifestJSON; + dataList.toArray(dataArray); + manifestJSON = Arrays.toString(dataArray); + jsonReader.close(); + manifestJSON = manifestJSON.replaceAll("\\s", ""); return manifestJSON.trim().contains(String.format("%s", forgeVersion)); + } catch (Exception ex) { + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isforgeversioncorrect.validate"), ex); return false; } @@ -878,19 +1014,19 @@ public class Configuration { * Generate new configuration file from CLI input. Prompts user to enter config file values and then generates a config file with values entered by user. */ void createConfigurationFile() { - List<String> clientMods, - copyDirs; + List<String> clientMods, copyDirs; clientMods = new ArrayList<>(0); copyDirs = new ArrayList<>(0); - String[] tmpClientMods, - tmpCopyDirs; + String[] tmpClientMods, tmpCopyDirs; + boolean includeServerInstallation, includeServerIcon, includeServerProperties, includeStartScripts, includeZipCreation; + String modpackDir, javaPath, minecraftVersion, @@ -899,6 +1035,7 @@ public class Configuration { tmpModpackDir; Scanner reader = new Scanner(System.in); + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.start"), "-cgen")); do { //--------------------------------------------------------------------------------------------MODPACK DIRECTORY--------- @@ -1151,6 +1288,7 @@ public class Configuration { boolean configWritten = false; + //Griefed: What the fuck. This reads like someone having a stroke. What have I created here? String configString = String.format( "%s\"%s\"\n\n%s[%s]\n\n%s[%s]\n\n%s%b\n\n%s\"%s\"\n\n%s\"%s\"\n\n%s\"%s\"\n\n%s\"%s\"\n\n%s%b\n\n%s%b\n\n%s%b\n\n%s%b", localizationManager.getLocalizedString("filessetup.writeconfigtofile.modpackdir"), diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index 17fe114df..4fcd2c4e3 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -1,5 +1,6 @@ package de.griefed.serverpackcreator; +import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; import de.griefed.serverpackcreator.i18n.LocalizationManager; import net.fabricmc.installer.util.LauncherMeta; import org.apache.logging.log4j.LogManager; @@ -35,6 +36,7 @@ public class CreateServerPack { private static final Logger installerLogger = LogManager.getLogger("InstallerLogger"); private Configuration configuration; + private CurseCreateModpack curseCreateModpack; private LocalizationManager localizationManager; private final File propertiesFile = new File("server.properties"); private final File iconFile = new File("server-icon.png"); @@ -44,15 +46,21 @@ public class CreateServerPack { private final File fabricLinuxFile = new File("start-fabric.sh"); - public CreateServerPack(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration) { + public CreateServerPack(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration, CurseCreateModpack injectedCurseCreateModpack) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); } else { this.localizationManager = injectedLocalizationManager; } + if (injectedCurseCreateModpack == null) { + this.curseCreateModpack = new CurseCreateModpack(localizationManager); + } else { + this.curseCreateModpack = injectedCurseCreateModpack; + } + if (injectedConfiguration == null) { - this.configuration = new Configuration(localizationManager); + this.configuration = new Configuration(localizationManager, curseCreateModpack); } else { this.configuration = injectedConfiguration; } diff --git a/src/main/java/de/griefed/serverpackcreator/Main.java b/src/main/java/de/griefed/serverpackcreator/Main.java index e5681cef5..91d94e184 100644 --- a/src/main/java/de/griefed/serverpackcreator/Main.java +++ b/src/main/java/de/griefed/serverpackcreator/Main.java @@ -1,5 +1,6 @@ package de.griefed.serverpackcreator; +import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; import de.griefed.serverpackcreator.gui.CreateGui; import de.griefed.serverpackcreator.i18n.IncorrectLanguageException; import de.griefed.serverpackcreator.i18n.LocalizationManager; @@ -35,10 +36,11 @@ public class Main { localizationManager.checkLocaleFile(); } - Configuration configuration = new Configuration(localizationManager); + CurseCreateModpack curseCreateModpack = new CurseCreateModpack(localizationManager); + Configuration configuration = new Configuration(localizationManager, curseCreateModpack); FilesSetup filesSetup = new FilesSetup(localizationManager); - CreateServerPack createServerPack = new CreateServerPack(localizationManager, configuration); - CreateGui tabbedPane = new CreateGui(localizationManager, configuration); + CreateServerPack createServerPack = new CreateServerPack(localizationManager, configuration, curseCreateModpack); + CreateGui tabbedPane = new CreateGui(localizationManager, configuration, curseCreateModpack); String jarPath = null, jarName = null, diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java index 8eddcafab..1fc555ad5 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java @@ -4,6 +4,7 @@ import com.typesafe.config.Config; import com.typesafe.config.ConfigException; import com.typesafe.config.ConfigFactory; import de.griefed.serverpackcreator.Configuration; +import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -23,8 +24,9 @@ public class CreateGui extends JPanel { private LocalizationManager localizationManager; private Configuration configuration; + private CurseCreateModpack curseCreateModpack; - public CreateGui(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration) { + public CreateGui(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration, CurseCreateModpack injectectedCurseCreateModpack) { super(new GridLayout(1, 1)); if (injectedLocalizationManager == null) { @@ -34,14 +36,20 @@ public class CreateGui extends JPanel { } if (injectedConfiguration == null) { - this.configuration = new Configuration(localizationManager); + this.curseCreateModpack = new CurseCreateModpack(localizationManager); + } else { + this.curseCreateModpack = injectectedCurseCreateModpack; + } + + if (injectedConfiguration == null) { + this.configuration = new Configuration(localizationManager, curseCreateModpack); } else { this.configuration = injectedConfiguration; } JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); - tabbedPane.addTab(localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.title"), null, new CreateServerPackTab(localizationManager, configuration).createServerPackTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.tip")); + tabbedPane.addTab(localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.title"), null, new CreateServerPackTab(localizationManager, configuration, curseCreateModpack).createServerPackTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.tip")); tabbedPane.setMnemonicAt(0, KeyEvent.VK_1); tabbedPane.addTab(localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.title"), null, new ServerPackCreatorLogTab(localizationManager).serverPackCreatorLogTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.tip")); @@ -110,7 +118,7 @@ public class CreateGui extends JPanel { banner.setOpaque(false); frame.add(banner, BorderLayout.PAGE_START); - frame.add(new CreateGui(localizationManager, configuration), BorderLayout.CENTER); + frame.add(new CreateGui(localizationManager, configuration, curseCreateModpack), BorderLayout.CENTER); frame.setPreferredSize(windowDimension); frame.setMaximumSize(windowDimension); diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java index 9aa89671c..718c120c8 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java @@ -4,6 +4,7 @@ import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; import de.griefed.serverpackcreator.Configuration; import de.griefed.serverpackcreator.CreateServerPack; +import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.commons.io.input.Tailer; import org.apache.commons.io.input.TailerListenerAdapter; @@ -36,8 +37,9 @@ public class CreateServerPackTab extends Component { private Configuration configuration; private LocalizationManager localizationManager; + private CurseCreateModpack curseCreateModpack; - public CreateServerPackTab(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration) { + public CreateServerPackTab(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration, CurseCreateModpack injectectedCurseCreateModpack) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); } else { @@ -45,7 +47,13 @@ public class CreateServerPackTab extends Component { } if (injectedConfiguration == null) { - this.configuration = new Configuration(localizationManager); + this.curseCreateModpack = new CurseCreateModpack(localizationManager); + } else { + this.curseCreateModpack = injectectedCurseCreateModpack; + } + + if (injectedConfiguration == null) { + this.configuration = new Configuration(localizationManager, curseCreateModpack); } else { this.configuration = injectedConfiguration; } @@ -565,7 +573,7 @@ public class CreateServerPackTab extends Component { final ExecutorService executorService = Executors.newSingleThreadExecutor(); executorService.execute(() -> { - CreateServerPack createServerPack = new CreateServerPack(localizationManager, configuration); + CreateServerPack createServerPack = new CreateServerPack(localizationManager, configuration, curseCreateModpack); if (createServerPack.run()) { tailer.stop(); diff --git a/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java b/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java index 6ba502407..117ed48ff 100644 --- a/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java +++ b/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java @@ -1,6 +1,7 @@ package de.griefed.serverpackcreator; import com.typesafe.config.ConfigFactory; +import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Assertions; @@ -23,11 +24,13 @@ class ConfigCheckTest { Logger appLogger; private Configuration configCheck; + private CurseCreateModpack curseCreateModpack; private LocalizationManager localizationManager; ConfigCheckTest() { localizationManager = new LocalizationManager(); - configCheck = new Configuration(localizationManager); + curseCreateModpack = new CurseCreateModpack(localizationManager); + configCheck = new Configuration(localizationManager, curseCreateModpack); } @BeforeEach diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java index 9e5885b9c..7504e838b 100644 --- a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -1,5 +1,6 @@ package de.griefed.serverpackcreator; +import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Assertions; @@ -26,13 +27,15 @@ class CreateServerPackTest { private CreateServerPack createServerPack; private FilesSetup filesSetup; + private CurseCreateModpack curseCreateModpack; private LocalizationManager localizationManager; private Configuration configCheck; CreateServerPackTest() { localizationManager = new LocalizationManager(); - configCheck = new Configuration(localizationManager); - createServerPack = new CreateServerPack(localizationManager, configCheck); + curseCreateModpack = new CurseCreateModpack(localizationManager); + configCheck = new Configuration(localizationManager, curseCreateModpack); + createServerPack = new CreateServerPack(localizationManager, configCheck, curseCreateModpack); filesSetup = new FilesSetup(localizationManager); } diff --git a/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java b/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java index 7ae65770c..cbccd265a 100644 --- a/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java +++ b/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java @@ -1,5 +1,6 @@ package de.griefed.serverpackcreator; +import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Assertions; @@ -23,12 +24,14 @@ class FilesSetupTest { private FilesSetup filesSetup; private Configuration configCheck; + private CurseCreateModpack curseCreateModpack; private LocalizationManager localizationManager; FilesSetupTest() { localizationManager = new LocalizationManager(); filesSetup = new FilesSetup(localizationManager); - configCheck = new Configuration(localizationManager); + curseCreateModpack = new CurseCreateModpack(localizationManager); + configCheck = new Configuration(localizationManager, curseCreateModpack); } @BeforeEach -- GitLab From 545fdb7a1a06f5df39111772c7373d94dcd0d0e4 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 30 Apr 2021 07:53:17 +0200 Subject: [PATCH 15/91] refactor(DI): Include license excerpt at top of source files --- .../serverpackcreator/Configuration.java | 22 ++++++++++++++++++- .../serverpackcreator/CreateServerPack.java | 21 +++++++++++++++++- .../griefed/serverpackcreator/FilesSetup.java | 22 ++++++++++++++++++- .../de/griefed/serverpackcreator/Main.java | 20 +++++++++++++++++ .../curseforgemodpack/CurseCreateModpack.java | 20 +++++++++++++++++ .../curseforgemodpack/CurseFiles.java | 20 +++++++++++++++++ .../curseforgemodpack/CurseMinecraft.java | 20 +++++++++++++++++ .../curseforgemodpack/CurseModLoaders.java | 20 +++++++++++++++++ .../curseforgemodpack/CurseModpack.java | 20 +++++++++++++++++ .../curseforgemodpack/CurseSplines.java | 20 +++++++++++++++++ .../serverpackcreator/gui/AboutTab.java | 20 +++++++++++++++++ .../serverpackcreator/gui/CreateGui.java | 20 +++++++++++++++++ .../gui/CreateServerPackTab.java | 20 +++++++++++++++++ .../gui/ModloaderInstallerLogTab.java | 20 +++++++++++++++++ .../gui/ServerPackCreatorLogTab.java | 20 +++++++++++++++++ .../i18n/IncorrectLanguageException.java | 20 +++++++++++++++++ .../i18n/LocalizationManager.java | 20 +++++++++++++++++ .../serverpackcreator/ConfigCheckTest.java | 20 +++++++++++++++++ .../CreateServerPackTest.java | 20 +++++++++++++++++ .../serverpackcreator/FilesSetupTest.java | 20 +++++++++++++++++ .../CurseCreateModpackTest.java | 21 +++++++++++++++++- 21 files changed, 422 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/Configuration.java b/src/main/java/de/griefed/serverpackcreator/Configuration.java index f30962f0f..8414b3b76 100644 --- a/src/main/java/de/griefed/serverpackcreator/Configuration.java +++ b/src/main/java/de/griefed/serverpackcreator/Configuration.java @@ -1,3 +1,22 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ package de.griefed.serverpackcreator; import com.fasterxml.jackson.databind.DeserializationFeature; @@ -27,7 +46,7 @@ import java.nio.channels.ReadableByteChannel; import java.nio.file.Files; import java.nio.file.Paths; import java.util.*; - +//TODO: Write table of contents public class Configuration { private static final Logger appLogger = LogManager.getLogger(Configuration.class); @@ -1289,6 +1308,7 @@ public class Configuration { boolean configWritten = false; //Griefed: What the fuck. This reads like someone having a stroke. What have I created here? + //TODO: Fix language keys and config variable String configString = String.format( "%s\"%s\"\n\n%s[%s]\n\n%s[%s]\n\n%s%b\n\n%s\"%s\"\n\n%s\"%s\"\n\n%s\"%s\"\n\n%s\"%s\"\n\n%s%b\n\n%s%b\n\n%s%b\n\n%s%b", localizationManager.getLocalizedString("filessetup.writeconfigtofile.modpackdir"), diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index 4fcd2c4e3..d229571f4 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -1,3 +1,22 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ package de.griefed.serverpackcreator; import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; @@ -30,7 +49,7 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; - +//TODO: Write table of contents public class CreateServerPack { private static final Logger appLogger = LogManager.getLogger(FilesSetup.class); private static final Logger installerLogger = LogManager.getLogger("InstallerLogger"); diff --git a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java index 24212bf44..95f0e4437 100644 --- a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java +++ b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator; import de.griefed.serverpackcreator.i18n.LocalizationManager; @@ -6,7 +26,7 @@ import org.apache.logging.log4j.Logger; import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; - +//TODO: Write table of contents public class FilesSetup { private static final Logger appLogger = LogManager.getLogger(FilesSetup.class); diff --git a/src/main/java/de/griefed/serverpackcreator/Main.java b/src/main/java/de/griefed/serverpackcreator/Main.java index 91d94e184..71caa4610 100644 --- a/src/main/java/de/griefed/serverpackcreator/Main.java +++ b/src/main/java/de/griefed/serverpackcreator/Main.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator; import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java index f226cd96e..f1ac1d4e7 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.databind.DeserializationFeature; diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java index 7f9437a75..623d025a0 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java index e40d86573..b546c0d9c 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java index b7f2f2e54..b81c4d78e 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java index 5eb52557a..dbd67d5f1 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java index 145cd7ac0..978a86ade 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator.curseforgemodpack; import java.util.Random; diff --git a/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java b/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java index 0107fd9ee..5f94c6ce5 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator.gui; import de.griefed.serverpackcreator.i18n.LocalizationManager; diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java index 1fc555ad5..16a5ed96c 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator.gui; import com.typesafe.config.Config; diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java index 718c120c8..f6a2f7f86 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator.gui; import com.typesafe.config.Config; diff --git a/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java b/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java index 7cb474cf3..4b401bd46 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator.gui; import de.griefed.serverpackcreator.i18n.LocalizationManager; diff --git a/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java b/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java index 129cf9f88..77f6125d2 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator.gui; import de.griefed.serverpackcreator.i18n.LocalizationManager; diff --git a/src/main/java/de/griefed/serverpackcreator/i18n/IncorrectLanguageException.java b/src/main/java/de/griefed/serverpackcreator/i18n/IncorrectLanguageException.java index bbb412e8c..8df94cf18 100644 --- a/src/main/java/de/griefed/serverpackcreator/i18n/IncorrectLanguageException.java +++ b/src/main/java/de/griefed/serverpackcreator/i18n/IncorrectLanguageException.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator.i18n; public class IncorrectLanguageException extends Exception { diff --git a/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java b/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java index f946a950d..8b5db3fce 100644 --- a/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java +++ b/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator.i18n; import org.apache.logging.log4j.LogManager; diff --git a/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java b/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java index 117ed48ff..062b028d8 100644 --- a/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java +++ b/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator; import com.typesafe.config.ConfigFactory; diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java index 7504e838b..1373bf901 100644 --- a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator; import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; diff --git a/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java b/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java index cbccd265a..ec381a0d2 100644 --- a/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java +++ b/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java @@ -1,3 +1,23 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator; import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; diff --git a/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java b/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java index e48422806..f39c6ec3a 100644 --- a/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java @@ -1,8 +1,27 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ + package de.griefed.serverpackcreator.curseforgemodpack; import com.therandomlabs.curseapi.CurseAPI; import com.therandomlabs.curseapi.CurseException; -import de.griefed.serverpackcreator.FilesSetup; import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Assertions; -- GitLab From 680ad86f0371e158bb7a981109ae08c3da367c8e Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 30 Apr 2021 08:41:49 +0200 Subject: [PATCH 16/91] refactor(DI): Fix language keys and writeConfigToFile --- .../serverpackcreator/Configuration.java | 53 +++++++++---------- .../resources/lang/lang_de_de.properties | 24 ++++----- .../resources/lang/lang_en_us.properties | 25 +++++---- .../resources/lang/lang_uk_ua.properties | 24 ++++----- 4 files changed, 62 insertions(+), 64 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/Configuration.java b/src/main/java/de/griefed/serverpackcreator/Configuration.java index 8414b3b76..5d35e4edc 100644 --- a/src/main/java/de/griefed/serverpackcreator/Configuration.java +++ b/src/main/java/de/griefed/serverpackcreator/Configuration.java @@ -17,6 +17,7 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ +//TODO: Write table of contents package de.griefed.serverpackcreator; import com.fasterxml.jackson.databind.DeserializationFeature; @@ -46,7 +47,7 @@ import java.nio.channels.ReadableByteChannel; import java.nio.file.Files; import java.nio.file.Paths; import java.util.*; -//TODO: Write table of contents +//TODO: Write docs for class public class Configuration { private static final Logger appLogger = LogManager.getLogger(Configuration.class); @@ -1308,33 +1309,31 @@ public class Configuration { boolean configWritten = false; //Griefed: What the fuck. This reads like someone having a stroke. What have I created here? - //TODO: Fix language keys and config variable String configString = String.format( - "%s\"%s\"\n\n%s[%s]\n\n%s[%s]\n\n%s%b\n\n%s\"%s\"\n\n%s\"%s\"\n\n%s\"%s\"\n\n%s\"%s\"\n\n%s%b\n\n%s%b\n\n%s%b\n\n%s%b", - localizationManager.getLocalizedString("filessetup.writeconfigtofile.modpackdir"), - modpackDir.replace("\\","/"), - localizationManager.getLocalizedString("filessetup.writeconfigtofile.clientmods"), - clientMods, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.copydirs"), - copyDirs, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.includeserverinstallation"), - includeServer, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.javapath"), - javaPath.replace("\\","/"), - localizationManager.getLocalizedString("filessetup.writeconfigtofile.minecraftversion"), - minecraftVersion, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.modloader"), - modLoader, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.modloaderversion"), - modLoaderVersion, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.includeservericon"), - includeIcon, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.includeserverproperties"), - includeProperties, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.includestartscripts"), - includeScripts, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.includezipcreation"), - includeZip + "%s\nmodpackDir = \"%s\"\n\n" + + "%s\nclientMods = [%s]\n\n" + + "%s\ncopyDirs =[%s]\n\n" + + "%s\nincludeServerInstallation = %b\n\n" + + "%s\njavaPath = \"%s\"\n\n" + + "%s\nminecraftVersion = \"%s\"\n\n" + + "%s\nmodLoader = \"%s\"\n\n" + + "%s\nmodLoaderVersion = \"%s\"\n\n" + + "%s\nincludeServerIcon = %b\n\n" + + "%s\nincludeServerProperties = %b\n\n" + + "%s\nincludeStartScripts = %b\n\n" + + "%s\nincludeZipCreation = %b\n", + localizationManager.getLocalizedString("filessetup.writeconfigtofile.modpackdir"), modpackDir.replace("\\","/"), + localizationManager.getLocalizedString("filessetup.writeconfigtofile.clientmods"), clientMods, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.copydirs"), copyDirs, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.includeserverinstallation"), includeServer, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.javapath"), javaPath.replace("\\","/"), + localizationManager.getLocalizedString("filessetup.writeconfigtofile.minecraftversion"), minecraftVersion, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.modloader"), modLoader, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.modloaderversion"), modLoaderVersion, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.includeservericon"), includeIcon, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.includeserverproperties"), includeProperties, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.includestartscripts"), includeScripts, + localizationManager.getLocalizedString("filessetup.writeconfigtofile.includezipcreation"), includeZip ); if (!isTemporary) { diff --git a/src/main/resources/de/griefed/resources/lang/lang_de_de.properties b/src/main/resources/de/griefed/resources/lang/lang_de_de.properties index e9d1fd1d9..cbb003a30 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_de_de.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_de_de.properties @@ -86,18 +86,18 @@ createserverpack.gui.about.issue=Create an issue on GitHub. createserverpack.gui.about.discord=Get support and chat on Griefed's Discord server. # OTHER -filessetup.writeconfigtofile.modpackdir=# Path to your modpack. Can be either relative or absolute.\n# Example: \"./Some Modpack\" or \"C:/Minecraft/Some Modpack\"\n# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7: \"390331,3215793\"\nmodpackDir = -filessetup.writeconfigtofile.clientmods=# List of client-only mods to delete from serverpack.\n# No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge!\n# Example: [AmbientSounds,ClientTweaks,PackMenu,BetterAdvancement,jeiintegration]\nclientMods = -filessetup.writeconfigtofile.copydirs=# Name of directories to include in serverpack.\n# When specifying \"saves/world_name\", \"world_name\" will be copied to the base directory of the serverpack\n# for immediate use with the server. Automatically set when projectID,fileID for modpackDir has been specified.\n# Example: [config,mods,scripts]\ncopyDirs = -filessetup.writeconfigtofile.includeserverinstallation=# Whether to install a Forge/Fabric server for the serverpack. Must be true or false.\n# Default value is true.\nincludeServerInstallation = -filessetup.writeconfigtofile.javapath=# Path to the Java executable. On Linux systems it would be something like \"/usr/bin/java\".\n# Only needed if includeServerInstallation is true.\njavaPath = -filessetup.writeconfigtofile.minecraftversion=# Which Minecraft version to use. Example: \"1.16.5\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true.\nminecraftVersion = -filessetup.writeconfigtofile.modloader=# Which modloader to install. Must be either \"Forge\" or \"Fabric\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true.\nmodLoader = -filessetup.writeconfigtofile.modloaderversion=# The version of the modloader you want to install. Example for Fabric=\"0.7.3\", example for Forge=\"36.0.15\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true.\nmodLoaderVersion = -filessetup.writeconfigtofile.includeservericon=# Include a server-icon.png in your serverpack. Must be true or false.\n# Customize server-icon.png in ./server_files.\n# Dimensions must be 64x64!\n# Default value is true.\nincludeServerIcon = -filessetup.writeconfigtofile.includeserverproperties=# Include a server.properties in your serverpack. Must be true or false.\n# Customize server.properties in ./server_files.\n# If no server.properties is provided but is set to true, a default one will be provided.\n# Default value is true.\nincludeServerProperties = -filessetup.writeconfigtofile.includestartscripts=# Include start scripts for windows and linux systems. Must be true or false.\n# Customize files beginning with \"start-\" in ./server_files.\n# Default value is true.\nincludeStartScripts = -filessetup.writeconfigtofile.includezipcreation=# Create zip-archive of serverpack. Must be true or false.\n# Default value is true.\nincludeZipCreation = +filessetup.writeconfigtofile.modpackdir=# Path to your modpack. Can be either relative or absolute.\n# Example: \"./Some Modpack\" or \"C:/Minecraft/Some Modpack\"\n# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7: \"390331,3215793\" +filessetup.writeconfigtofile.clientmods=# List of client-only mods to delete from serverpack.\n# No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge!\n# Example: [AmbientSounds,ClientTweaks,PackMenu,BetterAdvancement,jeiintegration] +filessetup.writeconfigtofile.copydirs=# Name of directories to include in serverpack.\n# When specifying \"saves/world_name\", \"world_name\" will be copied to the base directory of the serverpack\n# for immediate use with the server. Automatically set when projectID,fileID for modpackDir has been specified.\n# Example: [config,mods,scripts] +filessetup.writeconfigtofile.includeserverinstallation=# Whether to install a Forge/Fabric server for the serverpack. Must be true or false.\n# Default value is true. +filessetup.writeconfigtofile.javapath=# Path to the Java executable. On Linux systems it would be something like \"/usr/bin/java\".\n# Only needed if includeServerInstallation is true. +filessetup.writeconfigtofile.minecraftversion=# Which Minecraft version to use. Example: \"1.16.5\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true. +filessetup.writeconfigtofile.modloader=# Which modloader to install. Must be either \"Forge\" or \"Fabric\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true. +filessetup.writeconfigtofile.modloaderversion=# The version of the modloader you want to install. Example for Fabric=\"0.7.3\", example for Forge=\"36.0.15\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true. +filessetup.writeconfigtofile.includeservericon=# Include a server-icon.png in your serverpack. Must be true or false.\n# Customize server-icon.png in ./server_files.\n# Dimensions must be 64x64!\n# Default value is true. +filessetup.writeconfigtofile.includeserverproperties=# Include a server.properties in your serverpack. Must be true or false.\n# Customize server.properties in ./server_files.\n# If no server.properties is provided but is set to true, a default one will be provided.\n# Default value is true. +filessetup.writeconfigtofile.includestartscripts=# Include start scripts for windows and linux systems. Must be true or false.\n# Customize files beginning with \"start-\" in ./server_files.\n# Default value is true. +filessetup.writeconfigtofile.includezipcreation=# Create zip-archive of serverpack. Must be true or false.\n# Default value is true. # LOGS ## Error logs diff --git a/src/main/resources/de/griefed/resources/lang/lang_en_us.properties b/src/main/resources/de/griefed/resources/lang/lang_en_us.properties index affa4c77d..0f5b7cf18 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_en_us.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_en_us.properties @@ -1,4 +1,3 @@ -# suppress inspection "TrailingSpacesInProperty" for whole file # Untranslated language name (in English) localeUnlocalizedName=English (United States) # Translated language name (in language you translating the app currently to.) @@ -87,18 +86,18 @@ createserverpack.gui.about.issue=Create an issue on GitHub. createserverpack.gui.about.discord=Get support and chat on Griefed's Discord server. # OTHER -filessetup.writeconfigtofile.modpackdir=# Path to your modpack. Can be either relative or absolute.\n# Example: \"./Some Modpack\" or \"C:/Minecraft/Some Modpack\"\n# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7: \"390331,3215793\"\nmodpackDir = -filessetup.writeconfigtofile.clientmods=# List of client-only mods to delete from serverpack.\n# No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge!\n# Example: [AmbientSounds,ClientTweaks,PackMenu,BetterAdvancement,jeiintegration]\nclientMods = -filessetup.writeconfigtofile.copydirs=# Name of directories to include in serverpack.\n# When specifying \"saves/world_name\", \"world_name\" will be copied to the base directory of the serverpack\n# for immediate use with the server. Automatically set when projectID,fileID for modpackDir has been specified.\n# Example: [config,mods,scripts]\ncopyDirs = -filessetup.writeconfigtofile.includeserverinstallation=# Whether to install a Forge/Fabric server for the serverpack. Must be true or false.\n# Default value is true.\nincludeServerInstallation = -filessetup.writeconfigtofile.javapath=# Path to the Java executable. On Linux systems it would be something like \"/usr/bin/java\".\n# Only needed if includeServerInstallation is true.\njavaPath = -filessetup.writeconfigtofile.minecraftversion=# Which Minecraft version to use. Example: \"1.16.5\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true.\nminecraftVersion = -filessetup.writeconfigtofile.modloader=# Which modloader to install. Must be either \"Forge\" or \"Fabric\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true.\nmodLoader = -filessetup.writeconfigtofile.modloaderversion=# The version of the modloader you want to install. Example for Fabric=\"0.7.3\", example for Forge=\"36.0.15\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true.\nmodLoaderVersion = -filessetup.writeconfigtofile.includeservericon=# Include a server-icon.png in your serverpack. Must be true or false.\n# Customize server-icon.png in ./server_files.\n# Dimensions must be 64x64!\n# Default value is true.\nincludeServerIcon = -filessetup.writeconfigtofile.includeserverproperties=# Include a server.properties in your serverpack. Must be true or false.\n# Customize server.properties in ./server_files.\n# If no server.properties is provided but is set to true, a default one will be provided.\n# Default value is true.\nincludeServerProperties = -filessetup.writeconfigtofile.includestartscripts=# Include start scripts for windows and linux systems. Must be true or false.\n# Customize files beginning with \"start-\" in ./server_files.\n# Default value is true.\nincludeStartScripts = -filessetup.writeconfigtofile.includezipcreation=# Create zip-archive of serverpack. Must be true or false.\n# Default value is true.\nincludeZipCreation = +filessetup.writeconfigtofile.modpackdir=# Path to your modpack. Can be either relative or absolute.\n# Example: \"./Some Modpack\" or \"C:/Minecraft/Some Modpack\"\n# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7: \"390331,3215793\" +filessetup.writeconfigtofile.clientmods=# List of client-only mods to delete from serverpack.\n# No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge!\n# Example: [AmbientSounds,ClientTweaks,PackMenu,BetterAdvancement,jeiintegration] +filessetup.writeconfigtofile.copydirs=# Name of directories to include in serverpack.\n# When specifying \"saves/world_name\", \"world_name\" will be copied to the base directory of the serverpack\n# for immediate use with the server. Automatically set when projectID,fileID for modpackDir has been specified.\n# Example: [config,mods,scripts] +filessetup.writeconfigtofile.includeserverinstallation=# Whether to install a Forge/Fabric server for the serverpack. Must be true or false.\n# Default value is true. +filessetup.writeconfigtofile.javapath=# Path to the Java executable. On Linux systems it would be something like \"/usr/bin/java\".\n# Only needed if includeServerInstallation is true. +filessetup.writeconfigtofile.minecraftversion=# Which Minecraft version to use. Example: \"1.16.5\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true. +filessetup.writeconfigtofile.modloader=# Which modloader to install. Must be either \"Forge\" or \"Fabric\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true. +filessetup.writeconfigtofile.modloaderversion=# The version of the modloader you want to install. Example for Fabric=\"0.7.3\", example for Forge=\"36.0.15\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true. +filessetup.writeconfigtofile.includeservericon=# Include a server-icon.png in your serverpack. Must be true or false.\n# Customize server-icon.png in ./server_files.\n# Dimensions must be 64x64!\n# Default value is true. +filessetup.writeconfigtofile.includeserverproperties=# Include a server.properties in your serverpack. Must be true or false.\n# Customize server.properties in ./server_files.\n# If no server.properties is provided but is set to true, a default one will be provided.\n# Default value is true. +filessetup.writeconfigtofile.includestartscripts=# Include start scripts for windows and linux systems. Must be true or false.\n# Customize files beginning with \"start-\" in ./server_files.\n# Default value is true. +filessetup.writeconfigtofile.includezipcreation=# Create zip-archive of serverpack. Must be true or false.\n# Default value is true. # LOGS ## Error logs diff --git a/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties b/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties index e62589791..8f9fbb81b 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties @@ -86,18 +86,18 @@ createserverpack.gui.about.issue=Create an issue on GitHub. createserverpack.gui.about.discord=Get support and chat on Griefed's Discord server. # OTHER -filessetup.writeconfigtofile.modpackdir=# Path to your modpack. Can be either relative or absolute.\n# Example: \"./Some Modpack\" or \"C:/Minecraft/Some Modpack\"\n# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7: \"390331,3215793\"\nmodpackDir = -filessetup.writeconfigtofile.clientmods=# List of client-only mods to delete from serverpack.\n# No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge!\n# Example: [AmbientSounds,ClientTweaks,PackMenu,BetterAdvancement,jeiintegration]\nclientMods = -filessetup.writeconfigtofile.copydirs=# Name of directories to include in serverpack.\n# When specifying \"saves/world_name\", \"world_name\" will be copied to the base directory of the serverpack\n# for immediate use with the server. Automatically set when projectID,fileID for modpackDir has been specified.\n# Example: [config,mods,scripts]\ncopyDirs = -filessetup.writeconfigtofile.includeserverinstallation=# Whether to install a Forge/Fabric server for the serverpack. Must be true or false.\n# Default value is true.\nincludeServerInstallation = -filessetup.writeconfigtofile.javapath=# Path to the Java executable. On Linux systems it would be something like \"/usr/bin/java\".\n# Only needed if includeServerInstallation is true.\njavaPath = -filessetup.writeconfigtofile.minecraftversion=# Which Minecraft version to use. Example: \"1.16.5\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true.\nminecraftVersion = -filessetup.writeconfigtofile.modloader=# Which modloader to install. Must be either \"Forge\" or \"Fabric\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true.\nmodLoader = -filessetup.writeconfigtofile.modloaderversion=# The version of the modloader you want to install. Example for Fabric=\"0.7.3\", example for Forge=\"36.0.15\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true.\nmodLoaderVersion = -filessetup.writeconfigtofile.includeservericon=# Include a server-icon.png in your serverpack. Must be true or false.\n# Customize server-icon.png in ./server_files.\n# Dimensions must be 64x64!\n# Default value is true.\nincludeServerIcon = -filessetup.writeconfigtofile.includeserverproperties=# Include a server.properties in your serverpack. Must be true or false.\n# Customize server.properties in ./server_files.\n# If no server.properties is provided but is set to true, a default one will be provided.\n# Default value is true.\nincludeServerProperties = -filessetup.writeconfigtofile.includestartscripts=# Include start scripts for windows and linux systems. Must be true or false.\n# Customize files beginning with \"start-\" in ./server_files.\n# Default value is true.\nincludeStartScripts = -filessetup.writeconfigtofile.includezipcreation=# Create zip-archive of serverpack. Must be true or false.\n# Default value is true.\nincludeZipCreation = +filessetup.writeconfigtofile.modpackdir=# Path to your modpack. Can be either relative or absolute.\n# Example: \"./Some Modpack\" or \"C:/Minecraft/Some Modpack\"\n# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7: \"390331,3215793\" +filessetup.writeconfigtofile.clientmods=# List of client-only mods to delete from serverpack.\n# No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge!\n# Example: [AmbientSounds,ClientTweaks,PackMenu,BetterAdvancement,jeiintegration] +filessetup.writeconfigtofile.copydirs=# Name of directories to include in serverpack.\n# When specifying \"saves/world_name\", \"world_name\" will be copied to the base directory of the serverpack\n# for immediate use with the server. Automatically set when projectID,fileID for modpackDir has been specified.\n# Example: [config,mods,scripts] +filessetup.writeconfigtofile.includeserverinstallation=# Whether to install a Forge/Fabric server for the serverpack. Must be true or false.\n# Default value is true. +filessetup.writeconfigtofile.javapath=# Path to the Java executable. On Linux systems it would be something like \"/usr/bin/java\".\n# Only needed if includeServerInstallation is true. +filessetup.writeconfigtofile.minecraftversion=# Which Minecraft version to use. Example: \"1.16.5\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true. +filessetup.writeconfigtofile.modloader=# Which modloader to install. Must be either \"Forge\" or \"Fabric\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true. +filessetup.writeconfigtofile.modloaderversion=# The version of the modloader you want to install. Example for Fabric=\"0.7.3\", example for Forge=\"36.0.15\".\n# Automatically set when projectID,fileID for modpackDir has been specified.\n# Only needed if includeServerInstallation is true. +filessetup.writeconfigtofile.includeservericon=# Include a server-icon.png in your serverpack. Must be true or false.\n# Customize server-icon.png in ./server_files.\n# Dimensions must be 64x64!\n# Default value is true. +filessetup.writeconfigtofile.includeserverproperties=# Include a server.properties in your serverpack. Must be true or false.\n# Customize server.properties in ./server_files.\n# If no server.properties is provided but is set to true, a default one will be provided.\n# Default value is true. +filessetup.writeconfigtofile.includestartscripts=# Include start scripts for windows and linux systems. Must be true or false.\n# Customize files beginning with \"start-\" in ./server_files.\n# Default value is true. +filessetup.writeconfigtofile.includezipcreation=# Create zip-archive of serverpack. Must be true or false.\n# Default value is true. # LOGS ## Error logs -- GitLab From 813f015d490356db237b6f286ca8ba8ceac4d603 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 30 Apr 2021 15:06:49 +0200 Subject: [PATCH 17/91] refactor(DI): Update javadocs --- .../de/griefed/serverpackcreator/Main.java | 40 +++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/Main.java b/src/main/java/de/griefed/serverpackcreator/Main.java index 71caa4610..3204ebd62 100644 --- a/src/main/java/de/griefed/serverpackcreator/Main.java +++ b/src/main/java/de/griefed/serverpackcreator/Main.java @@ -17,7 +17,6 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ - package de.griefed.serverpackcreator; import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; @@ -33,12 +32,47 @@ import java.net.URISyntaxException; import java.util.Arrays; import java.util.List; +/** + * <strong>Table of methods</strong> + * <p> + * {@link #main(String[])} + * <p> + * Depending on the passed commandline arguments and whether ServerPackCreator is run in a headless environment, + * one of the following modes will be entered:<p> + * <strong>-cgen</strong><p> + * When ServerPackCreator is run with the <code>-cgen</code>-argument, you will be guided through a step-by-step + * generation of a new configuration file.<p> + * This mode is also entered if:<p> + * ServerPackCreator is run with the <code>-cli</code>-argument <strong>AND</strong> if no configuration-file exists.<p> + * ServerPackCreator can not find any configuration-file when run in cli-mode, for whatever reason. + * <p> + * <strong>-cli</strong><p> + * When ServerPackCreator is run with the <code>-cli</code>-argument, it will be executed in commandline-mode only. + * Use this argument if you explicitly want to execute ServerPackCreator without GUI. * + * <p> + * <strong>-lang</strong><p> + * Specifies the locale with which ServerPackCreator is run. If no locale is specified or if this argument is not + * used, ServerPackCreator will use the default locale <code>en_us</code><p> + * Correct usage is:<p> + * <code>-lang your_locale</code><p> + * Examples:<p> + * <code>-lang de_de</code><p> + * <code>-lang en_us</code><p> + * <strong>Headless environments</strong><p> + * If ServerPackCreator is run in a headless environment, without any graphical environment, it should automatically + * enter <code>-cli</code>-mode. + */ public class Main { private static final Logger appLogger = LogManager.getLogger(Main.class); /** - * Init and "main" has been moved to Handler-class. Main now only inits the LocalizationManager and passes the cli args, if any, to Handler, which then runs the usual operations as they used to be in pre-2.x.x - * @param args Commandline arguments with which ServerPackCreator is run. Passed to Handler-class which then decides what to do corresponding to input. + * Initializes all objects needed for running ServerPackCreator and ensures Dependency Injection. + * Calls {@link FilesSetup} so all default files are available. + * Checks arguments to determine which mode to enter. + * Lists a couple of environment variables important for reporting issues. + * + * @param args Commandline arguments with which ServerPackCreator is run. Determines which mode ServerPackCreator + * will enter and which locale is used. */ public static void main(String[] args) { List<String> programArgs = Arrays.asList(args); -- GitLab From fb07268d81c0e81028727fd7ae8150a195d45c15 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 30 Apr 2021 15:07:03 +0200 Subject: [PATCH 18/91] refactor(DI): Update javadocs --- .../griefed/serverpackcreator/FilesSetup.java | 110 ++++++++++++++++-- 1 file changed, 98 insertions(+), 12 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java index 95f0e4437..eef2534d2 100644 --- a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java +++ b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java @@ -17,7 +17,6 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ - package de.griefed.serverpackcreator; import de.griefed.serverpackcreator.i18n.LocalizationManager; @@ -26,12 +25,49 @@ import org.apache.logging.log4j.Logger; import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; -//TODO: Write table of contents + +/** + * <strong>Table of methods</strong> + * <p> + * {@link #FilesSetup(LocalizationManager)}<p> + * {@link #getConfigFile()}<p> + * {@link #getOldConfigFile()}<p> + * {@link #getPropertiesFile()}<p> + * {@link #getIconFile()}<p> + * {@link #getForgeWindowsFile()}<p> + * {@link #getForgeLinuxFile()}<p> + * {@link #getFabricWindowsFile()} + * {@link #getFabricLinuxFile()} + * {@link #filesSetup()}<p> + * {@link #checkForConfig()}<p> + * {@link #checkForFabricLinux()}<p> + * {@link #checkForFabricWindows()}<p> + * {@link #checkForForgeLinux()}<p> + * {@link #checkForForgeWindows()}<p> + * {@link #checkForProperties()}<p> + * {@link #checkForIcon()} + * <p> + * Requires instances of {@link LocalizationManager} for use of localization, but creates one if injected one is null. + * <p> + * Ensures all files needed by ServerPackCreator are available. If any one is missing, a new one is generated from the + * template. Among the default files are:<p> + * <strong>serverpackcreator.conf</strong><p> + * <strong>server.properties</strong><p> + * <strong>server-icon.png</strong><p> + * <strong>start-forge.bar</strong><p> + * <strong>start-forge.sh</strong><p> + * <strong>start-fabric.bat</strong><p> + * <strong>start-fabric.sh</strong> + * <p> + * + * Should an old configuration file, <em>creator.conf</em>, be detected, it is renamed to <em>serverpackcreator.conf</em> + * to ensure a configuration file is present at all times.<p> + */ public class FilesSetup { private static final Logger appLogger = LogManager.getLogger(FilesSetup.class); - private final File configFile = new File("serverpackcreator.conf"); + private final File configFile = new File("serverpackcreator.conf"); private final File oldConfigFile = new File("creator.conf"); private final File propertiesFile = new File("server.properties"); private final File iconFile = new File("server-icon.png"); @@ -42,6 +78,12 @@ public class FilesSetup { private LocalizationManager localizationManager; + /** + * <strong>Constructor</strong><p> + * Used for Dependency Injection. Receives an instance of {@link LocalizationManager} or creates one if the received + * one is null. Required for use of localization. + * @param injectedLocalizationManager Instance of {@link LocalizationManager} required for localized log messages. + */ public FilesSetup(LocalizationManager injectedLocalizationManager) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); @@ -50,39 +92,75 @@ public class FilesSetup { } } + /** + * Getter for serverpackcreator.conf. + * @return Returns the serverpackcreator.conf-file for use in {@link #checkForConfig()} + */ public File getConfigFile() { return configFile; } + /** + * Getter for creator.conf. + * @return Returns the creator.conf-file for use in {@link #checkForConfig()}. + */ public File getOldConfigFile() { return oldConfigFile; } + /** + * Getter for server.properties. + * @return Returns the server.properties-file for use in {@link #checkForProperties()} + */ public File getPropertiesFile() { return propertiesFile; } + /** + * Getter for server-icon.png + * @return Returns the server-icon.png-file for use in {@link #checkForIcon()} + */ public File getIconFile() { return iconFile; } + /** + * Getter for start-forge.bat. + * @return Returns the start-forge.bat-file for use in {@link #checkForForgeWindows()} + */ public File getForgeWindowsFile() { return forgeWindowsFile; } + /** + * Getter for start-forge.sh. + * @return Returns the start-forge.sh-file for use in {@link #checkForForgeLinux()} + */ public File getForgeLinuxFile() { return forgeLinuxFile; } + /** + * Getter for start-fabric.bat. + * @return Returns the start-fabric.bat-file for use in {@link #checkForFabricWindows()} + */ public File getFabricWindowsFile() { return fabricWindowsFile; } + /** + * Getter for start-fabric.sh. + * @return Returns the start-fabric.sh-file for use in {@link #checkForFabricLinux()} + */ public File getFabricLinuxFile() { return fabricLinuxFile; } - /** Calls individual methods which check for existence of default files. If any of these methods return true, serverpackcreator will exit, giving the user the chance to customize it before the program runs in production. + /** Calls individual methods which check for existence of default files. Only this method should be called to check + * for existence of all default files.<p> + * If any file was newly generated from it's template, a warning is printed informing the user about said newly + * generated file. If every file was present and none was generated, "Setup completed." is printed to the console + * and log. */ void filesSetup() { appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.filessetup.enter")); @@ -117,8 +195,10 @@ public class FilesSetup { appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.filessetup.finish")); } } - /** Check for old config file, if found rename to new name. If neither old nor new config file can be found, a new config file is generated. - * @return Boolean. Returns true if new config file was generated. + /** Check for old config file, if found rename to new name. If neither old nor new config file can be found, a new + * config file is generated. + * @return Boolean. Returns true if the file was generated, so {@link #filesSetup()} can inform the user about + * said newly generated file. */ boolean checkForConfig() { boolean firstRun = false; @@ -157,7 +237,8 @@ public class FilesSetup { } /** Checks for existence of Fabric start script for Linux. If it is not found, it is generated. - * @return Boolean. Returns true if the file was generated. + * @return Boolean. Returns true if the file was generated, so {@link #filesSetup()} can inform the user about + * said newly generated file. */ boolean checkForFabricLinux() { boolean firstRun = false; @@ -183,7 +264,8 @@ public class FilesSetup { } /** Checks for existence of Fabric start script for Windows. If it is not found, it is generated. - * @return Boolean. Returns true if the file was generated. + * @return Boolean. Returns true if the file was generated, so {@link #filesSetup()} can inform the user about + * said newly generated file. */ boolean checkForFabricWindows() { boolean firstRun = false; @@ -209,7 +291,8 @@ public class FilesSetup { } /** Checks for existence of Forge start script for Linux. If it is not found, it is generated. - * @return Boolean. Returns true if the file was generated. + * @return Boolean. Returns true if the file was generated, so {@link #filesSetup()} can inform the user about + * said newly generated file. */ boolean checkForForgeLinux() { boolean firstRun = false; @@ -235,7 +318,8 @@ public class FilesSetup { } /** Checks for existence of Forge start script for Windows. If it is not found, it is generated. - * @return Boolean. Returns true if the file was generated. + * @return Boolean. Returns true if the file was generated, so {@link #filesSetup()} can inform the user about + * said newly generated file. */ boolean checkForForgeWindows() { boolean firstRun = false; @@ -261,7 +345,8 @@ public class FilesSetup { } /** Checks for existence of server.properties file. If it is not found, it is generated. - * @return Boolean. Returns true if the file was generated. + * @return Boolean. Returns true if the file was generated, so {@link #filesSetup()} can inform the user about + * said newly generated file. */ boolean checkForProperties() { boolean firstRun = false; @@ -287,7 +372,8 @@ public class FilesSetup { } /** Checks for existence of server-icon.png file. If it is not found, it is generated. - * @return Boolean. Returns true if the file was generated. + * @return Boolean. Returns true if the file was generated, so {@link #filesSetup()} can inform the user about + * said newly generated file. */ boolean checkForIcon() { boolean firstRun = false; -- GitLab From 0eafc231fd01bf1fd1204a843d7df72d6e0db26b Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 30 Apr 2021 15:07:20 +0200 Subject: [PATCH 19/91] refactor(DI): Update javadocs --- .../serverpackcreator/CreateServerPack.java | 284 +++++++++++++----- 1 file changed, 206 insertions(+), 78 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index d229571f4..3411900a8 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -49,7 +49,47 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; -//TODO: Write table of contents + +/** + * <strong>Table of methods</strong> + * <p> + * {@link #CreateServerPack(LocalizationManager, Configuration, CurseCreateModpack)}<p> + * {@link #getPropertiesFile()}<p> + * {@link #getIconFile()}<p> + * {@link #getForgeWindowsFile()}<p> + * {@link #getForgeLinuxFile()}<p> + * {@link #getFabricWindowsFile()}<p> + * {@link #getFabricLinuxFile()}<p> + * {@link #run()}<p> + * {@link #cleanupEnvironment(String)}<p> + * {@link #copyStartScripts(String, String, boolean)}<p> + * {@link #copyFiles(String, List, List)}<p> + * {@link #excludeClientMods(String, List)}<p> + * {@link #copyIcon(String)}<p> + * {@link #copyProperties(String)}<p> + * {@link #installServer(String, String, String, String, String)}<p> + * {@link #zipBuilder(String, String, Boolean, String)}<p> + * {@link #generateDownloadScripts(String, String, String)}<p> + * {@link #fabricShell(String, String)}<p> + * {@link #fabricBatch(String, String)}<p> + * {@link #forgeShell(String, String)}<p> + * {@link #forgeBatch(String, String)}<p> + * {@link #downloadFabricJar(String)}<p> + * {@link #latestFabricInstaller(String)}<p> + * {@link #downloadForgeJar(String, String, String)}<p> + * {@link #deleteMinecraftJar(String, String, String)}<p> + * {@link #cleanUpServerPack(File, File, String, String, String, String)}<p> + * <p> + * Requires an instance of {@link Configuration} from which to get all required information about the modpack and the + * then to be generated server pack. + * <p> + * Requires an instance of {@link LocalizationManager} for use of localization, but creates one if injected one is null. + * <p> + * Create a server pack from a modpack by copying all specified or required files from the modpack to the server pack + * as well as installing the modloader server for the specified modloader, modloader version and Minecraft version. + * Create a ZIP-archive of the server pack, excluding the Minecraft server JAR, for immediate upload to CurseForge or + * other platforms. + */ public class CreateServerPack { private static final Logger appLogger = LogManager.getLogger(FilesSetup.class); private static final Logger installerLogger = LogManager.getLogger("InstallerLogger"); @@ -64,7 +104,19 @@ public class CreateServerPack { private final File fabricWindowsFile = new File("start-fabric.bat"); private final File fabricLinuxFile = new File("start-fabric.sh"); - + /** + * <strong>Constructor</strong><p> + * Used for Dependency Injection.<p> + * Receives an instance of {@link LocalizationManager} or creates one if the received + * one is null. Required for use of localization.<p> + * Receives an instance of {@link Configuration} required to successfully and correctly create the server pack.<p> + * Receives an instance of {@link CurseCreateModpack} in case the modpack has to be created from a combination of + * CurseForge projectID and fileID, from which to <em>then</em> create the server pack. + * @param injectedLocalizationManager Instance of {@link LocalizationManager} required for localized log messages. + * @param injectedConfiguration Instance of {@link Configuration} required to successfully and correctly create the server pack. + * @param injectedCurseCreateModpack Instance of {@link CurseCreateModpack} in case the modpack has to be created from a combination of + * CurseForge projectID and fileID, from which to <em>then</em> create the server pack. + */ public CreateServerPack(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration, CurseCreateModpack injectedCurseCreateModpack) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); @@ -85,75 +137,118 @@ public class CreateServerPack { } } + /** + * Getter for server.properties. + * @return Returns the server.properties-file for use in {@link #copyProperties(String)} + */ public File getPropertiesFile() { return propertiesFile; } + /** + * Getter for server-icon.png + * @return Returns the server-icon.png-file for use in {@link #copyIcon(String)} + */ public File getIconFile() { return iconFile; } + /** + * Getter for start-forge.bat. + * @return Returns the start-forge.bat-file for use in {@link #copyStartScripts(String, String, boolean)} + */ public File getForgeWindowsFile() { return forgeWindowsFile; } + /** + * Getter for start-forge.sh + * @return Returns the start-forge.sh-file for use in {@link #copyStartScripts(String, String, boolean)} + */ public File getForgeLinuxFile() { return forgeLinuxFile; } + /** + * Getter for start-fabric.bat. + * @return Returns the start-fabric.bat-file for use in {@link #copyStartScripts(String, String, boolean)} + */ public File getFabricWindowsFile() { return fabricWindowsFile; } + /** + * Getter for start-fabric.sh. + * @return Returns the start-fabric.sh-file for use in {@link #copyStartScripts(String, String, boolean)} + */ public File getFabricLinuxFile() { return fabricLinuxFile; } /** - * Run when serverpackcreator is run in either -cli or -cgen mode. Runs what used to be the main content in Main in pre-1.x.x. times. Inits config checks and, if config checks are successfull, calls methods to create the server pack. - * @return Return true if the serverpack was successfully generated, false if not. + * Create a server pack if the check of the configuration file was successfull.<p> + * Calls<p> + * {@link #cleanupEnvironment(String)} to delete any previously generated server packs or ZIP-archives thereof.<p> + * {@link #copyFiles(String, List, List)} to copy all specified directories and mods, excluding clientside-only mods, + * to the server pack.<p> + * {@link #copyStartScripts(String, String, boolean)} to copy the start scripts for the specified modloader to the + * server pack.<p> + * {@link #installServer(String, String, String, String, String)} to install the server software for the specified + * modloader, modloader version and Minecraft version in the server pack.<p> + * {@link #copyIcon(String)} to copy the server-icon.png to the server pack.<p> + * {@link #copyProperties(String)} to copy the server.properties to the server pack.<p> + * {@link #zipBuilder(String, String, Boolean, String)} to create a ZIP-archive of the server pack and delete the + * Minecraft server JAR from it. + * @return Boolean. Returns true if the server pack was successfully generated. */ public boolean run() { if (!configuration.checkConfigFile(configuration.getConfigFile())) { + cleanupEnvironment(configuration.getModpackDir()); - try { - copyFiles(configuration.getModpackDir(), configuration.getCopyDirs(), configuration.getClientMods()); - } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("handler.log.error.runincli.copyfiles"), ex); - } + + copyFiles(configuration.getModpackDir(), configuration.getCopyDirs(), configuration.getClientMods()); + copyStartScripts(configuration.getModpackDir(), configuration.getModLoader(), configuration.getIncludeStartScripts()); + if (configuration.getIncludeServerInstallation()) { installServer(configuration.getModLoader(), configuration.getModpackDir(), configuration.getMinecraftVersion(), configuration.getModLoaderVersion(), configuration.getJavaPath()); } else { appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.server")); } + if (configuration.getIncludeServerIcon()) { copyIcon(configuration.getModpackDir()); } else { appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.icon")); } + if (configuration.getIncludeServerProperties()) { copyProperties(configuration.getModpackDir()); } else { appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.properties")); } + if (configuration.getIncludeZipCreation()) { zipBuilder(configuration.getModpackDir(), configuration.getModLoader(), configuration.getIncludeServerInstallation(), configuration.getMinecraftVersion()); } else { appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.zip")); } + appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.runincli.serverpack"), configuration.getModpackDir())); appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.runincli.archive"), configuration.getModpackDir())); appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.finish")); + return true; + } else { appLogger.error(localizationManager.getLocalizedString("handler.log.error.runincli")); return false; } } - /** Deletes files from previous runs of serverpackcreator. - * @param modpackDir String. The directory in where to check for files from previous runs. + /** Deletes all files, directories and ZIP-archives of previously generated server packs to ensure newly generated + * server pack is as clean as possible. + * @param modpackDir String. The server_pack directory and ZIP-archive will be deleted inside the modpack directory. */ void cleanupEnvironment(String modpackDir) { if (new File(String.format("%s/server_pack", modpackDir)).exists()) { @@ -193,10 +288,10 @@ public class CreateServerPack { } } - /** Copies start scripts for Forge modloader into the server_pack folder. - * @param modpackDir String. Files will be copied into subfolder server_pack. Checks for valid modpackDir are in ConfigCheck. - * @param modLoader String. Determines whether start scripts for Forge or Fabric are copied to modpackDir. Checks for valid modLoader are in ConfigCheck. - * @param includeStartScripts Boolean. Whether to include start scripts in server_pack. Boolean. + /** Copies start scripts for the specified modloader into the server pack. + * @param modpackDir String. Start scripts are copied into the server_pack directory in the modpack directory. + * @param modLoader String. Whether to copy the Forge or Fabric scripts into the server pack. + * @param includeStartScripts Boolean. Whether to copy the start scripts into the server pack. */ void copyStartScripts(String modpackDir, String modLoader, boolean includeStartScripts) { if (modLoader.equalsIgnoreCase("Forge") && includeStartScripts) { @@ -236,15 +331,21 @@ public class CreateServerPack { } } - /** Copies all specified folders and their files to the modpackDir. - * @param modpackDir String. /server_pack. Directory where all directories listed in copyDirs will be copied into. - * @param copyDirs String List. The folders and files within to copy. - * @param clientMods String List. List of clientside-only mods NOT to copy to server pack. - * @throws IOException Only print stacktrace if it does not start with java.nio.file.DirectoryNotEmptyException. + /** Copies all specified directories and mods, excluding clientside-only mods, from the modpack directory into the + * server pack directory. + * Calls {@link #excludeClientMods(String, List)} to generate a list of all mods to copy to server pack, excluding + * clientside-only mods. + * @param modpackDir String. Files and directories are copied into the server_pack directory inside the modpack directory. + * @param copyDirs String List. All directories and files therein to copy to the server pack. + * @param clientMods String List. List of clientside-only mods to exclude from the server pack. */ - void copyFiles(String modpackDir, List<String> copyDirs, List<String> clientMods) throws IOException { + void copyFiles(String modpackDir, List<String> copyDirs, List<String> clientMods) { String serverPath = String.format("%s/server_pack", modpackDir); - Files.createDirectories(Paths.get(serverPath)); + try { + Files.createDirectories(Paths.get(serverPath)); + } catch (IOException ex) { + appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.unziparchive.createdir"), serverPath)); + } for (int i = 0; i < copyDirs.size(); i++) { String clientDir = String.format("%s/%s", modpackDir,copyDirs.get(i)); String serverDir = String.format("%s/%s", serverPath,copyDirs.get(i)); @@ -275,7 +376,11 @@ public class CreateServerPack { } } else if (copyDirs.get(i).startsWith("mods") && clientMods.size() > 0) { List<String> listOfFiles = excludeClientMods(clientDir, clientMods); - Files.createDirectories(Paths.get(serverDir)); + try { + Files.createDirectories(Paths.get(serverDir)); + } catch (IOException ex) { + appLogger.info(String.format(localizationManager.getLocalizedString("copyfiles.log.info.copyfiles.setup"), serverDir)); + } for (int in = 0; in < listOfFiles.size(); in++) { try { @@ -320,10 +425,10 @@ public class CreateServerPack { } } - /** Generate a list of all mods in a modpack EXCEPT clientside-only mods. This list is then used by copyFiles. - * @param modsDir String. /mods The directory in which to generate a list of all available mods. - * @param clientMods List String. A list of all clientside-only mods passed by copyFiles, which is then removed from the list generated in this method. - * @return List String. A list of all mods inside the modpack excluding the specified clientside-only mods. + /** Generates a list of all mods to include in the server pack excluding clientside-only mods. + * @param modsDir String. The mods directory of the modpack of which to generate a list of all it's contents. + * @param clientMods List String. A list of all clientside-only mods. + * @return List String. A list of all mods to include in the server pack. */ @SuppressWarnings("UnusedAssignment") List<String> excludeClientMods(String modsDir, List<String> clientMods) { @@ -357,7 +462,7 @@ public class CreateServerPack { } /** Copies the server-icon.png into server_pack. - * @param modpackDir String. /server_pack. Directory where the server-icon.png will be copied to. + * @param modpackDir String. The server-icon.png is copied into the server_pack directory inside the modpack directory. */ void copyIcon(String modpackDir) { appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.copyicon")); @@ -375,7 +480,7 @@ public class CreateServerPack { } /** Copies the server.properties into server_pack. - * @param modpackDir String. /server_pack. Directory where the server.properties. will be copied to. + * @param modpackDir String. The server.properties file is copied into the server_pack directory inside the modpack directory. */ void copyProperties(String modpackDir) { appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.copyproperties")); @@ -392,12 +497,20 @@ public class CreateServerPack { } } - /** Installs the files for a Forge/Fabric server. - * @param modLoader String. The modloader for which to install the server. - * @param modpackDir String. /server_pack The directory where the modloader server will be installed in. + /** Installs the modloader server for the specified modloader, modloader version and Minecraft version. + * Calls<p> + * {@link #downloadFabricJar(String)} to download the Fabric installer into the server_pack directory.<p> + * {@link #downloadForgeJar(String, String, String)} to download the Forge installer for the specified Forge version + * and Minecraft version.<p> + * {@link #generateDownloadScripts(String, String, String)} to generate the download scripts of the Minecraft server JAR + * for the specified Minecraft version and file-name depending on whether the modloader is Forge or Fabric.<p> + * {@link #cleanUpServerPack(File, File, String, String, String, String)} to delete no longer needed files generated + * by the installation process of the modloader server software. + * @param modLoader String. The modloader for which to install the server software. Either Forge or Fabric. + * @param modpackDir String. The server software is installed into the server_pack directory inside the modpack directory. * @param minecraftVersion String. The Minecraft version for which to install the modloader and Minecraft server. * @param modLoaderVersion String. The modloader version for which to install the modloader and Minecraft server. - * @param javaPath String. Path to Java installation needed to execute the Fabric and Forge installers. + * @param javaPath String. The path to the Java executable/binary which is needed to execute the Forge/Fabric installers. */ void installServer(String modLoader, String modpackDir, String minecraftVersion, String modLoaderVersion, String javaPath) { File fabricInstaller = new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)); @@ -472,6 +585,7 @@ public class CreateServerPack { } generateDownloadScripts(modLoader, modpackDir, minecraftVersion); + cleanUpServerPack( fabricInstaller, forgeInstaller, @@ -479,14 +593,17 @@ public class CreateServerPack { modpackDir, minecraftVersion, modLoaderVersion); - } - /** Create a zip-archive of the serverpack, excluding Mojang's minecraft_server.jar. - * With help from https://stackoverflow.com/questions/1091788/how-to-create-a-zip-file-in-java - * @param modpackDir String. The directory where the zip-archive will be created and saved in. - * @param modLoader String. Determines the name of Minecraft#s server jar which will be deleted from the zip-archive. - * @param includeServerInstallation Boolean. Determines whether the Minecraft server jar needs to be deleted from the zip-archive. - * @param minecraftVersion String. The Minecraft version of which to delete the server jar. Used if modloader is Forge. + + /** Creates a ZIP-archive of the server_pack directory and deletes the Minecraft server JAR afterwards.<p> + * With help from <a href="https://stackoverflow.com/questions/1091788/how-to-create-a-zip-file-in-java">Stackoverflow</a><p> + * Calls<p> + * {@link #deleteMinecraftJar(String, String, String)} to delete the Minecraft server JAR from the ZIP-archive, + * depending on which modloader and Minecraft version is specified. + * @param modpackDir String. The directory server_pack will be zipped and placed inside the modpack directory. + * @param modLoader String. Determines the name of the Minecraft server JAR to delete from the ZIP-archive. + * @param includeServerInstallation Boolean. Determines whether the Minecraft server JAR needs to be deleted from the ZIP-archive. + * @param minecraftVersion String. Determines the name of the Minecraft server JAR to delete from the ZIP-archive if the modloader is Forge. */ void zipBuilder(String modpackDir, String modLoader, Boolean includeServerInstallation, String minecraftVersion) { final Path sourceDir = Paths.get(String.format("%s/server_pack", modpackDir)); @@ -522,10 +639,16 @@ public class CreateServerPack { appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.zipbuilder.finish")); } - /** Calls methods for generating download scripts for Mojang's Minecraft server depending on the specified versions and modloader. - * @param modLoader String. The specified modloader determines the name under which Mojang's server jar will be downloaded as. - * @param modpackDir String. /server_pack The directory where the scripts will be placed in. - * @param minecraftVersion String. The version of the Minecraft server jar to download. + /** Depending on the specified modloader and Minecraft version, this method makes calls to generate the corresponding + * download scripts for the Minecraft server JAR.<p> + * Calls<p> + * {@link #fabricShell(String, String)} if the modloader is Fabric. + * {@link #fabricBatch(String, String)} if the modloader is Fabric. + * {@link #forgeShell(String, String)} if the modloader is Forge. + * {@link #forgeBatch(String, String)} if the modloader is Forge. + * @param modLoader String. Determines whether the scripts are generated for Forge or Fabric. + * @param modpackDir String. The scripts are generated in the server_pack directory inside the modpack directory. + * @param minecraftVersion String. Determines the Minecraft version for which the scripts are generated. */ void generateDownloadScripts(String modLoader, String modpackDir, String minecraftVersion) { if (modLoader.equalsIgnoreCase("Fabric")) { @@ -539,9 +662,9 @@ public class CreateServerPack { } } - /** Generates download scripts for Mojang's Minecraft server for Fabric,Linux. - * @param modpackDir String. /server_pack The directory where the scripts will be placed in. - * @param minecraftVersion String. The version of the Minecraft server jar to download. + /** Generates Fabric Linux-shell download scripts for Mojang's Minecraft server JAR for the specified Minecraft version. + * @param modpackDir String. The script is generated in the server_pack directory inside the modpack directory. + * @param minecraftVersion String. The Minecraft version for which to download the server JAR. */ void fabricShell(String modpackDir, String minecraftVersion) { try { @@ -566,9 +689,9 @@ public class CreateServerPack { appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.fabricshell")); } - /** Generates download scripts for Mojang's Minecraft server for Fabric,Windows. - * @param modpackDir String. /server_pack The directory where the scripts will be placed in. - * @param minecraftVersion String. The version of the Minecraft server jar to download. + /** Generates Fabric Windows-Batch download scripts for Mojang's Minecraft server JAR for the specified Minecraft version. + * @param modpackDir String. The script is generated in the server_pack directory inside the modpack directory. + * @param minecraftVersion String. The Minecraft version for which to download the server JAR. */ void fabricBatch(String modpackDir, String minecraftVersion) { try { @@ -593,9 +716,9 @@ public class CreateServerPack { appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.fabricbatch")); } - /** Generates download scripts for Mojang's Minecraft server for Forge,Linux. - * @param modpackDir String. /server_pack The directory where the scripts will be placed in. - * @param minecraftVersion String. The version of the Minecraft server jar to download. + /** Generates Forge Linux-shell download scripts for Mojang's Minecraft server JAR for the specified Minecraft version. + * @param modpackDir String. The script is generated in the server_pack directory inside the modpack directory. + * @param minecraftVersion String. The Minecraft version for which to download the server JAR. */ void forgeShell(String modpackDir, String minecraftVersion) { try { @@ -620,9 +743,9 @@ public class CreateServerPack { appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.forgeshell")); } - /** Generates download scripts for Mojang's Minecraft server for Forge,Windows. - * @param modpackDir String. /server_pack The directory where the scripts will be placed in. - * @param minecraftVersion String. The version of the Minecraft server jar to download. + /** Generates Forge Windows-Batch download scripts for Mojang's Minecraft server JAR for the specified Minecraft version. + * @param modpackDir String. The script is generated in the server_pack directory inside the modpack directory. + * @param minecraftVersion String. The Minecraft version for which to download the server JAR. */ void forgeBatch(String modpackDir, String minecraftVersion) { try { @@ -647,9 +770,11 @@ public class CreateServerPack { appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.forgebatch")); } - /** Downloads the specified version of Fabric. - * @param modpackDir String. /server_pack The directory where the Fabric installer will be placed in. - * @return Boolean. Returns true if the download was successful. False if not. + /** Downloads the latest Fabric installer into the server pack.<p> + * Calls<p> + * {@link #latestFabricInstaller(String)} to acquire the latest version of the Fabric installer. + * @param modpackDir String. The Fabric installer is downloaded into the server_pack directory inside the modpack directory. + * @return Boolean. Returns true if the download was successfull. */ boolean downloadFabricJar(String modpackDir) { boolean downloaded = false; @@ -684,9 +809,11 @@ public class CreateServerPack { return downloaded; } - /** Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer. - * @param modpackDir String. /server_pack The directory where the Fabric installer will be placed in. - * @return Boolean. Returns true if the download was successful. False if not. + /** Acquires the latest version of the Fabric modloader installer and returns it as a string. If acquisition of the + * latest version fails, version 0.7.2 is returned by default. + * @param modpackDir String. The fabric-installer.xml-file is saved inside the server_pack directory inside the modpack + * directory. + * @return String. Returns the version of the latest Fabric modloader installer. */ String latestFabricInstaller(String modpackDir) { String result; @@ -718,11 +845,11 @@ public class CreateServerPack { return result; } - /** Downloads the specified version of the Forge installer to be used in ServerSetup.installServer. - * @param minecraftVersion String. The Minecraft version corresponding to the Forge version. Minecraft version and Forge version build a pair. - * @param modLoaderVersion String. The Forge version corresponding to the Minecraft version. Minecraft version and Forge version build a pair. - * @param modpackDir String. /server_pack The directory where the Forge installer will be placed in. - * @return Boolean. Returns true if the download was successful. False if not. + /** Downloads the modloader server installer for Forge, for the specified modloader version. + * @param minecraftVersion String. The Minecraft version for which to download the modloader server installer. + * @param modLoaderVersion String. The Forge version for which to download the modloader server installer. + * @param modpackDir String. The modloader installer is downloaded to the server_pack directory inside the modloader directory. + * @return Boolean. Returns true if the download was successful. */ boolean downloadForgeJar(String minecraftVersion, String modLoaderVersion, String modpackDir) { boolean downloaded = false; @@ -754,11 +881,12 @@ public class CreateServerPack { return downloaded; } - /** Deletes Mojang's minecraft_server.jar from the zip-archive so users do not accidentally upload a file containing software from Mojang. - * With help from https://stackoverflow.com/questions/5244963/delete-files-from-a-zip-archive-without-decompressing-in-java-or-maybe-python and https://bugs.openjdk.java.net/browse/JDK-8186227 - * @param modLoader String. Determines the name of the file to delete. - * @param modpackDir String. /server_pack The directory in which the file will be deleted. - * @param minecraftVersion String. The Minecraft version of which to delete the server jar. Used if modloader is Forge. + /** Deletes the Minecraft server JAR from the ZIP-archive as per Mojang's TOS and EULA. + * With help from <a href=https://stackoverflow.com/questions/5244963/delete-files-from-a-zip-archive-without-decompressing-in-java-or-maybe-python>Stackoverflow</a> + * and <a href=https://bugs.openjdk.java.net/browse/JDK-8186227>OpenJDK Bugtracker</a>. + * @param modLoader String. The name of the Minecraft server JAR depends on the modloader used. + * @param modpackDir String. The directory in which the ZIP-archive is stored. + * @param minecraftVersion String. The name of the Minecraft server JAR depends on the Minecraft version if the modloader is Forge. */ void deleteMinecraftJar(String modLoader, String modpackDir, String minecraftVersion) { if (modLoader.equalsIgnoreCase("Forge")) { @@ -800,13 +928,13 @@ public class CreateServerPack { } } - /** Deletes remnant files from Fabric/Forge installation no longer needed. - * @param fabricInstaller File. Fabric installer to be deleted. - * @param forgeInstaller File. Forge installer to be deleted. + /** Cleans up the server_pack directory by deleting left-over files from modloader installations and version checking. + * @param fabricInstaller File. The Fabric installer file which is to be deleted. + * @param forgeInstaller File. The Forge installer file which is to be deleted. * @param modLoader String. Whether Forge or Fabric files are to be deleted. - * @param modpackDir String. /server_pack The directory where files are to be deleted. - * @param minecraftVersion String. Needed for renaming the Forge server jar to work with launch scripts provided by serverpackcreator. - * @param modLoaderVersion String. Needed for renaming the Forge server jar to work with launch scripts provided by serverpackcreator. + * @param modpackDir String. Cleanup tasks are done inside the server_pack directory inside the modpack directory. + * @param minecraftVersion String. Needed for renaming the Forge server JAR to work with launch scripts provided by ServerPackCreator. + * @param modLoaderVersion String. Needed for renaming the Forge server JAR to work with launch scripts provided by ServerPackCreator. */ void cleanUpServerPack(File fabricInstaller, File forgeInstaller, String modLoader, String modpackDir, String minecraftVersion, String modLoaderVersion) { appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.enter")); -- GitLab From c298b533cc163e80a118228fd199eedde22de357 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 30 Apr 2021 17:34:06 +0200 Subject: [PATCH 20/91] refactor(DI): Include LICENSE and CONTRIBUTING.md in JAR --- build.gradle | 4 + src/main/resources/CONTRIBUTING.md | 55 ++++ src/main/resources/LICENSE | 504 +++++++++++++++++++++++++++++ 3 files changed, 563 insertions(+) create mode 100644 src/main/resources/CONTRIBUTING.md create mode 100644 src/main/resources/LICENSE diff --git a/build.gradle b/build.gradle index 789ac9519..c68708e46 100644 --- a/build.gradle +++ b/build.gradle @@ -118,6 +118,10 @@ jar { 'META-INF/DEPENDENCIES', 'META-INF/LICENSE', 'META-INF/NOTICE', + 'META-INF/CHANGES', + 'META-INF/LICENSE.txt', + 'META-INF/NOTICE.txt', + 'META-INF/README.md', 'Log4j-**', 'icon.png', 'profile_icon.png' diff --git a/src/main/resources/CONTRIBUTING.md b/src/main/resources/CONTRIBUTING.md new file mode 100644 index 000000000..ef6701259 --- /dev/null +++ b/src/main/resources/CONTRIBUTING.md @@ -0,0 +1,55 @@ +## Contributing + +## Code + +- **The Main-class:** The Main-class of ServerPackCreator only passes the arguments from execution to the Handler-class. + +- **Config file:** If you want to contribute to SPC, please make sure you do not change the `serverpackcreator.conf`-file. Ideally, any version of SPC will work with any config file, as they all have the same content. Changing what's inside the `serverpackcreator.conf`-file would make versions incompatible to each other, but I want users to be able to simply download the newest version **without** having to migrate their config file or even worrying about such a thing. +Therefore, I ask that you do not touch the `serverpackcreator.conf`-file. + +- **Variable names:** Please keep variable names verbose i.e. `thisStoresSomething` or `checkForStuff` or some such. Variables like `a` and `tmpA` make code harder to read. We're not aiming for best performance or whatever, so we can have longer variable names if we want to. + +- **Access modifiers:** Because the files generated by this program are supposed to be distributed to multiple people, I try to keep methods and classes as closed-off as possible. It's not much, but it's something. Therefore, unless your method or class *absolutely* must be public, keep it package private or make it private completely. I reserve the right to refactor any such classes or methods. + +- **Translating:** If you wish to contribute to translating ServerPackCreator, have a look at the [resource bundles](https://github.com/Griefed/ServerPackCreator/tree/main/src/main/resources/de/griefed/resources/lang). Should you want to **add** a language to ServerPackCreator, add your locale in [LocalizationManager](https://github.com/Griefed/ServerPackCreator/blob/main/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java), copy the [lang_en_us.properties](https://github.com/Griefed/ServerPackCreator/blob/main/src/main/resources/de/griefed/resources/lang/lang_en_us.properties) to lang_your_locale.properties and start translating! + +## Commits + +If you want to contribute to SPC, please make sure your commits follow the conventional commit layout and use the types/categories/flags described here: [actions/auto-changelog](https://github.com/marketplace/actions/auto-changelog) + +For completeness' sake: + +``` +type(category): description [flag] +``` + +The `type` must be one of the followings: + +* `breaking` (Breaking Changes) +* `build` (Build System / Dependencies) +* `ci` (Continuous Integration) +* `chore` (Chores) +* `docs` (Documentation Changes) +* `feat` (New Features) +* `fix` (Bug Fixes) +* `other` (Other Changes) +* `perf` (Performance Improvements) +* `refactor` (Refactors) +* `revert` (Reverts) +* `style` (Code Style Changes) +* `test` (Tests) + +> If the `type` is not found in the list, it'll be considered as `other`. + +The `category` is optional and can be anything of your choice. + +The `flag` is optional (if provided, it must be surrounded in square brackets) and can be one of the followings: + +* `ignore` (Omits the commit from the changelog) + +> If `flag` is not found in the list, it'll be ignored. +> + +## Contributions + +* I reserve the right to reject any and all PRs without stating why. It may be due to a variety of reasons. Maybe I want to implement a feature myself, maybe I am already working on implementing the changes you are proposing, maybe I don't want the change you are proposing. I will most probably tell you why I rejected your PR, if I rejected it, but I reserve the right to just say "No.". This project is mainly meant as a training ground for me and Java, and it wouldn't do me any good if others do all the work for me. :D I hope you understand where I am coming from with this. diff --git a/src/main/resources/LICENSE b/src/main/resources/LICENSE new file mode 100644 index 000000000..8000a6faa --- /dev/null +++ b/src/main/resources/LICENSE @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random + Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! -- GitLab From 5c86612d33c8291671d79e65e05154fd1af7a8e4 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 30 Apr 2021 17:35:06 +0200 Subject: [PATCH 21/91] refactor(DI): Update javadocs --- .../java/de/griefed/serverpackcreator/CreateServerPack.java | 2 +- src/main/java/de/griefed/serverpackcreator/FilesSetup.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index 3411900a8..4dec8d33a 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -78,7 +78,7 @@ import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; * {@link #latestFabricInstaller(String)}<p> * {@link #downloadForgeJar(String, String, String)}<p> * {@link #deleteMinecraftJar(String, String, String)}<p> - * {@link #cleanUpServerPack(File, File, String, String, String, String)}<p> + * {@link #cleanUpServerPack(File, File, String, String, String, String)} * <p> * Requires an instance of {@link Configuration} from which to get all required information about the modpack and the * then to be generated server pack. diff --git a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java index eef2534d2..8020edac7 100644 --- a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java +++ b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java @@ -61,7 +61,7 @@ import java.nio.file.Paths; * <p> * * Should an old configuration file, <em>creator.conf</em>, be detected, it is renamed to <em>serverpackcreator.conf</em> - * to ensure a configuration file is present at all times.<p> + * to ensure a configuration file is present at all times. */ public class FilesSetup { -- GitLab From eb3ca3283c7de9e2b70e0bab93b6786569356f71 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 30 Apr 2021 17:38:23 +0200 Subject: [PATCH 22/91] refactor(DI): Update javadocs --- .../serverpackcreator/CreateServerPack.java | 52 +++++++++---------- .../griefed/serverpackcreator/FilesSetup.java | 34 ++++++------ 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index 4dec8d33a..7c9f23ab2 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -53,32 +53,32 @@ import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; /** * <strong>Table of methods</strong> * <p> - * {@link #CreateServerPack(LocalizationManager, Configuration, CurseCreateModpack)}<p> - * {@link #getPropertiesFile()}<p> - * {@link #getIconFile()}<p> - * {@link #getForgeWindowsFile()}<p> - * {@link #getForgeLinuxFile()}<p> - * {@link #getFabricWindowsFile()}<p> - * {@link #getFabricLinuxFile()}<p> - * {@link #run()}<p> - * {@link #cleanupEnvironment(String)}<p> - * {@link #copyStartScripts(String, String, boolean)}<p> - * {@link #copyFiles(String, List, List)}<p> - * {@link #excludeClientMods(String, List)}<p> - * {@link #copyIcon(String)}<p> - * {@link #copyProperties(String)}<p> - * {@link #installServer(String, String, String, String, String)}<p> - * {@link #zipBuilder(String, String, Boolean, String)}<p> - * {@link #generateDownloadScripts(String, String, String)}<p> - * {@link #fabricShell(String, String)}<p> - * {@link #fabricBatch(String, String)}<p> - * {@link #forgeShell(String, String)}<p> - * {@link #forgeBatch(String, String)}<p> - * {@link #downloadFabricJar(String)}<p> - * {@link #latestFabricInstaller(String)}<p> - * {@link #downloadForgeJar(String, String, String)}<p> - * {@link #deleteMinecraftJar(String, String, String)}<p> - * {@link #cleanUpServerPack(File, File, String, String, String, String)} + * 1. {@link #CreateServerPack(LocalizationManager, Configuration, CurseCreateModpack)}<p> + * 2. {@link #getPropertiesFile()}<p> + * 3. {@link #getIconFile()}<p> + * 4. {@link #getForgeWindowsFile()}<p> + * 5. {@link #getForgeLinuxFile()}<p> + * 6. {@link #getFabricWindowsFile()}<p> + * 7. {@link #getFabricLinuxFile()}<p> + * 8. {@link #run()}<p> + * 9. {@link #cleanupEnvironment(String)}<p> + * 10.{@link #copyStartScripts(String, String, boolean)}<p> + * 11.{@link #copyFiles(String, List, List)}<p> + * 12.{@link #excludeClientMods(String, List)}<p> + * 13.{@link #copyIcon(String)}<p> + * 14.{@link #copyProperties(String)}<p> + * 15.{@link #installServer(String, String, String, String, String)}<p> + * 16.{@link #zipBuilder(String, String, Boolean, String)}<p> + * 17.{@link #generateDownloadScripts(String, String, String)}<p> + * 18.{@link #fabricShell(String, String)}<p> + * 19.{@link #fabricBatch(String, String)}<p> + * 20.{@link #forgeShell(String, String)}<p> + * 21.{@link #forgeBatch(String, String)}<p> + * 22.{@link #downloadFabricJar(String)}<p> + * 23.{@link #latestFabricInstaller(String)}<p> + * 24.{@link #downloadForgeJar(String, String, String)}<p> + * 25.{@link #deleteMinecraftJar(String, String, String)}<p> + * 26.{@link #cleanUpServerPack(File, File, String, String, String, String)} * <p> * Requires an instance of {@link Configuration} from which to get all required information about the modpack and the * then to be generated server pack. diff --git a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java index 8020edac7..f1fccd829 100644 --- a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java +++ b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java @@ -29,23 +29,23 @@ import java.nio.file.Paths; /** * <strong>Table of methods</strong> * <p> - * {@link #FilesSetup(LocalizationManager)}<p> - * {@link #getConfigFile()}<p> - * {@link #getOldConfigFile()}<p> - * {@link #getPropertiesFile()}<p> - * {@link #getIconFile()}<p> - * {@link #getForgeWindowsFile()}<p> - * {@link #getForgeLinuxFile()}<p> - * {@link #getFabricWindowsFile()} - * {@link #getFabricLinuxFile()} - * {@link #filesSetup()}<p> - * {@link #checkForConfig()}<p> - * {@link #checkForFabricLinux()}<p> - * {@link #checkForFabricWindows()}<p> - * {@link #checkForForgeLinux()}<p> - * {@link #checkForForgeWindows()}<p> - * {@link #checkForProperties()}<p> - * {@link #checkForIcon()} + * 1. {@link #FilesSetup(LocalizationManager)}<p> + * 2. {@link #getConfigFile()}<p> + * 3. {@link #getOldConfigFile()}<p> + * 4. {@link #getPropertiesFile()}<p> + * 5. {@link #getIconFile()}<p> + * 6. {@link #getForgeWindowsFile()}<p> + * 7. {@link #getForgeLinuxFile()}<p> + * 8. {@link #getFabricWindowsFile()} + * 9. {@link #getFabricLinuxFile()} + * 10.{@link #filesSetup()}<p> + * 11.{@link #checkForConfig()}<p> + * 12.{@link #checkForFabricLinux()}<p> + * 13.{@link #checkForFabricWindows()}<p> + * 14.{@link #checkForForgeLinux()}<p> + * 15.{@link #checkForForgeWindows()}<p> + * 16.{@link #checkForProperties()}<p> + * 17.{@link #checkForIcon()} * <p> * Requires instances of {@link LocalizationManager} for use of localization, but creates one if injected one is null. * <p> -- GitLab From 80d59e7e16ecc3e0fbc04f32544efac499a45f9d Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sat, 1 May 2021 16:19:27 +0200 Subject: [PATCH 23/91] refactor(DI): Update javadocs and a couple of minor fixes --- .../serverpackcreator/Configuration.java | 832 ++++++++++++++---- .../serverpackcreator/CreateServerPack.java | 66 +- .../griefed/serverpackcreator/FilesSetup.java | 63 +- 3 files changed, 714 insertions(+), 247 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/Configuration.java b/src/main/java/de/griefed/serverpackcreator/Configuration.java index 5d35e4edc..b8eb53fd0 100644 --- a/src/main/java/de/griefed/serverpackcreator/Configuration.java +++ b/src/main/java/de/griefed/serverpackcreator/Configuration.java @@ -17,7 +17,6 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -//TODO: Write table of contents package de.griefed.serverpackcreator; import com.fasterxml.jackson.databind.DeserializationFeature; @@ -47,15 +46,94 @@ import java.nio.channels.ReadableByteChannel; import java.nio.file.Files; import java.nio.file.Paths; import java.util.*; -//TODO: Write docs for class -public class Configuration { +/** + * <strong>Table of methods</strong><p> + * 1. {@link #Configuration(LocalizationManager, CurseCreateModpack)}<br> + * 2. {@link #getOldConfigFile()}<br> + * 3. {@link #getConfigFile()}<br> + * 4. {@link #getMinecraftManifestUrl()}<br> + * 5. {@link #getForgeManifestUrl()}<br> + * 6. {@link #getFabricManifestUrl()}<br> + * 7. {@link #getConfig()}<br> + * 8. {@link #setConfig(Config)}<br> + * 9. {@link #getFallbackModsList()}<br> + * 10.{@link #getClientMods()}<br> + * 11.{@link #setClientMods(List)}<br> + * 12.{@link #getCopyDirs()}<br> + * 13.{@link #setCopyDirs(List)}<br> + * 14.{@link #getModpackDir()}<br> + * 15.{@link #setModpackDir(String)}<br> + * 16.{@link #getJavaPath()}<br> + * 17.{@link #setJavaPath(String)}<br> + * 18.{@link #getMinecraftVersion()}<br> + * 19.{@link #setMinecraftVersion(String)}<br> + * 20.{@link #getModLoader()}<br> + * 21.{@link #setModLoader(String)}<br> + * 22.{@link #getModLoaderVersion()}<br> + * 23.{@link #setModLoaderVersion(String)}<br> + * 24.{@link #getIncludeServerInstallation()}<br> + * 25.{@link #setIncludeServerInstallation(boolean)}<br> + * 26.{@link #getIncludeServerIcon()}<br> + * 27.{@link #setIncludeServerIcon(boolean)}<br> + * 28.{@link #getIncludeServerProperties()}<br> + * 29.{@link #setIncludeServerProperties(boolean)}<br> + * 30.{@link #getIncludeStartScripts()}<br> + * 31.{@link #setIncludeStartScripts(boolean)}<br> + * 32.{@link #getIncludeZipCreation()}<br> + * 33.{@link #setIncludeZipCreation(boolean)}<br> + * 34.{@link #getProjectID()}<br> + * 35.{@link #setProjectID(int)}<br> + * 36.{@link #getProjectFileID()}<br> + * 37.{@link #setProjectFileID(int)}<br> + * 38.{@link #checkConfigFile(File)}<br> + * 39.{@link #isDir(String)}<br> + * 40.{@link #isCurse()}<br> + * 41.{@link #containsFabric(CurseModpack)}<br> + * 42.{@link #suggestCopyDirs(String)}<br> + * 43.{@link #checkCurseForge(String)}<br> + * 44.{@link #convertToBoolean(String)}<br> + * 45.{@link #printConfig(String, List, List, boolean, String, String, String, String, boolean, boolean, boolean, boolean)}<br> + * 46.{@link #checkModpackDir(String)}<br> + * 47.{@link #checkCopyDirs(List, String)}<br> + * 48.{@link #getJavaPathFromSystem(String)}<br> + * 49.{@link #checkJavaPath(String)}<br> + * 50.{@link #checkModloader(String)}<br> + * 51.{@link #setModLoaderCase(String)}<br> + * 52.{@link #checkModloaderVersion(String, String)}<br> + * 53.{@link #isMinecraftVersionCorrect(String)}<br> + * 54.{@link #isFabricVersionCorrect(String)}<br> + * 55.{@link #isForgeVersionCorrect(String)}<br> + * 56.{@link #latestFabricLoader(String)}<br> + * 57.{@link #createConfigurationFile()}<br> + * 58.{@link #readStringArray()}<br> + * 59.{@link #buildString(String...)}<br> + * 60.{@link #readBoolean()}<br> + * 61.{@link #writeConfigToFile(String, String, String, boolean, String, String, String, String, boolean, boolean, boolean, boolean, File, boolean)} + * <p> + * Requires an instance of {@link CurseCreateModpack} in order to create a modpack from scratch should {@link #modpackDir} + * be a combination of a CurseForge projectID and fileID.<p> + * Requires an instance of {@link LocalizationManager} for use of localization, but creates one if injected one is null.<p> + * Loads a configuration from a serverpackcreator.conf-file in the same directory in which ServerPackCreator resides in. + * + */ +public class Configuration { private static final Logger appLogger = LogManager.getLogger(Configuration.class); - private final File oldConfigFile = new File("creator.conf"); - private final File configFile = new File("serverpackcreator.conf"); + private LocalizationManager localizationManager; private CurseCreateModpack curseCreateModpack; + /** + * <strong>Constructor</strong><p> + * Used for Dependency Injection.<p> + * Receives an instance of {@link LocalizationManager} or creates one if the received + * one is null. Required for use of localization.<p> + * Receives an instance of {@link CurseCreateModpack} in case the modpack has to be created from a combination of + * CurseForge projectID and fileID, from which to <em>then</em> create the server pack. + * @param injectedLocalizationManager Instance of {@link LocalizationManager} required for localized log messages. + * @param injectedCurseCreateModpack Instance of {@link CurseCreateModpack} in case the modpack has to be created from a combination of + * CurseForge projectID and fileID, from which to <em>then</em> create the server pack. + */ public Configuration(LocalizationManager injectedLocalizationManager, CurseCreateModpack injectedCurseCreateModpack) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); @@ -70,7 +148,10 @@ public class Configuration { } } - //-- If you wish to expand this list, fork this repository, make your changes, and submit a PR ------------------------- + private final File oldConfigFile = new File("creator.conf"); + private final File configFile = new File("serverpackcreator.conf"); + +//-- If you wish to expand this list, fork this repository, make your changes, and submit a PR ------------------------- private final List<String> fallbackModsList = Arrays.asList( "AmbientSounds", "BackTools", @@ -121,140 +202,336 @@ public class Configuration { private Config config; + /** + * Getter for creator.conf. + * @return File. Returns the creator.conf-file for use in {@link #writeConfigToFile(String, String, String, boolean, String, String, String, String, boolean, boolean, boolean, boolean, File, boolean)} + */ public File getOldConfigFile() { return oldConfigFile; } + /** + * Getter for serverpackcreator.conf. + * @return File. Returns the serverpackcreator.conf-file for use in <br> + * {@link #isCurse()},<br> + * {@link #createConfigurationFile()},<br> + * {@link #writeConfigToFile(String, String, String, boolean, String, String, String, String, boolean, boolean, boolean, boolean, File, boolean)} + */ public File getConfigFile() { return configFile; } + /** + * Getter for Mojang's Minecraft version-manifest. + * @return String. Returns the URL to the JSON-file for use in {@link #isMinecraftVersionCorrect(String)} + */ String getMinecraftManifestUrl() { return "https://launchermeta.mojang.com/mc/game/version_manifest.json"; } + /** + * Getter for Forge's version-manifest. + * @return String. Returns the URL to the JSON-file for use in {@link #isForgeVersionCorrect(String)} + */ String getForgeManifestUrl() { return "https://files.minecraftforge.net/net/minecraftforge/forge/maven-metadata.json"; } + /** + * Getter for Fabric's version-manifest. + * @return String. Returns the URL to the JSON-file for use in {@link #isFabricVersionCorrect(String)} + */ String getFabricManifestUrl() { return "https://maven.fabricmc.net/net/fabricmc/fabric-loader/maven-metadata.xml"; } - public com.typesafe.config.Config getConfig() { + /** + * Getter for a {@link Config} containing a parsed configuration-file. + * @return Config. Returns parsed serverpackcreator.conf for use in<br> + * {@link #checkConfigFile(File)}<br> + * {@link #isDir(String)}<br> + * {@link #isCurse()} + */ + public Config getConfig() { return config; } - public void setConfig(com.typesafe.config.Config newConfig) { + + /** + * Setter for a {@link Config} containing a parsed configuration-file. + * For use in {@link #checkConfigFile(File)} + */ + public void setConfig(Config newConfig) { this.config = newConfig; } + /** + * Getter for the fallback clientside-only mods-list, in case no customized one is provided by the user. + * @return List String. Returns the fallback clientside-only mods-list for use in {@link #checkConfigFile(File)} + */ List<String> getFallbackModsList() { return fallbackModsList; } + /** + * Getter for a list of clientside-only mods to exclude from server pack. + * @return List String. Returns the list of clientside-only mods for use in<br> + * {@link #checkConfigFile(File)}<br> + * {@link #isCurse()} + */ List<String> getClientMods() { return clientMods; } + + /** + * Setter for the list of clientside-only mods to exclude from server pack. + * For use in {@link #checkConfigFile(File)} + */ void setClientMods(List<String> newClientMods) { this.clientMods = newClientMods; } + /** + * Getter for the list of directories in the modpack to copy to the server pack. + * @return List String. Returns the list of directories to copy to the server pack for use in<br> + * {@link #checkConfigFile(File)}<br> + * {@link #isCurse()} + */ List<String> getCopyDirs() { return copyDirs; } + + /** + * Setter for the list of directories in the modpack to copy to the server pack. + * For use in {@link #isDir(String)} and {@link #isCurse()} + */ void setCopyDirs(List<String> newCopyDirs) { this.copyDirs = newCopyDirs; } + /** + * Getter for the path to the modpack directory. + * @return String. Returns the path to the modpack directory for use in<br> + * {@link #checkConfigFile(File)}<br> + * {@link #isDir(String)}<br> + * {@link #isCurse()} + */ String getModpackDir() { return modpackDir; } + + /** + * Setter for the path to the modpack directory. Replaces any occurrences of \ with /. + * For use in {@link #isDir(String)} and {@link #isCurse()} + */ void setModpackDir(String newModpackDir) { newModpackDir = newModpackDir.replace("\\","/"); this.modpackDir = newModpackDir; } + /** + * Getter for the path to the Java executable/binary. + * @return String. Returns the path to the Java executable/binary for use in {@link #checkConfigFile(File)} and {@link #isCurse()} + */ String getJavaPath() { return javaPath; } + + /** + * Setter for the path to the Java executable/binary. Replaces any occurrences of \ with /. + * For use in {@link #isDir(String)} and {@link #isCurse()} + */ void setJavaPath(String newJavaPath) { newJavaPath = newJavaPath.replace("\\", "/"); this.javaPath = newJavaPath; } + /** + * Getter for the version of Minecraft used by the modpack. + * @return String. Returns the for use in {@link #} + */ String getMinecraftVersion() { return minecraftVersion; } + + /** + * Setter for the Minecraft version used by the modpack. + * For use in {@link #isDir(String)} and {@link #isCurse()} + */ void setMinecraftVersion(String newMinecraftVersion) { this.minecraftVersion = newMinecraftVersion; } + /** + * Getter for the modloader used by the modpack. + * @return String. Returns the modloader used by the modpack for use in<br> + * {@link #checkConfigFile(File)}<br> + * {@link #isDir(String)}<br> + * {@link #isCurse()} + */ String getModLoader() { return modLoader; } + + /** + * Setter for the modloader used by the modpack. + * For use in {@link #isDir(String)} and {@link #isCurse()} + */ void setModLoader(String newModLoader) { this.modLoader = newModLoader; } + /** + * Getter for the version of the modloader used by the modpack. + * @return String. Returns the version of the modloader used by the modpack for use in {@link #checkConfigFile(File)} and {@link #isCurse()} + */ String getModLoaderVersion() { return modLoaderVersion; } + + /** + * Setter for the version of the modloader used by the modpack. + * For use in {@link #isDir(String)} and {@link #isCurse()} + */ void setModLoaderVersion(String newModLoaderVersion) { this.modLoaderVersion = newModLoaderVersion; } + /** + * Getter for whether the modloader server installation should be included. + * @return Boolean. Returns whether the server installation should be included, for use in<br> + * {@link #checkConfigFile(File)}<br> + * {@link #isDir(String)}<br> + * {@link #isCurse()} + */ boolean getIncludeServerInstallation() { return includeServerInstallation; } + + /** + * Setter for whether the modloader server installation should be included. + * For use in {@link #checkConfigFile(File)} + */ void setIncludeServerInstallation(boolean newIncludeServerInstallation) { this.includeServerInstallation = newIncludeServerInstallation; } + /** + * Getter for whether the server-icon.png should be included in the server pack. + * @return Boolean. Returns whether the server-icon.png should be included in the server pack, for use in {@link #checkConfigFile(File)} + * and {@link #isCurse()} + */ boolean getIncludeServerIcon() { return includeServerIcon; } + + /** + * Setter for whether the server-icon.png should be included in the server pack. + * For use in {@link #checkConfigFile(File)} + */ void setIncludeServerIcon(boolean newIncludeServerIcon) { this.includeServerIcon = newIncludeServerIcon; } + /** + * Getter for whether the server.properties should be included in the server pack. + * @return Boolean. Returns whether the server.properties should be included in the server pack, for use in {@link #} + */ boolean getIncludeServerProperties() { return includeServerProperties; } + + /** + * Setter for whether the server.properties should be included in the server pack. + * For use in {@link #checkConfigFile(File)} + */ void setIncludeServerProperties(boolean newIncludeServerProperties) { this.includeServerProperties = newIncludeServerProperties; } + /** + * Getter for whether the start scripts should be included in the server pack. + * @return Boolean. Returns the whether the start scripts should be included in the server pack, for use in {@link #checkConfigFile(File)} and {@link #isCurse()} + */ boolean getIncludeStartScripts() { return includeStartScripts; } + + /** + * Setter for whether the start scripts should be included in the server pack. + * For use in {@link #checkConfigFile(File)} + */ void setIncludeStartScripts(boolean newIncludeStartScripts) { this.includeStartScripts = newIncludeStartScripts; } + /** + * Getter for whether a ZIP-archive of the server pack should be created. + * @return Boolean. Returns whether a ZIP-archive of the server pack should be created, for use in {@link #checkConfigFile(File)} and {@link #isCurse()} + */ boolean getIncludeZipCreation() { return includeZipCreation; } + + /** + * Setter for whether a ZIP-archive of the server pack should be created. + * For use in {@link #checkConfigFile(File)} + */ void setIncludeZipCreation(boolean newIncludeZipCreation) { this.includeZipCreation = newIncludeZipCreation; } + /** + * Getter for the CurseForge projectID of a modpack, which will be created by {@link CurseCreateModpack#curseForgeModpack(String, Integer, Integer)}. + * @return Integer. Returns the CurseForge projectID of a modpack, for use in {@link CurseCreateModpack#curseForgeModpack(String, Integer, Integer)} and {@link #checkCurseForge(String)} + */ int getProjectID() { return projectID; } + + /** + * Setter for the CurseForge projectID of a modpack, which will be created by {@link CurseCreateModpack#curseForgeModpack(String, Integer, Integer)}. + * For use in {@link #checkCurseForge(String)} + */ void setProjectID(int newProjectID) { this.projectID = newProjectID; } + /** + * Getter for the CurseForge file of a modpack, which will be created by {@link CurseCreateModpack#curseForgeModpack(String, Integer, Integer)}. + * @return Integer. Returns the CurseForge fileID of a modpack, for use in {@link #isCurse()} and {@link #checkCurseForge(String)} + */ int getProjectFileID() { return projectFileID; } + + /** + * Setter for the CurseForge file of a modpack, which will be created by {@link CurseCreateModpack#curseForgeModpack(String, Integer, Integer)}. + * For use in {@link #checkCurseForge(String)} + */ void setProjectFileID(int newProjectFileID) { this.projectFileID = newProjectFileID; } - /** Check the config file for configuration errors. If an error is found, the log file will tell the user where the error is, so they can fix their config. + /** + * Sets {@link #setConfig(Config)} and calls checks for the provided configuration-file. If any check returns <code>true</code> + * then the server pack will not be created. In order to find out which check failed, the user has to check their + * serverpackcreator.log in the logs directory. Calls<br> + * {@link #setConfig(Config)}<br> + * {@link #getConfig()}<br> + * {@link #setClientMods(List)}<br> + * {@link #getFallbackModsList()}<br> + * {@link #setIncludeServerInstallation(boolean)}<br> + * {@link #setIncludeServerIcon(boolean)}<br> + * {@link #setIncludeServerProperties(boolean)}<br> + * {@link #setIncludeStartScripts(boolean)}<br> + * {@link #setIncludeZipCreation(boolean)}<br> + * {@link #checkModpackDir(String)}<br> + * {@link #checkCurseForge(String)}<br> + * {@link #isDir(String)}<br> + * {@link #isCurse()}<br> + * {@link #printConfig(String, List, List, boolean, String, String, String, String, boolean, boolean, boolean, boolean)} * @param configFile The configuration file to check. Must be a valid configuration file for serverpackcreator to work. - * @return Return true if error is found in user's configuration. If an error is found, the application will exit in main. + * @return Boolean. Returns <code>false</code> if all checks are passed. */ public boolean checkConfigFile(File configFile) { boolean configHasError; @@ -306,9 +583,29 @@ public class Configuration { return configHasError; } - /** Checks whether the specified modpack exists. If it does, the config file is checked for errors. Should any error be found, it will return true so the configCheck method informs the user about an invalid configuration. - * @param modpackDir String. Should an existing modpack be specified, all configurations are read from local file and the server pack is created, if config is correct. - * @return Boolean. Returns true if an error is found during configuration check. False if the configuration is deemed valid. + /** + * If the in the configuration specified modpack dir is an existing directory, checks are made for valid configuration + * of: directories to copy to server pack,<br> + * if includeServerInstallation is <code>true</code>) path to Java executable/binary, Minecraft version, modloader and modloader version. + * Calls<br> + * {@link #setModpackDir(String)}<br> + * {@link #getModpackDir()}<br> + * {@link #checkCopyDirs(List, String)}<br> + * {@link #setCopyDirs(List)}<br> + * {@link #getIncludeServerInstallation()}<br> + * {@link #checkJavaPath(String)}<br> + * {@link #setJavaPath(String)}<br> + * {@link #getJavaPathFromSystem(String)}<br> + * {@link #isMinecraftVersionCorrect(String)}<br> + * {@link #setMinecraftVersion(String)}<br> + * {@link #checkModloader(String)}<br> + * {@link #setModLoader(String)}<br> + * {@link #setModLoaderCase(String)}<br> + * {@link #checkModloaderVersion(String, String)}<br> + * {@link #setModLoaderVersion(String)}<br> + * @param modpackDir String. Should an existing modpack be specified, all configurations are read from the provided + * configuration file and checks are made in this directory. + * @return Boolean. Returns true if an error is found during configuration check. */ private boolean isDir(String modpackDir) { boolean configHasError = false; @@ -322,7 +619,7 @@ public class Configuration { if (checkJavaPath(getConfig().getString("javaPath"))) { setJavaPath(getConfig().getString("javaPath")); } else { - String tmpJavaPath = getJavaPath(getConfig().getString("javaPath")); + String tmpJavaPath = getJavaPathFromSystem(getConfig().getString("javaPath")); if (checkJavaPath(tmpJavaPath)) { setJavaPath(tmpJavaPath); } else { configHasError = true; } } @@ -332,7 +629,7 @@ public class Configuration { } else { configHasError = true; } if (checkModloader(getConfig().getString("modLoader"))) { - setModLoader(setModloader(getConfig().getString("modLoader"))); + setModLoader(setModLoaderCase(getConfig().getString("modLoader"))); } else { configHasError = true; } if (checkModloaderVersion(getModLoader(), getConfig().getString("modLoaderVersion"))) { @@ -349,8 +646,29 @@ public class Configuration { return configHasError; } - /** Checks whether the specified projectID,fileID combination is a valid CurseForge project and file and whether the resulting directory exists. If the directory does not exist, make calls to other methods which create the modpack. Parses information gathered from the modpack to later replace the previous configuration file. - * @return Boolean. Currently always returns true so serverpackcreator does not go straight into server pack creation after the creation of the specified modpack. Gives the user the chance to check their config before actually creating the server pack. + /** + * If modpackDir in the configuration file is a CurseForge projectID,fileID combination, then the modpack is first + * created from said combination, using {@link CurseCreateModpack#curseForgeModpack(String, Integer, Integer)}, + * before proceeding to checking the rest of the configuration. If everything passes and the modpack was created, + * a new configuration file is created, replacing the one used to create the modpack in the first place, with the + * modpackDir field pointing to the newly created modpack. Calls<br> + * {@link CurseAPI} and various methods of it.<br> + * {@link #setModpackDir(String)}<br> + * {@link #getModpackDir()}<br> + * {@link CurseCreateModpack#curseForgeModpack(String, Integer, Integer)}<br> + * {@link CurseModpack}<br> + * {@link #containsFabric(CurseModpack)}<br> + * {@link #setModLoader(String)}<br> + * {@link #setModLoaderVersion(String)}<br> + * {@link #setModLoaderCase(String)}<br> + * {@link #checkJavaPath(String)}<br> + * {@link #setJavaPath(String)}<br> + * {@link #getJavaPathFromSystem(String)}<br> + * {@link #setCopyDirs(List)}<br> + * {@link #suggestCopyDirs(String)}<br> + * {@link #writeConfigToFile(String, String, String, boolean, String, String, String, String, boolean, boolean, boolean, boolean, File, boolean)}<br> + * @return Boolean. Returns false unless an error was encountered during either the acquisition of the CurseForge + * project name and displayname, or when the creation of the modpack fails. */ private boolean isCurse() { boolean configHasError = false; @@ -364,7 +682,9 @@ public class Configuration { catch (NullPointerException npe) { appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.iscurse.display")); try { displayName = Objects.requireNonNull(CurseAPI.project(getProjectID()).get().files().fileWithID(getProjectFileID())).nameOnDisk(); } - catch (NullPointerException npe2) { displayName = String.format("%d", getProjectFileID()); } } } + catch (NullPointerException npe2) { displayName = String.format("%d", getProjectFileID()); } + } + } catch (CurseException cex) { appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.iscurse.curseforge")); } @@ -398,7 +718,7 @@ public class Configuration { } else { - setModLoader(setModloader(modLoaderVersion[0])); + setModLoaderCase(modLoaderVersion[0]); setModLoaderVersion(modLoaderVersion[1]); } @@ -409,7 +729,7 @@ public class Configuration { setJavaPath(getConfig().getString("javaPath").replace("\\","/")); } else { - String tmpJavaPath = getJavaPath(getConfig().getString("javaPath").replace("\\","/")); + String tmpJavaPath = getJavaPathFromSystem(getConfig().getString("javaPath").replace("\\","/")); if (checkJavaPath(tmpJavaPath)) { setJavaPath(tmpJavaPath); @@ -432,6 +752,9 @@ public class Configuration { getConfigFile(), false ); + + } else { + configHasError = true; } } } catch (CurseException cex) { @@ -441,9 +764,12 @@ public class Configuration { return configHasError; } - /** Checks for the Jumploader mod in the project list of the modpack. If Jumploader is found, the modloader in the configuration will be set to Fabric. - * @param modpack Object. Contains information about our modpack. Used to get a list of all projects used in the modpack. - * @return Boolean. Returns true if Jumploader is found, false if not found. + /** + * Checks whether the projectID for the Jumploader mod is present in the list of mods required by the CurseForge modpack. + * If Jumploader is found, the modloader for the new configuration-file will be set to Fabric. + * @param modpack CurseModpack. Contains information about the CurseForge modpack. Used to get a list of all projects + * required by the modpack. + * @return Boolean. Returns true if Jumploader is found. */ private boolean containsFabric(CurseModpack modpack) { boolean hasJumploader = false; @@ -460,9 +786,14 @@ public class Configuration { return hasJumploader; } - /** Creates a list of suggested directories to include in server pack which is later on written to a new configuration file. - * @param modpackDir String. The directory for which to gather a list of directories. - * @return List, String. Returns a list of directories inside the modpack, excluding well known client-side only directories which would not be needed by a server pack. If you have suggestions to this list, open an issue on https://github.com/Griefed/ServerPackCreator/issues + /** + * Creates a list of suggested directories to include in server pack which is later on written to a new configuration file. + * The list of directories to include in the server pack which is generated by this method excludes well know directories + * which would not be needed by a server pack. If you have suggestions to this list, open an issue on + * <a href=https://github.com/Griefed/ServerPackCreator/issues>GitHub</a> + * @param modpackDir String. The directory for which to gather a list of directories to copy to the server pack. + * @return List, String. Returns a list of directories inside the modpack, excluding well known client-side only + * directories. */ private List<String> suggestCopyDirs(String modpackDir) { appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.suggestcopydirs.start")); @@ -499,52 +830,97 @@ public class Configuration { return Arrays.asList(copyDirs.clone()); } - /** Checks whether the modpackDir contains a valid projectID,fileID combination. ProjectIDs must be at least two digits long, fileIDs must be at least 5 digits long. Must be numbers separated by a ",". + /** + * Checks whether the specified modpack directory contains a valid projectID,fileID combination. + * ProjectIDs must be at least two digits long, fileIDs must be at least 5 digits long. + * Must be numbers separated by a ",". If modpackDir successfully matched a projectID,fileID combination, CurseForge + * is then checked for existence of said projectID and fileID. If the project can not be found or the file returns null + * then false is returned and the check is considered failed. * @param modpackDir String. The string which to check for a valid projectID,fileID combination. * @return Boolean. Returns true if the combination is deemed valid, false if not. */ boolean checkCurseForge(String modpackDir) { - String[] projectFileIds; + String[] curseForgeIDCombination; boolean configCorrect = false; if (modpackDir.matches("[0-9]{2,},[0-9]{5,}")) { - projectFileIds = modpackDir.split(","); + curseForgeIDCombination = modpackDir.split(","); + int curseProjectID = Integer.parseInt(curseForgeIDCombination[0]); + int curseFileID= Integer.parseInt(curseForgeIDCombination[1]); - setProjectID(Integer.parseInt(projectFileIds[0])); + try { + if (CurseAPI.project(curseProjectID).isPresent()) { + setProjectID(curseProjectID); + configCorrect = true; + } + } catch (CurseException cex) { + appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.iscurse.project"), curseProjectID),cex); + configCorrect = false; + } - setProjectFileID(Integer.parseInt(projectFileIds[1])); + try { + if (CurseAPI.project(curseProjectID).get().files().fileWithID(curseFileID) != null) { + setProjectFileID(curseFileID); + configCorrect = true; + } + } catch (CurseException cex) { + appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.iscurse.file"), curseFileID), cex); + configCorrect = false; + } appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkcurseforge.info")); appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.checkcurseforge.return"), getProjectID(), getProjectFileID())); appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.checkcurseforge.warn")); - configCorrect = true; } else { appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.checkcurseforge.warn2")); } return configCorrect; } - /** Converts various strings to booleans. + /** + * Converts various strings to booleans, by using regex, to allow for more variations in input.<br> + * <strong>Converted to <code>TRUE</code> are:<br></strong> + * <code>[Tt]rue</code><br> + * <code>1</code><br> + * <code>[Yy]es</code><br> + * <code>[Yy]</code><br> + * Language Key <code>cli.input.true</code><br> + * Language Key <code>cli.input.yes</code><br> + * Language Key <code>cli.input.yes.short</code><br> + * <strong>Converted to <code>FALSE</code> are:<br></strong> + * <code>[Ff]alse</code><br> + * <code>0</code><br> + * <code>[Nn]o</code><br> + * <code>[Nn]</code><br> + * Language Key <code>cli.input.false</code><br> + * Language Key <code>cli.input.no</code><br> + * Language Key <code>cli.input.no.short</code><br> * @param stringBoolean String. The string which should be converted to boolean if it matches certain patterns. * @return Boolean. Returns the corresponding boolean if match with pattern was found. If no match is found, assume and return false. */ public boolean convertToBoolean(String stringBoolean) { boolean returnBoolean; - if (stringBoolean.matches("[Tt]rue") || - stringBoolean.matches("1") || - stringBoolean.matches("[Yy]es") || - stringBoolean.matches("[Yy]")) { - + if (stringBoolean.matches("[Tt]rue") || + stringBoolean.matches("1") || + stringBoolean.matches("[Yy]es") || + stringBoolean.matches("[Yy]") || + stringBoolean.matches(localizationManager.getLocalizedString("cli.input.true")) || + stringBoolean.matches(localizationManager.getLocalizedString("cli.input.yes")) || + stringBoolean.matches(localizationManager.getLocalizedString("cli.input.yes.short")) + ){ returnBoolean = true; } else if (stringBoolean.matches("[Ff]alse") || - stringBoolean.matches("0") || - stringBoolean.matches("[Nn]o") || - stringBoolean.matches("[Nn]" )) { - + stringBoolean.matches("0") || + stringBoolean.matches("[Nn]o") || + stringBoolean.matches("[Nn]" ) || + stringBoolean.matches(localizationManager.getLocalizedString("cli.input.false")) || + stringBoolean.matches(localizationManager.getLocalizedString("cli.input.no")) || + stringBoolean.matches(localizationManager.getLocalizedString("cli.input.no.short")) + ){ returnBoolean = false; } else { @@ -555,19 +931,24 @@ public class Configuration { return returnBoolean; } - /** Prints the configuration. - * @param modpackDirectory String. Path to modpack directory. - * @param clientsideMods String List. List of clientside mods to delete from server pack. - * @param copyDirectories String List. List of directories to copy to server pack. - * @param installServer Boolean. Whether to install the modloader server. - * @param javaInstallPath String. Path to Java installation needed to install modloader server. - * @param minecraftVer String. Minecraft version the modpack uses. - * @param modloader String. Modloader the modpack uses. - * @param modloaderVersion String. Version of the modloader the modpack uses. + /** + * Prints all passed fields to the console and serverpackcreator.log. Used to show the user the configuration before + * ServerPackCreator starts the generation of the server pack or, if checks failed, to show the user their last + * configuration so they can more easily identify problems with said configuration.<br> + * Should a user report an issue on GitHub and include their logs (which I hope they do....), this would also + * help me help them. Logging is good. People should use more logging. + * @param modpackDirectory String. The used modpackDir field either from a configuration file or from configuration setup. + * @param clientsideMods String List. List of clientside-only mods to exclude from the server pack.. + * @param copyDirectories String List. List of directories in the modpack which are to be included in the server pack. + * @param installServer Boolean. Whether to install the modloader server in the server pack. + * @param javaInstallPath String. Path to the Java executable/binary needed for installing the modloader server in the server pack. + * @param minecraftVer String. The Minecraft version the modpack uses. + * @param modloader String. The modloader the modpack uses. + * @param modloaderVersion String. The version of the modloader the modpack uses. * @param includeIcon Boolean. Whether to include the server-icon.png in the server pack. * @param includeProperties Boolean. Whether to include the server.properties in the server pack. - * @param includeScripts Boolean. Whether to include start scripts for the specified modloader in the server pack. - * @param includeZip Boolean. Whether to create a zip-archive of the server pack. + * @param includeScripts Boolean. Whether to include the start scripts for the specified modloader in the server pack. + * @param includeZip Boolean. Whether to create a zip-archive of the server pack, excluding the Minecraft server JAR according to Mojang's TOS and EULA. */ void printConfig(String modpackDirectory, List<String> clientsideMods, @@ -585,7 +966,7 @@ public class Configuration { appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.printconfig.start")); appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.modpackdir"), modpackDirectory)); - if (clientsideMods.size() == 0) { + if (clientsideMods.isEmpty()) { appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.printconfig.noclientmods")); } else { @@ -617,9 +998,13 @@ public class Configuration { appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.zip"), includeZip)); } - /** Check whether the specified modpack directory exists. - * @param modpackDir String. The path to the modpack directory. - * @return Boolean. Returns true if the directory exists. False if not. + /** + * Checks whether the passed String is empty and if it is empty, prints the corresponding message to the console and + * serverpackcreator.log so the user knows what went wrong.<br> + * Checks whether the passed String is a directory and if it is not, prints the corresponding message to the console + * and serverpackcreator.log so the user knows what went wrong. + * @param modpackDir String. The path to the modpack directory to check whether it is empty and whether it is a directory. + * @return Boolean. Returns true if the directory exists. */ boolean checkModpackDir(String modpackDir) { boolean configCorrect = false; @@ -640,10 +1025,16 @@ public class Configuration { return configCorrect; } - /** Check whether the specified directories exist in the modpack directory. - * @param copyDirs String. The directories for which to check. - * @param modpackDir String. The path to the modpack directory in which to check for directories. - * @return Boolean. Returns true if all directories exist. False if any one does not. + /** + * Checks whether the passed list of directories which are supposed to be in the modpack directory is empty and + * prints a message to the console and serverpackcreator.log if it is.<br> + * Checks whether all directories in the list exist in the modpack directory and prints a message to the console + * and serverpackcreator.log if any one of the directories could not be found. + * @param copyDirs List String. The list of directories to check for existence. + * @param modpackDir String. The path to the modpack directory in which to check for existence of the passed list of + * directories. + * @return Boolean. Returns true if every directory was found in the modpack directory. If any single one was not found, + * false is returned. */ boolean checkCopyDirs(List<String> copyDirs, String modpackDir) { boolean configCorrect = true; @@ -669,11 +1060,15 @@ public class Configuration { return configCorrect; } - /** Automatically set Java path if none is specified + /** + * Checks the passed String whether it is empty, and if it is, automatically acquires the path to the users Java + * installation and appends bin/java.exe or bin/java depending on whether the path to said installation starts with + * Windows-typical C: prefix. * @param enteredPath String. The path to check whether it is empty. - * @return String. Return the entered Java path if it is not empty. Automatically determine path if empty. + * @return String. Returns the passed String as is if it is not empty. Returns the automatically acquired path to the + * Java executable/binary if the passed String was empty. */ - String getJavaPath(String enteredPath) { + String getJavaPathFromSystem(String enteredPath) { String autoJavaPath; if (enteredPath.equals("")) { @@ -696,9 +1091,10 @@ public class Configuration { } } - /** Checks whether the correct path to the Java installation was set. - * @param pathToJava String. The path to check for java.exe or java. - * @return Boolean. Returns true if the path was correctly set. False if not. + /** + * Checks whether the passed String ends with <code>java.exe</code> or <code>java</code> and whether the files exist. + * @param pathToJava String. The path to check for java.exe and java. + * @return Boolean. Returns true if the String ends with java.exe or java, and if either of these files exist. */ boolean checkJavaPath(String pathToJava) { boolean configCorrect = false; @@ -717,9 +1113,10 @@ public class Configuration { return configCorrect; } - /** Checks whether Forge or Fabric were specified as modloader. + /** + * Checks whether either Forge or Fabric were specified as the modloader. * @param modloader String. Check case insensitive for Forge or Fabric. - * @return Boolean. Returns true if the specified modloader is either Forge or Fabric. False if not. + * @return Boolean. Returns true if the specified modloader is either Forge or Fabric. False if neither. */ boolean checkModloader(String modloader) { boolean configCorrect = false; @@ -735,11 +1132,14 @@ public class Configuration { return configCorrect; } - /** Standardize the specified modloader. - * @param modloader String. If any case of Forge or Fabric was specified, return "Forge" or "Fabric", so users can enter "forge" or "fabric" or any combination of upper- and lowercase letters.. - * @return String. Returns a standardized String of the specified modloader. + /** + * Ensures the modloader is normalized to first letter upper case and rest lower case. Basically allows the user to + * input Forge or Fabric in any combination of upper- and lowercase and ServerPackCreator will still be able to + * work with the users input. + * @param modloader String. The String to check for case-insensitive cases of either Forge or Fabric. + * @return String. Returns a normalized String of the specified modloader. */ - String setModloader(String modloader) { + String setModLoaderCase(String modloader) { String returnLoader = null; if (modloader.equalsIgnoreCase("Forge")) { @@ -753,10 +1153,16 @@ public class Configuration { return returnLoader; } - /** Determine whether to check for correct Forge or correct Fabric modloader version. - * @param modloader String. Determines whether the check for Forge or Fabric is called. - * @param modloaderVersion String. The version of the modloader to check for. - * @return Boolean. Returns true if the specified modloader version is correct. False if not. + /** + * Depending on whether Forge or Fabric was specified as the modloader, this will call the corresponding version check + * to verify that the user correctly set their modloader version.<br> + * If the user specified Forge as their modloader, {@link #isForgeVersionCorrect(String)} is called and the version + * the user specified is checked against Forge's version manifest..<br> + * If the user specified Fabric as their modloader, {@link #isFabricVersionCorrect(String)} is called and the version + * the user specified is checked against Fabric's version manifest. + * @param modloader String. The passed modloader which determines whether the check for Forge or Fabric is called. + * @param modloaderVersion String. The version of the modloader which is checked against the corresponding modloaders manifest. + * @return Boolean. Returns true if the specified modloader version was found in the corresponding manifest. */ boolean checkModloaderVersion(String modloader, String modloaderVersion) { boolean isVersionCorrect = false; @@ -775,9 +1181,11 @@ public class Configuration { return isVersionCorrect; } - /** Check the specified Minecraft version against Mojang's version manifest to validate the version. - * @param minecraftVersion Minecraft version to check. - * @return Boolean. Returns true if the specified Minecraft version could be found in Mojang's manifest. False if not. + /** + * Checks whether the passed String is empty and if it is not. check the String against Mojang's version manifest + * to validate the version. + * @param minecraftVersion String. The version to check for in Mojang's version manifest. + * @return Boolean. Returns true if the specified Minecraft version could be found in Mojang's manifest. */ boolean isMinecraftVersionCorrect(String minecraftVersion) { if (!minecraftVersion.equals("")) { @@ -842,161 +1250,182 @@ public class Configuration { } } - /** Check the specified Fabric version against Fabric's version manifest to validate the version. - * @param fabricVersion String. The Fabric version to check. - * @return Boolean. Returns true if the specified Fabric version could be found in Fabric's manifest. False if not. + /** + * Checks whether the passed String is empty and if it is not. check the String against Fabric's version manifest + * to validate the version. + * @param fabricVersion String. The version to check for in Fabric's version manifest. + * @return Boolean. Returns true if the specified fabric version could be found in Fabric's manifest. */ boolean isFabricVersionCorrect(String fabricVersion) { - try { - URL manifestJsonURL = new URL(getFabricManifestUrl()); + if (!fabricVersion.equals("")) { + try { + URL manifestJsonURL = new URL(getFabricManifestUrl()); - ReadableByteChannel readableByteChannel = Channels.newChannel(manifestJsonURL.openStream()); + ReadableByteChannel readableByteChannel = Channels.newChannel(manifestJsonURL.openStream()); - FileOutputStream downloadManifestOutputStream; + FileOutputStream downloadManifestOutputStream; - try { - downloadManifestOutputStream = new FileOutputStream("fabric-manifest.xml"); - } catch (FileNotFoundException ex) { + try { + downloadManifestOutputStream = new FileOutputStream("fabric-manifest.xml"); + } catch (FileNotFoundException ex) { - appLogger.debug(localizationManager.getLocalizedString("configcheck.log.debug.isfabricversioncorrect"), ex); - File file = new File("fabric-manifest.xml"); + appLogger.debug(localizationManager.getLocalizedString("configcheck.log.debug.isfabricversioncorrect"), ex); + File file = new File("fabric-manifest.xml"); - if (!file.exists()){ + if (!file.exists()) { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isfabricversioncorrect.create")); - boolean jsonCreated = file.createNewFile(); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isfabricversioncorrect.create")); + boolean jsonCreated = file.createNewFile(); - if (jsonCreated) { + if (jsonCreated) { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isfabricversioncorrect.created")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isfabricversioncorrect.created")); - } else { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isfabricversioncorrect.parse")); + } else { + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isfabricversioncorrect.parse")); + } } + downloadManifestOutputStream = new FileOutputStream("fabric-manifest.xml"); } - downloadManifestOutputStream = new FileOutputStream("fabric-manifest.xml"); - } - FileChannel downloadManifestOutputStreamChannel = downloadManifestOutputStream.getChannel(); + FileChannel downloadManifestOutputStreamChannel = downloadManifestOutputStream.getChannel(); - downloadManifestOutputStream.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE); - downloadManifestOutputStream.flush(); - downloadManifestOutputStream.close(); + downloadManifestOutputStream.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE); + downloadManifestOutputStream.flush(); + downloadManifestOutputStream.close(); - readableByteChannel.close(); - downloadManifestOutputStreamChannel.close(); + readableByteChannel.close(); + downloadManifestOutputStreamChannel.close(); - File manifestXMLFile = new File("fabric-manifest.xml"); - Scanner xmlReader = new Scanner(manifestXMLFile); + File manifestXMLFile = new File("fabric-manifest.xml"); + Scanner xmlReader = new Scanner(manifestXMLFile); - ArrayList<String> dataList = new ArrayList<>(); + ArrayList<String> dataList = new ArrayList<>(); - while (xmlReader.hasNextLine()) { - dataList.add(xmlReader.nextLine()); - } + while (xmlReader.hasNextLine()) { + dataList.add(xmlReader.nextLine()); + } + + String[] dataArray = new String[dataList.size()]; + + String manifestXML; + + dataList.toArray(dataArray); - String[] dataArray = new String[dataList.size()]; + manifestXML = Arrays.toString(dataArray); - String manifestXML; + xmlReader.close(); - dataList.toArray(dataArray); + manifestXML = manifestXML.replaceAll("\\s", ""); - manifestXML = Arrays.toString(dataArray); + boolean contains = manifestXML.trim().contains(String.format("%s", fabricVersion)); - xmlReader.close(); + manifestXMLFile.deleteOnExit(); - manifestXML = manifestXML.replaceAll("\\s", ""); + return contains; - boolean contains = manifestXML.trim().contains(String.format("%s", fabricVersion)); + } catch (Exception ex) { - manifestXMLFile.deleteOnExit(); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isfabricversioncorrect.validate"), ex); + return false; + } - return contains; - } catch (Exception ex) { + } else { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isfabricversioncorrect.validate"), ex); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isfabricversioncorrect.empty")); return false; } } - /** Checks Forge version for errors (basically for its availability in Forge manifest) - * @param forgeVersion String. The Forge version to check. - * @return Boolean. Returns true if Forge version correct and false if it isn't correct. + /** + * Checks whether the passed String is empty and if it is not. check the String against Forge's version manifest + * to validate the version. + * @param forgeVersion String. The version to check for in Forge's version manifest. + * @return Boolean. Returns true if the specified Forge version could be found in Forge's manifest. */ boolean isForgeVersionCorrect(String forgeVersion) { - try { - URL manifestJsonURL = new URL(getForgeManifestUrl()); - ReadableByteChannel readableByteChannel = Channels.newChannel(manifestJsonURL.openStream()); - FileOutputStream downloadManifestOutputStream; - + if (!forgeVersion.equals("")) { try { + URL manifestJsonURL = new URL(getForgeManifestUrl()); + ReadableByteChannel readableByteChannel = Channels.newChannel(manifestJsonURL.openStream()); + FileOutputStream downloadManifestOutputStream; + + try { - downloadManifestOutputStream = new FileOutputStream("forge-manifest.json"); + downloadManifestOutputStream = new FileOutputStream("forge-manifest.json"); - } catch (FileNotFoundException ex) { + } catch (FileNotFoundException ex) { - appLogger.debug(localizationManager.getLocalizedString("configcheck.log.debug.isforgeversioncorrect"), ex); - File file = new File("forge-manifest.json"); + appLogger.debug(localizationManager.getLocalizedString("configcheck.log.debug.isforgeversioncorrect"), ex); + File file = new File("forge-manifest.json"); - if (!file.exists()){ + if (!file.exists()) { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isforgeversioncorrect.create")); + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isforgeversioncorrect.create")); - boolean jsonCreated = file.createNewFile(); + boolean jsonCreated = file.createNewFile(); - if (jsonCreated) { + if (jsonCreated) { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isforgeversioncorrect.created")); - } else { + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isforgeversioncorrect.created")); + } else { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isforgeversioncorrect.parse")); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isforgeversioncorrect.parse")); + } } + downloadManifestOutputStream = new FileOutputStream("forge-manifest.json"); } - downloadManifestOutputStream = new FileOutputStream("forge-manifest.json"); - } - FileChannel downloadManifestOutputStreamChannel = downloadManifestOutputStream.getChannel(); + FileChannel downloadManifestOutputStreamChannel = downloadManifestOutputStream.getChannel(); - downloadManifestOutputStream.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE); - downloadManifestOutputStream.flush(); - downloadManifestOutputStream.close(); + downloadManifestOutputStream.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE); + downloadManifestOutputStream.flush(); + downloadManifestOutputStream.close(); - readableByteChannel.close(); - downloadManifestOutputStreamChannel.close(); + readableByteChannel.close(); + downloadManifestOutputStreamChannel.close(); - File manifestJsonFile = new File("forge-manifest.json"); + File manifestJsonFile = new File("forge-manifest.json"); - manifestJsonFile.deleteOnExit(); + manifestJsonFile.deleteOnExit(); - Scanner jsonReader = new Scanner(manifestJsonFile); + Scanner jsonReader = new Scanner(manifestJsonFile); - ArrayList<String> dataList = new ArrayList<>(); + ArrayList<String> dataList = new ArrayList<>(); - while (jsonReader.hasNextLine()) { - dataList.add(jsonReader.nextLine()); - } + while (jsonReader.hasNextLine()) { + dataList.add(jsonReader.nextLine()); + } - String[] dataArray = new String[dataList.size()]; + String[] dataArray = new String[dataList.size()]; - String manifestJSON; + String manifestJSON; - dataList.toArray(dataArray); + dataList.toArray(dataArray); - manifestJSON = Arrays.toString(dataArray); + manifestJSON = Arrays.toString(dataArray); - jsonReader.close(); + jsonReader.close(); + + manifestJSON = manifestJSON.replaceAll("\\s", ""); - manifestJSON = manifestJSON.replaceAll("\\s", ""); + return manifestJSON.trim().contains(String.format("%s", forgeVersion)); - return manifestJSON.trim().contains(String.format("%s", forgeVersion)); + } catch (Exception ex) { - } catch (Exception ex) { + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isforgeversioncorrect.validate"), ex); + return false; + } + } else { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isforgeversioncorrect.validate"), ex); + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isforgeversioncorrect.empty")); return false; } } - /** Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer. - * @param modpackDir String. /server_pack The directory where the Fabric installer will be placed in. + /** + * Returns the latest version for the Fabric-loader. If Fabric's version manifest should be unreachable for whatever + * reason, version 0.11.3 is returned by default. + * @param modpackDir String. The Fabric-loader manifest will be stored inside the server_pack directory inside the modpack + * directory. * @return Boolean. Returns true if the download was successful. False if not. */ @SuppressWarnings({"ReturnInsideFinallyBlock", "finally"}) @@ -1031,7 +1460,30 @@ public class Configuration { } /** - * Generate new configuration file from CLI input. Prompts user to enter config file values and then generates a config file with values entered by user. + * Walk the user through the generation of a new ServerPackCreator configuration file by asking them for input, + * step-by-step, regarding their modpack. At the end of this method a fully configured serverpackcreator.conf file + * is saved and any previously existing configuration file replaced by the new one.<br> + * After every input, said input is displayed to the user and they're asked whether they are satisfied with said + * input. The user can then decide whether they would like to restart the entry of the field they just configured, + * or agree and move to the next one.<br> + * At the end of this method, the user will have a newly configured and created configuration file for ServerPackCreator.<br> + * <br> + * Most user-input is checked after entry to ensure the configuration is already in working-condition after completion + * of this method.<br> + * Calls<br> + * {@link #checkModpackDir(String)}<br> + * {@link #readBoolean()}<br> + * {@link #getFallbackModsList()}<br> + * {@link #readStringArray()}<br> + * {@link #checkCopyDirs(List, String)}<br> + * {@link #isMinecraftVersionCorrect(String)}<br> + * {@link #checkModloader(String)}<br> + * {@link #setModLoaderCase(String)}<br> + * {@link #checkModloaderVersion(String, String)}<br> + * {@link #getJavaPathFromSystem(String)}<br> + * {@link #checkJavaPath(String)}<br> + * {@link #printConfig(String, List, List, boolean, String, String, String, String, boolean, boolean, boolean, boolean)}<br> + * {@link #writeConfigToFile(String, String, String, boolean, String, String, String, String, boolean, boolean, boolean, boolean, File, boolean)} */ void createConfigurationFile() { List<String> clientMods, copyDirs; @@ -1078,6 +1530,14 @@ public class Configuration { appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), clientMods)); appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.clientmods.checkreturninfo")); System.out.print(localizationManager.getLocalizedString("clisetup.log.info.answer")); + if (clientMods.isEmpty()) { + clientMods = getFallbackModsList(); + appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.checkconfig.clientmods")); + + for (int i = 0; i < clientMods.size(); i++) { + appLogger.warn(String.format(" %s", clientMods.get(i))); } + //TODO: @Griefed Test whether this works + } } while (!readBoolean()); appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), clientMods)); tmpClientMods = new String[clientMods.size()]; @@ -1124,7 +1584,7 @@ public class Configuration { System.out.print(localizationManager.getLocalizedString("clisetup.log.info.modloader.cli")); modLoader = reader.nextLine(); } while (!checkModloader(modLoader)); - modLoader = setModloader(modLoader); + modLoader = setModLoaderCase(modLoader); appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), modLoader)); System.out.println(); @@ -1144,7 +1604,7 @@ public class Configuration { do { System.out.print(localizationManager.getLocalizedString("clisetup.log.info.java.cli")); String tmpJavaPath = reader.nextLine(); - javaPath = getJavaPath(tmpJavaPath); + javaPath = getJavaPathFromSystem(tmpJavaPath); } while (!checkJavaPath(javaPath)); System.out.println(); @@ -1214,8 +1674,11 @@ public class Configuration { } } - /** A helper method for config setup. Prompts user to enter the values that will be stored in arrays in config. - * @return String List. Returns list with user input values that will be stored in config. + /** + * A helper method for {@link #createConfigurationFile()}. Prompts the user to enter the values which will make up + * a String List in the new configuration file. If the user enters an empty line, the method is exited and the + * String List returned. + * @return String List. Returns the list of values entered by the user. */ private List<String> readStringArray() { Scanner readerArray = new Scanner(System.in); @@ -1231,7 +1694,8 @@ public class Configuration { } } - /** Converts list of strings into concatenated string. + /** + * Converts a sequence of Strings, for example from a list, into a concatenated String. * @param args Strings that will be concatenated into one string * @return String. Returns concatenated string that contains all provided values. */ @@ -1242,8 +1706,11 @@ public class Configuration { return stringBuilder.toString(); } - /** A helper method for config setup. Prompts user to enter boolean values that will be stored in config and checks entered values to prevent storing non-boolean values in boolean variables. - * @return Boolean. Converts to boolean and returns value entered by user that will be stored in config. + /** + * A helper method for {@link #createConfigurationFile()}. Prompts the user to enter values which will then be + * converted to booleans, either <code>TRUE</code> or <code>FALSE</code>. This prevents any non-boolean values + * from being written to the new configuration file. + * @return Boolean. True or False, depending on user input. */ private boolean readBoolean() { Scanner readerBoolean = new Scanner(System.in); @@ -1274,20 +1741,21 @@ public class Configuration { } } - /** Writes a new configuration file with the parameters passed to it. + /** Writes a new configuration file with the parameters passed to it.<br> + * Calls {@link #getConfigFile()}<br> * @param modpackDir String. The path to the modpack. * @param clientMods List, String. List of clientside-only mods. * @param copyDirs List, String. List of directories to include in server pack. - * @param includeServer Boolean. Whether to include a modloader server installation. - * @param javaPath String. Path to the java executable. + * @param includeServer Boolean. Whether the modloader server software should be installed. + * @param javaPath String. Path to the java executable/binary. * @param minecraftVersion String. Minecraft version used by the modpack and server pack. * @param modLoader String. Modloader used by the modpack and server pack. Ether Forge or Fabric. * @param modLoaderVersion String. Modloader version used by the modpack and server pack. * @param includeIcon Boolean. Whether to include a server-icon in the server pack. * @param includeProperties Boolean. Whether to include a properties file in the server pack. * @param includeScripts Boolean. Whether to include start scripts in the server pack. - * @param includeZip Boolean. Whether to create a ZIP-archive of the server pack, excluding Mojang's Minecraft server jar. - * @param fileName The name under which to write the new file. + * @param includeZip Boolean. Whether to create a ZIP-archive of the server pack, excluding Mojang's Minecraft server JAR. + * @param fileName The name under which to write the new configuration file. * @param isTemporary Decides whether to delete existing config-file. If isTemporary is false, existing config files will be deleted before writing the new file. * @return Boolean. Returns true if the configuration file has been successfully written and old ones replaced. */ diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index 7c9f23ab2..d4f8628f7 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -51,33 +51,32 @@ import java.util.zip.ZipOutputStream; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; /** - * <strong>Table of methods</strong> - * <p> - * 1. {@link #CreateServerPack(LocalizationManager, Configuration, CurseCreateModpack)}<p> - * 2. {@link #getPropertiesFile()}<p> - * 3. {@link #getIconFile()}<p> - * 4. {@link #getForgeWindowsFile()}<p> - * 5. {@link #getForgeLinuxFile()}<p> - * 6. {@link #getFabricWindowsFile()}<p> - * 7. {@link #getFabricLinuxFile()}<p> - * 8. {@link #run()}<p> - * 9. {@link #cleanupEnvironment(String)}<p> - * 10.{@link #copyStartScripts(String, String, boolean)}<p> - * 11.{@link #copyFiles(String, List, List)}<p> - * 12.{@link #excludeClientMods(String, List)}<p> - * 13.{@link #copyIcon(String)}<p> - * 14.{@link #copyProperties(String)}<p> - * 15.{@link #installServer(String, String, String, String, String)}<p> - * 16.{@link #zipBuilder(String, String, Boolean, String)}<p> - * 17.{@link #generateDownloadScripts(String, String, String)}<p> - * 18.{@link #fabricShell(String, String)}<p> - * 19.{@link #fabricBatch(String, String)}<p> - * 20.{@link #forgeShell(String, String)}<p> - * 21.{@link #forgeBatch(String, String)}<p> - * 22.{@link #downloadFabricJar(String)}<p> - * 23.{@link #latestFabricInstaller(String)}<p> - * 24.{@link #downloadForgeJar(String, String, String)}<p> - * 25.{@link #deleteMinecraftJar(String, String, String)}<p> + * <strong>Table of methods</strong><p> + * 1. {@link #CreateServerPack(LocalizationManager, Configuration, CurseCreateModpack)}<br> + * 2. {@link #getPropertiesFile()}<br> + * 3. {@link #getIconFile()}<br> + * 4. {@link #getForgeWindowsFile()}<br> + * 5. {@link #getForgeLinuxFile()}<br> + * 6. {@link #getFabricWindowsFile()}<br> + * 7. {@link #getFabricLinuxFile()}<br> + * 8. {@link #run()}<br> + * 9. {@link #cleanupEnvironment(String)}<br> + * 10.{@link #copyStartScripts(String, String, boolean)}<br> + * 11.{@link #copyFiles(String, List, List)}<br> + * 12.{@link #excludeClientMods(String, List)}<br> + * 13.{@link #copyIcon(String)}<br> + * 14.{@link #copyProperties(String)}<br> + * 15.{@link #installServer(String, String, String, String, String)}<br> + * 16.{@link #zipBuilder(String, String, Boolean, String)}<br> + * 17.{@link #generateDownloadScripts(String, String, String)}<br> + * 18.{@link #fabricShell(String, String)}<br> + * 19.{@link #fabricBatch(String, String)}<br> + * 20.{@link #forgeShell(String, String)}<br> + * 21.{@link #forgeBatch(String, String)}<br> + * 22.{@link #downloadFabricJar(String)}<br> + * 23.{@link #latestFabricInstaller(String)}<br> + * 24.{@link #downloadForgeJar(String, String, String)}<br> + * 25.{@link #deleteMinecraftJar(String, String, String)}<br> * 26.{@link #cleanUpServerPack(File, File, String, String, String, String)} * <p> * Requires an instance of {@link Configuration} from which to get all required information about the modpack and the @@ -97,12 +96,6 @@ public class CreateServerPack { private Configuration configuration; private CurseCreateModpack curseCreateModpack; private LocalizationManager localizationManager; - private final File propertiesFile = new File("server.properties"); - private final File iconFile = new File("server-icon.png"); - private final File forgeWindowsFile = new File("start-forge.bat"); - private final File forgeLinuxFile = new File("start-forge.sh"); - private final File fabricWindowsFile = new File("start-fabric.bat"); - private final File fabricLinuxFile = new File("start-fabric.sh"); /** * <strong>Constructor</strong><p> @@ -137,6 +130,13 @@ public class CreateServerPack { } } + private final File propertiesFile = new File("server.properties"); + private final File iconFile = new File("server-icon.png"); + private final File forgeWindowsFile = new File("start-forge.bat"); + private final File forgeLinuxFile = new File("start-forge.sh"); + private final File fabricWindowsFile = new File("start-fabric.bat"); + private final File fabricLinuxFile = new File("start-fabric.sh"); + /** * Getter for server.properties. * @return Returns the server.properties-file for use in {@link #copyProperties(String)} diff --git a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java index f1fccd829..d580ab406 100644 --- a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java +++ b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java @@ -29,37 +29,36 @@ import java.nio.file.Paths; /** * <strong>Table of methods</strong> * <p> - * 1. {@link #FilesSetup(LocalizationManager)}<p> - * 2. {@link #getConfigFile()}<p> - * 3. {@link #getOldConfigFile()}<p> - * 4. {@link #getPropertiesFile()}<p> - * 5. {@link #getIconFile()}<p> - * 6. {@link #getForgeWindowsFile()}<p> - * 7. {@link #getForgeLinuxFile()}<p> - * 8. {@link #getFabricWindowsFile()} - * 9. {@link #getFabricLinuxFile()} - * 10.{@link #filesSetup()}<p> - * 11.{@link #checkForConfig()}<p> - * 12.{@link #checkForFabricLinux()}<p> - * 13.{@link #checkForFabricWindows()}<p> - * 14.{@link #checkForForgeLinux()}<p> - * 15.{@link #checkForForgeWindows()}<p> - * 16.{@link #checkForProperties()}<p> + * 1. {@link #FilesSetup(LocalizationManager)}<br> + * 2. {@link #getConfigFile()}<br> + * 3. {@link #getOldConfigFile()}<br> + * 4. {@link #getPropertiesFile()}<br> + * 5. {@link #getIconFile()}<br> + * 6. {@link #getForgeWindowsFile()}<br> + * 7. {@link #getForgeLinuxFile()}<br> + * 8. {@link #getFabricWindowsFile()}<br> + * 9. {@link #getFabricLinuxFile()}<br> + * 10.{@link #filesSetup()}<br> + * 11.{@link #checkForConfig()}<br> + * 12.{@link #checkForFabricLinux()}<br> + * 13.{@link #checkForFabricWindows()}<br> + * 14.{@link #checkForForgeLinux()}<br> + * 15.{@link #checkForForgeWindows()}<br> + * 16.{@link #checkForProperties()}<br> * 17.{@link #checkForIcon()} * <p> * Requires instances of {@link LocalizationManager} for use of localization, but creates one if injected one is null. * <p> * Ensures all files needed by ServerPackCreator are available. If any one is missing, a new one is generated from the * template. Among the default files are:<p> - * <strong>serverpackcreator.conf</strong><p> - * <strong>server.properties</strong><p> - * <strong>server-icon.png</strong><p> - * <strong>start-forge.bar</strong><p> - * <strong>start-forge.sh</strong><p> - * <strong>start-fabric.bat</strong><p> + * <strong>serverpackcreator.conf</strong><br> + * <strong>server.properties</strong><br> + * <strong>server-icon.png</strong><br> + * <strong>start-forge.bar</strong><br> + * <strong>start-forge.sh</strong><br> + * <strong>start-fabric.bat</strong><br> * <strong>start-fabric.sh</strong> * <p> - * * Should an old configuration file, <em>creator.conf</em>, be detected, it is renamed to <em>serverpackcreator.conf</em> * to ensure a configuration file is present at all times. */ @@ -67,15 +66,6 @@ public class FilesSetup { private static final Logger appLogger = LogManager.getLogger(FilesSetup.class); - private final File configFile = new File("serverpackcreator.conf"); - private final File oldConfigFile = new File("creator.conf"); - private final File propertiesFile = new File("server.properties"); - private final File iconFile = new File("server-icon.png"); - private final File forgeWindowsFile = new File("start-forge.bat"); - private final File forgeLinuxFile = new File("start-forge.sh"); - private final File fabricWindowsFile = new File("start-fabric.bat"); - private final File fabricLinuxFile = new File("start-fabric.sh"); - private LocalizationManager localizationManager; /** @@ -92,6 +82,15 @@ public class FilesSetup { } } + private final File configFile = new File("serverpackcreator.conf"); + private final File oldConfigFile = new File("creator.conf"); + private final File propertiesFile = new File("server.properties"); + private final File iconFile = new File("server-icon.png"); + private final File forgeWindowsFile = new File("start-forge.bat"); + private final File forgeLinuxFile = new File("start-forge.sh"); + private final File fabricWindowsFile = new File("start-fabric.bat"); + private final File fabricLinuxFile = new File("start-fabric.sh"); + /** * Getter for serverpackcreator.conf. * @return Returns the serverpackcreator.conf-file for use in {@link #checkForConfig()} -- GitLab From c9be1b72e3dc515ab6c4dd304a59a24701570785 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sat, 1 May 2021 16:19:48 +0200 Subject: [PATCH 24/91] refactor(DI): Update javadocs and a couple of minor fixes --- .../de/griefed/resources/lang/lang_de_de.properties | 6 ++++-- .../de/griefed/resources/lang/lang_en_us.properties | 6 ++++-- .../de/griefed/resources/lang/lang_uk_ua.properties | 6 ++++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/resources/de/griefed/resources/lang/lang_de_de.properties b/src/main/resources/de/griefed/resources/lang/lang_de_de.properties index cbb003a30..977ed8370 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_de_de.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_de_de.properties @@ -121,6 +121,7 @@ configcheck.log.error.checkconfig.failure=Config check not successful. Check you configcheck.log.error.iscurse.curseforge=Error: Could not retrieve CurseForge project and file. configcheck.log.error.iscurse.json=Error: There was a fault during json parsing. configcheck.log.error.iscurse.project=Error: Project with ID %s could not be found +configcheck.log.error.iscurse.file=Error: File with ID %s could not be found configcheck.log.error.suggestcopydirs=Error: Something went wrong during the setup of the modpack. Copy dirs should never be empty. Please check the logs for errors and open an issue on https://github.com/Griefed/ServerPackCreator/issues. configcheck.log.error.printconfig.copydirs=Error: List of directories to copy is empty. configcheck.log.error.checkmodpackdir=Error: Modpack directory not specified. Please specify an existing directory. @@ -133,9 +134,11 @@ configcheck.log.error.isminecraftversioncorrect.parse=Error: Could not create Ma configcheck.log.error.isminecraftversioncorrect.validate=Error: Could not validate Minecraft version %s. configcheck.log.error.isminecraftversioncorrect.empty=You didn't specify your Minecraft version. configcheck.log.error.isfabricversioncorrect.parse=Error: Could not create Fabric Manifest XML File. -configcheck.log.error.isfabricversioncorrect.validate=An error occurred during Minecraft version validation. +configcheck.log.error.isfabricversioncorrect.validate=An error occurred during Fabric version validation. +configcheck.log.error.isfabricversioncorrect.empty=You did not specify a Fabric version. configcheck.log.error.isforgeversioncorrect.parse=Error: Could not create Forge Manifest JSON File. configcheck.log.error.isforgeversioncorrect.validate=An error occurred during Forge version validation. +configcheck.log.error.isforgeversioncorrect.empty=You did not specify a Forge version. configcheck.log.error.latestfabricloader.parse=Could not retrieve XML file. Defaulting to Loader version 0.11.3. copyfiles.log.error.cleanupenvironment.folder.delete=Error deleting file from %s/server_pack. copyfiles.log.error.cleanupenvironment.zip.delete=Error deleting old zip archive. @@ -160,7 +163,6 @@ filessetup.log.error.writeconfigtofile.config=Could not delete existing config f filessetup.log.error.writeconfigtofile.old=Could not delete old existing config file from previous versions of ServerPackCreator. filessetup.log.error.writeconfigtofile=Error: Couldn't write serverpackcreator.conf. handler.log.error.system.properties=Error getting system properties. -handler.log.error.runincli.copyfiles=There was an error calling the copyFiles method. handler.log.error.runincli=Error: Please check your serverpackcreator.conf for any incorrect settings. This message is also displayed if serverpackcreator downloaded and setup a modpack from a projectID,fileID for modpackDir. serversetup.log.error.installserver.fabric=Something went wrong during the installation of Fabric. Maybe the Fabric server are down or unreachable? Skipping... serversetup.log.error.installserver.fabricfail=An error occurred during Fabric installation. diff --git a/src/main/resources/de/griefed/resources/lang/lang_en_us.properties b/src/main/resources/de/griefed/resources/lang/lang_en_us.properties index 0f5b7cf18..b0895a86b 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_en_us.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_en_us.properties @@ -121,6 +121,7 @@ configcheck.log.error.checkconfig.failure=Config check not successful. Check you configcheck.log.error.iscurse.curseforge=Error: Could not retrieve CurseForge project and file. configcheck.log.error.iscurse.json=Error: There was a fault during json parsing. configcheck.log.error.iscurse.project=Error: Project with ID %s could not be found +configcheck.log.error.iscurse.file=Error: File with ID %s could not be found configcheck.log.error.suggestcopydirs=Error: Something went wrong during the setup of the modpack. Copy dirs should never be empty. Please check the logs for errors and open an issue on https://github.com/Griefed/ServerPackCreator/issues. configcheck.log.error.printconfig.copydirs=Error: List of directories to copy is empty. configcheck.log.error.checkmodpackdir=Error: Modpack directory not specified. Please specify an existing directory. @@ -133,9 +134,11 @@ configcheck.log.error.isminecraftversioncorrect.parse=Error: Could not create Ma configcheck.log.error.isminecraftversioncorrect.validate=Error: Could not validate Minecraft version %s. configcheck.log.error.isminecraftversioncorrect.empty=You didn't specify your Minecraft version. configcheck.log.error.isfabricversioncorrect.parse=Error: Could not create Fabric Manifest XML File. -configcheck.log.error.isfabricversioncorrect.validate=An error occurred during Minecraft version validation. +configcheck.log.error.isfabricversioncorrect.validate=An error occurred during Fabric version validation. +configcheck.log.error.isfabricversioncorrect.empty=You did not specify a Fabric version. configcheck.log.error.isforgeversioncorrect.parse=Error: Could not create Forge Manifest JSON File. configcheck.log.error.isforgeversioncorrect.validate=An error occurred during Forge version validation. +configcheck.log.error.isforgeversioncorrect.empty=You did not specify a Forge version. configcheck.log.error.latestfabricloader.parse=Could not retrieve XML file. Defaulting to Loader version 0.11.3. copyfiles.log.error.cleanupenvironment.folder.delete=Error deleting file from %s/server_pack. copyfiles.log.error.cleanupenvironment.zip.delete=Error deleting old zip archive. @@ -160,7 +163,6 @@ filessetup.log.error.writeconfigtofile.config=Could not delete existing config f filessetup.log.error.writeconfigtofile.old=Could not delete old existing config file from previous versions of ServerPackCreator. filessetup.log.error.writeconfigtofile=Error: Couldn't write serverpackcreator.conf. handler.log.error.system.properties=Error getting system properties. -handler.log.error.runincli.copyfiles=There was an error calling the copyFiles method. handler.log.error.runincli=Error: Please check your serverpackcreator.conf for any incorrect settings. This message is also displayed if serverpackcreator downloaded and setup a modpack from a projectID,fileID for modpackDir. serversetup.log.error.installserver.fabric=Something went wrong during the installation of Fabric. Maybe the Fabric server are down or unreachable? Skipping... serversetup.log.error.installserver.fabricfail=An error occurred during Fabric installation. diff --git a/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties b/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties index 8f9fbb81b..5f34a1bf6 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties @@ -121,6 +121,7 @@ configcheck.log.error.checkconfig.failure=Config check not successful. Check you configcheck.log.error.iscurse.curseforge=Error: Could not retrieve CurseForge project and file. configcheck.log.error.iscurse.json=Error: There was a fault during json parsing. configcheck.log.error.iscurse.project=Error: Project with ID %s could not be found +configcheck.log.error.iscurse.file=Error: File with ID %s could not be found configcheck.log.error.suggestcopydirs=Error: Something went wrong during the setup of the modpack. Copy dirs should never be empty. Please check the logs for errors and open an issue on https://github.com/Griefed/ServerPackCreator/issues. configcheck.log.error.printconfig.copydirs=Error: List of directories to copy is empty. configcheck.log.error.checkmodpackdir=Error: Modpack directory not specified. Please specify an existing directory. @@ -133,9 +134,11 @@ configcheck.log.error.isminecraftversioncorrect.parse=Error: Could not create Ma configcheck.log.error.isminecraftversioncorrect.validate=Error: Could not validate Minecraft version %s. configcheck.log.error.isminecraftversioncorrect.empty=You didn't specify your Minecraft version. configcheck.log.error.isfabricversioncorrect.parse=Error: Could not create Fabric Manifest XML File. -configcheck.log.error.isfabricversioncorrect.validate=An error occurred during Minecraft version validation. +configcheck.log.error.isfabricversioncorrect.validate=An error occurred during Fabric version validation. +configcheck.log.error.isfabricversioncorrect.empty=You did not specify a Fabric version. configcheck.log.error.isforgeversioncorrect.parse=Error: Could not create Forge Manifest JSON File. configcheck.log.error.isforgeversioncorrect.validate=An error occurred during Forge version validation. +configcheck.log.error.isforgeversioncorrect.empty=You did not specify a Forge version. configcheck.log.error.latestfabricloader.parse=Could not retrieve XML file. Defaulting to Loader version 0.11.3. copyfiles.log.error.cleanupenvironment.folder.delete=Error deleting file from %s/server_pack. copyfiles.log.error.cleanupenvironment.zip.delete=Error deleting old zip archive. @@ -160,7 +163,6 @@ filessetup.log.error.writeconfigtofile.config=Could not delete existing config f filessetup.log.error.writeconfigtofile.old=Could not delete old existing config file from previous versions of ServerPackCreator. filessetup.log.error.writeconfigtofile=Error: Couldn't write serverpackcreator.conf. handler.log.error.system.properties=Error getting system properties. -handler.log.error.runincli.copyfiles=There was an error calling the copyFiles method. handler.log.error.runincli=Error: Please check your serverpackcreator.conf for any incorrect settings. This message is also displayed if serverpackcreator downloaded and setup a modpack from a projectID,fileID for modpackDir. serversetup.log.error.installserver.fabric=Something went wrong during the installation of Fabric. Maybe the Fabric server are down or unreachable? Skipping... serversetup.log.error.installserver.fabricfail=An error occurred during Fabric installation. -- GitLab From 36c846ff69cdfd5f87602a1a1a59537cd47362ad Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sat, 1 May 2021 16:29:32 +0200 Subject: [PATCH 25/91] refactor(DI): Update javadocs and a couple of minor fixes --- .../serverpackcreator/Configuration.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/Configuration.java b/src/main/java/de/griefed/serverpackcreator/Configuration.java index b8eb53fd0..1367fb24e 100644 --- a/src/main/java/de/griefed/serverpackcreator/Configuration.java +++ b/src/main/java/de/griefed/serverpackcreator/Configuration.java @@ -259,6 +259,7 @@ public class Configuration { /** * Setter for a {@link Config} containing a parsed configuration-file. * For use in {@link #checkConfigFile(File)} + * @param newConfig The new Typesafe Config to store. */ public void setConfig(Config newConfig) { this.config = newConfig; @@ -285,6 +286,7 @@ public class Configuration { /** * Setter for the list of clientside-only mods to exclude from server pack. * For use in {@link #checkConfigFile(File)} + * @param newClientMods The new list of clientside-only mods to store. */ void setClientMods(List<String> newClientMods) { this.clientMods = newClientMods; @@ -303,6 +305,7 @@ public class Configuration { /** * Setter for the list of directories in the modpack to copy to the server pack. * For use in {@link #isDir(String)} and {@link #isCurse()} + * @param newCopyDirs The new list of directories to include in server pack to store. */ void setCopyDirs(List<String> newCopyDirs) { this.copyDirs = newCopyDirs; @@ -322,6 +325,7 @@ public class Configuration { /** * Setter for the path to the modpack directory. Replaces any occurrences of \ with /. * For use in {@link #isDir(String)} and {@link #isCurse()} + * @param newModpackDir The new modpack directory path to store. */ void setModpackDir(String newModpackDir) { newModpackDir = newModpackDir.replace("\\","/"); @@ -339,6 +343,7 @@ public class Configuration { /** * Setter for the path to the Java executable/binary. Replaces any occurrences of \ with /. * For use in {@link #isDir(String)} and {@link #isCurse()} + * @param newJavaPath The new Java path to store. */ void setJavaPath(String newJavaPath) { newJavaPath = newJavaPath.replace("\\", "/"); @@ -347,7 +352,7 @@ public class Configuration { /** * Getter for the version of Minecraft used by the modpack. - * @return String. Returns the for use in {@link #} + * @return String. Returns the for use in {@link #checkConfigFile(File)} and {@link #isCurse()} */ String getMinecraftVersion() { return minecraftVersion; @@ -356,6 +361,7 @@ public class Configuration { /** * Setter for the Minecraft version used by the modpack. * For use in {@link #isDir(String)} and {@link #isCurse()} + * @param newMinecraftVersion The new Minecraft version to store. */ void setMinecraftVersion(String newMinecraftVersion) { this.minecraftVersion = newMinecraftVersion; @@ -375,6 +381,7 @@ public class Configuration { /** * Setter for the modloader used by the modpack. * For use in {@link #isDir(String)} and {@link #isCurse()} + * @param newModLoader The new modloader to store. */ void setModLoader(String newModLoader) { this.modLoader = newModLoader; @@ -391,6 +398,7 @@ public class Configuration { /** * Setter for the version of the modloader used by the modpack. * For use in {@link #isDir(String)} and {@link #isCurse()} + * @param newModLoaderVersion The new modloader version to store. */ void setModLoaderVersion(String newModLoaderVersion) { this.modLoaderVersion = newModLoaderVersion; @@ -410,6 +418,7 @@ public class Configuration { /** * Setter for whether the modloader server installation should be included. * For use in {@link #checkConfigFile(File)} + * @param newIncludeServerInstallation The new boolean to store. */ void setIncludeServerInstallation(boolean newIncludeServerInstallation) { this.includeServerInstallation = newIncludeServerInstallation; @@ -427,6 +436,7 @@ public class Configuration { /** * Setter for whether the server-icon.png should be included in the server pack. * For use in {@link #checkConfigFile(File)} + * @param newIncludeServerIcon The new boolean to store. */ void setIncludeServerIcon(boolean newIncludeServerIcon) { this.includeServerIcon = newIncludeServerIcon; @@ -434,7 +444,8 @@ public class Configuration { /** * Getter for whether the server.properties should be included in the server pack. - * @return Boolean. Returns whether the server.properties should be included in the server pack, for use in {@link #} + * @return Boolean. Returns whether the server.properties should be included in the server pack, for use in + * {@link #checkConfigFile(File)} and {@link #isCurse()} */ boolean getIncludeServerProperties() { return includeServerProperties; @@ -443,6 +454,7 @@ public class Configuration { /** * Setter for whether the server.properties should be included in the server pack. * For use in {@link #checkConfigFile(File)} + * @param newIncludeServerProperties The new boolean to store. */ void setIncludeServerProperties(boolean newIncludeServerProperties) { this.includeServerProperties = newIncludeServerProperties; @@ -459,6 +471,7 @@ public class Configuration { /** * Setter for whether the start scripts should be included in the server pack. * For use in {@link #checkConfigFile(File)} + * @param newIncludeStartScripts The new boolean to store. */ void setIncludeStartScripts(boolean newIncludeStartScripts) { this.includeStartScripts = newIncludeStartScripts; @@ -475,6 +488,7 @@ public class Configuration { /** * Setter for whether a ZIP-archive of the server pack should be created. * For use in {@link #checkConfigFile(File)} + * @param newIncludeZipCreation The new boolean to store. */ void setIncludeZipCreation(boolean newIncludeZipCreation) { this.includeZipCreation = newIncludeZipCreation; @@ -491,6 +505,7 @@ public class Configuration { /** * Setter for the CurseForge projectID of a modpack, which will be created by {@link CurseCreateModpack#curseForgeModpack(String, Integer, Integer)}. * For use in {@link #checkCurseForge(String)} + * @param newProjectID The new projectID to store. */ void setProjectID(int newProjectID) { this.projectID = newProjectID; @@ -507,6 +522,7 @@ public class Configuration { /** * Setter for the CurseForge file of a modpack, which will be created by {@link CurseCreateModpack#curseForgeModpack(String, Integer, Integer)}. * For use in {@link #checkCurseForge(String)} + * @param newProjectFileID The new projectFileID to store. */ void setProjectFileID(int newProjectFileID) { this.projectFileID = newProjectFileID; -- GitLab From e30f43555a235f162723bed776df250e9f95d027 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sat, 1 May 2021 17:54:10 +0200 Subject: [PATCH 26/91] refactor(DI): Update javadocs, make creation of modpack if CurseForge projectID,fileID was provided optional, write getter for ObjectMapper --- .../serverpackcreator/Configuration.java | 73 +++++++++++-------- .../examples/serverpackcreator.example | 2 +- .../resources/lang/lang_de_de.properties | 31 ++++---- .../resources/lang/lang_en_us.properties | 31 ++++---- .../resources/lang/lang_uk_ua.properties | 31 ++++---- .../griefed/resources/serverpackcreator.conf | 2 +- 6 files changed, 93 insertions(+), 77 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/Configuration.java b/src/main/java/de/griefed/serverpackcreator/Configuration.java index 1367fb24e..d635040bb 100644 --- a/src/main/java/de/griefed/serverpackcreator/Configuration.java +++ b/src/main/java/de/griefed/serverpackcreator/Configuration.java @@ -86,7 +86,7 @@ import java.util.*; * 35.{@link #setProjectID(int)}<br> * 36.{@link #getProjectFileID()}<br> * 37.{@link #setProjectFileID(int)}<br> - * 38.{@link #checkConfigFile(File)}<br> + * 38.{@link #checkConfigFile(File, boolean)}<br> * 39.{@link #isDir(String)}<br> * 40.{@link #isCurse()}<br> * 41.{@link #containsFabric(CurseModpack)}<br> @@ -202,6 +202,15 @@ public class Configuration { private Config config; + private ObjectMapper objectMapper = new ObjectMapper(); + + public ObjectMapper getObjectMapper() { + this.objectMapper = new ObjectMapper(); + this.objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); + this.objectMapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY); + return objectMapper; + } + /** * Getter for creator.conf. * @return File. Returns the creator.conf-file for use in {@link #writeConfigToFile(String, String, String, boolean, String, String, String, String, boolean, boolean, boolean, boolean, File, boolean)} @@ -248,7 +257,7 @@ public class Configuration { /** * Getter for a {@link Config} containing a parsed configuration-file. * @return Config. Returns parsed serverpackcreator.conf for use in<br> - * {@link #checkConfigFile(File)}<br> + * {@link #checkConfigFile(File, boolean)}<br> * {@link #isDir(String)}<br> * {@link #isCurse()} */ @@ -258,7 +267,7 @@ public class Configuration { /** * Setter for a {@link Config} containing a parsed configuration-file. - * For use in {@link #checkConfigFile(File)} + * For use in {@link #checkConfigFile(File, boolean)} * @param newConfig The new Typesafe Config to store. */ public void setConfig(Config newConfig) { @@ -267,7 +276,7 @@ public class Configuration { /** * Getter for the fallback clientside-only mods-list, in case no customized one is provided by the user. - * @return List String. Returns the fallback clientside-only mods-list for use in {@link #checkConfigFile(File)} + * @return List String. Returns the fallback clientside-only mods-list for use in {@link #checkConfigFile(File, boolean)} */ List<String> getFallbackModsList() { return fallbackModsList; @@ -276,7 +285,7 @@ public class Configuration { /** * Getter for a list of clientside-only mods to exclude from server pack. * @return List String. Returns the list of clientside-only mods for use in<br> - * {@link #checkConfigFile(File)}<br> + * {@link #checkConfigFile(File, boolean)}<br> * {@link #isCurse()} */ List<String> getClientMods() { @@ -285,7 +294,7 @@ public class Configuration { /** * Setter for the list of clientside-only mods to exclude from server pack. - * For use in {@link #checkConfigFile(File)} + * For use in {@link #checkConfigFile(File, boolean)} * @param newClientMods The new list of clientside-only mods to store. */ void setClientMods(List<String> newClientMods) { @@ -295,7 +304,7 @@ public class Configuration { /** * Getter for the list of directories in the modpack to copy to the server pack. * @return List String. Returns the list of directories to copy to the server pack for use in<br> - * {@link #checkConfigFile(File)}<br> + * {@link #checkConfigFile(File, boolean)}<br> * {@link #isCurse()} */ List<String> getCopyDirs() { @@ -314,7 +323,7 @@ public class Configuration { /** * Getter for the path to the modpack directory. * @return String. Returns the path to the modpack directory for use in<br> - * {@link #checkConfigFile(File)}<br> + * {@link #checkConfigFile(File, boolean)}<br> * {@link #isDir(String)}<br> * {@link #isCurse()} */ @@ -334,7 +343,7 @@ public class Configuration { /** * Getter for the path to the Java executable/binary. - * @return String. Returns the path to the Java executable/binary for use in {@link #checkConfigFile(File)} and {@link #isCurse()} + * @return String. Returns the path to the Java executable/binary for use in {@link #checkConfigFile(File, boolean)} and {@link #isCurse()} */ String getJavaPath() { return javaPath; @@ -352,7 +361,7 @@ public class Configuration { /** * Getter for the version of Minecraft used by the modpack. - * @return String. Returns the for use in {@link #checkConfigFile(File)} and {@link #isCurse()} + * @return String. Returns the for use in {@link #checkConfigFile(File, boolean)} and {@link #isCurse()} */ String getMinecraftVersion() { return minecraftVersion; @@ -370,7 +379,7 @@ public class Configuration { /** * Getter for the modloader used by the modpack. * @return String. Returns the modloader used by the modpack for use in<br> - * {@link #checkConfigFile(File)}<br> + * {@link #checkConfigFile(File, boolean)}<br> * {@link #isDir(String)}<br> * {@link #isCurse()} */ @@ -389,7 +398,7 @@ public class Configuration { /** * Getter for the version of the modloader used by the modpack. - * @return String. Returns the version of the modloader used by the modpack for use in {@link #checkConfigFile(File)} and {@link #isCurse()} + * @return String. Returns the version of the modloader used by the modpack for use in {@link #checkConfigFile(File, boolean)} and {@link #isCurse()} */ String getModLoaderVersion() { return modLoaderVersion; @@ -407,7 +416,7 @@ public class Configuration { /** * Getter for whether the modloader server installation should be included. * @return Boolean. Returns whether the server installation should be included, for use in<br> - * {@link #checkConfigFile(File)}<br> + * {@link #checkConfigFile(File, boolean)}<br> * {@link #isDir(String)}<br> * {@link #isCurse()} */ @@ -417,7 +426,7 @@ public class Configuration { /** * Setter for whether the modloader server installation should be included. - * For use in {@link #checkConfigFile(File)} + * For use in {@link #checkConfigFile(File, boolean)} * @param newIncludeServerInstallation The new boolean to store. */ void setIncludeServerInstallation(boolean newIncludeServerInstallation) { @@ -426,7 +435,7 @@ public class Configuration { /** * Getter for whether the server-icon.png should be included in the server pack. - * @return Boolean. Returns whether the server-icon.png should be included in the server pack, for use in {@link #checkConfigFile(File)} + * @return Boolean. Returns whether the server-icon.png should be included in the server pack, for use in {@link #checkConfigFile(File, boolean)} * and {@link #isCurse()} */ boolean getIncludeServerIcon() { @@ -435,7 +444,7 @@ public class Configuration { /** * Setter for whether the server-icon.png should be included in the server pack. - * For use in {@link #checkConfigFile(File)} + * For use in {@link #checkConfigFile(File, boolean)} * @param newIncludeServerIcon The new boolean to store. */ void setIncludeServerIcon(boolean newIncludeServerIcon) { @@ -445,7 +454,7 @@ public class Configuration { /** * Getter for whether the server.properties should be included in the server pack. * @return Boolean. Returns whether the server.properties should be included in the server pack, for use in - * {@link #checkConfigFile(File)} and {@link #isCurse()} + * {@link #checkConfigFile(File, boolean)} and {@link #isCurse()} */ boolean getIncludeServerProperties() { return includeServerProperties; @@ -453,7 +462,7 @@ public class Configuration { /** * Setter for whether the server.properties should be included in the server pack. - * For use in {@link #checkConfigFile(File)} + * For use in {@link #checkConfigFile(File, boolean)} * @param newIncludeServerProperties The new boolean to store. */ void setIncludeServerProperties(boolean newIncludeServerProperties) { @@ -462,7 +471,7 @@ public class Configuration { /** * Getter for whether the start scripts should be included in the server pack. - * @return Boolean. Returns the whether the start scripts should be included in the server pack, for use in {@link #checkConfigFile(File)} and {@link #isCurse()} + * @return Boolean. Returns the whether the start scripts should be included in the server pack, for use in {@link #checkConfigFile(File, boolean)} and {@link #isCurse()} */ boolean getIncludeStartScripts() { return includeStartScripts; @@ -470,7 +479,7 @@ public class Configuration { /** * Setter for whether the start scripts should be included in the server pack. - * For use in {@link #checkConfigFile(File)} + * For use in {@link #checkConfigFile(File, boolean)} * @param newIncludeStartScripts The new boolean to store. */ void setIncludeStartScripts(boolean newIncludeStartScripts) { @@ -479,7 +488,7 @@ public class Configuration { /** * Getter for whether a ZIP-archive of the server pack should be created. - * @return Boolean. Returns whether a ZIP-archive of the server pack should be created, for use in {@link #checkConfigFile(File)} and {@link #isCurse()} + * @return Boolean. Returns whether a ZIP-archive of the server pack should be created, for use in {@link #checkConfigFile(File, boolean)} and {@link #isCurse()} */ boolean getIncludeZipCreation() { return includeZipCreation; @@ -487,7 +496,7 @@ public class Configuration { /** * Setter for whether a ZIP-archive of the server pack should be created. - * For use in {@link #checkConfigFile(File)} + * For use in {@link #checkConfigFile(File, boolean)} * @param newIncludeZipCreation The new boolean to store. */ void setIncludeZipCreation(boolean newIncludeZipCreation) { @@ -546,11 +555,12 @@ public class Configuration { * {@link #isDir(String)}<br> * {@link #isCurse()}<br> * {@link #printConfig(String, List, List, boolean, String, String, String, String, boolean, boolean, boolean, boolean)} - * @param configFile The configuration file to check. Must be a valid configuration file for serverpackcreator to work. + * @param configFile File. The configuration file to check. Must be a valid configuration file for serverpackcreator to work. + * @param shouldModpackBeCreated Boolean. Whether the CurseForge modpack should be downloaded and created. * @return Boolean. Returns <code>false</code> if all checks are passed. */ - public boolean checkConfigFile(File configFile) { - boolean configHasError; + public boolean checkConfigFile(File configFile, boolean shouldModpackBeCreated) { + boolean configHasError = false; appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.start")); try { setConfig(ConfigFactory.parseFile(configFile)); @@ -573,7 +583,11 @@ public class Configuration { if (checkModpackDir(getConfig().getString("modpackDir").replace("\\","/"))) { configHasError = isDir(getConfig().getString("modpackDir").replace("\\","/")); } else if (checkCurseForge(getConfig().getString("modpackDir").replace("\\","/"))) { - configHasError = isCurse(); + if (shouldModpackBeCreated) { + configHasError = isCurse(); + } else { + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.skipmodpackcreation")); + } } else { configHasError = true; } @@ -709,10 +723,8 @@ public class Configuration { if (curseCreateModpack.curseForgeModpack(getModpackDir(), getProjectID(), getProjectFileID())) { try { byte[] jsonData = Files.readAllBytes(Paths.get(String.format("%s/manifest.json", getModpackDir()))); - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); - objectMapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY); - CurseModpack modpack = objectMapper.readValue(jsonData, CurseModpack.class); + + CurseModpack modpack = getObjectMapper().readValue(jsonData, CurseModpack.class); String[] minecraftLoaderVersions = modpack .getMinecraft() @@ -723,6 +735,7 @@ public class Configuration { .replace("[", "") .replace("]", "") .split("-"); + setMinecraftVersion(minecraftLoaderVersions[0] .replace("[", "")); diff --git a/src/main/resources/de/griefed/resources/examples/serverpackcreator.example b/src/main/resources/de/griefed/resources/examples/serverpackcreator.example index b0fb9181c..b7496ec9a 100644 --- a/src/main/resources/de/griefed/resources/examples/serverpackcreator.example +++ b/src/main/resources/de/griefed/resources/examples/serverpackcreator.example @@ -1,6 +1,6 @@ # Path to your modpack. Can be either relative or absolute. # Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" -# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7: "390331,3215793" +# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.8: "430517,3266321" modpackDir = "Survive Create Prosper 4 - Copy" # List of client-only mods to delete from serverpack. diff --git a/src/main/resources/de/griefed/resources/lang/lang_de_de.properties b/src/main/resources/de/griefed/resources/lang/lang_de_de.properties index 977ed8370..2e61dc705 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_de_de.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_de_de.properties @@ -20,7 +20,7 @@ createserverpack.gui.createandshowgui=ServerPackCreator createserverpack.gui.tabbedpane.createserverpack.title=Create Server Pack createserverpack.gui.tabbedpane.createserverpack.tip=Configure and start generation of server pack. createserverpack.gui.tabbedpane.serverpackcreatorlog.title=ServerPackCreator Log -createserverpack.gui.tabbedpane.serverpackcreatorlog.tip=Latest serverpackcreator log tail. +createserverpack.gui.tabbedpane.serverpackcreatorlog.tip=Latest ServerPackCreator log tail. createserverpack.gui.tabbedpane.modloaderinstallerlog.title=Modloader-Installer Log createserverpack.gui.tabbedpane.modloaderinstallerlog.tip=Latest modloader-installer log tail. createserverpack.gui.tabbedpane.about.title=About @@ -86,7 +86,7 @@ createserverpack.gui.about.issue=Create an issue on GitHub. createserverpack.gui.about.discord=Get support and chat on Griefed's Discord server. # OTHER -filessetup.writeconfigtofile.modpackdir=# Path to your modpack. Can be either relative or absolute.\n# Example: \"./Some Modpack\" or \"C:/Minecraft/Some Modpack\"\n# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7: \"390331,3215793\" +filessetup.writeconfigtofile.modpackdir=# Path to your modpack. Can be either relative or absolute.\n# Example: \"./Some Modpack\" or \"C:/Minecraft/Some Modpack\"\n# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.8: \"430517,3266321\" filessetup.writeconfigtofile.clientmods=# List of client-only mods to delete from serverpack.\n# No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge!\n# Example: [AmbientSounds,ClientTweaks,PackMenu,BetterAdvancement,jeiintegration] filessetup.writeconfigtofile.copydirs=# Name of directories to include in serverpack.\n# When specifying \"saves/world_name\", \"world_name\" will be copied to the base directory of the serverpack\n# for immediate use with the server. Automatically set when projectID,fileID for modpackDir has been specified.\n# Example: [config,mods,scripts] filessetup.writeconfigtofile.includeserverinstallation=# Whether to install a Forge/Fabric server for the serverpack. Must be true or false.\n# Default value is true. @@ -163,7 +163,7 @@ filessetup.log.error.writeconfigtofile.config=Could not delete existing config f filessetup.log.error.writeconfigtofile.old=Could not delete old existing config file from previous versions of ServerPackCreator. filessetup.log.error.writeconfigtofile=Error: Couldn't write serverpackcreator.conf. handler.log.error.system.properties=Error getting system properties. -handler.log.error.runincli=Error: Please check your serverpackcreator.conf for any incorrect settings. This message is also displayed if serverpackcreator downloaded and setup a modpack from a projectID,fileID for modpackDir. +handler.log.error.runincli=Error: Please check your serverpackcreator.conf for any incorrect settings. This message is also displayed if ServerPackCreator downloaded and setup a modpack from a projectID,fileID for modpackDir. serversetup.log.error.installserver.fabric=Something went wrong during the installation of Fabric. Maybe the Fabric server are down or unreachable? Skipping... serversetup.log.error.installserver.fabricfail=An error occurred during Fabric installation. serversetup.log.error.installserver.forge=Something went wrong during the installation of Forge. Maybe the Forge servers are down or unreachable? Skipping... @@ -206,10 +206,10 @@ createmodpack.log.info.downloadmods.specificmod=Downloading mod %d of %d: %s | % createmodpack.log.info.downloadmods.tryagain=Trying again for mod %s (ID %s) | %s (ID %s). createmodpack.log.info.copyoverrides.info=Copying folders from overrides to modpack... createmodpack.log.info.checkcurseforgedir.create=CurseForge directory doesn't exist. We will download your file and create the modpack. -createmodpack.log.info.checkcurseforgedir=CurseForge directory found. +createmodpack.log.info.checkcurseforgedir=CurseForge directory found. Cleaning up... createmodpack.log.info.unziparchive=Extracting modpack ZIP-file. -clisetup.log.info.start=You started serverpackcreator with the "%s" argument. Step-by-step generation of config file initiated... -clisetup.log.info.modpack.enter=Please enter your modpack path. This path can be relative to serverpackcreator, or absolute. +clisetup.log.info.start=You started ServerPackCreator with the "%s" argument. Step-by-step generation of config file initiated... +clisetup.log.info.modpack.enter=Please enter your modpack path. This path can be relative to ServerPackCreator, or absolute. clisetup.log.info.modpack.example=Example: "./Some Modpack" or "C:/Minecraft/Some Modpack" clisetup.log.info.modpack.cli=Path to modpack directory: clisetup.log.info.clientmods.enter=Enter filenames of clientside-only mods, one per line. When you are done, simply press enter with empty input. @@ -219,7 +219,7 @@ clisetup.log.info.answer=Answer: clisetup.log.info.copydirs.enter=Which directories should be copied to the server pack? These are folder names inside your modpack directory. clisetup.log.info.copydirs.specify=Specify your directories you want to be copied: clisetup.log.info.copydirs.checkreturninfo=If you are satisfied with these values, enter true. If not, enter false to restart clientmod configuration. -clisetup.log.info.server.enter=Do you want serverpackcreator to install the modloader server for your server pack? Must be true or false. +clisetup.log.info.server.enter=Do you want ServerPackCreator to install the modloader server for your server pack? Must be true or false. clisetup.log.info.server.include=Include modloader server installation: clisetup.log.info.minecraft.enter=Which version of Minecraft does your modpack use? clisetup.log.info.minecraft.specify=Minecraft version: @@ -228,28 +228,29 @@ clisetup.log.info.modloader.cli=Modloader: clisetup.log.info.modloaderversion.enter=What version of %s does your modpack use? clisetup.log.info.modloaderversion.cli=Modloader version: clisetup.log.info.java.enter=Specify the path to your Java installation. Must end with "java" on Linux, or "java.exe" on Windows. -clisetup.log.info.java.enter2=If you leave this empty, serverpackcreator will try to determine the path for you. +clisetup.log.info.java.enter2=If you leave this empty, ServerPackCreator will try to determine the path for you. clisetup.log.info.java.example=Example Linux: /usr/bin/java | Example Windows: C:/Program Files/AdoptOpenJDK/jdk-8.0.275.1-hotspot/jre/bin/java.exe clisetup.log.info.java.cli=Path to your Java installation: -clisetup.log.info.icon.enter=Do you want serverpackcreator to include a server-icon in your server pack? Must be true or false. +clisetup.log.info.icon.enter=Do you want ServerPackCreator to include a server-icon in your server pack? Must be true or false. clisetup.log.info.icon.cli=Include server-icon.png: -clisetup.log.info.properties.enter=Do you want serverpackcreator to include a server.properties in your server pack? Must be true or false. +clisetup.log.info.properties.enter=Do you want ServerPackCreator to include a server.properties in your server pack? Must be true or false. clisetup.log.info.properties.cli=Include server.properties: -clisetup.log.info.scripts.enter=Do you want serverpackcreator to include start scripts for Linux and Windows in your server pack? Must be true or false. +clisetup.log.info.scripts.enter=Do you want ServerPackCreator to include start scripts for Linux and Windows in your server pack? Must be true or false. clisetup.log.info.scripts.cli=Include start scripts: -clisetup.log.info.zip.enter=Do you want serverpackcreator to create a ZIP-archive of your server pack? Must be true or false. +clisetup.log.info.zip.enter=Do you want ServerPackCreator to create a ZIP-archive of your server pack? Must be true or false. clisetup.log.info.zip.cli=Create ZIP-archive: clisetup.log.info.config.enter=If you are satisfied with these values, enter true. If not, enter false to restart config generation. clisetup.log.info.config.written=New config file successfully written. Thanks go to Whitebear60 for initially writing the CLI-Config-Generation. configcheck.log.info.checkconfig.start=Checking configuration... configcheck.log.info.checkconfig.success=Config check successful. No errors encountered. +configcheck.log.info.checkconfig.skipmodpackcreation=Skipping creation of modpack from CurseForge projectID,fileID combination. configcheck.log.info.checkconfig.skipstart=Server installation disabled. Skipping check of: configcheck.log.info.checkconfig.skipjava= Java path configcheck.log.info.checkconfig.skipminecraft= Minecraft version configcheck.log.info.checkconfig.skipmodlaoder= Modloader configcheck.log.info.checkconfig.skipmodloaderversion= Modloader version configcheck.log.info.iscurse.display=Display name not found. Setting display name as file name on disk. -configcheck.log.info.iscurse.fabric=Please make sure to check the configuration for the used Fabric version after serverpackcreator is done setting up the modpack and new config file. +configcheck.log.info.iscurse.fabric=Please make sure to check the configuration for the used Fabric version after ServerPackCreator is done setting up the modpack and new config file. configcheck.log.info.iscurse.replace=Your old config file will now be replaced by a new one, with values gathered from the downloaded modpack. configcheck.log.info.containsfabric=Fabric detected. Setting modloader to Fabric. configcheck.log.info.suggestcopydirs.start=Preparing a list of directories to include in server pack... @@ -353,7 +354,7 @@ configcheck.log.warn.checkcurseforge.warn2=You did not specify a CurseForge proj configcheck.log.warn.converttoboolean.warn=Warning. Couldn't parse boolean. Assuming false. configcheck.log.warn.printconfig.noclientmods=No client mods specified. configcheck.log.warn.checkmodpackdir=Warning: Couldn't find a directory with setting %s. Checking for CurseForge projectID,fileID next... -configcheck.log.warn.getjavapath.empty=You didn't specify the path to your Java installation. serverpackcreator will try to determine it for you... +configcheck.log.warn.getjavapath.empty=You didn't specify the path to your Java installation. ServerPackCreator will try to determine it for you... configcheck.log.warn.getjavapath.set=ServerPackCreator set the path to your Java installation to: %s configcheck.log.warn.checkconfig.clientmods=No clientside-only mods specified. Using fallback list. # BEWARE INDENTATION! @@ -386,4 +387,4 @@ serverutilities.log.debug.downloadforgejar=Deleted incomplete Forge-installer... # TOPSICRETS topsicrets=You have discovered the top secret setting! Congratulations! Well, I say top secret, but it is really just for playing around. -topsicrets.moar=More Look and Feels on your system: +topsicrets.moar=More Look and Feels on your system: \ No newline at end of file diff --git a/src/main/resources/de/griefed/resources/lang/lang_en_us.properties b/src/main/resources/de/griefed/resources/lang/lang_en_us.properties index b0895a86b..e99ccb2d4 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_en_us.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_en_us.properties @@ -20,7 +20,7 @@ createserverpack.gui.createandshowgui=ServerPackCreator createserverpack.gui.tabbedpane.createserverpack.title=Create Server Pack createserverpack.gui.tabbedpane.createserverpack.tip=Configure and start generation of server pack. createserverpack.gui.tabbedpane.serverpackcreatorlog.title=ServerPackCreator Log -createserverpack.gui.tabbedpane.serverpackcreatorlog.tip=Latest serverpackcreator log tail. +createserverpack.gui.tabbedpane.serverpackcreatorlog.tip=Latest ServerPackCreator log tail. createserverpack.gui.tabbedpane.modloaderinstallerlog.title=Modloader-Installer Log createserverpack.gui.tabbedpane.modloaderinstallerlog.tip=Latest modloader-installer log tail. createserverpack.gui.tabbedpane.about.title=About @@ -86,7 +86,7 @@ createserverpack.gui.about.issue=Create an issue on GitHub. createserverpack.gui.about.discord=Get support and chat on Griefed's Discord server. # OTHER -filessetup.writeconfigtofile.modpackdir=# Path to your modpack. Can be either relative or absolute.\n# Example: \"./Some Modpack\" or \"C:/Minecraft/Some Modpack\"\n# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7: \"390331,3215793\" +filessetup.writeconfigtofile.modpackdir=# Path to your modpack. Can be either relative or absolute.\n# Example: \"./Some Modpack\" or \"C:/Minecraft/Some Modpack\"\n# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.8: \"430517,3266321\" filessetup.writeconfigtofile.clientmods=# List of client-only mods to delete from serverpack.\n# No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge!\n# Example: [AmbientSounds,ClientTweaks,PackMenu,BetterAdvancement,jeiintegration] filessetup.writeconfigtofile.copydirs=# Name of directories to include in serverpack.\n# When specifying \"saves/world_name\", \"world_name\" will be copied to the base directory of the serverpack\n# for immediate use with the server. Automatically set when projectID,fileID for modpackDir has been specified.\n# Example: [config,mods,scripts] filessetup.writeconfigtofile.includeserverinstallation=# Whether to install a Forge/Fabric server for the serverpack. Must be true or false.\n# Default value is true. @@ -163,7 +163,7 @@ filessetup.log.error.writeconfigtofile.config=Could not delete existing config f filessetup.log.error.writeconfigtofile.old=Could not delete old existing config file from previous versions of ServerPackCreator. filessetup.log.error.writeconfigtofile=Error: Couldn't write serverpackcreator.conf. handler.log.error.system.properties=Error getting system properties. -handler.log.error.runincli=Error: Please check your serverpackcreator.conf for any incorrect settings. This message is also displayed if serverpackcreator downloaded and setup a modpack from a projectID,fileID for modpackDir. +handler.log.error.runincli=Error: Please check your serverpackcreator.conf for any incorrect settings. This message is also displayed if ServerPackCreator downloaded and setup a modpack from a projectID,fileID for modpackDir. serversetup.log.error.installserver.fabric=Something went wrong during the installation of Fabric. Maybe the Fabric server are down or unreachable? Skipping... serversetup.log.error.installserver.fabricfail=An error occurred during Fabric installation. serversetup.log.error.installserver.forge=Something went wrong during the installation of Forge. Maybe the Forge servers are down or unreachable? Skipping... @@ -206,10 +206,10 @@ createmodpack.log.info.downloadmods.specificmod=Downloading mod %d of %d: %s | % createmodpack.log.info.downloadmods.tryagain=Trying again for mod %s (ID %s) | %s (ID %s). createmodpack.log.info.copyoverrides.info=Copying folders from overrides to modpack... createmodpack.log.info.checkcurseforgedir.create=CurseForge directory doesn't exist. We will download your file and create the modpack. -createmodpack.log.info.checkcurseforgedir=CurseForge directory found. +createmodpack.log.info.checkcurseforgedir=CurseForge directory found. Cleaning up... createmodpack.log.info.unziparchive=Extracting modpack ZIP-file. -clisetup.log.info.start=You started serverpackcreator with the "%s" argument. Step-by-step generation of config file initiated... -clisetup.log.info.modpack.enter=Please enter your modpack path. This path can be relative to serverpackcreator, or absolute. +clisetup.log.info.start=You started ServerPackCreator with the "%s" argument. Step-by-step generation of config file initiated... +clisetup.log.info.modpack.enter=Please enter your modpack path. This path can be relative to ServerPackCreator, or absolute. clisetup.log.info.modpack.example=Example: "./Some Modpack" or "C:/Minecraft/Some Modpack" clisetup.log.info.modpack.cli=Path to modpack directory: clisetup.log.info.clientmods.enter=Enter filenames of clientside-only mods, one per line. When you are done, simply press enter with empty input. @@ -219,7 +219,7 @@ clisetup.log.info.answer=Answer: clisetup.log.info.copydirs.enter=Which directories should be copied to the server pack? These are folder names inside your modpack directory. clisetup.log.info.copydirs.specify=Specify your directories you want to be copied: clisetup.log.info.copydirs.checkreturninfo=If you are satisfied with these values, enter true. If not, enter false to restart clientmod configuration. -clisetup.log.info.server.enter=Do you want serverpackcreator to install the modloader server for your server pack? Must be true or false. +clisetup.log.info.server.enter=Do you want ServerPackCreator to install the modloader server for your server pack? Must be true or false. clisetup.log.info.server.include=Include modloader server installation: clisetup.log.info.minecraft.enter=Which version of Minecraft does your modpack use? clisetup.log.info.minecraft.specify=Minecraft version: @@ -228,28 +228,29 @@ clisetup.log.info.modloader.cli=Modloader: clisetup.log.info.modloaderversion.enter=What version of %s does your modpack use? clisetup.log.info.modloaderversion.cli=Modloader version: clisetup.log.info.java.enter=Specify the path to your Java installation. Must end with "java" on Linux, or "java.exe" on Windows. -clisetup.log.info.java.enter2=If you leave this empty, serverpackcreator will try to determine the path for you. +clisetup.log.info.java.enter2=If you leave this empty, ServerPackCreator will try to determine the path for you. clisetup.log.info.java.example=Example Linux: /usr/bin/java | Example Windows: C:/Program Files/AdoptOpenJDK/jdk-8.0.275.1-hotspot/jre/bin/java.exe clisetup.log.info.java.cli=Path to your Java installation: -clisetup.log.info.icon.enter=Do you want serverpackcreator to include a server-icon in your server pack? Must be true or false. +clisetup.log.info.icon.enter=Do you want ServerPackCreator to include a server-icon in your server pack? Must be true or false. clisetup.log.info.icon.cli=Include server-icon.png: -clisetup.log.info.properties.enter=Do you want serverpackcreator to include a server.properties in your server pack? Must be true or false. +clisetup.log.info.properties.enter=Do you want ServerPackCreator to include a server.properties in your server pack? Must be true or false. clisetup.log.info.properties.cli=Include server.properties: -clisetup.log.info.scripts.enter=Do you want serverpackcreator to include start scripts for Linux and Windows in your server pack? Must be true or false. +clisetup.log.info.scripts.enter=Do you want ServerPackCreator to include start scripts for Linux and Windows in your server pack? Must be true or false. clisetup.log.info.scripts.cli=Include start scripts: -clisetup.log.info.zip.enter=Do you want serverpackcreator to create a ZIP-archive of your server pack? Must be true or false. +clisetup.log.info.zip.enter=Do you want ServerPackCreator to create a ZIP-archive of your server pack? Must be true or false. clisetup.log.info.zip.cli=Create ZIP-archive: clisetup.log.info.config.enter=If you are satisfied with these values, enter true. If not, enter false to restart config generation. clisetup.log.info.config.written=New config file successfully written. Thanks go to Whitebear60 for initially writing the CLI-Config-Generation. configcheck.log.info.checkconfig.start=Checking configuration... configcheck.log.info.checkconfig.success=Config check successful. No errors encountered. +configcheck.log.info.checkconfig.skipmodpackcreation=Skipping creation of modpack from CurseForge projectID,fileID combination. configcheck.log.info.checkconfig.skipstart=Server installation disabled. Skipping check of: configcheck.log.info.checkconfig.skipjava= Java path configcheck.log.info.checkconfig.skipminecraft= Minecraft version configcheck.log.info.checkconfig.skipmodlaoder= Modloader configcheck.log.info.checkconfig.skipmodloaderversion= Modloader version configcheck.log.info.iscurse.display=Display name not found. Setting display name as file name on disk. -configcheck.log.info.iscurse.fabric=Please make sure to check the configuration for the used Fabric version after serverpackcreator is done setting up the modpack and new config file. +configcheck.log.info.iscurse.fabric=Please make sure to check the configuration for the used Fabric version after ServerPackCreator is done setting up the modpack and new config file. configcheck.log.info.iscurse.replace=Your old config file will now be replaced by a new one, with values gathered from the downloaded modpack. configcheck.log.info.containsfabric=Fabric detected. Setting modloader to Fabric. configcheck.log.info.suggestcopydirs.start=Preparing a list of directories to include in server pack... @@ -353,7 +354,7 @@ configcheck.log.warn.checkcurseforge.warn2=You did not specify a CurseForge proj configcheck.log.warn.converttoboolean.warn=Warning. Couldn't parse boolean. Assuming false. configcheck.log.warn.printconfig.noclientmods=No client mods specified. configcheck.log.warn.checkmodpackdir=Warning: Couldn't find a directory with setting %s. Checking for CurseForge projectID,fileID next... -configcheck.log.warn.getjavapath.empty=You didn't specify the path to your Java installation. serverpackcreator will try to determine it for you... +configcheck.log.warn.getjavapath.empty=You didn't specify the path to your Java installation. ServerPackCreator will try to determine it for you... configcheck.log.warn.getjavapath.set=ServerPackCreator set the path to your Java installation to: %s configcheck.log.warn.checkconfig.clientmods=No clientside-only mods specified. Using fallback list. # BEWARE INDENTATION! @@ -386,4 +387,4 @@ serverutilities.log.debug.downloadforgejar=Deleted incomplete Forge-installer... # TOPSICRETS topsicrets=You have discovered the top secret setting! Congratulations! Well, I say top secret, but it is really just for playing around. -topsicrets.moar=More Look and Feels on your system: +topsicrets.moar=More Look and Feels on your system: \ No newline at end of file diff --git a/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties b/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties index 5f34a1bf6..8267f59de 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties @@ -20,7 +20,7 @@ createserverpack.gui.createandshowgui=ServerPackCreator createserverpack.gui.tabbedpane.createserverpack.title=Create Server Pack createserverpack.gui.tabbedpane.createserverpack.tip=Configure and start generation of server pack. createserverpack.gui.tabbedpane.serverpackcreatorlog.title=ServerPackCreator Log -createserverpack.gui.tabbedpane.serverpackcreatorlog.tip=Latest serverpackcreator log tail. +createserverpack.gui.tabbedpane.serverpackcreatorlog.tip=Latest ServerPackCreator log tail. createserverpack.gui.tabbedpane.modloaderinstallerlog.title=Modloader-Installer Log createserverpack.gui.tabbedpane.modloaderinstallerlog.tip=Latest modloader-installer log tail. createserverpack.gui.tabbedpane.about.title=About @@ -86,7 +86,7 @@ createserverpack.gui.about.issue=Create an issue on GitHub. createserverpack.gui.about.discord=Get support and chat on Griefed's Discord server. # OTHER -filessetup.writeconfigtofile.modpackdir=# Path to your modpack. Can be either relative or absolute.\n# Example: \"./Some Modpack\" or \"C:/Minecraft/Some Modpack\"\n# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7: \"390331,3215793\" +filessetup.writeconfigtofile.modpackdir=# Path to your modpack. Can be either relative or absolute.\n# Example: \"./Some Modpack\" or \"C:/Minecraft/Some Modpack\"\n# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.8: \"430517,3266321\" filessetup.writeconfigtofile.clientmods=# List of client-only mods to delete from serverpack.\n# No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge!\n# Example: [AmbientSounds,ClientTweaks,PackMenu,BetterAdvancement,jeiintegration] filessetup.writeconfigtofile.copydirs=# Name of directories to include in serverpack.\n# When specifying \"saves/world_name\", \"world_name\" will be copied to the base directory of the serverpack\n# for immediate use with the server. Automatically set when projectID,fileID for modpackDir has been specified.\n# Example: [config,mods,scripts] filessetup.writeconfigtofile.includeserverinstallation=# Whether to install a Forge/Fabric server for the serverpack. Must be true or false.\n# Default value is true. @@ -163,7 +163,7 @@ filessetup.log.error.writeconfigtofile.config=Could not delete existing config f filessetup.log.error.writeconfigtofile.old=Could not delete old existing config file from previous versions of ServerPackCreator. filessetup.log.error.writeconfigtofile=Error: Couldn't write serverpackcreator.conf. handler.log.error.system.properties=Error getting system properties. -handler.log.error.runincli=Error: Please check your serverpackcreator.conf for any incorrect settings. This message is also displayed if serverpackcreator downloaded and setup a modpack from a projectID,fileID for modpackDir. +handler.log.error.runincli=Error: Please check your serverpackcreator.conf for any incorrect settings. This message is also displayed if ServerPackCreator downloaded and setup a modpack from a projectID,fileID for modpackDir. serversetup.log.error.installserver.fabric=Something went wrong during the installation of Fabric. Maybe the Fabric server are down or unreachable? Skipping... serversetup.log.error.installserver.fabricfail=An error occurred during Fabric installation. serversetup.log.error.installserver.forge=Something went wrong during the installation of Forge. Maybe the Forge servers are down or unreachable? Skipping... @@ -206,10 +206,10 @@ createmodpack.log.info.downloadmods.specificmod=Downloading mod %d of %d: %s | % createmodpack.log.info.downloadmods.tryagain=Trying again for mod %s (ID %s) | %s (ID %s). createmodpack.log.info.copyoverrides.info=Copying folders from overrides to modpack... createmodpack.log.info.checkcurseforgedir.create=CurseForge directory doesn't exist. We will download your file and create the modpack. -createmodpack.log.info.checkcurseforgedir=CurseForge directory found. +createmodpack.log.info.checkcurseforgedir=CurseForge directory found. Cleaning up... createmodpack.log.info.unziparchive=Extracting modpack ZIP-file. -clisetup.log.info.start=You started serverpackcreator with the "%s" argument. Step-by-step generation of config file initiated... -clisetup.log.info.modpack.enter=Please enter your modpack path. This path can be relative to serverpackcreator, or absolute. +clisetup.log.info.start=You started ServerPackCreator with the "%s" argument. Step-by-step generation of config file initiated... +clisetup.log.info.modpack.enter=Please enter your modpack path. This path can be relative to ServerPackCreator, or absolute. clisetup.log.info.modpack.example=Example: "./Some Modpack" or "C:/Minecraft/Some Modpack" clisetup.log.info.modpack.cli=Path to modpack directory: clisetup.log.info.clientmods.enter=Enter filenames of clientside-only mods, one per line. When you are done, simply press enter with empty input. @@ -219,7 +219,7 @@ clisetup.log.info.answer=Answer: clisetup.log.info.copydirs.enter=Which directories should be copied to the server pack? These are folder names inside your modpack directory. clisetup.log.info.copydirs.specify=Specify your directories you want to be copied: clisetup.log.info.copydirs.checkreturninfo=If you are satisfied with these values, enter true. If not, enter false to restart clientmod configuration. -clisetup.log.info.server.enter=Do you want serverpackcreator to install the modloader server for your server pack? Must be true or false. +clisetup.log.info.server.enter=Do you want ServerPackCreator to install the modloader server for your server pack? Must be true or false. clisetup.log.info.server.include=Include modloader server installation: clisetup.log.info.minecraft.enter=Which version of Minecraft does your modpack use? clisetup.log.info.minecraft.specify=Minecraft version: @@ -228,28 +228,29 @@ clisetup.log.info.modloader.cli=Modloader: clisetup.log.info.modloaderversion.enter=What version of %s does your modpack use? clisetup.log.info.modloaderversion.cli=Modloader version: clisetup.log.info.java.enter=Specify the path to your Java installation. Must end with "java" on Linux, or "java.exe" on Windows. -clisetup.log.info.java.enter2=If you leave this empty, serverpackcreator will try to determine the path for you. +clisetup.log.info.java.enter2=If you leave this empty, ServerPackCreator will try to determine the path for you. clisetup.log.info.java.example=Example Linux: /usr/bin/java | Example Windows: C:/Program Files/AdoptOpenJDK/jdk-8.0.275.1-hotspot/jre/bin/java.exe clisetup.log.info.java.cli=Path to your Java installation: -clisetup.log.info.icon.enter=Do you want serverpackcreator to include a server-icon in your server pack? Must be true or false. +clisetup.log.info.icon.enter=Do you want ServerPackCreator to include a server-icon in your server pack? Must be true or false. clisetup.log.info.icon.cli=Include server-icon.png: -clisetup.log.info.properties.enter=Do you want serverpackcreator to include a server.properties in your server pack? Must be true or false. +clisetup.log.info.properties.enter=Do you want ServerPackCreator to include a server.properties in your server pack? Must be true or false. clisetup.log.info.properties.cli=Include server.properties: -clisetup.log.info.scripts.enter=Do you want serverpackcreator to include start scripts for Linux and Windows in your server pack? Must be true or false. +clisetup.log.info.scripts.enter=Do you want ServerPackCreator to include start scripts for Linux and Windows in your server pack? Must be true or false. clisetup.log.info.scripts.cli=Include start scripts: -clisetup.log.info.zip.enter=Do you want serverpackcreator to create a ZIP-archive of your server pack? Must be true or false. +clisetup.log.info.zip.enter=Do you want ServerPackCreator to create a ZIP-archive of your server pack? Must be true or false. clisetup.log.info.zip.cli=Create ZIP-archive: clisetup.log.info.config.enter=If you are satisfied with these values, enter true. If not, enter false to restart config generation. clisetup.log.info.config.written=New config file successfully written. Thanks go to Whitebear60 for initially writing the CLI-Config-Generation. configcheck.log.info.checkconfig.start=Checking configuration... configcheck.log.info.checkconfig.success=Config check successful. No errors encountered. +configcheck.log.info.checkconfig.skipmodpackcreation=Skipping creation of modpack from CurseForge projectID,fileID combination. configcheck.log.info.checkconfig.skipstart=Server installation disabled. Skipping check of: configcheck.log.info.checkconfig.skipjava= Java path configcheck.log.info.checkconfig.skipminecraft= Minecraft version configcheck.log.info.checkconfig.skipmodlaoder= Modloader configcheck.log.info.checkconfig.skipmodloaderversion= Modloader version configcheck.log.info.iscurse.display=Display name not found. Setting display name as file name on disk. -configcheck.log.info.iscurse.fabric=Please make sure to check the configuration for the used Fabric version after serverpackcreator is done setting up the modpack and new config file. +configcheck.log.info.iscurse.fabric=Please make sure to check the configuration for the used Fabric version after ServerPackCreator is done setting up the modpack and new config file. configcheck.log.info.iscurse.replace=Your old config file will now be replaced by a new one, with values gathered from the downloaded modpack. configcheck.log.info.containsfabric=Fabric detected. Setting modloader to Fabric. configcheck.log.info.suggestcopydirs.start=Preparing a list of directories to include in server pack... @@ -353,7 +354,7 @@ configcheck.log.warn.checkcurseforge.warn2=You did not specify a CurseForge proj configcheck.log.warn.converttoboolean.warn=Warning. Couldn't parse boolean. Assuming false. configcheck.log.warn.printconfig.noclientmods=No client mods specified. configcheck.log.warn.checkmodpackdir=Warning: Couldn't find a directory with setting %s. Checking for CurseForge projectID,fileID next... -configcheck.log.warn.getjavapath.empty=You didn't specify the path to your Java installation. serverpackcreator will try to determine it for you... +configcheck.log.warn.getjavapath.empty=You didn't specify the path to your Java installation. ServerPackCreator will try to determine it for you... configcheck.log.warn.getjavapath.set=ServerPackCreator set the path to your Java installation to: %s configcheck.log.warn.checkconfig.clientmods=No clientside-only mods specified. Using fallback list. # BEWARE INDENTATION! @@ -386,4 +387,4 @@ serverutilities.log.debug.downloadforgejar=Deleted incomplete Forge-installer... # TOPSICRETS topsicrets=You have discovered the top secret setting! Congratulations! Well, I say top secret, but it is really just for playing around. -topsicrets.moar=More Look and Feels on your system: +topsicrets.moar=More Look and Feels on your system: \ No newline at end of file diff --git a/src/main/resources/de/griefed/resources/serverpackcreator.conf b/src/main/resources/de/griefed/resources/serverpackcreator.conf index 95485c819..d08cab330 100644 --- a/src/main/resources/de/griefed/resources/serverpackcreator.conf +++ b/src/main/resources/de/griefed/resources/serverpackcreator.conf @@ -1,6 +1,6 @@ # Path to your modpack. Can be either relative or absolute. # Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" -# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7: "390331,3215793" +# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.8: "430517,3266321" modpackDir = "" # List of client-only mods to delete from serverpack. -- GitLab From 64f0ea763078da8bae2a874b24c360e978387e8c Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sat, 1 May 2021 21:27:22 +0200 Subject: [PATCH 27/91] refactor(DI): Update javadocs, improve creation of modpack from CurseForge ID combination, improve GUI for CurseForge modpack creation --- .../serverpackcreator/Configuration.java | 30 ++++++-- .../serverpackcreator/CreateServerPack.java | 2 +- .../serverpackcreator/gui/CreateGui.java | 18 +++-- .../gui/CreateServerPackTab.java | 32 ++++---- .../gui/ServerPackCreatorLogTab.java | 4 +- .../resources/lang/lang_de_de.properties | 10 ++- .../resources/lang/lang_en_us.properties | 10 ++- .../resources/lang/lang_uk_ua.properties | 10 ++- ...gCheckTest.java => ConfigurationTest.java} | 77 +++++++++++-------- 9 files changed, 124 insertions(+), 69 deletions(-) rename src/test/java/de/griefed/serverpackcreator/{ConfigCheckTest.java => ConfigurationTest.java} (79%) diff --git a/src/main/java/de/griefed/serverpackcreator/Configuration.java b/src/main/java/de/griefed/serverpackcreator/Configuration.java index d635040bb..2e56f6b92 100644 --- a/src/main/java/de/griefed/serverpackcreator/Configuration.java +++ b/src/main/java/de/griefed/serverpackcreator/Configuration.java @@ -307,7 +307,7 @@ public class Configuration { * {@link #checkConfigFile(File, boolean)}<br> * {@link #isCurse()} */ - List<String> getCopyDirs() { + public List<String> getCopyDirs() { return copyDirs; } @@ -317,6 +317,14 @@ public class Configuration { * @param newCopyDirs The new list of directories to include in server pack to store. */ void setCopyDirs(List<String> newCopyDirs) { + for (int i = 0; i < newCopyDirs.size(); i++) { + if (newCopyDirs.get(i).equalsIgnoreCase("server_pack")) { + newCopyDirs.remove(i); + } + } + +// String string_server_pack = "server_pack"; +// newCopyDirs.removeIf(n -> Objects.equals(n, string_server_pack)); this.copyDirs = newCopyDirs; } @@ -327,7 +335,7 @@ public class Configuration { * {@link #isDir(String)}<br> * {@link #isCurse()} */ - String getModpackDir() { + public String getModpackDir() { return modpackDir; } @@ -747,7 +755,7 @@ public class Configuration { } else { - setModLoaderCase(modLoaderVersion[0]); + setModLoader("Forge"); setModLoaderVersion(modLoaderVersion[1]); } @@ -773,10 +781,14 @@ public class Configuration { getModpackDir(), buildString(getClientMods().toString()), buildString(getCopyDirs().toString()), - getIncludeServerInstallation(), getJavaPath(), - getMinecraftVersion(), getModLoader(), - getModLoaderVersion(), getIncludeServerIcon(), - getIncludeServerProperties(), getIncludeStartScripts(), + getIncludeServerInstallation(), + getJavaPath(), + getMinecraftVersion(), + getModLoader(), + getModLoaderVersion(), + getIncludeServerIcon(), + getIncludeServerProperties(), + getIncludeStartScripts(), getIncludeZipCreation(), getConfigFile(), false @@ -830,7 +842,8 @@ public class Configuration { String[] dirsNotToCopy = { "overrides", "packmenu", - "resourcepacks" + "resourcepacks", + "server_pack" }; String[] copyDirs = new String[0]; @@ -1857,6 +1870,7 @@ public class Configuration { writer.write(configString); writer.close(); configWritten = true; + appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.writeconfigtofile.confignew")); } catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.writeconfigtofile"), ex); } diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index d4f8628f7..aada39a61 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -202,7 +202,7 @@ public class CreateServerPack { * @return Boolean. Returns true if the server pack was successfully generated. */ public boolean run() { - if (!configuration.checkConfigFile(configuration.getConfigFile())) { + if (!configuration.checkConfigFile(configuration.getConfigFile(), true)) { cleanupEnvironment(configuration.getModpackDir()); diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java index 16a5ed96c..4f15d697f 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java @@ -17,13 +17,14 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ - +//TODO: Write table of contents package de.griefed.serverpackcreator.gui; import com.typesafe.config.Config; import com.typesafe.config.ConfigException; import com.typesafe.config.ConfigFactory; import de.griefed.serverpackcreator.Configuration; +import de.griefed.serverpackcreator.CreateServerPack; import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.logging.log4j.LogManager; @@ -34,7 +35,7 @@ import java.awt.*; import java.awt.event.KeyEvent; import java.io.File; import java.util.Objects; - +//TODO: Write docs for class public class CreateGui extends JPanel { private static final Logger appLogger = LogManager.getLogger(CreateGui.class); @@ -45,8 +46,9 @@ public class CreateGui extends JPanel { private LocalizationManager localizationManager; private Configuration configuration; private CurseCreateModpack curseCreateModpack; + private CreateServerPack createServerPack; - public CreateGui(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration, CurseCreateModpack injectectedCurseCreateModpack) { + public CreateGui(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration, CurseCreateModpack injectectedCurseCreateModpack, CreateServerPack injectedCreateServerPack) { super(new GridLayout(1, 1)); if (injectedLocalizationManager == null) { @@ -67,9 +69,15 @@ public class CreateGui extends JPanel { this.configuration = injectedConfiguration; } + if (injectedCreateServerPack == null) { + this.createServerPack = new CreateServerPack(localizationManager, configuration, curseCreateModpack); + } else { + this.createServerPack = injectedCreateServerPack; + } + JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); - tabbedPane.addTab(localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.title"), null, new CreateServerPackTab(localizationManager, configuration, curseCreateModpack).createServerPackTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.tip")); + tabbedPane.addTab(localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.title"), null, new CreateServerPackTab(localizationManager, configuration, curseCreateModpack, createServerPack).createServerPackTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.tip")); tabbedPane.setMnemonicAt(0, KeyEvent.VK_1); tabbedPane.addTab(localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.title"), null, new ServerPackCreatorLogTab(localizationManager).serverPackCreatorLogTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.tip")); @@ -138,7 +146,7 @@ public class CreateGui extends JPanel { banner.setOpaque(false); frame.add(banner, BorderLayout.PAGE_START); - frame.add(new CreateGui(localizationManager, configuration, curseCreateModpack), BorderLayout.CENTER); + frame.add(new CreateGui(localizationManager, configuration, curseCreateModpack, createServerPack), BorderLayout.CENTER); frame.setPreferredSize(windowDimension); frame.setMaximumSize(windowDimension); diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java index f6a2f7f86..ec95f7540 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java @@ -17,7 +17,7 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ - +//TODO: Write table of contents package de.griefed.serverpackcreator.gui; import com.typesafe.config.Config; @@ -43,7 +43,7 @@ import java.util.Arrays; import java.util.Objects; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; - +//TODO: Write docs for class public class CreateServerPackTab extends Component { private static final Logger appLogger = LogManager.getLogger(CreateServerPackTab.class); @@ -58,8 +58,9 @@ public class CreateServerPackTab extends Component { private Configuration configuration; private LocalizationManager localizationManager; private CurseCreateModpack curseCreateModpack; + private CreateServerPack createServerPack; - public CreateServerPackTab(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration, CurseCreateModpack injectectedCurseCreateModpack) { + public CreateServerPackTab(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration, CurseCreateModpack injectectedCurseCreateModpack, CreateServerPack injectedCreateServerPack) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); } else { @@ -78,6 +79,11 @@ public class CreateServerPackTab extends Component { this.configuration = injectedConfiguration; } + if (createServerPack == null) { + this.createServerPack = new CreateServerPack(localizationManager, configuration, curseCreateModpack); + } else { + this.createServerPack = injectedCreateServerPack; + } } JComponent createServerPackTab() { @@ -511,6 +517,7 @@ public class CreateServerPackTab extends Component { constraints.insets = new Insets(5,0,5,0); JLabel labelGenerateServerPack = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.buttongenerateserverpack.ready")); + labelGenerateServerPack.setFont(new Font(labelGenerateServerPack.getFont().getName(), Font.BOLD, labelGenerateServerPack.getFont().getSize())); constraints.gridx = 0; constraints.gridy = 18; constraints.gridwidth = 4; @@ -545,7 +552,7 @@ public class CreateServerPackTab extends Component { new File("serverpackcreator.tmp"), true ); - if (!configuration.checkConfigFile(new File("serverpackcreator.tmp"))) { + if (!configuration.checkConfigFile(new File("serverpackcreator.tmp"), false)) { appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.checked")); labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.checked")); @@ -593,7 +600,6 @@ public class CreateServerPackTab extends Component { final ExecutorService executorService = Executors.newSingleThreadExecutor(); executorService.execute(() -> { - CreateServerPack createServerPack = new CreateServerPack(localizationManager, configuration, curseCreateModpack); if (createServerPack.run()) { tailer.stop(); @@ -602,16 +608,15 @@ public class CreateServerPackTab extends Component { buttonGenerateServerPack.setEnabled(true); labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.ready")); + textModpackDir.setText(configuration.getModpackDir()); + textCopyDirs.setText(configuration.getCopyDirs().toString().replace("[","").replace("]","")); JTextArea textArea = new JTextArea(); textArea.setOpaque(false); textArea.setText(String.format( "%s\n%s", localizationManager.getLocalizedString("createserverpack.gui.createserverpack.openfolder.browse"), - String.format( - "%s/server_pack", - textModpackDir.getText() - ) + String.format("%s/server_pack",configuration.getModpackDir()) ) ); @@ -622,16 +627,17 @@ public class CreateServerPackTab extends Component { JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE) == 0) { try { - Desktop.getDesktop().open(new File(String.format("%s/server_pack",textModpackDir.getText()))); + Desktop.getDesktop().open(new File(String.format("%s/server_pack",configuration.getModpackDir()))); } catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.browserserverpack")); } } + buttonGenerateServerPack.setEnabled(true); + System.gc(); + System.runFinalization(); + tailer.stop(); executorService.shutdown(); - - - } else { tailer.stop(); diff --git a/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java b/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java index 77f6125d2..2f9da7b2e 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java @@ -27,8 +27,8 @@ import org.apache.commons.io.input.TailerListenerAdapter; import javax.swing.*; import java.awt.*; import java.io.File; - -class ServerPackCreatorLogTab extends Component { +//TODO: Write docs for class +public class ServerPackCreatorLogTab extends Component { private LocalizationManager localizationManager; diff --git a/src/main/resources/de/griefed/resources/lang/lang_de_de.properties b/src/main/resources/de/griefed/resources/lang/lang_de_de.properties index 2e61dc705..6dfd2575c 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_de_de.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_de_de.properties @@ -115,6 +115,7 @@ createmodpack.log.error.unziparchive.createdir=Failed to create directory %s createmodpack.log.error.unziparchive.extract=Error: There was an error extracting the archive %s createmodpack.log.error.newfile.path=Error: There was an error getting the path for %s createmodpack.log.error.newfile.outside=Entry is outside of the target dir: %s +createmodpack.log.error.cleanupenvironment=Error deleting a file from the CurseForge directory %s clisetup.log.error.answer=Incorrect value specified. Please try again. configcheck.log.error.checkconfig.start=Couldn't parse config file. Consider checking your config file and fixing empty values. If the value needs to be an empty string, leave its value to "". configcheck.log.error.checkconfig.failure=Config check not successful. Check your config for errors. @@ -208,6 +209,8 @@ createmodpack.log.info.copyoverrides.info=Copying folders from overrides to modp createmodpack.log.info.checkcurseforgedir.create=CurseForge directory doesn't exist. We will download your file and create the modpack. createmodpack.log.info.checkcurseforgedir=CurseForge directory found. Cleaning up... createmodpack.log.info.unziparchive=Extracting modpack ZIP-file. +createmodpack.log.info.cleanupenvironment.enter=Starting cleanup of CurseForge environment. +createmodpack.log.info.cleanupenvironment.complete=Cleanup of CurseForge environment complete. clisetup.log.info.start=You started ServerPackCreator with the "%s" argument. Step-by-step generation of config file initiated... clisetup.log.info.modpack.enter=Please enter your modpack path. This path can be relative to ServerPackCreator, or absolute. clisetup.log.info.modpack.example=Example: "./Some Modpack" or "C:/Minecraft/Some Modpack" @@ -297,7 +300,8 @@ filessetup.log.info.checkforforgelinux=start-forge.sh generated. Please customiz filessetup.log.info.checkforforgewindows=start-forge.bat generated. Please customize if you intend on using it. filessetup.log.info.checkforproperties=server.properties generated. Please customize if you intend on using it. filessetup.log.info.checkforicon=server-icon.png generated. Please customize if you intend on using it. -filessetup.log.info.writeconfigtofile.config=Deleted existing config file to replace with new one. +filessetup.log.info.writeconfigtofile.config=Deleted existing configuration file. +filessetup.log.info.writeconfigtofile.confignew=Successfully written new configuration file. filessetup.log.info.writeconfigtofile.old=Deleted old existing config file from previous versions of ServerPackCreator, to ensure new one is always used. handler.log.info.system.enter=SYSTEM INFORMATION: handler.log.info.system.jarpath=JAR Path: %s @@ -344,8 +348,8 @@ createserverpack.log.info.buttonloadconfigfromfile.finish=Configuration successf createserverpack.log.info.buttoncreateserverpack.start=Checking entered configuration. createserverpack.log.info.buttoncreateserverpack.checked=Configuration checked successfully. createserverpack.log.info.buttoncreateserverpack.tempfile=Deleted temporary config file. -createserverpack.log.info.buttoncreateserverpack.writing=Writing configuration to file. -createserverpack.log.info.buttoncreateserverpack.generating=Generating server pack. +createserverpack.log.info.buttoncreateserverpack.writing=Writing GUI configuration to new serverpackcreator.conf. +createserverpack.log.info.buttoncreateserverpack.generating=Starting ServerPackCreator run. createserverpack.log.info.buttoncreateserverpack.ready=ServerPackCreator ready. ## Warn logs diff --git a/src/main/resources/de/griefed/resources/lang/lang_en_us.properties b/src/main/resources/de/griefed/resources/lang/lang_en_us.properties index e99ccb2d4..9583239cb 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_en_us.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_en_us.properties @@ -115,6 +115,7 @@ createmodpack.log.error.unziparchive.createdir=Failed to create directory %s createmodpack.log.error.unziparchive.extract=Error: There was an error extracting the archive %s createmodpack.log.error.newfile.path=Error: There was an error getting the path for %s createmodpack.log.error.newfile.outside=Entry is outside of the target dir: %s +createmodpack.log.error.cleanupenvironment=Error deleting a file from the CurseForge directory %s clisetup.log.error.answer=Incorrect value specified. Please try again. configcheck.log.error.checkconfig.start=Couldn't parse config file. Consider checking your config file and fixing empty values. If the value needs to be an empty string, leave its value to "". configcheck.log.error.checkconfig.failure=Config check not successful. Check your config for errors. @@ -208,6 +209,8 @@ createmodpack.log.info.copyoverrides.info=Copying folders from overrides to modp createmodpack.log.info.checkcurseforgedir.create=CurseForge directory doesn't exist. We will download your file and create the modpack. createmodpack.log.info.checkcurseforgedir=CurseForge directory found. Cleaning up... createmodpack.log.info.unziparchive=Extracting modpack ZIP-file. +createmodpack.log.info.cleanupenvironment.enter=Starting cleanup of CurseForge environment. +createmodpack.log.info.cleanupenvironment.complete=Cleanup of CurseForge environment complete. clisetup.log.info.start=You started ServerPackCreator with the "%s" argument. Step-by-step generation of config file initiated... clisetup.log.info.modpack.enter=Please enter your modpack path. This path can be relative to ServerPackCreator, or absolute. clisetup.log.info.modpack.example=Example: "./Some Modpack" or "C:/Minecraft/Some Modpack" @@ -297,7 +300,8 @@ filessetup.log.info.checkforforgelinux=start-forge.sh generated. Please customiz filessetup.log.info.checkforforgewindows=start-forge.bat generated. Please customize if you intend on using it. filessetup.log.info.checkforproperties=server.properties generated. Please customize if you intend on using it. filessetup.log.info.checkforicon=server-icon.png generated. Please customize if you intend on using it. -filessetup.log.info.writeconfigtofile.config=Deleted existing config file to replace with new one. +filessetup.log.info.writeconfigtofile.config=Deleted existing configuration file. +filessetup.log.info.writeconfigtofile.confignew=Successfully written new configuration file. filessetup.log.info.writeconfigtofile.old=Deleted old existing config file from previous versions of ServerPackCreator, to ensure new one is always used. handler.log.info.system.enter=SYSTEM INFORMATION: handler.log.info.system.jarpath=JAR Path: %s @@ -344,8 +348,8 @@ createserverpack.log.info.buttonloadconfigfromfile.finish=Configuration successf createserverpack.log.info.buttoncreateserverpack.start=Checking entered configuration. createserverpack.log.info.buttoncreateserverpack.checked=Configuration checked successfully. createserverpack.log.info.buttoncreateserverpack.tempfile=Deleted temporary config file. -createserverpack.log.info.buttoncreateserverpack.writing=Writing configuration to file. -createserverpack.log.info.buttoncreateserverpack.generating=Generating server pack. +createserverpack.log.info.buttoncreateserverpack.writing=Writing GUI configuration to new serverpackcreator.conf. +createserverpack.log.info.buttoncreateserverpack.generating=Starting ServerPackCreator run. createserverpack.log.info.buttoncreateserverpack.ready=ServerPackCreator ready. ## Warn logs diff --git a/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties b/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties index 8267f59de..7b26ef92f 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties @@ -115,6 +115,7 @@ createmodpack.log.error.unziparchive.createdir=Failed to create directory %s createmodpack.log.error.unziparchive.extract=Error: There was an error extracting the archive %s createmodpack.log.error.newfile.path=Error: There was an error getting the path for %s createmodpack.log.error.newfile.outside=Entry is outside of the target dir: %s +createmodpack.log.error.cleanupenvironment=Error deleting a file from the CurseForge directory %s clisetup.log.error.answer=Incorrect value specified. Please try again. configcheck.log.error.checkconfig.start=Couldn't parse config file. Consider checking your config file and fixing empty values. If the value needs to be an empty string, leave its value to "". configcheck.log.error.checkconfig.failure=Config check not successful. Check your config for errors. @@ -208,6 +209,8 @@ createmodpack.log.info.copyoverrides.info=Copying folders from overrides to modp createmodpack.log.info.checkcurseforgedir.create=CurseForge directory doesn't exist. We will download your file and create the modpack. createmodpack.log.info.checkcurseforgedir=CurseForge directory found. Cleaning up... createmodpack.log.info.unziparchive=Extracting modpack ZIP-file. +createmodpack.log.info.cleanupenvironment.enter=Starting cleanup of CurseForge environment. +createmodpack.log.info.cleanupenvironment.complete=Cleanup of CurseForge environment complete. clisetup.log.info.start=You started ServerPackCreator with the "%s" argument. Step-by-step generation of config file initiated... clisetup.log.info.modpack.enter=Please enter your modpack path. This path can be relative to ServerPackCreator, or absolute. clisetup.log.info.modpack.example=Example: "./Some Modpack" or "C:/Minecraft/Some Modpack" @@ -297,7 +300,8 @@ filessetup.log.info.checkforforgelinux=start-forge.sh generated. Please customiz filessetup.log.info.checkforforgewindows=start-forge.bat generated. Please customize if you intend on using it. filessetup.log.info.checkforproperties=server.properties generated. Please customize if you intend on using it. filessetup.log.info.checkforicon=server-icon.png generated. Please customize if you intend on using it. -filessetup.log.info.writeconfigtofile.config=Deleted existing config file to replace with new one. +filessetup.log.info.writeconfigtofile.config=Deleted existing configuration file. +filessetup.log.info.writeconfigtofile.confignew=Successfully written new configuration file. filessetup.log.info.writeconfigtofile.old=Deleted old existing config file from previous versions of ServerPackCreator, to ensure new one is always used. handler.log.info.system.enter=SYSTEM INFORMATION: handler.log.info.system.jarpath=JAR Path: %s @@ -344,8 +348,8 @@ createserverpack.log.info.buttonloadconfigfromfile.finish=Configuration successf createserverpack.log.info.buttoncreateserverpack.start=Checking entered configuration. createserverpack.log.info.buttoncreateserverpack.checked=Configuration checked successfully. createserverpack.log.info.buttoncreateserverpack.tempfile=Deleted temporary config file. -createserverpack.log.info.buttoncreateserverpack.writing=Writing configuration to file. -createserverpack.log.info.buttoncreateserverpack.generating=Generating server pack. +createserverpack.log.info.buttoncreateserverpack.writing=Writing GUI configuration to new serverpackcreator.conf. +createserverpack.log.info.buttoncreateserverpack.generating=Starting ServerPackCreator run. createserverpack.log.info.buttoncreateserverpack.ready=ServerPackCreator ready. ## Warn logs diff --git a/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java b/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java similarity index 79% rename from src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java rename to src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java index 062b028d8..d528b365f 100644 --- a/src/test/java/de/griefed/serverpackcreator/ConfigCheckTest.java +++ b/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java @@ -34,23 +34,24 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; -class ConfigCheckTest { +class ConfigurationTest { @Mock Logger appLogger; - private Configuration configCheck; + private Configuration configuration; private CurseCreateModpack curseCreateModpack; private LocalizationManager localizationManager; - ConfigCheckTest() { + ConfigurationTest() { localizationManager = new LocalizationManager(); curseCreateModpack = new CurseCreateModpack(localizationManager); - configCheck = new Configuration(localizationManager, curseCreateModpack); + configuration = new Configuration(localizationManager, curseCreateModpack); } @BeforeEach @@ -59,6 +60,20 @@ class ConfigCheckTest { MockitoAnnotations.openMocks(this); } + @Test + void testSetCopyDirs() { + List<String> testList = new ArrayList<>(Arrays.asList( + "config", + "mods", + "scripts", + "seeds", + "defaultconfigs", + "server_pack" + )); + configuration.setCopyDirs(testList); + Assertions.assertFalse(configuration.getCopyDirs().contains("server_pack")); + } + @Test void testBuildString() { List<String> args = Arrays.asList( @@ -68,7 +83,7 @@ class ConfigCheckTest { "seeds", "defaultconfigs" ); - String result = configCheck.buildString(args.toString()); + String result = configuration.buildString(args.toString()); Assertions.assertEquals(args.toString(), String.format("[%s]",result)); } @@ -76,8 +91,8 @@ class ConfigCheckTest { @Test void testCheckConfig() throws IOException { Files.copy(Paths.get("./src/test/resources/testresources/serverpackcreator.conf"), Paths.get("./serverpackcreator.conf"), REPLACE_EXISTING); - configCheck.setConfig(ConfigFactory.parseFile(configCheck.getConfigFile())); - boolean result = configCheck.checkConfigFile(configCheck.getConfigFile()); + configuration.setConfig(ConfigFactory.parseFile(configuration.getConfigFile())); + boolean result = configuration.checkConfigFile(configuration.getConfigFile(), true); Assertions.assertFalse(result); new File("./serverpackcreator.conf").delete(); } @@ -85,14 +100,14 @@ class ConfigCheckTest { @Test void testCheckCurseForgeCorrect() { String modpackDir = "238298,3174854"; - boolean result = configCheck.checkCurseForge(modpackDir); + boolean result = configuration.checkCurseForge(modpackDir); Assertions.assertTrue(result); } @Test void testCheckCurseForgeFalse() { String modpackDir = "1,1234"; - boolean result = configCheck.checkCurseForge(modpackDir); + boolean result = configuration.checkCurseForge(modpackDir); Assertions.assertFalse(result); } @@ -141,7 +156,7 @@ class ConfigCheckTest { boolean includeServerProperties = true; boolean includeStartScripts = true; boolean includeZipCreation = true; - configCheck.printConfig( + configuration.printConfig( modpackDir, clientMods, copyDirs, @@ -159,13 +174,13 @@ class ConfigCheckTest { @Test void testCheckModpackDirCorrect() { String modpackDir = "./src/test/resources/forge_tests"; - boolean result = configCheck.checkModpackDir(modpackDir); + boolean result = configuration.checkModpackDir(modpackDir); Assertions.assertTrue(result); } @Test void testCheckModpackDirFalse() { - boolean result = configCheck.checkModpackDir("modpackDir"); + boolean result = configuration.checkModpackDir("modpackDir"); Assertions.assertFalse(result); } @@ -179,7 +194,7 @@ class ConfigCheckTest { "seeds", "defaultconfigs" ); - boolean result = configCheck.checkCopyDirs(copyDirs, modpackDir); + boolean result = configuration.checkCopyDirs(copyDirs, modpackDir); Assertions.assertTrue(result); } @@ -193,13 +208,13 @@ class ConfigCheckTest { "seedss", "defaultconfigss" ); - boolean result = configCheck.checkCopyDirs(copyDirs, modpackDir); + boolean result = configuration.checkCopyDirs(copyDirs, modpackDir); Assertions.assertFalse(result); } @Test void testGetJavaPath() { - String result = configCheck.getJavaPath(""); + String result = configuration.getJavaPathFromSystem(""); String autoJavaPath = System.getProperty("java.home").replace("\\", "/") + "/bin/java"; if (autoJavaPath.startsWith("C:")) { autoJavaPath = String.format("%s.exe", autoJavaPath); @@ -221,39 +236,39 @@ class ConfigCheckTest { } else { javaPath = autoJavaPath; } - boolean result = configCheck.checkJavaPath(javaPath); + boolean result = configuration.checkJavaPath(javaPath); Assertions.assertTrue(result); } @Test void testCheckModloaderFabric() { String modLoader = "Fabric"; - boolean result = configCheck.checkModloader(modLoader); + boolean result = configuration.checkModloader(modLoader); Assertions.assertTrue(result); } @Test void testCheckModloaderForge() { String modLoader = "Forge"; - boolean result = configCheck.checkModloader(modLoader); + boolean result = configuration.checkModloader(modLoader); Assertions.assertTrue(result); } @Test void testCheckModloaderFalse() { - boolean result = configCheck.checkModloader("modloader"); + boolean result = configuration.checkModloader("modloader"); Assertions.assertFalse(result); } @Test void testSetModloaderFabric() { - String result = configCheck.setModloader("fAbRiC"); + String result = configuration.setModLoaderCase("fAbRiC"); Assertions.assertEquals("Fabric", result); } @Test void testSetModloaderForge() { - String result = configCheck.setModloader("fOrGe"); + String result = configuration.setModLoaderCase("fOrGe"); Assertions.assertEquals("Forge", result); } @@ -262,7 +277,7 @@ class ConfigCheckTest { void testCheckModloaderVersionFabric() { String modLoader = "Fabric"; String modLoaderVersion = "0.11.3"; - boolean result = configCheck.checkModloaderVersion(modLoader, modLoaderVersion); + boolean result = configuration.checkModloaderVersion(modLoader, modLoaderVersion); Assertions.assertTrue(result); new File("fabric-manifest.xml").delete(); } @@ -272,7 +287,7 @@ class ConfigCheckTest { void testCheckModloaderVersionFabricIncorrect() { String modLoader = "Fabric"; String modLoaderVersion = "0.90.3"; - boolean result = configCheck.checkModloaderVersion(modLoader, modLoaderVersion); + boolean result = configuration.checkModloaderVersion(modLoader, modLoaderVersion); Assertions.assertFalse(result); new File("fabric-manifest.xml").delete(); } @@ -282,7 +297,7 @@ class ConfigCheckTest { void testCheckModloaderVersionForge() { String modLoader = "Forge"; String modLoaderVersion = "36.1.2"; - boolean result = configCheck.checkModloaderVersion(modLoader, modLoaderVersion); + boolean result = configuration.checkModloaderVersion(modLoader, modLoaderVersion); Assertions.assertTrue(result); new File("forge-manifest.json").delete(); } @@ -292,7 +307,7 @@ class ConfigCheckTest { void testCheckModloaderVersionForgeIncorrect() { String modLoader = "Forge"; String modLoaderVersion = "90.0.0"; - boolean result = configCheck.checkModloaderVersion(modLoader, modLoaderVersion); + boolean result = configuration.checkModloaderVersion(modLoader, modLoaderVersion); Assertions.assertFalse(result); new File("forge-manifest.json").delete(); } @@ -301,7 +316,7 @@ class ConfigCheckTest { @Test void testIsMinecraftVersionCorrect() { String minecraftVersion = "1.16.5"; - boolean result = configCheck.isMinecraftVersionCorrect(minecraftVersion); + boolean result = configuration.isMinecraftVersionCorrect(minecraftVersion); Assertions.assertTrue(result); new File("mcmanifest.json").delete(); } @@ -310,7 +325,7 @@ class ConfigCheckTest { @Test void testIsMinecraftVersionFalse() { String minecraftVersion = "1.99.5"; - boolean result = configCheck.isMinecraftVersionCorrect(minecraftVersion); + boolean result = configuration.isMinecraftVersionCorrect(minecraftVersion); Assertions.assertFalse(result); new File("mcmanifest.json").delete(); } @@ -319,7 +334,7 @@ class ConfigCheckTest { @Test void testIsFabricVersionCorrect() { String fabricVersion = "0.11.3"; - boolean result = configCheck.isFabricVersionCorrect(fabricVersion); + boolean result = configuration.isFabricVersionCorrect(fabricVersion); Assertions.assertTrue(result); new File("fabric-manifest.xml").delete(); } @@ -328,7 +343,7 @@ class ConfigCheckTest { @Test void testIsFabricVersionFalse() { String fabricVersion = "0.90.3"; - boolean result = configCheck.isFabricVersionCorrect(fabricVersion); + boolean result = configuration.isFabricVersionCorrect(fabricVersion); Assertions.assertFalse(result); new File("fabric-manifest.xml").delete(); } @@ -337,7 +352,7 @@ class ConfigCheckTest { @Test void testIsForgeVersionCorrect() { String forgeVersion = "36.1.2"; - boolean result = configCheck.isForgeVersionCorrect(forgeVersion); + boolean result = configuration.isForgeVersionCorrect(forgeVersion); Assertions.assertTrue(result); new File("forge-manifest.json").delete(); } @@ -346,7 +361,7 @@ class ConfigCheckTest { @Test void testIsForgeVersionFalse() { String forgeVersion = "99.0.0"; - boolean result = configCheck.isForgeVersionCorrect(forgeVersion); + boolean result = configuration.isForgeVersionCorrect(forgeVersion); Assertions.assertFalse(result); new File("forge-manifest.json").delete(); } -- GitLab From 20eb829d9c52eb1d713a0964a815f3138e71c51e Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sat, 1 May 2021 21:32:55 +0200 Subject: [PATCH 28/91] refactor(DI): Update javadocs, improve creation of modpack from CurseForge ID combination, improve GUI for CurseForge modpack creation --- src/main/java/de/griefed/serverpackcreator/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/griefed/serverpackcreator/Main.java b/src/main/java/de/griefed/serverpackcreator/Main.java index 3204ebd62..d284df1d3 100644 --- a/src/main/java/de/griefed/serverpackcreator/Main.java +++ b/src/main/java/de/griefed/serverpackcreator/Main.java @@ -94,7 +94,7 @@ public class Main { Configuration configuration = new Configuration(localizationManager, curseCreateModpack); FilesSetup filesSetup = new FilesSetup(localizationManager); CreateServerPack createServerPack = new CreateServerPack(localizationManager, configuration, curseCreateModpack); - CreateGui tabbedPane = new CreateGui(localizationManager, configuration, curseCreateModpack); + CreateGui tabbedPane = new CreateGui(localizationManager, configuration, curseCreateModpack, createServerPack); String jarPath = null, jarName = null, -- GitLab From cc7ec26702b91d2c01b1b57e9bd89bcd47ed337e Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sat, 1 May 2021 21:33:38 +0200 Subject: [PATCH 29/91] refactor(DI): Update javadocs, improve creation of modpack from CurseForge ID combination, improve GUI for CurseForge modpack creation --- .../curseforgemodpack/CurseCreateModpack.java | 71 ++++++++++++++----- .../CurseCreateModpackTest.java | 4 +- 2 files changed, 56 insertions(+), 19 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java index f1ac1d4e7..d1815ed51 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java @@ -17,7 +17,7 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ - +//TODO: Write table of contents package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.databind.DeserializationFeature; @@ -33,16 +33,15 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; +import java.nio.file.*; +import java.nio.file.attribute.BasicFileAttributes; import java.util.*; import java.util.stream.Stream; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; - +//TODO: Write docs for class public class CurseCreateModpack { private static final Logger appLogger = LogManager.getLogger(CurseCreateModpack.class); private String projectName; @@ -59,6 +58,20 @@ public class CurseCreateModpack { } } + /** Standardize the specified modloader. + * @param modloader String. If any case of Forge or Fabric was specified, return "Forge" or "Fabric", so users can enter "forge" or "fabric" or any combination of upper- and lowercase letters.. + * @return String. Returns a standardized String of the specified modloader. + */ + String setModloaderCase(String modloader) { + String returnLoader = null; + if (modloader.equalsIgnoreCase("Forge")) { + returnLoader = "Forge"; + } else if (modloader.equalsIgnoreCase("Fabric")) { + returnLoader = "Fabric"; + } + return returnLoader; + } + /** Gets the names of the specified project and file and makes calls to methods which create the modpack so we can then create a server pack from it. * @param modpackDir String. Combination of project name and file name. Created during download procedure and later added to config file. * @param projectID Integer. The ID of the project. Used to gather information and to download the modpack. @@ -68,6 +81,7 @@ public class CurseCreateModpack { @SuppressWarnings({"OptionalGetWithoutIsPresent", "ConstantConditions"}) public boolean curseForgeModpack(String modpackDir, Integer projectID, Integer fileID) { boolean modpackCreated = false; + try { if (CurseAPI.project(projectID).isPresent()) { Optional<CurseProject> curseProject = CurseAPI.project(projectID); @@ -126,7 +140,7 @@ public class CurseCreateModpack { appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modpackversion"), modpack.getVersion())); appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modpackauthor"), modpack.getAuthor())); appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modpackminecraftversion"), minecraftLoaderVersions[0].replace("[", ""))); - appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modloader"), setModloader(modLoaderVersion[0]))); + appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modloader"), setModloaderCase(modLoaderVersion[0]))); appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modloaderversion"), modLoaderVersion[1])); } catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("createmodpack.log.error.initializemodpack.readmodpack"), ex); } @@ -243,7 +257,7 @@ public class CurseCreateModpack { appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.checkcurseforgedir.create")); } else { appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.checkcurseforgedir")); - isModpackPresent = true; + isModpackPresent = cleanupEnvironment(modpackDir); } return isModpackPresent; } @@ -314,17 +328,40 @@ public class CurseCreateModpack { return destFile; } - /** Standardize the specified modloader. - * @param modloader String. If any case of Forge or Fabric was specified, return "Forge" or "Fabric", so users can enter "forge" or "fabric" or any combination of upper- and lowercase letters.. - * @return String. Returns a standardized String of the specified modloader. + /** Deletes all files, directories and ZIP-archives of previously generated server packs to ensure newly generated + * server pack is as clean as possible. + * @param modpackDir String. The server_pack directory and ZIP-archive will be deleted inside the modpack directory. + * @return Boolean. Returns false if every file and folder was successfully deleted. */ - String setModloader(String modloader) { - String returnLoader = null; - if (modloader.equalsIgnoreCase("Forge")) { - returnLoader = "Forge"; - } else if (modloader.equalsIgnoreCase("Fabric")) { - returnLoader = "Fabric"; + private boolean cleanupEnvironment(String modpackDir) { + boolean cleanedUp = false; + if (new File(modpackDir).exists()) { + appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.cleanupenvironment.enter")); + Path modpackPath = Paths.get(modpackDir); + try { + Files.walkFileTree(modpackPath, + new SimpleFileVisitor<Path>() { + @Override + public FileVisitResult postVisitDirectory( + Path dir, IOException exc) throws IOException { + Files.delete(dir); + return FileVisitResult.CONTINUE; + } + @Override + public FileVisitResult visitFile( + Path file, BasicFileAttributes attrs) + throws IOException { + Files.delete(file); + return FileVisitResult.CONTINUE; + } + }); + } catch (IOException ex) { + cleanedUp = true; + appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.cleanupenvironment"), modpackDir)); + } finally { + appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.cleanupenvironment.complete")); + } } - return returnLoader; + return cleanedUp; } } \ No newline at end of file diff --git a/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java b/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java index f39c6ec3a..fb8f9450c 100644 --- a/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java @@ -95,13 +95,13 @@ class CurseCreateModpackTest { @Test void testSetModloaderFabric() { - String result = curseCreateModpack.setModloader("fAbRiC"); + String result = curseCreateModpack.setModloaderCase("fAbRiC"); Assertions.assertEquals("Fabric", result); } @Test void testSetModloaderForge() { - String result = curseCreateModpack.setModloader("fOrGe"); + String result = curseCreateModpack.setModloaderCase("fOrGe"); Assertions.assertEquals("Forge", result); } } -- GitLab From f16eeaff07839c0752293aed575dd8aaa7e7857f Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sat, 1 May 2021 21:34:15 +0200 Subject: [PATCH 30/91] refactor(DI): Prepare for rewrite --- .../serverpackcreator/curseforgemodpack/CurseFiles.java | 2 +- .../serverpackcreator/curseforgemodpack/CurseMinecraft.java | 4 ++-- .../curseforgemodpack/CurseModLoaders.java | 4 ++-- .../serverpackcreator/curseforgemodpack/CurseModpack.java | 2 +- .../serverpackcreator/curseforgemodpack/CurseSplines.java | 4 ++-- .../java/de/griefed/serverpackcreator/gui/AboutTab.java | 6 +++--- .../serverpackcreator/gui/ModloaderInstallerLogTab.java | 4 ++-- .../serverpackcreator/i18n/IncorrectLanguageException.java | 2 +- .../griefed/serverpackcreator/i18n/LocalizationManager.java | 4 ++-- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java index 623d025a0..6f409d7f4 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java @@ -21,7 +21,7 @@ package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; - +//TODO: Write docs for class public class CurseFiles { @JsonIgnoreProperties(ignoreUnknown = true) private String projectID; diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java index b546c0d9c..db63bc4f3 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java @@ -23,8 +23,8 @@ package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.util.List; - -class CurseMinecraft { +//TODO: Write docs for class +public class CurseMinecraft { @JsonIgnoreProperties(ignoreUnknown = true) private String version; private List<CurseModLoaders> modLoaders; diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java index b81c4d78e..fb06a07bc 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java @@ -21,8 +21,8 @@ package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; - -class CurseModLoaders { +//TODO: Write docs for class +public class CurseModLoaders { @JsonIgnoreProperties(ignoreUnknown = true) private String id; diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java index dbd67d5f1..e5b4b16b1 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java @@ -23,7 +23,7 @@ package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.util.List; - +//TODO: Write docs for class public class CurseModpack { @JsonIgnoreProperties(ignoreUnknown = true) private List<CurseMinecraft> minecraft; diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java index 978a86ade..b96365bc6 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java @@ -21,8 +21,8 @@ package de.griefed.serverpackcreator.curseforgemodpack; import java.util.Random; - -class CurseSplines { +//TODO: Write docs for class +public class CurseSplines { /* Thanks go out to MAXIS and Sim City, for the ridiculous messages these games contained. Additional thanks to Larsz on GameFAQs for providing a list of all these messages: https://gamefaqs.gamespot.com/pc/561176-simcity-4/faqs/22135 diff --git a/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java b/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java index 5f94c6ce5..0b7906d81 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java @@ -17,7 +17,7 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ - +//TODO: Write table of contents package de.griefed.serverpackcreator.gui; import de.griefed.serverpackcreator.i18n.LocalizationManager; @@ -30,8 +30,8 @@ import java.awt.*; import java.io.IOException; import java.net.URI; import java.util.Objects; - -class AboutTab extends Component { +//TODO: Write docs for class +public class AboutTab extends Component { private static final Logger appLogger = LogManager.getLogger(AboutTab.class); private final Dimension miscButtonDimension = new Dimension(50,50); diff --git a/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java b/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java index 4b401bd46..4fa7a1a67 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java @@ -27,8 +27,8 @@ import org.apache.commons.io.input.TailerListenerAdapter; import javax.swing.*; import java.awt.*; import java.io.File; - -class ModloaderInstallerLogTab extends Component { +//TODO: Write docs for class +public class ModloaderInstallerLogTab extends Component { private LocalizationManager localizationManager; diff --git a/src/main/java/de/griefed/serverpackcreator/i18n/IncorrectLanguageException.java b/src/main/java/de/griefed/serverpackcreator/i18n/IncorrectLanguageException.java index 8df94cf18..514972811 100644 --- a/src/main/java/de/griefed/serverpackcreator/i18n/IncorrectLanguageException.java +++ b/src/main/java/de/griefed/serverpackcreator/i18n/IncorrectLanguageException.java @@ -19,7 +19,7 @@ */ package de.griefed.serverpackcreator.i18n; - +//TODO: Write docs for class public class IncorrectLanguageException extends Exception { public IncorrectLanguageException() { super("Incorrect language specified"); diff --git a/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java b/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java index 8b5db3fce..a8c212f7a 100644 --- a/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java +++ b/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java @@ -17,7 +17,7 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ - +//TODO: Write table of contents package de.griefed.serverpackcreator.i18n; import org.apache.logging.log4j.LogManager; @@ -26,7 +26,7 @@ import org.apache.logging.log4j.Logger; import java.io.*; import java.nio.charset.StandardCharsets; import java.util.*; - +//TODO: Write docs for class /** * This class is localization manager for your application. * <p>To use it, firstly run LocalizationManager.init(). -- GitLab From cb5d6967863f65aaec91320b47f27dfdea3cb486 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sat, 1 May 2021 22:19:50 +0200 Subject: [PATCH 31/91] refactor(DI): Update javadocs and minor refactorings of variable names. --- .../i18n/LocalizationManager.java | 134 +++++++++++++----- 1 file changed, 100 insertions(+), 34 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java b/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java index a8c212f7a..89a929341 100644 --- a/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java +++ b/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java @@ -17,7 +17,6 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -//TODO: Write table of contents package de.griefed.serverpackcreator.i18n; import org.apache.logging.log4j.LogManager; @@ -26,15 +25,27 @@ import org.apache.logging.log4j.Logger; import java.io.*; import java.nio.charset.StandardCharsets; import java.util.*; -//TODO: Write docs for class + /** - * This class is localization manager for your application. - * <p>To use it, firstly run LocalizationManager.init(). - * Then use LocalizationManager.getLocalizedString() to find the localized string in config file. - * All localization config files need to be stored in <code>resources/i18n</code> directory + * <strong>Table of methods</strong><br> + * {@link #getSupportedLanguages()}<br> + * {@link #getLangPropertiesFile()}<br> + * {@link #getLocale()}<br> + * {@link #init(String)}<br> + * {@link #init(File)}<br> + * {@link #init()}<br> + * {@link #getLocalizedString(String)}<br> + * {@link #checkLocaleFile()}<br> + * {@link #writeLocaleToFile(String)} + * <p> + * This is the localizationManager for ServerPackCreator.<br> + * To use it, initialize it by calling {@link #init()}. + * Then use {@link #getLocalizedString(String)} to use a language key from the resource bundle corresponding to the + * specified locale. If no locale is provided during the launch of ServerPackCreator, en_US is used by default.<br> + * All localization properties-files need to be stored in the <code>de/griefed/resources/lang/</code>-directory * and be named using following pattern: lang_{language code in lowercase}_{country code in lowercase}. - * For example: lang_en_us.lang.</p> - * Currently supports only strings to be used in localized fields. + * For example: <code>lang_en_us.properties</code>.<br> + * Currently only supports Strings to be used in localized fields. */ public class LocalizationManager { @@ -42,12 +53,12 @@ public class LocalizationManager { private final File langPropertiesFile = new File("lang.properties"); /** - * Current language of application, mapped for easier further reference. + * Current language of ServerPackCreator, mapped for easier further reference. */ private Map<String, String> currentLanguage = new HashMap<>(); /** - * Localized strings that application uses. + * Localized strings which ServerPackCreator uses. */ private ResourceBundle localeResources; @@ -56,101 +67,155 @@ public class LocalizationManager { */ private final String LANGUAGE_MAP_PATH = "language"; private final String COUNTRY_MAP_PATH = "country"; + + /** + * Languages supported by ServerPackCreator. + */ private final String[] SUPPORTED_LANGUAGES = { "en_us", "uk_ua", "de_de" }; + /** + * Getter for the array of languages supported by ServerPackCreator. + * @return String Array. Returns the array of languages supported by ServerPackCreator. + */ String[] getSupportedLanguages() { return SUPPORTED_LANGUAGES; } + /** + * Getter for the lang.properties file which will set the locale for ServerPackCreator. + * @return File. Returns the file which will set the locale for ServerPackCreator. + */ File getLangPropertiesFile() { return langPropertiesFile; } + /** + * Getter for a String containing the currently used language. + * @return String. Returns a String containing the currently used language. + */ public String getLocale() { return String.format("%s_%s", currentLanguage.get(LANGUAGE_MAP_PATH), currentLanguage.get(COUNTRY_MAP_PATH)); } /** - * @throws IncorrectLanguageException Thrown if the language specified in the properties file is not supported by SPC or specified in the invalid format. + * Initializes the LocalizationManager with a provided locale. + * Calls<br> + * {@link #getSupportedLanguages()}<br> + * {@link #getLocalizedString(String)}<br> + * {@link #writeLocaleToFile(String)} + * @throws IncorrectLanguageException Thrown if the language specified in the properties file is not supported by + * ServerPackCreator or specified in the invalid format. * @param locale Locale to be used by application in this run. */ public void init(String locale) throws IncorrectLanguageException { - boolean isLanguageExists = false; + boolean doesLanguageExist = false; + for (String lang: getSupportedLanguages()) { + if (lang.equalsIgnoreCase(locale)) { + localeLogger.debug("Lang is correct"); - isLanguageExists = true; + doesLanguageExist = true; + break; } } - if (Boolean.FALSE.equals(isLanguageExists)) throw new IncorrectLanguageException(); + + if (Boolean.FALSE.equals(doesLanguageExist)) throw new IncorrectLanguageException(); + String[] langCode; + if (locale.contains("_")) { + langCode = locale.split("_"); + currentLanguage.put(LANGUAGE_MAP_PATH, langCode[0]); currentLanguage.put(COUNTRY_MAP_PATH, langCode[1]); + } else { throw new IncorrectLanguageException(); } + localeResources = ResourceBundle.getBundle(String.format("de/griefed/resources/lang/lang_%s", locale)); localeLogger.info(String.format("Using language: %s", getLocalizedString("localeUnlocalizedName"))); + if (!currentLanguage.get(LANGUAGE_MAP_PATH).equalsIgnoreCase("en")) { + localeLogger.info(String.format("%s %s", getLocalizedString("cli.usingLanguage"), getLocalizedString("localeName"))); } + writeLocaleToFile(locale); } /** - * @param localePropertiesFile Path to the properties file with the language specified. - * @throws IncorrectLanguageException Thrown if the language specified in the properties file is not supported by SPC or specified in the invalid format. + * Initializes the LocalizationManager with a provided localePropertiesFile. + * @param localePropertiesFile Path to the locale properties file which specifies the language to use. + * @throws IncorrectLanguageException Thrown if the language specified in the properties file is not supported by + * ServerPackCreator or specified in the invalid format. */ public void init(File localePropertiesFile) throws IncorrectLanguageException{ + Properties langProperties = new Properties(); - try (FileInputStream fis = new FileInputStream(localePropertiesFile)){ - BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fis, StandardCharsets.UTF_8)); + + try (FileInputStream fileInputStream = new FileInputStream(localePropertiesFile)){ + + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream, StandardCharsets.UTF_8)); langProperties.load(bufferedReader); + localeLogger.debug(String.format("langProperties = %s", langProperties)); - } catch (Exception e) { - e.printStackTrace(); + + } catch (Exception ex) { + localeLogger.error(ex); } + String langProp = langProperties.getProperty("lang"); localeLogger.debug(langProp); - boolean isLanguageExists = false; + boolean doesLanguageExist = false; for (String lang: getSupportedLanguages()) { + if (lang.equalsIgnoreCase(langProp)) { + localeLogger.debug("Lang is correct"); - isLanguageExists = true; + doesLanguageExist = true; + break; } } - if (Boolean.FALSE.equals(isLanguageExists)) throw new IncorrectLanguageException(); + if (Boolean.FALSE.equals(doesLanguageExist)) throw new IncorrectLanguageException(); + String defaultLocale = "en_us"; String langProperty = langProperties.getProperty("lang", defaultLocale); String[] langCode; + if (langProperty.contains("_")) { + langCode = langProperty.split("_"); + currentLanguage.put(LANGUAGE_MAP_PATH, langCode[0]); currentLanguage.put(COUNTRY_MAP_PATH, langCode[1]); + } else { throw new IncorrectLanguageException(); } localeResources = ResourceBundle.getBundle(String.format("de/griefed/resources/lang/lang_%s", langProperties.getProperty("lang")), new Locale(currentLanguage.get(LANGUAGE_MAP_PATH), currentLanguage.get(COUNTRY_MAP_PATH))); localeLogger.info(String.format("Using language: %s", getLocalizedString("localeUnlocalizedName"))); + if (!currentLanguage.get(LANGUAGE_MAP_PATH).equalsIgnoreCase("en")) { + localeLogger.info(String.format("%s %s", getLocalizedString("cli.usingLanguage"), getLocalizedString("localeName"))); } } /** - * Initializer with default localization properties path. + * Initialize the LocalizationManager with en_us as the locale. */ public void init() { try { @@ -161,9 +226,9 @@ public class LocalizationManager { } /** - * Gets localized string from localization resource bundle. + * Acquires a localized String for the provided language key from the initialized locale resource. * @param languageKey The language key to search for. - * @return Localized string that is referred by the language key. + * @return Localized string that is referred to by the language key. */ public String getLocalizedString(String languageKey) { try { @@ -177,12 +242,12 @@ public class LocalizationManager { } /** - * Check for existence of a lang.properties-file and if found assign language specified therein. If assigning the specified language fails because it is not supported, default to en_US. - * This method should not contain the LocalizationManager, as the initialization of said manager is called from here. Therefore, localized string are not yet available. - * @return Always returns true. Dirty hack until I one day figure out how to init Localization before UI start correctly. + * Check for existence of a lang.properties file and, if found, assign the language specified therein. + * If assigning the specified language fails because it is not supported, default to en_us. + * This method should <strong>not</strong> call {@link #getLocalizedString(String)}, as the initialization of + * said manager is called from here. Therefore, localized strings are not yet available. */ - @SuppressWarnings("UnusedReturnValue") - public boolean checkLocaleFile() { + public void checkLocaleFile() { if (getLangPropertiesFile().exists()) { try { init(getLangPropertiesFile()); @@ -228,13 +293,14 @@ public class LocalizationManager { } init(); } - return true; } /** - * Writes the specified locale from -lang your_locale to a lang.properties file to ensure every subsequent start of serverpackcreator is executed using said locale. + * Writes the specified locale from -lang your_locale to a lang.properties file to ensure every subsequent start + * of serverpackcreator is executed using said locale. This method should <strong>not</strong> call + * {@link #getLocalizedString(String)}, as the initialization of said manager is called from here. Therefore, + * localized strings are not yet available. * @param locale The locale the user specified when they ran serverpackcreator with -lang -your_locale. - * This method should not contain the LocalizationManager, as the initialization of said manager is called from here. Therefore, localized string are not yet available. */ void writeLocaleToFile(String locale) { try (BufferedWriter writer = new BufferedWriter(new FileWriter(getLangPropertiesFile()))) { -- GitLab From 21b71e585809e37a154f4a741c8d7852ea117e8a Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sat, 1 May 2021 22:22:39 +0200 Subject: [PATCH 32/91] refactor(DI): Update javadocs --- .../i18n/IncorrectLanguageException.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/griefed/serverpackcreator/i18n/IncorrectLanguageException.java b/src/main/java/de/griefed/serverpackcreator/i18n/IncorrectLanguageException.java index 514972811..d9b6364c7 100644 --- a/src/main/java/de/griefed/serverpackcreator/i18n/IncorrectLanguageException.java +++ b/src/main/java/de/griefed/serverpackcreator/i18n/IncorrectLanguageException.java @@ -19,8 +19,17 @@ */ package de.griefed.serverpackcreator.i18n; -//TODO: Write docs for class + +/** + * <strong>Table of Exceptions</strong><br> + * {@link #IncorrectLanguageException()}<br> + * {@link #IncorrectLanguageException(String)}<br> + * {@link #IncorrectLanguageException(Throwable)}<br> + * {@link #IncorrectLanguageException(String, Throwable)}<p> + * Provides exceptions to {@link LocalizationManager} + */ public class IncorrectLanguageException extends Exception { + public IncorrectLanguageException() { super("Incorrect language specified"); } -- GitLab From b66d975229faf28352634493dfeb29c23dbe0a08 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sat, 1 May 2021 23:00:38 +0200 Subject: [PATCH 33/91] refactor(DI): Update javadocs and minor refactorings --- .../gui/ServerPackCreatorLogTab.java | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java b/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java index 2f9da7b2e..dc873eddf 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java @@ -17,7 +17,6 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ - package de.griefed.serverpackcreator.gui; import de.griefed.serverpackcreator.i18n.LocalizationManager; @@ -27,11 +26,21 @@ import org.apache.commons.io.input.TailerListenerAdapter; import javax.swing.*; import java.awt.*; import java.io.File; -//TODO: Write docs for class + +/** + * This class creates the tab which display the latest serverpackcreator.log tailer. + */ public class ServerPackCreatorLogTab extends Component { private LocalizationManager localizationManager; + /** + * <strong>Constructor</strong><p> + * Used for Dependency Injection.<p> + * Receives an instance of {@link LocalizationManager} or creates one if the received + * one is null. Required for use of localization. + * @param injectedLocalizationManager Instance of {@link LocalizationManager} required for localized log messages. + */ public ServerPackCreatorLogTab(LocalizationManager injectedLocalizationManager) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); @@ -40,10 +49,23 @@ public class ServerPackCreatorLogTab extends Component { } } + private JComponent serverPackCreatorLogPanel; + private GridBagConstraints constraints; + private JTextArea textArea; + private JScrollPane scrollPane; + + /** + * Create the tab for the serverpackcreator.log tailer in a JScrollPane with an always available vertical scrollbar + * and a horizontal scrollbar available as needed. Uses Apache commons-io's {@link Tailer} to keep the JTextArea up + * to date with the latest log entries. Should any line contain "Checking entered configuration." the textarea is + * cleared. + * @return JComponent. Returns a JPanel containing a JScrollPane containing the JTextArea with the latest + * serverpackcreator.log entries. + */ JComponent serverPackCreatorLogTab() { - JComponent serverPackCreatorLogPanel = new JPanel(false); + serverPackCreatorLogPanel = new JPanel(false); serverPackCreatorLogPanel.setLayout(new GridBagLayout()); - GridBagConstraints constraints = new GridBagConstraints(); + constraints = new GridBagConstraints(); constraints.anchor = GridBagConstraints.CENTER; constraints.fill = GridBagConstraints.BOTH; @@ -53,7 +75,7 @@ public class ServerPackCreatorLogTab extends Component { constraints.weightx = 1; //Log Panel - JTextArea textArea = new JTextArea(); + textArea = new JTextArea(); textArea.setEditable(false); Tailer.create(new File("./logs/serverpackcreator.log"), new TailerListenerAdapter() { @@ -67,7 +89,7 @@ public class ServerPackCreatorLogTab extends Component { } }, 2000, false); - JScrollPane scrollPane = new JScrollPane( + scrollPane = new JScrollPane( textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); -- GitLab From 65f659df9e87913e0b8e0ed1fa0281a302481ce5 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sat, 1 May 2021 23:00:42 +0200 Subject: [PATCH 34/91] refactor(DI): Update javadocs and minor refactorings --- .../gui/ModloaderInstallerLogTab.java | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java b/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java index 4fa7a1a67..104e715ee 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java @@ -17,7 +17,6 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ - package de.griefed.serverpackcreator.gui; import de.griefed.serverpackcreator.i18n.LocalizationManager; @@ -27,11 +26,21 @@ import org.apache.commons.io.input.TailerListenerAdapter; import javax.swing.*; import java.awt.*; import java.io.File; -//TODO: Write docs for class + +/** + * This class creates the tab which display the latest modloader_installer.log tailer. + */ public class ModloaderInstallerLogTab extends Component { private LocalizationManager localizationManager; + /** + * <strong>Constructor</strong><p> + * Used for Dependency Injection.<p> + * Receives an instance of {@link LocalizationManager} or creates one if the received + * one is null. Required for use of localization. + * @param injectedLocalizationManager Instance of {@link LocalizationManager} required for localized log messages. + */ public ModloaderInstallerLogTab(LocalizationManager injectedLocalizationManager) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); @@ -40,10 +49,23 @@ public class ModloaderInstallerLogTab extends Component { } } + private JComponent modloaderInstallerLogPanel; + private GridBagConstraints constraints; + private JTextArea textArea; + private JScrollPane scrollPane; + + /** + * Create the tab for the modloader_installer.log tailer in a JScrollPane with an always available vertical scrollbar + * and a horizontal scrollbar available as needed. Uses Apache commons-io's {@link Tailer} to keep the JTextArea up + * to date with the latest log entries. Should any line contain "Starting Fabric installation." or + * "Starting Forge installation." the textarea is cleared. + * @return JComponent. Returns a JPanel containing a JScrollPane containing the JTextArea with the latest + * modloader_installer.log entries. + */ JComponent modloaderInstallerLogTab() { - JComponent modloaderInstallerLogPanel = new JPanel(false); + modloaderInstallerLogPanel = new JPanel(false); modloaderInstallerLogPanel.setLayout(new GridBagLayout()); - GridBagConstraints constraints = new GridBagConstraints(); + constraints = new GridBagConstraints(); constraints.anchor = GridBagConstraints.CENTER; constraints.fill = GridBagConstraints.BOTH; @@ -53,7 +75,7 @@ public class ModloaderInstallerLogTab extends Component { constraints.weightx = 1; //Log Panel - JTextArea textArea = new JTextArea(); + textArea = new JTextArea(); textArea.setEditable(false); Tailer.create(new File("./logs/modloader_installer.log"), new TailerListenerAdapter() { @@ -68,7 +90,7 @@ public class ModloaderInstallerLogTab extends Component { } }, 2000, false); - JScrollPane scrollPane = new JScrollPane( + scrollPane = new JScrollPane( textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); -- GitLab From ceffa7403e3ce3a66e437653651b84c18c56ed0a Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sat, 1 May 2021 23:00:46 +0200 Subject: [PATCH 35/91] refactor(DI): Update javadocs and minor refactorings --- .../serverpackcreator/gui/AboutTab.java | 59 ++++++++++++++----- 1 file changed, 44 insertions(+), 15 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java b/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java index 0b7906d81..7d06ef495 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java @@ -17,7 +17,6 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -//TODO: Write table of contents package de.griefed.serverpackcreator.gui; import de.griefed.serverpackcreator.i18n.LocalizationManager; @@ -30,17 +29,24 @@ import java.awt.*; import java.io.IOException; import java.net.URI; import java.util.Objects; -//TODO: Write docs for class + +/** + * This class creates the tab which displays the About-tab, with the about text, the list of contributors, buttons for + * opening PasteBin in your browser, opening ServerPackCreator's issue page on GitHub and for opening the invite link + * to Griefed#s discord server in your browser. + */ public class AboutTab extends Component { private static final Logger appLogger = LogManager.getLogger(AboutTab.class); - private final Dimension miscButtonDimension = new Dimension(50,50); - private final ImageIcon issueIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/issue.png"))); - private final ImageIcon pastebinIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/pastebin.png"))); - private final ImageIcon prosperIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/prosper.png"))); - private LocalizationManager localizationManager; + /** + * <strong>Constructor</strong><p> + * Used for Dependency Injection.<p> + * Receives an instance of {@link LocalizationManager} or creates one if the received + * one is null. Required for use of localization. + * @param injectedLocalizationManager Instance of {@link LocalizationManager} required for localized log messages. + */ public AboutTab(LocalizationManager injectedLocalizationManager) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); @@ -49,10 +55,33 @@ public class AboutTab extends Component { } } + private final Dimension miscButtonDimension = new Dimension(50,50); + private final ImageIcon issueIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/issue.png"))); + private final ImageIcon pastebinIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/pastebin.png"))); + private final ImageIcon prosperIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/prosper.png"))); + + private JComponent aboutPanel; + private GridBagConstraints constraints; + private JTextPane textPane; + private SimpleAttributeSet attributeSet; + private StyledDocument document; + private JButton buttonCreatePasteBin; + private JButton buttonOpenIssue; + private JButton buttonDiscord; + + /** + * Create the tab for the About-page of ServerpackCreator. This tab displays the about text, the list of contributors + * to ServerPackCreator and offers three buttons to the user. Left to right: Open PasteBin in the user's browser to + * create pastes of the the log files or configuration files or whatever they wish. Open ServerPackCreator's issues + * page on GitHub in case the user wants to report an issue. Open the invite link to Griefed's discord server in the + * users browser. + * @return JComponent. Returns a JPanel containing a JTextPane with the about text in a styled document, as well as + * the three aforementioned buttons. + */ JComponent aboutTab() { - JComponent aboutPanel = new JPanel(false); + aboutPanel = new JPanel(false); aboutPanel.setLayout(new GridBagLayout()); - GridBagConstraints constraints = new GridBagConstraints(); + constraints = new GridBagConstraints(); constraints.anchor = GridBagConstraints.CENTER; constraints.fill = GridBagConstraints.BOTH; @@ -61,19 +90,19 @@ public class AboutTab extends Component { constraints.gridwidth = 3; //About Panel - JTextPane textPane = new JTextPane(); + textPane = new JTextPane(); textPane.setEditable(false); textPane.setOpaque(false); textPane.setMinimumSize(new Dimension(getMaximumSize().width,520)); textPane.setPreferredSize(new Dimension(getMaximumSize().width,520)); textPane.setMaximumSize(new Dimension(getMaximumSize().width,520)); - SimpleAttributeSet attributeSet = new SimpleAttributeSet(); + attributeSet = new SimpleAttributeSet(); StyleConstants.setBold(attributeSet, true); StyleConstants.setFontSize(attributeSet, 14); textPane.setCharacterAttributes(attributeSet, true); - StyledDocument document = textPane.getStyledDocument(); + document = textPane.getStyledDocument(); StyleConstants.setAlignment(attributeSet, StyleConstants.ALIGN_CENTER); document.setParagraphAttributes(0, document.getLength(), attributeSet, false); @@ -101,7 +130,7 @@ public class AboutTab extends Component { constraints.gridwidth = 1; //Button to upload log file to pastebin - JButton buttonCreatePasteBin = new JButton(); + buttonCreatePasteBin = new JButton(); buttonCreatePasteBin.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.about.pastebin")); buttonCreatePasteBin.setIcon(pastebinIcon); buttonCreatePasteBin.setPreferredSize(miscButtonDimension); @@ -121,7 +150,7 @@ public class AboutTab extends Component { aboutPanel.add(buttonCreatePasteBin, constraints); //Button to open a new issue on GitHub - JButton buttonOpenIssue = new JButton(); + buttonOpenIssue = new JButton(); buttonOpenIssue.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.about.issue")); buttonOpenIssue.setIcon(issueIcon); buttonOpenIssue.setPreferredSize(miscButtonDimension); @@ -141,7 +170,7 @@ public class AboutTab extends Component { aboutPanel.add(buttonOpenIssue, constraints); //Button to open the invite link to the discord server - JButton buttonDiscord = new JButton(); + buttonDiscord = new JButton(); buttonDiscord.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.about.discord")); buttonDiscord.setIcon(prosperIcon); buttonDiscord.setPreferredSize(miscButtonDimension); -- GitLab From 8b5de129cb6ab30a73aaeaf02fd0da325db7136a Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sun, 2 May 2021 00:11:54 +0200 Subject: [PATCH 36/91] refactor(DI): Update javadocs and minor refactorings --- .../gui/CreateServerPackTab.java | 324 ++++++++++++------ 1 file changed, 216 insertions(+), 108 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java index ec95f7540..773d71310 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java @@ -17,7 +17,6 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -//TODO: Write table of contents package de.griefed.serverpackcreator.gui; import com.typesafe.config.Config; @@ -43,24 +42,44 @@ import java.util.Arrays; import java.util.Objects; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -//TODO: Write docs for class + +/** + * This class creates the tab which displays the labels, textfields, buttons and functions in order to create a new + * server pack. Available are:<br> + * JLabels and JTextFields for modpackDir, clientMods, copyDirs, javaPath, minecraftVersion, modLoader, modLoaderVersion<br> + * Checkboxes for Include- serverInstallation, serverIcon, serverProperties, startScripts, ZIParchive<br> + * Buttons opening the file explorer and choosing: modpackDir, clientMods, copyDirs, javaPath, loadConfigFromFile<br> + * A button for displaying an information windows which provides detailed explanation of the important parts of the GUI.<br> + * The button start the generation of a new server pack.<br> + * The label under the button to start the generation of a new server pack, which displays the latest log entry of the + * serverpackcreator.log <em>during</em> the creation of a new server pack.<p> + * If a configuration file is found during startup of ServerPackCreator, it is automatically loaded into the GUI. + * </p> + */ public class CreateServerPackTab extends Component { private static final Logger appLogger = LogManager.getLogger(CreateServerPackTab.class); - private final ImageIcon loadIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/load.png"))); - private final ImageIcon folderIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/folder.png"))); - private final ImageIcon startGeneration = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/start_generation.png"))); - private final ImageIcon helpIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/help.png"))); - private final Dimension folderButtonDimension = new Dimension(24,24); - private final Dimension miscButtonDimension = new Dimension(50,50); - private final Dimension chooserDimension = new Dimension(750,450); - private Configuration configuration; private LocalizationManager localizationManager; private CurseCreateModpack curseCreateModpack; private CreateServerPack createServerPack; - public CreateServerPackTab(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration, CurseCreateModpack injectectedCurseCreateModpack, CreateServerPack injectedCreateServerPack) { + /** + * <strong>Constructor</strong><p> + * Used for Dependency Injection.<p> + * Receives an instance of {@link LocalizationManager} or creates one if the received + * one is null. Required for use of localization.<p> + * Receives an instance of {@link Configuration} required to successfully and correctly create the server pack.<p> + * Receives an instance of {@link CurseCreateModpack} in case the modpack has to be created from a combination of + * CurseForge projectID and fileID, from which to <em>then</em> create the server pack. + * Receives an instance of {@link CreateServerPack} which is required to generate a server pack. + * @param injectedLocalizationManager Instance of {@link LocalizationManager} required for localized log messages. + * @param injectedConfiguration Instance of {@link Configuration} required to successfully and correctly create the server pack. + * @param injectedCurseCreateModpack Instance of {@link CurseCreateModpack} in case the modpack has to be created from a combination of + * CurseForge projectID and fileID, from which to <em>then</em> create the server pack. + * @param injectedCreateServerPack Instance of {@link CreateServerPack} required for the generation of server packs. + */ + public CreateServerPackTab(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration, CurseCreateModpack injectedCurseCreateModpack, CreateServerPack injectedCreateServerPack) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); } else { @@ -70,7 +89,7 @@ public class CreateServerPackTab extends Component { if (injectedConfiguration == null) { this.curseCreateModpack = new CurseCreateModpack(localizationManager); } else { - this.curseCreateModpack = injectectedCurseCreateModpack; + this.curseCreateModpack = injectedCurseCreateModpack; } if (injectedConfiguration == null) { @@ -79,17 +98,74 @@ public class CreateServerPackTab extends Component { this.configuration = injectedConfiguration; } - if (createServerPack == null) { + if (injectedCreateServerPack == null) { this.createServerPack = new CreateServerPack(localizationManager, configuration, curseCreateModpack); } else { this.createServerPack = injectedCreateServerPack; } } + private final ImageIcon loadIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/load.png"))); + private final ImageIcon folderIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/folder.png"))); + private final ImageIcon startGeneration = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/start_generation.png"))); + private final ImageIcon helpIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/help.png"))); + private final Dimension folderButtonDimension = new Dimension(24,24); + private final Dimension miscButtonDimension = new Dimension(50,50); + private final Dimension chooserDimension = new Dimension(750,450); + + private JComponent createServerPackPanel; + + private JScrollPane helpScrollPane; + + private GridBagConstraints constraints; + + private JLabel labelModpackDir; + private JLabel labelClientMods; + private JLabel labelCopyDirs; + private JLabel labelJavaPath; + private JLabel labelMinecraftVersion; + private JLabel labelModloader; + private JLabel labelModloaderVersion; + private JLabel labelGenerateServerPack; + + private JTextField textModpackDir; + private JTextField textClientMods; + private JTextField textCopyDirs; + private JTextField textJavaPath; + private JTextField textMinecraftVersion; + private JTextField textModloader; + private JTextField textModloaderVersion; + + private JTextArea helpTextArea; + + private JCheckBox checkBoxServer; + private JCheckBox checkBoxIcon; + private JCheckBox checkBoxProperties; + private JCheckBox checkBoxScripts; + private JCheckBox checkBoxZIP; + + private JButton buttonModpackDir; + private JButton buttonClientMods; + private JButton buttonCopyDirs; + private JButton buttonJavaPath; + private JButton buttonLoadConfigFromFile; + private JButton buttonInfoWindow; + private JButton buttonGenerateServerPack; + + private JFileChooser modpackDirChooser; + private JFileChooser clientModsChooser; + private JFileChooser copyDirsChooser; + private JFileChooser javaChooser; + private JFileChooser configChooser; + + /** + * Create the tab which displays every component related to configuring ServerPackCreator and creating a server pack. + * @return JComponent. Returns a JPanel everything needed for displaying the CreateServerPackTab. + * */ JComponent createServerPackTab() { - JComponent createServerPackPanel = new JPanel(false); + createServerPackPanel = new JPanel(false); createServerPackPanel.setLayout(new GridBagLayout()); - GridBagConstraints constraints = new GridBagConstraints(); + constraints = new GridBagConstraints(); // ----------------------------------------------------------------------------------------LABELS AND TEXTFIELDS-------- constraints.fill = GridBagConstraints.HORIZONTAL; @@ -97,13 +173,13 @@ public class CreateServerPackTab extends Component { constraints.weightx = 0.7; //Label and textfield modpackDir - JLabel labelModpackDir = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodpackdir")); + labelModpackDir = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodpackdir")); labelModpackDir.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodpackdir.tip")); constraints.gridx = 0; constraints.gridy = 0; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelModpackDir, constraints); - JTextField textModpackDir = new JTextField(""); + textModpackDir = new JTextField(""); textModpackDir.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodpackdir.tip")); constraints.gridx = 0; constraints.gridy = 1; @@ -111,13 +187,13 @@ public class CreateServerPackTab extends Component { createServerPackPanel.add(textModpackDir, constraints); //Label and textfield clientMods - JLabel labelClientMods = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelclientmods")); + labelClientMods = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelclientmods")); labelClientMods.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelclientmods.tip")); constraints.gridx = 0; constraints.gridy = 2; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelClientMods, constraints); - JTextField textClientMods = new JTextField(""); + textClientMods = new JTextField(""); textClientMods.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelclientmods.tip")); constraints.gridx = 0; constraints.gridy = 3; @@ -125,13 +201,13 @@ public class CreateServerPackTab extends Component { createServerPackPanel.add(textClientMods, constraints); //Label and textfield copyDirs - JLabel labelCopyDirs = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelcopydirs")); + labelCopyDirs = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelcopydirs")); labelCopyDirs.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelcopydirs.tip")); constraints.gridx = 0; constraints.gridy = 4; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelCopyDirs, constraints); - JTextField textCopyDirs = new JTextField(""); + textCopyDirs = new JTextField(""); textCopyDirs.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelcopydirs.tip")); constraints.gridx = 0; constraints.gridy = 5; @@ -139,13 +215,13 @@ public class CreateServerPackTab extends Component { createServerPackPanel.add(textCopyDirs, constraints); //Label and textfield javaPath - JLabel labelJavaPath = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labeljavapath")); + labelJavaPath = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labeljavapath")); labelJavaPath.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labeljavapath.tip")); constraints.gridx = 0; constraints.gridy = 6; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelJavaPath, constraints); - JTextField textJavaPath = new JTextField(""); + textJavaPath = new JTextField(""); textJavaPath.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labeljavapath.tip")); constraints.gridx = 0; constraints.gridy = 7; @@ -153,13 +229,13 @@ public class CreateServerPackTab extends Component { createServerPackPanel.add(textJavaPath, constraints); //Label and textfield minecraftVersion - JLabel labelMinecraftVersion = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelminecraft")); + labelMinecraftVersion = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelminecraft")); labelMinecraftVersion.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelminecraft.tip")); constraints.gridx = 0; constraints.gridy = 8; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelMinecraftVersion, constraints); - JTextField textMinecraftVersion = new JTextField(""); + textMinecraftVersion = new JTextField(""); textMinecraftVersion.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelminecraft.tip")); constraints.gridx = 0; constraints.gridy = 9; @@ -167,13 +243,13 @@ public class CreateServerPackTab extends Component { createServerPackPanel.add(textMinecraftVersion, constraints); //Label and textfield Modloader - JLabel labelModloader = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloader")); + labelModloader = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloader")); labelModloader.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloader.tip")); constraints.gridx = 0; constraints.gridy = 10; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelModloader, constraints); - JTextField textModloader = new JTextField(""); + textModloader = new JTextField(""); textModloader.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloader.tip")); constraints.gridx = 0; constraints.gridy = 11; @@ -181,13 +257,13 @@ public class CreateServerPackTab extends Component { createServerPackPanel.add(textModloader, constraints); //Label and textfield modloaderVersion - JLabel labelModloaderVersion = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloaderversion")); + labelModloaderVersion = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloaderversion")); labelModloaderVersion.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloaderversion.tip")); constraints.gridx = 0; constraints.gridy = 12; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelModloaderVersion, constraints); - JTextField textModloaderVersion = new JTextField(""); + textModloaderVersion = new JTextField(""); textModloaderVersion.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloaderversion.tip")); constraints.gridx = 0; constraints.gridy = 13; @@ -203,35 +279,35 @@ public class CreateServerPackTab extends Component { constraints.fill = GridBagConstraints.NONE; //Checkbox installServer - JCheckBox checkBoxServer = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxserver"),true); + checkBoxServer = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxserver"),true); checkBoxServer.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxserver.tip")); constraints.gridx = 0; constraints.gridy = 14; createServerPackPanel.add(checkBoxServer, constraints); //Checkbox copyIcon - JCheckBox checkBoxIcon = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxicon"),true); + checkBoxIcon = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxicon"),true); checkBoxIcon.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxicon.tip")); constraints.gridx = 1; constraints.gridy = 14; createServerPackPanel.add(checkBoxIcon, constraints); //Checkbox copyProperties - JCheckBox checkBoxProperties = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxproperties"),true); + checkBoxProperties = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxproperties"),true); checkBoxProperties.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxproperties.tip")); constraints.gridx = 0; constraints.gridy = 15; createServerPackPanel.add(checkBoxProperties, constraints); //Checkbox copyScripts - JCheckBox checkBoxScripts = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxscripts"),true); + checkBoxScripts = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxscripts"),true); checkBoxScripts.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxscripts.tip")); constraints.gridx = 1; constraints.gridy = 15; createServerPackPanel.add(checkBoxScripts, constraints); //Checkbox createZIP - JCheckBox checkBoxZIP = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxzip"),true); + checkBoxZIP = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxzip"),true); checkBoxZIP.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxzip.tip")); constraints.gridx = 0; constraints.gridy = 16; @@ -244,26 +320,30 @@ public class CreateServerPackTab extends Component { constraints.weighty = 0; //Select modpackDir button - JButton buttonModpackDir = new JButton(); + buttonModpackDir = new JButton(); buttonModpackDir.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttonmodpackdir")); buttonModpackDir.setIcon(folderIcon); buttonModpackDir.setMinimumSize(folderButtonDimension); buttonModpackDir.setPreferredSize(folderButtonDimension); buttonModpackDir.setMaximumSize(folderButtonDimension); buttonModpackDir.addActionListener(e -> { - JFileChooser folderChooser = new JFileChooser(); + modpackDirChooser = new JFileChooser(); - folderChooser.setCurrentDirectory(new File(".")); - folderChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttonmodpackdir.title")); - folderChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); - folderChooser.setAcceptAllFileFilterUsed(false); - folderChooser.setMultiSelectionEnabled(false); - folderChooser.setPreferredSize(chooserDimension); + modpackDirChooser.setCurrentDirectory(new File(".")); + modpackDirChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttonmodpackdir.title")); + modpackDirChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + modpackDirChooser.setAcceptAllFileFilterUsed(false); + modpackDirChooser.setMultiSelectionEnabled(false); + modpackDirChooser.setPreferredSize(chooserDimension); - if (folderChooser.showOpenDialog(folderChooser) == JFileChooser.APPROVE_OPTION) { + if (modpackDirChooser.showOpenDialog(modpackDirChooser) == JFileChooser.APPROVE_OPTION) { try { - textModpackDir.setText(folderChooser.getSelectedFile().getCanonicalPath().replace("\\","/")); - appLogger.info(String.format(localizationManager.getLocalizedString("createserverpack.log.info.buttonmodpack"), folderChooser.getSelectedFile().getCanonicalPath().replace("\\","/"))); + textModpackDir.setText(modpackDirChooser.getSelectedFile().getCanonicalPath().replace("\\","/")); + + appLogger.info(String.format( + localizationManager.getLocalizedString("createserverpack.log.info.buttonmodpack"), + modpackDirChooser.getSelectedFile().getCanonicalPath().replace("\\","/"))); + } catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.buttonmodpack"),ex); } @@ -274,39 +354,49 @@ public class CreateServerPackTab extends Component { createServerPackPanel.add(buttonModpackDir, constraints); //Select clientside-mods button - JButton buttonClientMods = new JButton(); + buttonClientMods = new JButton(); buttonClientMods.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttonclientmods")); buttonClientMods.setIcon(folderIcon); buttonClientMods.setMinimumSize(folderButtonDimension); buttonClientMods.setPreferredSize(folderButtonDimension); buttonClientMods.setMaximumSize(folderButtonDimension); buttonClientMods.addActionListener(e -> { - JFileChooser fileChooser = new JFileChooser(); + clientModsChooser = new JFileChooser(); if (textModpackDir.getText().length() > 0 && new File(textModpackDir.getText()).isDirectory() && new File(String.format("%s/mods",textModpackDir.getText())).isDirectory()) { - fileChooser.setCurrentDirectory(new File(String.format("%s/mods",textModpackDir.getText()))); + clientModsChooser.setCurrentDirectory(new File(String.format("%s/mods",textModpackDir.getText()))); } else { - fileChooser.setCurrentDirectory(new File(".")); + clientModsChooser.setCurrentDirectory(new File(".")); } - fileChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttonclientmods.title")); - fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); - fileChooser.setFileFilter(new FileNameExtensionFilter(localizationManager.getLocalizedString("createserverpack.gui.buttonclientmods.filter"),"jar")); - fileChooser.setAcceptAllFileFilterUsed(false); - fileChooser.setMultiSelectionEnabled(true); - fileChooser.setPreferredSize(chooserDimension); - - if (fileChooser.showOpenDialog(fileChooser) == JFileChooser.APPROVE_OPTION) { - File[] clientMods = fileChooser.getSelectedFiles(); + + clientModsChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttonclientmods.title")); + clientModsChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); + + clientModsChooser.setFileFilter(new FileNameExtensionFilter( + localizationManager.getLocalizedString("createserverpack.gui.buttonclientmods.filter"), + "jar" + )); + + clientModsChooser.setAcceptAllFileFilterUsed(false); + clientModsChooser.setMultiSelectionEnabled(true); + clientModsChooser.setPreferredSize(chooserDimension); + + if (clientModsChooser.showOpenDialog(clientModsChooser) == JFileChooser.APPROVE_OPTION) { + File[] clientMods = clientModsChooser.getSelectedFiles(); ArrayList<String> clientModsFilenames = new ArrayList<>(); for (int i = 0; i < clientMods.length; i++) { clientModsFilenames.add(clientMods[i].getName()); } - textClientMods.setText(configuration.buildString(Arrays.toString(clientModsFilenames.toArray(new String[0])))); + textClientMods.setText( + configuration.buildString( + Arrays.toString( + clientModsFilenames.toArray(new String[0]))) + ); appLogger.info(String.format(localizationManager.getLocalizedString("createserverpack.log.info.buttonclientmods"), clientModsFilenames)); } }); @@ -315,30 +405,31 @@ public class CreateServerPackTab extends Component { createServerPackPanel.add(buttonClientMods, constraints); //Select directories to copy to server pack button - JButton buttonCopyDirs = new JButton(); + buttonCopyDirs = new JButton(); buttonCopyDirs.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttoncopydirs")); buttonCopyDirs.setIcon(folderIcon); buttonCopyDirs.setMinimumSize(folderButtonDimension); buttonCopyDirs.setPreferredSize(folderButtonDimension); buttonCopyDirs.setMaximumSize(folderButtonDimension); buttonCopyDirs.addActionListener(e -> { - JFileChooser fileChooser = new JFileChooser(); + copyDirsChooser = new JFileChooser(); if (textModpackDir.getText().length() > 0 && new File(textModpackDir.getText()).isDirectory()) { - fileChooser.setCurrentDirectory(new File(textModpackDir.getText())); + copyDirsChooser.setCurrentDirectory(new File(textModpackDir.getText())); } else { - fileChooser.setCurrentDirectory(new File(".")); + copyDirsChooser.setCurrentDirectory(new File(".")); } - fileChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttoncopydirs.title")); - fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); - fileChooser.setAcceptAllFileFilterUsed(false); - fileChooser.setMultiSelectionEnabled(true); - fileChooser.setPreferredSize(chooserDimension); - - if (fileChooser.showOpenDialog(fileChooser) == JFileChooser.APPROVE_OPTION) { - File[] copyDirs = fileChooser.getSelectedFiles(); + + copyDirsChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttoncopydirs.title")); + copyDirsChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + copyDirsChooser.setAcceptAllFileFilterUsed(false); + copyDirsChooser.setMultiSelectionEnabled(true); + copyDirsChooser.setPreferredSize(chooserDimension); + + if (copyDirsChooser.showOpenDialog(copyDirsChooser) == JFileChooser.APPROVE_OPTION) { + File[] copyDirs = copyDirsChooser.getSelectedFiles(); ArrayList<String> copyDirsNames = new ArrayList<>(); for (int i = 0; i < copyDirs.length; i++) { @@ -354,33 +445,41 @@ public class CreateServerPackTab extends Component { createServerPackPanel.add(buttonCopyDirs, constraints); //Select javaPath button - JButton buttonJavaPath = new JButton(); + buttonJavaPath = new JButton(); buttonJavaPath.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttonjavapath")); buttonJavaPath.setIcon(folderIcon); buttonJavaPath.setMinimumSize(folderButtonDimension); buttonJavaPath.setPreferredSize(folderButtonDimension); buttonJavaPath.setMaximumSize(folderButtonDimension); buttonJavaPath.addActionListener(e -> { - JFileChooser fileChooser = new JFileChooser(); + javaChooser = new JFileChooser(); if (new File(String.format("%s/bin/",System.getProperty("java.home").replace("\\", "/"))).isDirectory()) { - fileChooser.setCurrentDirectory(new File(String.format("%s/bin/",System.getProperty("java.home").replace("\\", "/")))); + + javaChooser.setCurrentDirectory(new File( + String.format("%s/bin/", + System.getProperty("java.home").replace("\\", "/")) + )); + } else { - fileChooser.setCurrentDirectory(new File(".")); + javaChooser.setCurrentDirectory(new File(".")); } - fileChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttonjavapath.tile")); + javaChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttonjavapath.tile")); + javaChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); + javaChooser.setAcceptAllFileFilterUsed(true); + javaChooser.setMultiSelectionEnabled(false); + javaChooser.setPreferredSize(chooserDimension); - fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); - fileChooser.setAcceptAllFileFilterUsed(true); - fileChooser.setMultiSelectionEnabled(false); + if (javaChooser.showOpenDialog(javaChooser) == JFileChooser.APPROVE_OPTION) { + try { + textJavaPath.setText(javaChooser.getSelectedFile().getCanonicalPath().replace("\\","/")); - fileChooser.setPreferredSize(chooserDimension); + appLogger.info(String.format( + localizationManager.getLocalizedString("createserverpack.log.info.buttonjavapath"), + javaChooser.getSelectedFile().getCanonicalPath().replace("\\","/") + )); - if (fileChooser.showOpenDialog(fileChooser) == JFileChooser.APPROVE_OPTION) { - try { - textJavaPath.setText(fileChooser.getSelectedFile().getCanonicalPath().replace("\\","/")); - appLogger.info(String.format(localizationManager.getLocalizedString("createserverpack.log.info.buttonjavapath"), fileChooser.getSelectedFile().getCanonicalPath().replace("\\","/"))); } catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.buttonjavapath"),ex); } @@ -391,30 +490,39 @@ public class CreateServerPackTab extends Component { createServerPackPanel.add(buttonJavaPath, constraints); //Load config from file - JButton buttonLoadConfigFromFile = new JButton(); + buttonLoadConfigFromFile = new JButton(); buttonLoadConfigFromFile.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttonloadconfig")); buttonLoadConfigFromFile.setIcon(loadIcon); buttonLoadConfigFromFile.setMinimumSize(miscButtonDimension); buttonLoadConfigFromFile.setPreferredSize(miscButtonDimension); buttonLoadConfigFromFile.setMaximumSize(miscButtonDimension); buttonLoadConfigFromFile.addActionListener(e -> { + configChooser = new JFileChooser(); - JFileChooser fileChooser = new JFileChooser(); - fileChooser.setCurrentDirectory(new File(".")); - fileChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttonloadconfig.title")); - fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); - fileChooser.setFileFilter(new FileNameExtensionFilter(localizationManager.getLocalizedString("createserverpack.gui.buttonloadconfig.filter"),"conf")); - fileChooser.setAcceptAllFileFilterUsed(false); - fileChooser.setMultiSelectionEnabled(false); - fileChooser.setPreferredSize(chooserDimension); + configChooser.setCurrentDirectory(new File(".")); + configChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttonloadconfig.title")); + configChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); - if (fileChooser.showOpenDialog(fileChooser) == JFileChooser.APPROVE_OPTION) { + configChooser.setFileFilter(new FileNameExtensionFilter( + localizationManager.getLocalizedString("createserverpack.gui.buttonloadconfig.filter"), + "conf")); + + configChooser.setAcceptAllFileFilterUsed(false); + configChooser.setMultiSelectionEnabled(false); + configChooser.setPreferredSize(chooserDimension); + + if (configChooser.showOpenDialog(configChooser) == JFileChooser.APPROVE_OPTION) { Config newConfigFile = null; try { - newConfigFile = ConfigFactory.parseFile(new File(fileChooser.getSelectedFile().getCanonicalPath())); - appLogger.info(String.format(localizationManager.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile"), fileChooser.getSelectedFile().getCanonicalPath())); + newConfigFile = ConfigFactory.parseFile(new File(configChooser.getSelectedFile().getCanonicalPath())); + + appLogger.info(String.format( + localizationManager.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile"), + configChooser.getSelectedFile().getCanonicalPath() + )); + } catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.buttonloadconfigfromfile"),ex); } @@ -456,7 +564,7 @@ public class CreateServerPackTab extends Component { createServerPackPanel.add(buttonLoadConfigFromFile, constraints); //Load config from file - JButton buttonInfoWindow = new JButton(); + buttonInfoWindow = new JButton(); buttonInfoWindow.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.button")); buttonInfoWindow.setIcon(helpIcon); buttonInfoWindow.setMinimumSize(miscButtonDimension); @@ -464,7 +572,7 @@ public class CreateServerPackTab extends Component { buttonInfoWindow.setMaximumSize(miscButtonDimension); buttonInfoWindow.addActionListener(e -> { - JTextArea textArea = new JTextArea(String.format( + helpTextArea = new JTextArea(String.format( "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s", localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.modpackdir"), localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.clientsidemods"), @@ -479,21 +587,21 @@ public class CreateServerPackTab extends Component { localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.copyicon"), localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.createzip") )); - textArea.setEditable(false); - textArea.setOpaque(false); + helpTextArea.setEditable(false); + helpTextArea.setOpaque(false); - JScrollPane scrollPane = new JScrollPane( - textArea, + helpScrollPane = new JScrollPane( + helpTextArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED ); - scrollPane.setBorder(null); + helpScrollPane.setBorder(null); - textArea.addHierarchyListener( + helpTextArea.addHierarchyListener( new HierarchyListener() { @Override public void hierarchyChanged(HierarchyEvent e) { - Window window = SwingUtilities.getWindowAncestor(textArea); + Window window = SwingUtilities.getWindowAncestor(helpTextArea); if (window instanceof Dialog) { Dialog dialog = (Dialog) window; if (!dialog.isResizable()) { @@ -503,7 +611,7 @@ public class CreateServerPackTab extends Component { } }); - JOptionPane.showMessageDialog(new JFrame(), scrollPane, localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.title"), JOptionPane.INFORMATION_MESSAGE, helpIcon); + JOptionPane.showMessageDialog(new JFrame(), helpScrollPane, localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.title"), JOptionPane.INFORMATION_MESSAGE, helpIcon); }); constraints.anchor = GridBagConstraints.CENTER; @@ -516,7 +624,7 @@ public class CreateServerPackTab extends Component { constraints.fill = GridBagConstraints.NONE; constraints.insets = new Insets(5,0,5,0); - JLabel labelGenerateServerPack = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.buttongenerateserverpack.ready")); + labelGenerateServerPack = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.buttongenerateserverpack.ready")); labelGenerateServerPack.setFont(new Font(labelGenerateServerPack.getFont().getName(), Font.BOLD, labelGenerateServerPack.getFont().getSize())); constraints.gridx = 0; constraints.gridy = 18; @@ -526,7 +634,7 @@ public class CreateServerPackTab extends Component { constraints.anchor = GridBagConstraints.PAGE_END; createServerPackPanel.add(labelGenerateServerPack, constraints); - JButton buttonGenerateServerPack = new JButton(); + buttonGenerateServerPack = new JButton(); buttonGenerateServerPack.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttongenerateserverpack.tip")); buttonGenerateServerPack.setIcon(startGeneration); buttonGenerateServerPack.addActionListener(e -> { -- GitLab From 67556b18655919a597384b2a57ffc3898f3c1e1a Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sun, 2 May 2021 00:11:57 +0200 Subject: [PATCH 37/91] refactor(DI): Update javadocs and minor refactorings --- .../serverpackcreator/gui/CreateGui.java | 103 ++++++++++++++---- 1 file changed, 79 insertions(+), 24 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java index 4f15d697f..8b0802f09 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java @@ -17,7 +17,6 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -//TODO: Write table of contents package de.griefed.serverpackcreator.gui; import com.typesafe.config.Config; @@ -35,7 +34,17 @@ import java.awt.*; import java.awt.event.KeyEvent; import java.io.File; import java.util.Objects; -//TODO: Write docs for class + +/** + * <strong>Table of methods</strong><br> + * {@link #CreateGui(LocalizationManager, Configuration, CurseCreateModpack, CreateServerPack)}<br> + * {@link #mainGUI()}<br> + * {@link #createAndShowGUI()}<p> + * This class creates and shows the GUI needed for running ServerPackCreator in....well...GUI mode. Calls {@link #mainGUI()} + * which then calls {@link #createAndShowGUI()} in order to create and show the GUI of ServerPackCreator. Instances of + * the {@link CreateServerPackTab}, {@link ServerPackCreatorLogTab}, {@link ModloaderInstallerLogTab}, {@link AboutTab} + * are created in the constructor of this class to make sure they are ready when the GUI is created and shown to the user. + */ public class CreateGui extends JPanel { private static final Logger appLogger = LogManager.getLogger(CreateGui.class); @@ -48,7 +57,22 @@ public class CreateGui extends JPanel { private CurseCreateModpack curseCreateModpack; private CreateServerPack createServerPack; - public CreateGui(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration, CurseCreateModpack injectectedCurseCreateModpack, CreateServerPack injectedCreateServerPack) { + /** + * <strong>Constructor</strong><p> + * Used for Dependency Injection.<p> + * Receives an instance of {@link LocalizationManager} or creates one if the received + * one is null. Required for use of localization.<p> + * Receives an instance of {@link Configuration} required to successfully and correctly create the server pack.<p> + * Receives an instance of {@link CurseCreateModpack} in case the modpack has to be created from a combination of + * CurseForge projectID and fileID, from which to <em>then</em> create the server pack. + * Receives an instance of {@link CreateServerPack} which is required to generate a server pack. + * @param injectedLocalizationManager Instance of {@link LocalizationManager} required for localized log messages. + * @param injectedConfiguration Instance of {@link Configuration} required to successfully and correctly create the server pack. + * @param injectedCurseCreateModpack Instance of {@link CurseCreateModpack} in case the modpack has to be created from a combination of + * CurseForge projectID and fileID, from which to <em>then</em> create the server pack. + * @param injectedCreateServerPack Instance of {@link CreateServerPack} required for the generation of server packs. + */ + public CreateGui(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration, CurseCreateModpack injectedCurseCreateModpack, CreateServerPack injectedCreateServerPack) { super(new GridLayout(1, 1)); if (injectedLocalizationManager == null) { @@ -60,7 +84,7 @@ public class CreateGui extends JPanel { if (injectedConfiguration == null) { this.curseCreateModpack = new CurseCreateModpack(localizationManager); } else { - this.curseCreateModpack = injectectedCurseCreateModpack; + this.curseCreateModpack = injectedCurseCreateModpack; } if (injectedConfiguration == null) { @@ -77,25 +101,53 @@ public class CreateGui extends JPanel { JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); - tabbedPane.addTab(localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.title"), null, new CreateServerPackTab(localizationManager, configuration, curseCreateModpack, createServerPack).createServerPackTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.tip")); + tabbedPane.addTab( + localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.title"), + null, + new CreateServerPackTab(localizationManager, configuration, curseCreateModpack, createServerPack).createServerPackTab(), + localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.tip")); + tabbedPane.setMnemonicAt(0, KeyEvent.VK_1); - tabbedPane.addTab(localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.title"), null, new ServerPackCreatorLogTab(localizationManager).serverPackCreatorLogTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.tip")); + tabbedPane.addTab( + localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.title"), + null, + new ServerPackCreatorLogTab(localizationManager).serverPackCreatorLogTab(), + localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.tip")); + tabbedPane.setMnemonicAt(1, KeyEvent.VK_2); - tabbedPane.addTab(localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.modloaderinstallerlog.title"), null, new ModloaderInstallerLogTab(localizationManager).modloaderInstallerLogTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.modloaderinstallerlog.tip")); + tabbedPane.addTab( + localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.modloaderinstallerlog.title"), + null, + new ModloaderInstallerLogTab(localizationManager).modloaderInstallerLogTab(), + localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.modloaderinstallerlog.tip")); + tabbedPane.setMnemonicAt(2, KeyEvent.VK_3); - tabbedPane.addTab(localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.about.title"), null, new AboutTab(localizationManager).aboutTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.about.tip")); + tabbedPane.addTab( + localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.about.title"), + null, + new AboutTab(localizationManager).aboutTab(), + localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.about.tip")); + tabbedPane.setMnemonicAt(3, KeyEvent.VK_4); - //Add the tabbed pane to this panel. add(tabbedPane); - //The following line enables to use scrolling tabs. tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); } + private JFrame serverPackCreatorFrame; + private JLabel serverPackCreatorBanner; + private File secretFile; + private Config secret; + + /** + * Shows the GUI from the EDT by using SwingUtilities and it's invokeLater method by calling {@link #createAndShowGUI()}. + * Sets the font to bold, which may be overridden by the LookAndFeel which gets automatically determined and depends + * on the OS ServerPackCreator is run on. + */ public void mainGUI() { SwingUtilities.invokeLater(() -> { //Bold fonts = true, else false @@ -104,8 +156,8 @@ public class CreateGui extends JPanel { try { if (new File("serverpackcreator.conf").exists()) { - File configFile = new File("serverpackcreator.conf"); - Config secret = ConfigFactory.parseFile(configFile); + secretFile = new File("serverpackcreator.conf"); + secret = ConfigFactory.parseFile(secretFile); if (secret.getString("topsicrets") != null && !secret.getString("topsicrets").equals("") && secret.getString("topsicrets").length() > 0) { @@ -136,24 +188,27 @@ public class CreateGui extends JPanel { }); } + /** + * Creates the frame in which the banner, tabbed pane with all the tabs, icon and title are displayed and shows it. + */ private void createAndShowGUI() { - JFrame frame = new JFrame(localizationManager.getLocalizedString("createserverpack.gui.createandshowgui")); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + serverPackCreatorFrame = new JFrame(localizationManager.getLocalizedString("createserverpack.gui.createandshowgui")); + serverPackCreatorFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.setIconImage(icon); - JLabel banner = new JLabel(bannerIcon); - banner.setOpaque(false); + serverPackCreatorFrame.setIconImage(icon); + serverPackCreatorBanner = new JLabel(bannerIcon); + serverPackCreatorBanner.setOpaque(false); - frame.add(banner, BorderLayout.PAGE_START); - frame.add(new CreateGui(localizationManager, configuration, curseCreateModpack, createServerPack), BorderLayout.CENTER); + serverPackCreatorFrame.add(serverPackCreatorBanner, BorderLayout.PAGE_START); + serverPackCreatorFrame.add(new CreateGui(localizationManager, configuration, curseCreateModpack, createServerPack), BorderLayout.CENTER); - frame.setPreferredSize(windowDimension); - frame.setMaximumSize(windowDimension); - frame.setResizable(true); + serverPackCreatorFrame.setPreferredSize(windowDimension); + serverPackCreatorFrame.setMaximumSize(windowDimension); + serverPackCreatorFrame.setResizable(true); - frame.pack(); + serverPackCreatorFrame.pack(); - frame.setVisible(true); + serverPackCreatorFrame.setVisible(true); } } \ No newline at end of file -- GitLab From 3dbc18995144ca762d2c0de5b3a79900b7c66696 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sun, 2 May 2021 11:19:24 +0200 Subject: [PATCH 38/91] refactor(DI): Update javadocs --- .../curseforgemodpack/CurseSplines.java | 177 +++++++++++++----- 1 file changed, 135 insertions(+), 42 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java index b96365bc6..17661d92c 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java @@ -17,63 +17,156 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ - package de.griefed.serverpackcreator.curseforgemodpack; import java.util.Random; -//TODO: Write docs for class + +/** + * <strong>Table of methods</strong><br> + * {@link #reticulating}<br> + * {@link #getRandomInt()}<br> + * {@link #getSpline()}<br> + * {@link #reticulate()}<p> + * Just something fun to brighten the mood. This class provides a list of messages which some of you may know from the + * SimCity games. Thanks go out to MAXIS and Sim City, for the ridiculous messages these games contained. + * Additional thanks to Larsz for providing a list of all these messages <a href=https://gamefaqs.gamespot.com/pc/561176-simcity-4/faqs/22135>on GameFAQs </a> + */ public class CurseSplines { - /* - Thanks go out to MAXIS and Sim City, for the ridiculous messages these games contained. - Additional thanks to Larsz on GameFAQs for providing a list of all these messages: https://gamefaqs.gamespot.com/pc/561176-simcity-4/faqs/22135 + + /** + * The list of messages as they were available in SimCity, plus Reticulating Splines added by myself, for good measure. */ - private final String[] reticulating = {"Adding Hidden Agendas","Adjusting Bell Curves","Aesthesizing Industrial Areas", - "Aligning Covariance Matrices","Applying Feng Shui Shaders","Applying Theatre Soda Layer", - "Asserting Packed Exemplars","Attempting to Lock Back-Buffer","Binding Sapling Root System","Breeding Fauna", - "Building Data Trees","Bureacritizing Bureaucracies","Calculating Inverse Probability Matrices", - "Calculating Llama Expectoration Trajectory","Calibrating Blue Skies","Charging Ozone Layer", - "Coalescing Cloud Formations","Cohorting Exemplars","Collecting Meteor Particles", - "Compounding Inert Tessellations","Compressing Fish Files","Computing Optimal Bin Packing", - "Concatenating Sub-Contractors","Containing Existential Buffer","Debarking Ark Ramp", - "Debunching Unionized Commercial Services","Deciding What Message to Display Next", - "Decomposing Singular Values","Decrementing Tectonic Plates","Deleting Ferry Routes", - "Depixelating Inner Mountain Surface Back Faces","Depositing Slush Funds", - "Destabilizing Economic Indicators","Determining Width of Blast Fronts","Deunionizing Bulldozers", - "Dicing Models","Diluting Livestock Nutrition Variables","Downloading Satellite Terrain Data", - "Exposing Flash Variables to Streak System","Extracting Resources","Factoring Pay Scale", - "Fixing Election Outcome Matrix","Flood-Filling Ground Water","Flushing Pipe Network", - "Gathering Particle Sources","Generating Jobs","Gesticulating Mimes","Graphing Whale Migration", - "Hiding Willio Webnet Mask","Implementing Impeachment Routine","Increasing Accuracy of RCI Simulators", - "Increasing Magmafacation","Initializing My Sim Tracking Mechanism", - "Initializing Rhinoceros Breeding Timetable","Initializing Robotic Click-Path AI", - "Inserting Sublimated Messages","Integrating Curves","Integrating Illumination Form Factors", - "Integrating Population Graphs","Iterating Cellular Automata","Lecturing Errant Subsystems", - "Mixing Genetic Pool","Modeling Object Components","Mopping Occupant Leaks","Normalizing Power", - "Obfuscating Quigley Matrix","Overconstraining Dirty Industry Calculations", - "Partitioning City Grid Singularities","Perturbing Matrices","Pixalating Nude Patch", - "Polishing Water Highlights","Populating Lot Templates","Preparing Sprites for Random Walks", - "Prioritizing Landmarks","Projecting Law Enforcement Pastry Intake","Realigning Alternate Time Frames", - "Reconfiguring User Mental Processes","Relaxing Splines","Removing Road Network Speed Bumps", - "Removing Texture Gradients","Removing Vehicle Avoidance Behavior","Resolving GUID Conflict", - "Reticulating Splines","Retracting Phong Shader","Retrieving from Back Store", - "Reverse Engineering Image Consultant","Routing Neural Network Infanstructure", - "Scattering Rhino Food Sources","Scrubbing Terrain","Searching for Llamas", - "Seeding Architecture Simulation Parameters","Sequencing Particles","Setting Advisor Moods", - "Setting Inner Deity Indicators","Setting Universal Physical Constants", - "Sonically Enhancing Occupant-Free Timber","Speculating Stock Market Indices", - "Splatting Transforms","Stratifying Ground Layers","Sub-Sampling Water Data","Synthesizing Gravity", - "Synthesizing Wavelets","Time-Compressing Simulator Clock","Unable to Reveal Current Activity", - "Weathering Buildings","Zeroing Crime Network"}; + private final String[] reticulating = { + "Adding Hidden Agendas", + "Adjusting Bell Curves", + "Aesthesizing Industrial Areas", + "Aligning Covariance Matrices", + "Applying Feng Shui Shaders", + "Applying Theatre Soda Layer", + "Asserting Packed Exemplars", + "Attempting to Lock Back-Buffer", + "Binding Sapling Root System", + "Breeding Fauna", + "Building Data Trees", + "Bureacritizing Bureaucracies", + "Calculating Inverse Probability Matrices", + "Calculating Llama Expectoration Trajectory", + "Calibrating Blue Skies", + "Charging Ozone Layer", + "Coalescing Cloud Formations", + "Cohorting Exemplars", + "Collecting Meteor Particles", + "Compounding Inert Tessellations", + "Compressing Fish Files", + "Computing Optimal Bin Packing", + "Concatenating Sub-Contractors", + "Containing Existential Buffer", + "Debarking Ark Ramp", + "Debunching Unionized Commercial Services", + "Deciding What Message to Display Next", + "Decomposing Singular Values", + "Decrementing Tectonic Plates", + "Deleting Ferry Routes", + "Depixelating Inner Mountain Surface Back Faces", + "Depositing Slush Funds", + "Destabilizing Economic Indicators", + "Determining Width of Blast Fronts", + "Deunionizing Bulldozers", + "Dicing Models", + "Diluting Livestock Nutrition Variables", + "Downloading Satellite Terrain Data", + "Exposing Flash Variables to Streak System", + "Extracting Resources", + "Factoring Pay Scale", + "Fixing Election Outcome Matrix", + "Flood-Filling Ground Water", + "Flushing Pipe Network", + "Gathering Particle Sources", + "Generating Jobs", + "Gesticulating Mimes", + "Graphing Whale Migration", + "Hiding Willio Webnet Mask", + "Implementing Impeachment Routine", + "Increasing Accuracy of RCI Simulators", + "Increasing Magmafacation", + "Initializing My Sim Tracking Mechanism", + "Initializing Rhinoceros Breeding Timetable", + "Initializing Robotic Click-Path AI", + "Inserting Sublimated Messages", + "Integrating Curves", + "Integrating Illumination Form Factors", + "Integrating Population Graphs", + "Iterating Cellular Automata", + "Lecturing Errant Subsystems", + "Mixing Genetic Pool", + "Modeling Object Components", + "Mopping Occupant Leaks", + "Normalizing Power", + "Obfuscating Quigley Matrix", + "Overconstraining Dirty Industry Calculations", + "Partitioning City Grid Singularities", + "Perturbing Matrices", + "Pixalating Nude Patch", + "Polishing Water Highlights", + "Populating Lot Templates", + "Preparing Sprites for Random Walks", + "Prioritizing Landmarks", + "Projecting Law Enforcement Pastry Intake", + "Realigning Alternate Time Frames", + "Reconfiguring User Mental Processes", + "Relaxing Splines", + "Removing Road Network Speed Bumps", + "Removing Texture Gradients", + "Removing Vehicle Avoidance Behavior", + "Resolving GUID Conflict", + "Reticulating Splines", + "Retracting Phong Shader", + "Retrieving from Back Store", + "Reverse Engineering Image Consultant", + "Routing Neural Network Infanstructure", + "Scattering Rhino Food Sources", + "Scrubbing Terrain", + "Searching for Llamas", + "Seeding Architecture Simulation Parameters", + "Sequencing Particles", + "Setting Advisor Moods", + "Setting Inner Deity Indicators", + "Setting Universal Physical Constants", + "Sonically Enhancing Occupant-Free Timber", + "Speculating Stock Market Indices", + "Splatting Transforms", + "Stratifying Ground Layers", + "Sub-Sampling Water Data", + "Synthesizing Gravity", + "Synthesizing Wavelets", + "Time-Compressing Simulator Clock", + "Unable to Reveal Current Activity", + "Weathering Buildings", + "Zeroing Crime Network", + "Reticulating Splines" + }; + /** + * Retrieves the index of a random message in {@link #reticulating}. + * @return Integer. Returns a randomly generated index. + */ private int getRandomInt() { Random randInt = new Random(); return randInt.nextInt(reticulating.length); } + /** + * Retrieves a message from {@link #reticulating} using a randomly generated index from {@link #getRandomInt()}. + * @return String. Returns the message at the index provided by the randomizer. + */ private String getSpline() { return reticulating[getRandomInt()]; } + /** + * Retrieve a random message from {@link #reticulating}. + * @return String. Returns a random message. + */ public String reticulate() { return getSpline(); } -- GitLab From 1f1cd5012fdb21a2fe163cbbc4dacf5fc38cc7b3 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sun, 2 May 2021 11:42:01 +0200 Subject: [PATCH 39/91] refactor(DI): Update javadocs and minor refactorings --- .../curseforgemodpack/CurseModpack.java | 99 +++++++++++++++---- 1 file changed, 82 insertions(+), 17 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java index e5b4b16b1..8ec7af1cc 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java @@ -17,14 +17,34 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ - package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.util.List; -//TODO: Write docs for class + +/** + * <strong>Table of methods</strong><br> + * {@link #getMinecraft()}<br> + * {@link #setMinecraft(List)}<br> + * {@link #getName()}<br> + * {@link #setName(String)}<br> + * {@link #getVersion()}<br> + * {@link #setVersion(String)}<br> + * {@link #getAuthor()}<br> + * {@link #setAuthor(String)}<br> + * {@link #getFiles()}<br> + * {@link #setFiles(List)}<br> + * {@link #toString()}<p> + * Retrieve information about a CurseForge Minecraft modpack by using {@link com.fasterxml.jackson.databind} JSON parsing. + * This class retrieves the name, version and author of a modpack. + */ public class CurseModpack { + /** + * Ignore unknown values/object. We only want to gather specific information and disregard the rest. Setting this + * property allows us setup the class to only gather the information we want, so we don't have to worry about any + * additions to the source-data being made, which would otherwise cause an "Unknown property" exception. + */ @JsonIgnoreProperties(ignoreUnknown = true) private List<CurseMinecraft> minecraft; private String name; @@ -32,52 +52,97 @@ public class CurseModpack { private String author; private List<CurseFiles> files; + /** + * Getter for Minecraft related information using {@link CurseMinecraft}. + * @return List CurseMinecraft. Returns an instance of CurseMinecraft.class with information related to Minecraft. + */ public List<CurseMinecraft> getMinecraft() { return minecraft; } - public void setMinecraft(List<CurseMinecraft> minecraft) { - this.minecraft = minecraft; + /** + * Setter for Minecraft related information using {@link CurseMinecraft} + * @param newMinecraft Receives an instance of the CurseMinecraft.class. + */ + public void setMinecraft(List<CurseMinecraft> newMinecraft) { + this.minecraft = newMinecraft; } + /** + * Getter for the name of the CurseForge modpack. + * @return String. Returns the name of modpack acquired from CurseForge. + */ public String getName() { return name; } - public void setName(String name) { - this.name = name; + /** + * Setter for the name of the CurseForge modpack. + * @param newName Receives the name of the CurseForge modpack. + */ + public void setName(String newName) { + this.name = newName; } + /** + * Getter for the version of the CurseForge modpack. + * @return String. Returns the version of the modpack acquired from CurseForge. + */ public String getVersion() { return version; } - public void setVersion(String version) { - this.version = version; + /** + * Setter for the version of the CurseForge modpack. + * @param newVersion Receives the version of the modpack acquired from CurseForge. + */ + public void setVersion(String newVersion) { + this.version = newVersion; } + /** + * Getter for the author of the CurseForge modpack. + * @return String. Returns the author of the modpack acquired from CurseForge. + */ public String getAuthor() { return author; } + /** + * Setter for the author of the CurseForge modpack. + * @param newAuthor Receives the author of the modpack acquired from CurseForge. + */ + public void setAuthor(String newAuthor) { + this.author = newAuthor; + } + + /** + * Getter for the files on which the CurseForge modpack depends by using {@link CurseFiles}. + * @return List CurseFiles. Returns an instance of CurseFiles.class with information related to the files included + * in the CurseForge modpack. + */ public List<CurseFiles> getFiles() { return files; } - public void setFiles(List<CurseFiles> files) { - this.files = files; + /** + * Setter for the CurseForge modpack files on which it depends. + * @param newFiles Receives an instance of CurseFiles.class with information about the files on which the modpack depends. + */ + public void setFiles(List<CurseFiles> newFiles) { + this.files = newFiles; } + /** + * String containing information about the CurseForge modpack. Included are {@link #getMinecraft()}, + * {@link #getName()}, {@link #getVersion()}, {@link #getAuthor()}, {@link #getFiles()}. + * @return String. Returns String with information about the CurseForge modpack. + */ @Override public String toString() { return String.format( - "**** Modpack details ****\n" + - "Version & Modloader: %s\n" + - "Name: %s\n" + - "Version: %s\n" + - "Author: %s\n" + - "Files: %s", - minecraft, name, version, author, files + "Modpack details: Version & Modloader: %s Name: %s Version: %s Author: %s Files: %s", + getMinecraft(), getName(), getVersion(), getAuthor(), getFiles() ); } } \ No newline at end of file -- GitLab From a0e608f9bec7d4dcbc7940b7860f63421694e3e7 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sun, 2 May 2021 11:52:41 +0200 Subject: [PATCH 40/91] refactor(DI): Update javadocs --- .../curseforgemodpack/CurseModLoaders.java | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java index fb06a07bc..eac9b41f5 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java @@ -17,23 +17,47 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ - package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -//TODO: Write docs for class + +/** + * + */ public class CurseModLoaders { + /** + * Ignore unknown values/object. We only want to gather specific information and disregard the rest. Setting this + * property allows us setup the class to only gather the information we want, so we don't have to worry about any + * additions to the source-data being made, which would otherwise cause an "Unknown property" exception. + */ @JsonIgnoreProperties(ignoreUnknown = true) private String id; + /** + * Getter for the modloader and modloader version used by the CurseForge modpack. It's a single string in the + * manifest.json which contains the modloader and the version of said modloader, for example <code>"id": "forge-36.1.4"</code> + * @return String. Returns the id of the modpack acquired from CurseForge containing information about the modloader + * and the version of said modloader. + */ public String getId() { return id; } + /** + * Setter for the modloader and modloader version used by the CurseForge modpack. It's a single string in the + * manifest.json which contains the modloader and the version of said modloader, for example <code>"id": "forge-36.1.4"</code> + * @param id Receives the id of the CurseForge modpack containing information about the modloader + * and the version of said modloader. + */ public void setId(String id) { this.id = id; } + /** + * String containing information about the CurseForge modpack's used modloader and the modloader version. + * @return String. Returns the String with information about the modlaoder and modloader version used by the + * CurseForge modpack. + */ @Override public String toString() { return id; -- GitLab From 5f820e15b12fdd269b9f8e0e240fc53ab86ad571 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sun, 2 May 2021 11:52:52 +0200 Subject: [PATCH 41/91] refactor(DI): Update javadocs --- .../serverpackcreator/curseforgemodpack/CurseModLoaders.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java index eac9b41f5..02601b95d 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java @@ -55,7 +55,7 @@ public class CurseModLoaders { /** * String containing information about the CurseForge modpack's used modloader and the modloader version. - * @return String. Returns the String with information about the modlaoder and modloader version used by the + * @return String. Returns the String with information about the modloader and modloader version used by the * CurseForge modpack. */ @Override -- GitLab From eb891ff03188b79ac34b39798540110c4b026c75 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sun, 2 May 2021 12:11:56 +0200 Subject: [PATCH 42/91] refactor(DI): Update javadocs --- .../curseforgemodpack/CurseFiles.java | 39 +++++++++++++++++- .../curseforgemodpack/CurseMinecraft.java | 41 ++++++++++++++++++- .../curseforgemodpack/CurseModLoaders.java | 7 +++- 3 files changed, 82 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java index 6f409d7f4..ec7645b7a 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java @@ -17,32 +17,67 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ - package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -//TODO: Write docs for class +/** + * <strong>Table of methods</strong><br> + * {@link #getProjectID()}<br> + * {@link #setProjectID(String)}<br> + * {@link #getFileID()}<br> + * {@link #setFileID(String)}<br> + * {@link #toString()}<p> + * Retrieves information about a CurseForge Minecraft modpack by using {@link com.fasterxml.jackson.databind} JSON parsing. + * This class retrieves the projectIDs and fileIDs a modpack acquired from CurseForge depends on. These can be mods, + * resource packs, worlds etc. etc. + */ public class CurseFiles { + /** + * Ignore unknown values/object. We only want to gather specific information and disregard the rest. Setting this + * property allows us setup the class to only gather the information we want, so we don't have to worry about any + * additions to the source-data being made, which would otherwise cause an "Unknown property" exception. + */ @JsonIgnoreProperties(ignoreUnknown = true) private String projectID; private String fileID; + /** + * Getter for a projectID of a dependency in the CurseForge modpack. + * @return String. Returns a projectID of a dependency in the modpack acquired from CurseForge. + */ public String getProjectID() { return projectID; } + /** + * Setter for a projectID of a dependency in the CurseForge modpack. + * @param projectID Receives the projectID of a dependency in the modpack acquired from CurseForge. + */ public void setProjectID(String projectID) { this.projectID = projectID; } + /** + * Getter for a fileID of a dependency in the CurseForge modpack. + * @return String. Returns a fileID of a dependency in the modpack acquired from CurseForge. + */ public String getFileID() { return fileID; } + /** + * Setter for a fileID of a dependency in the CurseForge modpack. + * @param fileID Receives the fileID of a dependency in the modpack acquired from CurseForge. + */ public void setFileID(String fileID) { this.fileID = fileID; } + /** + * A comma separated combination of a dependency projectID and fileID of a CurseForge modpack. + * @return String. Returns a comma separated projectID,fileID combination of a dependency of a modpack acquired from + * CurseForge. + */ @Override public String toString() { return String.format("%s,%s",projectID,fileID); diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java index db63bc4f3..18519df5f 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java @@ -17,34 +17,71 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ - package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.util.List; -//TODO: Write docs for class + +/** + * <strong>Table of methods</strong><br> + * {@link #getVersion()}<br> + * {@link #setVersion(String)}<br> + * {@link #getModLoaders()}<br> + * {@link #setModLoaders(List)}<br> + * {@link #toString()}<p> + * Retrieves information about a CurseForge Minecraft modpack by using {@link com.fasterxml.jackson.databind} JSON parsing. + * This class retrieves the Minecraft version of a modpack. + */ public class CurseMinecraft { + /** + * Ignore unknown values/object. We only want to gather specific information and disregard the rest. Setting this + * property allows us setup the class to only gather the information we want, so we don't have to worry about any + * additions to the source-data being made, which would otherwise cause an "Unknown property" exception. + */ @JsonIgnoreProperties(ignoreUnknown = true) private String version; private List<CurseModLoaders> modLoaders; + /** + * Getter for the Minecraft version used by the CurseForge modpack. + * @return String. Returns the Minecraft version used by the modpack acquired from CurseForge. + */ public String getVersion() { return version; } + /** + * Setter for the Minecraft version used by the CurseForge modpack. + * @param version Receives the Minecraft version of the CurseForge modpack. + */ public void setVersion(String version) { this.version = version; } + /** + * Getter for modloader related information using {@link CurseModLoaders}. + * @return List CurseModLoaders. Returns an isntance of CurseModLoaders.class with information about the modlaoder + * and modloader version used by the CurseForge modpack. + */ public List<CurseModLoaders> getModLoaders() { return modLoaders; } + /** + * Setter for modloader related information using {@link CurseModLoaders}. + * @param modLoaders Receives an instance of CurseModLoaders.class. + */ public void setModLoaders(List<CurseModLoaders> modLoaders) { this.modLoaders = modLoaders; } + /** + * String containing information about the Minecraft version, modloader and modloader version used by the CurseForge + * modpack. + * @return String. Returns a String with the Minecraft version, used modloader and modloader version of a modpack + * acquired from CurseForge. + */ @Override public String toString() { return String.format("%s,%s",version,modLoaders); diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java index 02601b95d..d64bbcf68 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java @@ -22,7 +22,12 @@ package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; /** - * + * <strong>Table of methods</strong><br> + * {@link #getId()}<br> + * {@link #setId(String)}<br> + * {@link #toString()}<p> + * Retrieves information about a CurseForge Minecraft modpack by using {@link com.fasterxml.jackson.databind} JSON parsing. + * This class retrieves the modloader and modloader version of a modpack. */ public class CurseModLoaders { /** -- GitLab From e5703e4c3d090d65ee2ade1fa0683708c5f57cff Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sun, 2 May 2021 13:20:27 +0200 Subject: [PATCH 43/91] refactor(DI): Update javadocs --- .../curseforgemodpack/CurseCreateModpack.java | 157 ++++++++++++++---- 1 file changed, 126 insertions(+), 31 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java index d1815ed51..1a8303bcc 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java @@ -17,7 +17,6 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -//TODO: Write table of contents package de.griefed.serverpackcreator.curseforgemodpack; import com.fasterxml.jackson.databind.DeserializationFeature; @@ -41,7 +40,36 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; -//TODO: Write docs for class + +/** + * <strong>Table of methods</strong><br> + * {@link #CurseCreateModpack(LocalizationManager)}<br> + * {@link #setModloaderCase(String)}<br> + * {@link #curseForgeModpack(String, Integer, Integer)}<br> + * {@link #initializeModpack(String, Integer, Integer)}<br> + * {@link #downloadMods(String)}<br> + * {@link #copyOverride(String)}<br> + * {@link #checkCurseForgeDir(String)}<br> + * {@link #unzipArchive(String, String)}<br> + * {@link #newFile(File, ZipEntry)}<br> + * {@link #cleanupEnvironment(String)}<p> + * Download a modpack from CurseForge and create it by unzipping the ZIP-archive, copy all folders and files from the + * override directory to the parent directory, download all mods in said modpack, and delete no longer needed files. + * Modpacks are create in a ProjectName/FileDisplayName structure. Before a modpack is created, the FileDisplayName folder + * is checked for existence and deleted should it already exist. The reason for this is the order in which ServerPackCreator + * checks and uses the configuration file.<p> + * First: the configuration is checked for a valid CurseForge projectID,fileID combination.<br> + * Second: The folder structure is checked for an already existing folder with FileDisplayName and if it exists it is deleted.<br> + * Third: The modpack is created and all mods are downloaded etc., files are copied, etc.<br> + * Fourth: Information about the modpack is acquired from the modpack's manifest.json and written to a new configuration file + * with said information. The configuration for modpackDir, which previously contained a projectID,fileID is replaced + * with the path to the new modpack at ProjectName/FileDisplayName.<br> + * If modpackDir holds a projectID,fileID combination we have to assume the modpack has yet to be created, thus + * we need to make sure the target directory is empty in order to create a clean and fresh modpack.<br> + * If modpackDir does not hold a projectID,fileID we have to assume it is a path pointing at a directory which already + * contains a modpack we can work with and create a server pack from. Thus, we clean up the environment if modpackDir holds + * a projectID,fileID. + */ public class CurseCreateModpack { private static final Logger appLogger = LogManager.getLogger(CurseCreateModpack.class); private String projectName; @@ -50,6 +78,13 @@ public class CurseCreateModpack { private LocalizationManager localizationManager; + /** + * <strong>Constructor</strong><p> + * Used for Dependency Injection.<p> + * Receives an instance of {@link LocalizationManager} or creates one if the received + * one is null. Required for use of localization. + * @param injectedLocalizationManager Instance of {@link LocalizationManager} required for localized log messages. + */ public CurseCreateModpack(LocalizationManager injectedLocalizationManager) { if (injectedLocalizationManager == null) { this.localizationManager = new LocalizationManager(); @@ -58,9 +93,12 @@ public class CurseCreateModpack { } } - /** Standardize the specified modloader. - * @param modloader String. If any case of Forge or Fabric was specified, return "Forge" or "Fabric", so users can enter "forge" or "fabric" or any combination of upper- and lowercase letters.. - * @return String. Returns a standardized String of the specified modloader. + /** + * Ensures the modloader is normalized to first letter upper case and rest lower case. Basically allows the user to + * input Forge or Fabric in any combination of upper- and lowercase and ServerPackCreator will still be able to + * work with the users input. + * @param modloader String. The String to check for case-insensitive cases of either Forge or Fabric. + * @return String. Returns a normalized String of the specified modloader. */ String setModloaderCase(String modloader) { String returnLoader = null; @@ -72,11 +110,20 @@ public class CurseCreateModpack { return returnLoader; } - /** Gets the names of the specified project and file and makes calls to methods which create the modpack so we can then create a server pack from it. - * @param modpackDir String. Combination of project name and file name. Created during download procedure and later added to config file. - * @param projectID Integer. The ID of the project. Used to gather information and to download the modpack. - * @param fileID Integer. The ID of the file. Used to gather information and to download the modpack. - * @return Boolean. Returns true if the modpack was freshly created. + /** + * Acquires the names of the CurseForge project and file. Should no filename exist, we will use the fileDiskName as + * fallback to ensure we always have a folder-structure of projectName/FileDisplayName at hand in which the modpack + * will be created. Calls<br> + * {@link CurseAPI} and various methods of it in order to acquire information about the modpack.<br> + * {@link #checkCurseForgeDir(String)}<br> + * {@link #initializeModpack(String, Integer, Integer)} + * @param modpackDir String. Combination of project name and file name. Created during download procedure + * and later replaces the modpackDir variable in the configuration file. + * @param projectID Integer. The ID of the project. Used to gather information about the CurseForge project and to + * download the modpack. + * @param fileID Integer. The ID of the file. Used to gather information about the CurseForge file and to download + * the modpack. + * @return Boolean. Returns true if the modpack was successfully created. */ @SuppressWarnings({"OptionalGetWithoutIsPresent", "ConstantConditions"}) public boolean curseForgeModpack(String modpackDir, Integer projectID, Integer fileID) { @@ -106,8 +153,16 @@ public class CurseCreateModpack { return modpackCreated; } - /** Downloads the specified file of the specified project to a directory which is the combination of the project name and file display name. Unzips the downloaded modpack archive, gathers and displays information about the specified project/file and makes calls to methods which further setup the modpack. - * @param modpackDir String. Combination of project name and file name. Created during download procedure and later added to config file. + /** + * Downloads the specified file of the specified project to a directory which is the combination of the project + * name and file display name. Unzips the downloaded modpack ZIP-archive, gathers and displays information about the + * specified project/file and makes calls to methods which further setup the modpack. Calls<br> + * {@link CurseAPI} and various methods of it to create the modpack.<br> + * {@link #unzipArchive(String, String)}<br> + * {@link #copyOverride(String)}<br> + * {@link #downloadMods(String)}<br> + * @param modpackDir String. Combination of project name and file name. Created during download procedure and later + * replaces the modpackDir variable in the configuration file. * @param projectID Integer. The ID of the project. Used to gather information and to download the modpack. * @param fileID Integer. The ID of the file. Used to gather information and to download the modpack. */ @@ -158,8 +213,15 @@ public class CurseCreateModpack { downloadMods(modpackDir); } - /** Downloads all mods specified in the modpack's manifest.json file. If a download fails, one retry will be made, if said retry fails, too, then the download url will be sent to the log. - * @param modpackDir String. All mods are downloaded to a child directory 'mods' + /** + * Downloads all mods specified in the modpack's manifest.json file. If a download of a mod fails, it will be + * retried once before treating it as "currently unavailable" and adding the URL to the failed download + * to a list which will be printed to the console and logs after the method has finished. The user will need to + * download these failed mods themself as ServerPackCreator couldn't, for whatever reason, successfully download them. + * If the acquisition of the download URL fails as well....well we're out of luck, then. The user will have to figure + * this out on their own. Possible reasons for a failed download and failed URL acquisition might be that the file + * was taken down, no longer exists, CurseForge is unavailable etc. etc. There's nothing we can do about that. + * @param modpackDir String. All mods are downloaded to the child-directory "mods" inside the modpack directory. */ @SuppressWarnings({"OptionalGetWithoutIsPresent", "BusyWait"}) private void downloadMods(String modpackDir) { @@ -190,25 +252,42 @@ public class CurseCreateModpack { fileID = Integer.parseInt(mods[1]); try { + modName = CurseAPI.project(modID).get().name(); modFileName = Objects.requireNonNull(CurseAPI.project(modID).get().files().fileWithID(fileID)).nameOnDisk(); + } catch (CurseException cex) { appLogger.error(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.curseforgeinfo"), cex); } + try { + appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.downloadmods.specificmod"), i+1, curseModpack.getFiles().size(), modName, modFileName)); + //Download mod CurseAPI.downloadFileToDirectory(modID, fileID, Paths.get(String.format("%s/mods", modpackDir))); + try { Thread.sleep(1000); } catch (InterruptedException iex) { appLogger.debug(localizationManager.getLocalizedString("createmodpack.log.debug.downloadmods.sleep"), iex); } - } catch (CurseException cex) { appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.errordownload"), modName, modID, modFileName, fileID)); + + } catch (CurseException cex) { + appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.errordownload"), modName, modID, modFileName, fileID)); + try { + appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.downloadmods.tryagain"), modName, modID, modFileName, fileID)); + //Retry download if previous attempt failed CurseAPI.downloadFileToDirectory(modID, fileID, Paths.get(String.format("%s/mods", modpackDir))); + } catch (CurseException cex2) { + appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.retryfail"), modName, modID, modFileName, fileID)); + try { + //Add URL of failed download to list failedDownloads.add(String.format("Mod: %s, ID: %d. File: %s, ID: %d, URL: %s", modName, modID, modFileName, fileID, CurseAPI.fileDownloadURL(modID, fileID))); + } catch (CurseException cex3) { + appLogger.error(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.urlfail")); } } @@ -218,14 +297,17 @@ public class CurseCreateModpack { appLogger.error(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.fail")); } if (failedDownloads.size() != 0) { + //Print the URLs of failed downloads, if there are any for (int i = 0; i <= failedDownloads.size(); i++) { appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.urllist"), failedDownloads.get(i))); } } } - /** Copies all folders and the files therein to the parent modpack directory. - * @param modpackDir String. The overrides directory resides in this directory. All folders and files within overrides are copied here. + /** + * Recursively copy all folders and files from the override directory to the parent directory, our modpack directory. + * @param modpackDir String. The overrides directory resides in this directory. All folders and files within overrides + * are copied to the parent directory, the modpack directory. */ private void copyOverride(String modpackDir) { appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.copyoverrides.info")); @@ -247,9 +329,14 @@ public class CurseCreateModpack { } } - /** Check whether the folder for the specified CurseForge projectID/fileID exists. + /** + * Check whether the folder for the specified CurseForge projectID/fileID exists and if it does exist, delete it + * recursively to ensure we are working with a clean environment when creating a modpack from CurseForge.<br> + * Calls {@link #cleanupEnvironment(String)} to ensure a clean environment when we create a new modpack from CurseForge. * @param modpackDir String. The path to the modpack directory, a combination of project name and file display name. - * @return Boolean. Returns true if the directory exists. False if not. + * @return Boolean. Returns true if something went wrong during the cleanup of the modpack directory. If the cleanup + * procedure finished successfully and we have a clean environment, false is returned. Returns false if the modpack + * directory could not be found, indicating a clean environment. */ private boolean checkCurseForgeDir(String modpackDir) { boolean isModpackPresent = false; @@ -262,10 +349,12 @@ public class CurseCreateModpack { return isModpackPresent; } - /** With help from: https://www.baeldung.com/java-compress-and-uncompress - * Unzips the downloaded modpack archive to a directory. - * @param zipFile String. The name of the zipfile to extract. - * @param modpackDir The directory where the archive resides in and will be extracted to. + /** + * With help from <a href=https://www.baeldung.com/java-compress-and-uncompress>Baeldung Java Tutorials</a>.<br> + * Unzips the downloaded modpack ZIP-archive to the specified directory. Calls {@link #newFile(File, ZipEntry)} as + * a helper method. + * @param zipFile String. The path to the ZIP-archive which we want to unzip. + * @param modpackDir The directory into which the ZIP-archive will be unzipped into. */ private void unzipArchive(String zipFile, String modpackDir) { appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.unziparchive")); @@ -301,10 +390,15 @@ public class CurseCreateModpack { } } - /** Helper-Method for unzipArchive. With help from: https://www.baeldung.com/java-compress-and-uncompress - * @param destinationDir Check whether the file is outside of the directory it is supposed to be in. - * @param zipEntry Zip entry with which to check for location. - * @return Returns the correct destination for the new file. + /** + * With help from <a href=https://www.baeldung.com/java-compress-and-uncompress>Baeldung Java Tutorials</a>.<br> + * Helper-Method for unzipArchive. This method guards us against writing any file to the file system <em>outside</em> + * of the target folder, thus ensuring all files are successfully unzipped into the desired target directory. + * @param destinationDir The directory into which a file from the ZIP-archive is to be unzipped. + * @param zipEntry File in the ZIP-archive which is to be unzipped from the ZIP-archive into the desired target + * directory. + * @return File. Returns a file from the ZIP-archive with the path pointing to the desired directory, ensuring proper + * unzipping of the ZIP-archive. */ private File newFile(File destinationDir, ZipEntry zipEntry) { File destFile = new File(destinationDir, zipEntry.getName()); @@ -328,10 +422,11 @@ public class CurseCreateModpack { return destFile; } - /** Deletes all files, directories and ZIP-archives of previously generated server packs to ensure newly generated - * server pack is as clean as possible. - * @param modpackDir String. The server_pack directory and ZIP-archive will be deleted inside the modpack directory. - * @return Boolean. Returns false if every file and folder was successfully deleted. + /** + * Deletes any and all folder and files, recursively, inside the target directory, thus ensuring we are working in a + * clean environment when creating a new modpack from CurseForge. + * @param modpackDir String. The directory we want to delete. + * @return Boolean. Returns false if every file and folder was, recursively and successfully, deleted. */ private boolean cleanupEnvironment(String modpackDir) { boolean cleanedUp = false; -- GitLab From 87cef199feab89805ac00b06a8d585b002e118df Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sun, 2 May 2021 13:23:05 +0200 Subject: [PATCH 44/91] refactor(DI): Update javadocs --- .../serverpackcreator/Configuration.html | 935 ++++++++++++++---- .../serverpackcreator/CreateServerPack.html | 357 +++++-- .../griefed/serverpackcreator/FilesSetup.html | 168 +++- docs/de/griefed/serverpackcreator/Main.html | 38 +- .../curseforgemodpack/CurseCreateModpack.html | 184 +++- .../curseforgemodpack/CurseFiles.html | 60 +- .../curseforgemodpack/CurseMinecraft.html | 66 +- .../curseforgemodpack/CurseModLoaders.html | 47 +- .../curseforgemodpack/CurseModpack.html | 141 ++- .../curseforgemodpack/CurseSplines.html | 44 +- .../curseforgemodpack/package-summary.html | 69 +- .../serverpackcreator/gui/AboutTab.html | 154 ++- .../serverpackcreator/gui/CreateGui.html | 131 ++- .../gui/CreateServerPackTab.html | 561 ++++++++++- .../gui/ModloaderInstallerLogTab.html | 88 +- .../gui/ServerPackCreatorLogTab.html | 88 +- .../gui/package-summary.html | 27 +- .../i18n/IncorrectLanguageException.html | 6 + .../i18n/LocalizationManager.html | 123 ++- .../i18n/package-summary.html | 22 +- .../serverpackcreator/package-summary.html | 28 +- docs/index-all.html | 837 ++++++++++++---- docs/serialized-form.html | 310 +++++- 23 files changed, 3805 insertions(+), 679 deletions(-) diff --git a/docs/de/griefed/serverpackcreator/Configuration.html b/docs/de/griefed/serverpackcreator/Configuration.html index 7850ce453..52d24ebeb 100644 --- a/docs/de/griefed/serverpackcreator/Configuration.html +++ b/docs/de/griefed/serverpackcreator/Configuration.html @@ -17,7 +17,7 @@ catch(err) { } //--> -var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10}; +var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10}; var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; var altColor = "altColor"; var rowColor = "rowColor"; @@ -109,6 +109,73 @@ var activeTableTab = "activeTableTab"; <br> <pre>public class <span class="typeNameLabel">Configuration</span> extends java.lang.Object</pre> +<div class="block"><strong>Table of methods</strong><p> + 1. <a href="../../../de/griefed/serverpackcreator/Configuration.html#Configuration-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack-"><code>Configuration(LocalizationManager, CurseCreateModpack)</code></a><br> + 2. <a href="../../../de/griefed/serverpackcreator/Configuration.html#getOldConfigFile--"><code>getOldConfigFile()</code></a><br> + 3. <a href="../../../de/griefed/serverpackcreator/Configuration.html#getConfigFile--"><code>getConfigFile()</code></a><br> + 4. <a href="../../../de/griefed/serverpackcreator/Configuration.html#getMinecraftManifestUrl--"><code>getMinecraftManifestUrl()</code></a><br> + 5. <a href="../../../de/griefed/serverpackcreator/Configuration.html#getForgeManifestUrl--"><code>getForgeManifestUrl()</code></a><br> + 6. <a href="../../../de/griefed/serverpackcreator/Configuration.html#getFabricManifestUrl--"><code>getFabricManifestUrl()</code></a><br> + 7. <a href="../../../de/griefed/serverpackcreator/Configuration.html#getConfig--"><code>getConfig()</code></a><br> + 8. <a href="../../../de/griefed/serverpackcreator/Configuration.html#setConfig-com.typesafe.config.Config-"><code>setConfig(Config)</code></a><br> + 9. <a href="../../../de/griefed/serverpackcreator/Configuration.html#getFallbackModsList--"><code>getFallbackModsList()</code></a><br> + 10.<a href="../../../de/griefed/serverpackcreator/Configuration.html#getClientMods--"><code>getClientMods()</code></a><br> + 11.<a href="../../../de/griefed/serverpackcreator/Configuration.html#setClientMods-java.util.List-"><code>setClientMods(List)</code></a><br> + 12.<a href="../../../de/griefed/serverpackcreator/Configuration.html#getCopyDirs--"><code>getCopyDirs()</code></a><br> + 13.<a href="../../../de/griefed/serverpackcreator/Configuration.html#setCopyDirs-java.util.List-"><code>setCopyDirs(List)</code></a><br> + 14.<a href="../../../de/griefed/serverpackcreator/Configuration.html#getModpackDir--"><code>getModpackDir()</code></a><br> + 15.<a href="../../../de/griefed/serverpackcreator/Configuration.html#setModpackDir-java.lang.String-"><code>setModpackDir(String)</code></a><br> + 16.<a href="../../../de/griefed/serverpackcreator/Configuration.html#getJavaPath--"><code>getJavaPath()</code></a><br> + 17.<a href="../../../de/griefed/serverpackcreator/Configuration.html#setJavaPath-java.lang.String-"><code>setJavaPath(String)</code></a><br> + 18.<a href="../../../de/griefed/serverpackcreator/Configuration.html#getMinecraftVersion--"><code>getMinecraftVersion()</code></a><br> + 19.<a href="../../../de/griefed/serverpackcreator/Configuration.html#setMinecraftVersion-java.lang.String-"><code>setMinecraftVersion(String)</code></a><br> + 20.<a href="../../../de/griefed/serverpackcreator/Configuration.html#getModLoader--"><code>getModLoader()</code></a><br> + 21.<a href="../../../de/griefed/serverpackcreator/Configuration.html#setModLoader-java.lang.String-"><code>setModLoader(String)</code></a><br> + 22.<a href="../../../de/griefed/serverpackcreator/Configuration.html#getModLoaderVersion--"><code>getModLoaderVersion()</code></a><br> + 23.<a href="../../../de/griefed/serverpackcreator/Configuration.html#setModLoaderVersion-java.lang.String-"><code>setModLoaderVersion(String)</code></a><br> + 24.<a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeServerInstallation--"><code>getIncludeServerInstallation()</code></a><br> + 25.<a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeServerInstallation-boolean-"><code>setIncludeServerInstallation(boolean)</code></a><br> + 26.<a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeServerIcon--"><code>getIncludeServerIcon()</code></a><br> + 27.<a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeServerIcon-boolean-"><code>setIncludeServerIcon(boolean)</code></a><br> + 28.<a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeServerProperties--"><code>getIncludeServerProperties()</code></a><br> + 29.<a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeServerProperties-boolean-"><code>setIncludeServerProperties(boolean)</code></a><br> + 30.<a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeStartScripts--"><code>getIncludeStartScripts()</code></a><br> + 31.<a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeStartScripts-boolean-"><code>setIncludeStartScripts(boolean)</code></a><br> + 32.<a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeZipCreation--"><code>getIncludeZipCreation()</code></a><br> + 33.<a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeZipCreation-boolean-"><code>setIncludeZipCreation(boolean)</code></a><br> + 34.<a href="../../../de/griefed/serverpackcreator/Configuration.html#getProjectID--"><code>getProjectID()</code></a><br> + 35.<a href="../../../de/griefed/serverpackcreator/Configuration.html#setProjectID-int-"><code>setProjectID(int)</code></a><br> + 36.<a href="../../../de/griefed/serverpackcreator/Configuration.html#getProjectFileID--"><code>getProjectFileID()</code></a><br> + 37.<a href="../../../de/griefed/serverpackcreator/Configuration.html#setProjectFileID-int-"><code>setProjectFileID(int)</code></a><br> + 38.<a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a><br> + 39.<a href="../../../de/griefed/serverpackcreator/Configuration.html#isDir-java.lang.String-"><code>isDir(String)</code></a><br> + 40.<a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a><br> + 41.<a href="../../../de/griefed/serverpackcreator/Configuration.html#containsFabric-de.griefed.serverpackcreator.curseforgemodpack.CurseModpack-"><code>containsFabric(CurseModpack)</code></a><br> + 42.<a href="../../../de/griefed/serverpackcreator/Configuration.html#suggestCopyDirs-java.lang.String-"><code>suggestCopyDirs(String)</code></a><br> + 43.<a href="../../../de/griefed/serverpackcreator/Configuration.html#checkCurseForge-java.lang.String-"><code>checkCurseForge(String)</code></a><br> + 44.<a href="../../../de/griefed/serverpackcreator/Configuration.html#convertToBoolean-java.lang.String-"><code>convertToBoolean(String)</code></a><br> + 45.<a href="../../../de/griefed/serverpackcreator/Configuration.html#printConfig-java.lang.String-java.util.List-java.util.List-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-"><code>printConfig(String, List, List, boolean, String, String, String, String, boolean, boolean, boolean, boolean)</code></a><br> + 46.<a href="../../../de/griefed/serverpackcreator/Configuration.html#checkModpackDir-java.lang.String-"><code>checkModpackDir(String)</code></a><br> + 47.<a href="../../../de/griefed/serverpackcreator/Configuration.html#checkCopyDirs-java.util.List-java.lang.String-"><code>checkCopyDirs(List, String)</code></a><br> + 48.<a href="../../../de/griefed/serverpackcreator/Configuration.html#getJavaPathFromSystem-java.lang.String-"><code>getJavaPathFromSystem(String)</code></a><br> + 49.<a href="../../../de/griefed/serverpackcreator/Configuration.html#checkJavaPath-java.lang.String-"><code>checkJavaPath(String)</code></a><br> + 50.<a href="../../../de/griefed/serverpackcreator/Configuration.html#checkModloader-java.lang.String-"><code>checkModloader(String)</code></a><br> + 51.<a href="../../../de/griefed/serverpackcreator/Configuration.html#setModLoaderCase-java.lang.String-"><code>setModLoaderCase(String)</code></a><br> + 52.<a href="../../../de/griefed/serverpackcreator/Configuration.html#checkModloaderVersion-java.lang.String-java.lang.String-"><code>checkModloaderVersion(String, String)</code></a><br> + 53.<a href="../../../de/griefed/serverpackcreator/Configuration.html#isMinecraftVersionCorrect-java.lang.String-"><code>isMinecraftVersionCorrect(String)</code></a><br> + 54.<a href="../../../de/griefed/serverpackcreator/Configuration.html#isFabricVersionCorrect-java.lang.String-"><code>isFabricVersionCorrect(String)</code></a><br> + 55.<a href="../../../de/griefed/serverpackcreator/Configuration.html#isForgeVersionCorrect-java.lang.String-"><code>isForgeVersionCorrect(String)</code></a><br> + 56.<a href="../../../de/griefed/serverpackcreator/Configuration.html#latestFabricLoader-java.lang.String-"><code>latestFabricLoader(String)</code></a><br> + 57.<a href="../../../de/griefed/serverpackcreator/Configuration.html#createConfigurationFile--"><code>createConfigurationFile()</code></a><br> + 58.<a href="../../../de/griefed/serverpackcreator/Configuration.html#readStringArray--"><code>readStringArray()</code></a><br> + 59.<a href="../../../de/griefed/serverpackcreator/Configuration.html#buildString-java.lang.String...-"><code>buildString(String...)</code></a><br> + 60.<a href="../../../de/griefed/serverpackcreator/Configuration.html#readBoolean--"><code>readBoolean()</code></a><br> + 61.<a href="../../../de/griefed/serverpackcreator/Configuration.html#writeConfigToFile-java.lang.String-java.lang.String-java.lang.String-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-java.io.File-boolean-"><code>writeConfigToFile(String, String, String, boolean, String, String, String, String, boolean, boolean, boolean, boolean, File, boolean)</code></a> + <p> + Requires an instance of <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseCreateModpack</code></a> in order to create a modpack from scratch should <a href="../../../de/griefed/serverpackcreator/Configuration.html#modpackDir"><code>modpackDir</code></a> + be a combination of a CurseForge projectID and fileID.<p> + Requires an instance of <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> for use of localization, but creates one if injected one is null.<p> + Loads a configuration from a serverpackcreator.conf-file in the same directory in which ServerPackCreator resides in.</div> </li> </ul> </div> @@ -148,53 +215,61 @@ extends java.lang.Object</pre> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#copyDirs">copyDirs</a></span></code> </td> </tr> <tr class="rowColor"> +<td class="colFirst"><code>private <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#curseCreateModpack">curseCreateModpack</a></span></code> </td> +</tr> +<tr class="altColor"> <td class="colFirst"><code>private java.util.List<java.lang.String></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#fallbackModsList">fallbackModsList</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private java.lang.Boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#includeServerIcon">includeServerIcon</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private java.lang.Boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#includeServerInstallation">includeServerInstallation</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private java.lang.Boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#includeServerProperties">includeServerProperties</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private java.lang.Boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#includeStartScripts">includeStartScripts</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private java.lang.Boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#includeZipCreation">includeZipCreation</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private java.lang.String</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#javaPath">javaPath</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#localizationManager">localizationManager</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private java.lang.String</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#minecraftVersion">minecraftVersion</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private java.lang.String</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#modLoader">modLoader</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private java.lang.String</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#modLoaderVersion">modLoaderVersion</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private java.lang.String</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#modpackDir">modpackDir</a></span></code> </td> </tr> +<tr class="altColor"> +<td class="colFirst"><code>private com.fasterxml.jackson.databind.ObjectMapper</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#objectMapper">objectMapper</a></span></code> </td> +</tr> <tr class="rowColor"> <td class="colFirst"><code>private java.io.File</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#oldConfigFile">oldConfigFile</a></span></code> </td> @@ -222,7 +297,11 @@ extends java.lang.Object</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#Configuration-de.griefed.serverpackcreator.i18n.LocalizationManager-">Configuration</a></span>(<a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#Configuration-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack-">Configuration</a></span>(<a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager, + <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a> injectedCurseCreateModpack)</code> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</td> </tr> </table> </li> @@ -242,198 +321,258 @@ extends java.lang.Object</pre> <tr id="i0" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#buildString-java.lang.String...-">buildString</a></span>(java.lang.String... args)</code> -<div class="block">Converts list of strings into concatenated string.</div> +<div class="block">Converts a sequence of Strings, for example from a list, into a concatenated String.</div> </td> </tr> <tr id="i1" class="rowColor"> <td class="colFirst"><code>boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-">checkConfigFile</a></span>(java.io.File configFile)</code> -<div class="block">Check the config file for configuration errors.</div> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-">checkConfigFile</a></span>(java.io.File configFile, + boolean shouldModpackBeCreated)</code> +<div class="block">Sets <a href="../../../de/griefed/serverpackcreator/Configuration.html#setConfig-com.typesafe.config.Config-"><code>setConfig(Config)</code></a> and calls checks for the provided configuration-file.</div> </td> </tr> <tr id="i2" class="altColor"> <td class="colFirst"><code>(package private) boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#checkCopyDirs-java.util.List-java.lang.String-">checkCopyDirs</a></span>(java.util.List<java.lang.String> copyDirs, java.lang.String modpackDir)</code> -<div class="block">Check whether the specified directories exist in the modpack directory.</div> +<div class="block">Checks whether the passed list of directories which are supposed to be in the modpack directory is empty and + prints a message to the console and serverpackcreator.log if it is.</div> </td> </tr> <tr id="i3" class="rowColor"> <td class="colFirst"><code>(package private) boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#checkCurseForge-java.lang.String-">checkCurseForge</a></span>(java.lang.String modpackDir)</code> -<div class="block">Checks whether the modpackDir contains a valid projectID,fileID combination.</div> +<div class="block">Checks whether the specified modpack directory contains a valid projectID,fileID combination.</div> </td> </tr> <tr id="i4" class="altColor"> <td class="colFirst"><code>(package private) boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#checkJavaPath-java.lang.String-">checkJavaPath</a></span>(java.lang.String pathToJava)</code> -<div class="block">Checks whether the correct path to the Java installation was set.</div> +<div class="block">Checks whether the passed String ends with <code>java.exe</code> or <code>java</code> and whether the files exist.</div> </td> </tr> <tr id="i5" class="rowColor"> <td class="colFirst"><code>(package private) boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#checkModloader-java.lang.String-">checkModloader</a></span>(java.lang.String modloader)</code> -<div class="block">Checks whether Forge or Fabric were specified as modloader.</div> +<div class="block">Checks whether either Forge or Fabric were specified as the modloader.</div> </td> </tr> <tr id="i6" class="altColor"> <td class="colFirst"><code>(package private) boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#checkModloaderVersion-java.lang.String-java.lang.String-">checkModloaderVersion</a></span>(java.lang.String modloader, java.lang.String modloaderVersion)</code> -<div class="block">Determine whether to check for correct Forge or correct Fabric modloader version.</div> +<div class="block">Depending on whether Forge or Fabric was specified as the modloader, this will call the corresponding version check + to verify that the user correctly set their modloader version.</div> </td> </tr> <tr id="i7" class="rowColor"> <td class="colFirst"><code>(package private) boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#checkModpackDir-java.lang.String-">checkModpackDir</a></span>(java.lang.String modpackDir)</code> -<div class="block">Check whether the specified modpack directory exists.</div> +<div class="block">Checks whether the passed String is empty and if it is empty, prints the corresponding message to the console and + serverpackcreator.log so the user knows what went wrong.</div> </td> </tr> <tr id="i8" class="altColor"> <td class="colFirst"><code>private boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#containsFabric-de.griefed.serverpackcreator.curseforgemodpack.CurseModpack-">containsFabric</a></span>(<a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a> modpack)</code> -<div class="block">Checks for the Jumploader mod in the project list of the modpack.</div> +<div class="block">Checks whether the projectID for the Jumploader mod is present in the list of mods required by the CurseForge modpack.</div> </td> </tr> <tr id="i9" class="rowColor"> <td class="colFirst"><code>boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#convertToBoolean-java.lang.String-">convertToBoolean</a></span>(java.lang.String stringBoolean)</code> -<div class="block">Converts various strings to booleans.</div> +<div class="block">Converts various strings to booleans, by using regex, to allow for more variations in input.</div> </td> </tr> <tr id="i10" class="altColor"> <td class="colFirst"><code>(package private) void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#createConfigurationFile--">createConfigurationFile</a></span>()</code> -<div class="block">Generate new configuration file from CLI input.</div> +<div class="block">Walk the user through the generation of a new ServerPackCreator configuration file by asking them for input, + step-by-step, regarding their modpack.</div> </td> </tr> <tr id="i11" class="rowColor"> <td class="colFirst"><code>(package private) java.util.List<java.lang.String></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getClientMods--">getClientMods</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getClientMods--">getClientMods</a></span>()</code> +<div class="block">Getter for a list of clientside-only mods to exclude from server pack.</div> +</td> </tr> <tr id="i12" class="altColor"> <td class="colFirst"><code>com.typesafe.config.Config</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getConfig--">getConfig</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getConfig--">getConfig</a></span>()</code> +<div class="block">Getter for a <code>Config</code> containing a parsed configuration-file.</div> +</td> </tr> <tr id="i13" class="rowColor"> <td class="colFirst"><code>java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getConfigFile--">getConfigFile</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getConfigFile--">getConfigFile</a></span>()</code> +<div class="block">Getter for serverpackcreator.conf.</div> +</td> </tr> <tr id="i14" class="altColor"> -<td class="colFirst"><code>(package private) java.util.List<java.lang.String></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getCopyDirs--">getCopyDirs</a></span>()</code> </td> +<td class="colFirst"><code>java.util.List<java.lang.String></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getCopyDirs--">getCopyDirs</a></span>()</code> +<div class="block">Getter for the list of directories in the modpack to copy to the server pack.</div> +</td> </tr> <tr id="i15" class="rowColor"> <td class="colFirst"><code>(package private) java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getFabricManifestUrl--">getFabricManifestUrl</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getFabricManifestUrl--">getFabricManifestUrl</a></span>()</code> +<div class="block">Getter for Fabric's version-manifest.</div> +</td> </tr> <tr id="i16" class="altColor"> <td class="colFirst"><code>(package private) java.util.List<java.lang.String></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getFallbackModsList--">getFallbackModsList</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getFallbackModsList--">getFallbackModsList</a></span>()</code> +<div class="block">Getter for the fallback clientside-only mods-list, in case no customized one is provided by the user.</div> +</td> </tr> <tr id="i17" class="rowColor"> <td class="colFirst"><code>(package private) java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getForgeManifestUrl--">getForgeManifestUrl</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getForgeManifestUrl--">getForgeManifestUrl</a></span>()</code> +<div class="block">Getter for Forge's version-manifest.</div> +</td> </tr> <tr id="i18" class="altColor"> <td class="colFirst"><code>(package private) boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeServerIcon--">getIncludeServerIcon</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeServerIcon--">getIncludeServerIcon</a></span>()</code> +<div class="block">Getter for whether the server-icon.png should be included in the server pack.</div> +</td> </tr> <tr id="i19" class="rowColor"> <td class="colFirst"><code>(package private) boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeServerInstallation--">getIncludeServerInstallation</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeServerInstallation--">getIncludeServerInstallation</a></span>()</code> +<div class="block">Getter for whether the modloader server installation should be included.</div> +</td> </tr> <tr id="i20" class="altColor"> <td class="colFirst"><code>(package private) boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeServerProperties--">getIncludeServerProperties</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeServerProperties--">getIncludeServerProperties</a></span>()</code> +<div class="block">Getter for whether the server.properties should be included in the server pack.</div> +</td> </tr> <tr id="i21" class="rowColor"> <td class="colFirst"><code>(package private) boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeStartScripts--">getIncludeStartScripts</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeStartScripts--">getIncludeStartScripts</a></span>()</code> +<div class="block">Getter for whether the start scripts should be included in the server pack.</div> +</td> </tr> <tr id="i22" class="altColor"> <td class="colFirst"><code>(package private) boolean</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeZipCreation--">getIncludeZipCreation</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeZipCreation--">getIncludeZipCreation</a></span>()</code> +<div class="block">Getter for whether a ZIP-archive of the server pack should be created.</div> +</td> </tr> <tr id="i23" class="rowColor"> <td class="colFirst"><code>(package private) java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getJavaPath--">getJavaPath</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getJavaPath--">getJavaPath</a></span>()</code> +<div class="block">Getter for the path to the Java executable/binary.</div> +</td> </tr> <tr id="i24" class="altColor"> <td class="colFirst"><code>(package private) java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getJavaPath-java.lang.String-">getJavaPath</a></span>(java.lang.String enteredPath)</code> -<div class="block">Automatically set Java path if none is specified</div> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getJavaPathFromSystem-java.lang.String-">getJavaPathFromSystem</a></span>(java.lang.String enteredPath)</code> +<div class="block">Checks the passed String whether it is empty, and if it is, automatically acquires the path to the users Java + installation and appends bin/java.exe or bin/java depending on whether the path to said installation starts with + Windows-typical C: prefix.</div> </td> </tr> <tr id="i25" class="rowColor"> <td class="colFirst"><code>(package private) java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getMinecraftManifestUrl--">getMinecraftManifestUrl</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getMinecraftManifestUrl--">getMinecraftManifestUrl</a></span>()</code> +<div class="block">Getter for Mojang's Minecraft version-manifest.</div> +</td> </tr> <tr id="i26" class="altColor"> <td class="colFirst"><code>(package private) java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getMinecraftVersion--">getMinecraftVersion</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getMinecraftVersion--">getMinecraftVersion</a></span>()</code> +<div class="block">Getter for the version of Minecraft used by the modpack.</div> +</td> </tr> <tr id="i27" class="rowColor"> <td class="colFirst"><code>(package private) java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getModLoader--">getModLoader</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getModLoader--">getModLoader</a></span>()</code> +<div class="block">Getter for the modloader used by the modpack.</div> +</td> </tr> <tr id="i28" class="altColor"> <td class="colFirst"><code>(package private) java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getModLoaderVersion--">getModLoaderVersion</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getModLoaderVersion--">getModLoaderVersion</a></span>()</code> +<div class="block">Getter for the version of the modloader used by the modpack.</div> +</td> </tr> <tr id="i29" class="rowColor"> -<td class="colFirst"><code>(package private) java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getModpackDir--">getModpackDir</a></span>()</code> </td> +<td class="colFirst"><code>java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getModpackDir--">getModpackDir</a></span>()</code> +<div class="block">Getter for the path to the modpack directory.</div> +</td> </tr> <tr id="i30" class="altColor"> -<td class="colFirst"><code>java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getOldConfigFile--">getOldConfigFile</a></span>()</code> </td> +<td class="colFirst"><code>com.fasterxml.jackson.databind.ObjectMapper</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getObjectMapper--">getObjectMapper</a></span>()</code> </td> </tr> <tr id="i31" class="rowColor"> -<td class="colFirst"><code>(package private) int</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getProjectFileID--">getProjectFileID</a></span>()</code> </td> +<td class="colFirst"><code>java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getOldConfigFile--">getOldConfigFile</a></span>()</code> +<div class="block">Getter for creator.conf.</div> +</td> </tr> <tr id="i32" class="altColor"> <td class="colFirst"><code>(package private) int</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getProjectID--">getProjectID</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getProjectFileID--">getProjectFileID</a></span>()</code> +<div class="block">Getter for the CurseForge file of a modpack, which will be created by <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a>.</div> +</td> </tr> <tr id="i33" class="rowColor"> +<td class="colFirst"><code>(package private) int</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#getProjectID--">getProjectID</a></span>()</code> +<div class="block">Getter for the CurseForge projectID of a modpack, which will be created by <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a>.</div> +</td> +</tr> +<tr id="i34" class="altColor"> <td class="colFirst"><code>private boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--">isCurse</a></span>()</code> -<div class="block">Checks whether the specified projectID,fileID combination is a valid CurseForge project and file and whether the resulting directory exists.</div> +<div class="block">If modpackDir in the configuration file is a CurseForge projectID,fileID combination, then the modpack is first + created from said combination, using <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a>, + before proceeding to checking the rest of the configuration.</div> </td> </tr> -<tr id="i34" class="altColor"> +<tr id="i35" class="rowColor"> <td class="colFirst"><code>private boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#isDir-java.lang.String-">isDir</a></span>(java.lang.String modpackDir)</code> -<div class="block">Checks whether the specified modpack exists.</div> +<div class="block">If the in the configuration specified modpack dir is an existing directory, checks are made for valid configuration + of: directories to copy to server pack,<br> + if includeServerInstallation is <code>true</code>) path to Java executable/binary, Minecraft version, modloader and modloader version.</div> </td> </tr> -<tr id="i35" class="rowColor"> +<tr id="i36" class="altColor"> <td class="colFirst"><code>(package private) boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#isFabricVersionCorrect-java.lang.String-">isFabricVersionCorrect</a></span>(java.lang.String fabricVersion)</code> -<div class="block">Check the specified Fabric version against Fabric's version manifest to validate the version.</div> +<div class="block">Checks whether the passed String is empty and if it is not. check the String against Fabric's version manifest + to validate the version.</div> </td> </tr> -<tr id="i36" class="altColor"> +<tr id="i37" class="rowColor"> <td class="colFirst"><code>(package private) boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#isForgeVersionCorrect-java.lang.String-">isForgeVersionCorrect</a></span>(java.lang.String forgeVersion)</code> -<div class="block">Checks Forge version for errors (basically for its availability in Forge manifest)</div> +<div class="block">Checks whether the passed String is empty and if it is not. check the String against Forge's version manifest + to validate the version.</div> </td> </tr> -<tr id="i37" class="rowColor"> +<tr id="i38" class="altColor"> <td class="colFirst"><code>(package private) boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#isMinecraftVersionCorrect-java.lang.String-">isMinecraftVersionCorrect</a></span>(java.lang.String minecraftVersion)</code> -<div class="block">Check the specified Minecraft version against Mojang's version manifest to validate the version.</div> +<div class="block">Checks whether the passed String is empty and if it is not. check the String against Mojang's version manifest + to validate the version.</div> </td> </tr> -<tr id="i38" class="altColor"> +<tr id="i39" class="rowColor"> <td class="colFirst"><code>private java.lang.String</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#latestFabricLoader-java.lang.String-">latestFabricLoader</a></span>(java.lang.String modpackDir)</code> -<div class="block">Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer.</div> +<div class="block">Returns the latest version for the Fabric-loader.</div> </td> </tr> -<tr id="i39" class="rowColor"> +<tr id="i40" class="altColor"> <td class="colFirst"><code>(package private) void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#printConfig-java.lang.String-java.util.List-java.util.List-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-">printConfig</a></span>(java.lang.String modpackDirectory, java.util.List<java.lang.String> clientsideMods, @@ -447,94 +586,124 @@ extends java.lang.Object</pre> boolean includeProperties, boolean includeScripts, boolean includeZip)</code> -<div class="block">Prints the configuration.</div> +<div class="block">Prints all passed fields to the console and serverpackcreator.log.</div> </td> </tr> -<tr id="i40" class="altColor"> +<tr id="i41" class="rowColor"> <td class="colFirst"><code>private boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#readBoolean--">readBoolean</a></span>()</code> -<div class="block">A helper method for config setup.</div> +<div class="block">A helper method for <a href="../../../de/griefed/serverpackcreator/Configuration.html#createConfigurationFile--"><code>createConfigurationFile()</code></a>.</div> </td> </tr> -<tr id="i41" class="rowColor"> +<tr id="i42" class="altColor"> <td class="colFirst"><code>private java.util.List<java.lang.String></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#readStringArray--">readStringArray</a></span>()</code> -<div class="block">A helper method for config setup.</div> +<div class="block">A helper method for <a href="../../../de/griefed/serverpackcreator/Configuration.html#createConfigurationFile--"><code>createConfigurationFile()</code></a>.</div> </td> </tr> -<tr id="i42" class="altColor"> -<td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setClientMods-java.util.List-">setClientMods</a></span>(java.util.List<java.lang.String> newClientMods)</code> </td> -</tr> <tr id="i43" class="rowColor"> -<td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setConfig-com.typesafe.config.Config-">setConfig</a></span>(com.typesafe.config.Config newConfig)</code> </td> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setClientMods-java.util.List-">setClientMods</a></span>(java.util.List<java.lang.String> newClientMods)</code> +<div class="block">Setter for the list of clientside-only mods to exclude from server pack.</div> +</td> </tr> <tr id="i44" class="altColor"> -<td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setCopyDirs-java.util.List-">setCopyDirs</a></span>(java.util.List<java.lang.String> newCopyDirs)</code> </td> +<td class="colFirst"><code>void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setConfig-com.typesafe.config.Config-">setConfig</a></span>(com.typesafe.config.Config newConfig)</code> +<div class="block">Setter for a <code>Config</code> containing a parsed configuration-file.</div> +</td> </tr> <tr id="i45" class="rowColor"> <td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeServerIcon-boolean-">setIncludeServerIcon</a></span>(boolean newIncludeServerIcon)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setCopyDirs-java.util.List-">setCopyDirs</a></span>(java.util.List<java.lang.String> newCopyDirs)</code> +<div class="block">Setter for the list of directories in the modpack to copy to the server pack.</div> +</td> </tr> <tr id="i46" class="altColor"> <td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeServerInstallation-boolean-">setIncludeServerInstallation</a></span>(boolean newIncludeServerInstallation)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeServerIcon-boolean-">setIncludeServerIcon</a></span>(boolean newIncludeServerIcon)</code> +<div class="block">Setter for whether the server-icon.png should be included in the server pack.</div> +</td> </tr> <tr id="i47" class="rowColor"> <td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeServerProperties-boolean-">setIncludeServerProperties</a></span>(boolean newIncludeServerProperties)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeServerInstallation-boolean-">setIncludeServerInstallation</a></span>(boolean newIncludeServerInstallation)</code> +<div class="block">Setter for whether the modloader server installation should be included.</div> +</td> </tr> <tr id="i48" class="altColor"> <td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeStartScripts-boolean-">setIncludeStartScripts</a></span>(boolean newIncludeStartScripts)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeServerProperties-boolean-">setIncludeServerProperties</a></span>(boolean newIncludeServerProperties)</code> +<div class="block">Setter for whether the server.properties should be included in the server pack.</div> +</td> </tr> <tr id="i49" class="rowColor"> <td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeZipCreation-boolean-">setIncludeZipCreation</a></span>(boolean newIncludeZipCreation)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeStartScripts-boolean-">setIncludeStartScripts</a></span>(boolean newIncludeStartScripts)</code> +<div class="block">Setter for whether the start scripts should be included in the server pack.</div> +</td> </tr> <tr id="i50" class="altColor"> <td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setJavaPath-java.lang.String-">setJavaPath</a></span>(java.lang.String newJavaPath)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeZipCreation-boolean-">setIncludeZipCreation</a></span>(boolean newIncludeZipCreation)</code> +<div class="block">Setter for whether a ZIP-archive of the server pack should be created.</div> +</td> </tr> <tr id="i51" class="rowColor"> <td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setMinecraftVersion-java.lang.String-">setMinecraftVersion</a></span>(java.lang.String newMinecraftVersion)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setJavaPath-java.lang.String-">setJavaPath</a></span>(java.lang.String newJavaPath)</code> +<div class="block">Setter for the path to the Java executable/binary.</div> +</td> </tr> <tr id="i52" class="altColor"> -<td class="colFirst"><code>(package private) java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setModloader-java.lang.String-">setModloader</a></span>(java.lang.String modloader)</code> -<div class="block">Standardize the specified modloader.</div> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setMinecraftVersion-java.lang.String-">setMinecraftVersion</a></span>(java.lang.String newMinecraftVersion)</code> +<div class="block">Setter for the Minecraft version used by the modpack.</div> </td> </tr> <tr id="i53" class="rowColor"> <td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setModLoader-java.lang.String-">setModLoader</a></span>(java.lang.String newModLoader)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setModLoader-java.lang.String-">setModLoader</a></span>(java.lang.String newModLoader)</code> +<div class="block">Setter for the modloader used by the modpack.</div> +</td> </tr> <tr id="i54" class="altColor"> -<td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setModLoaderVersion-java.lang.String-">setModLoaderVersion</a></span>(java.lang.String newModLoaderVersion)</code> </td> +<td class="colFirst"><code>(package private) java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setModLoaderCase-java.lang.String-">setModLoaderCase</a></span>(java.lang.String modloader)</code> +<div class="block">Ensures the modloader is normalized to first letter upper case and rest lower case.</div> +</td> </tr> <tr id="i55" class="rowColor"> <td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setModpackDir-java.lang.String-">setModpackDir</a></span>(java.lang.String newModpackDir)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setModLoaderVersion-java.lang.String-">setModLoaderVersion</a></span>(java.lang.String newModLoaderVersion)</code> +<div class="block">Setter for the version of the modloader used by the modpack.</div> +</td> </tr> <tr id="i56" class="altColor"> <td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setProjectFileID-int-">setProjectFileID</a></span>(int newProjectFileID)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setModpackDir-java.lang.String-">setModpackDir</a></span>(java.lang.String newModpackDir)</code> +<div class="block">Setter for the path to the modpack directory.</div> +</td> </tr> <tr id="i57" class="rowColor"> <td class="colFirst"><code>(package private) void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setProjectID-int-">setProjectID</a></span>(int newProjectID)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setProjectFileID-int-">setProjectFileID</a></span>(int newProjectFileID)</code> +<div class="block">Setter for the CurseForge file of a modpack, which will be created by <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a>.</div> +</td> </tr> <tr id="i58" class="altColor"> +<td class="colFirst"><code>(package private) void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#setProjectID-int-">setProjectID</a></span>(int newProjectID)</code> +<div class="block">Setter for the CurseForge projectID of a modpack, which will be created by <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a>.</div> +</td> +</tr> +<tr id="i59" class="rowColor"> <td class="colFirst"><code>private java.util.List<java.lang.String></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#suggestCopyDirs-java.lang.String-">suggestCopyDirs</a></span>(java.lang.String modpackDir)</code> <div class="block">Creates a list of suggested directories to include in server pack which is later on written to a new configuration file.</div> </td> </tr> -<tr id="i59" class="rowColor"> +<tr id="i60" class="altColor"> <td class="colFirst"><code>boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Configuration.html#writeConfigToFile-java.lang.String-java.lang.String-java.lang.String-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-java.io.File-boolean-">writeConfigToFile</a></span>(java.lang.String modpackDir, java.lang.String clientMods, @@ -584,31 +753,40 @@ extends java.lang.Object</pre> <pre>private static final org.apache.logging.log4j.Logger appLogger</pre> </li> </ul> -<a name="oldConfigFile"> +<a name="localizationManager"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> -<h4>oldConfigFile</h4> -<pre>private final java.io.File oldConfigFile</pre> +<h4>localizationManager</h4> +<pre>private <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> </li> </ul> -<a name="configFile"> +<a name="curseCreateModpack"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> -<h4>configFile</h4> -<pre>private final java.io.File configFile</pre> +<h4>curseCreateModpack</h4> +<pre>private <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a> curseCreateModpack</pre> </li> </ul> -<a name="localizationManager"> +<a name="oldConfigFile"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> -<h4>localizationManager</h4> -<pre>private <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +<h4>oldConfigFile</h4> +<pre>private final java.io.File oldConfigFile</pre> +</li> +</ul> +<a name="configFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>configFile</h4> +<pre>private final java.io.File configFile</pre> </li> </ul> <a name="fallbackModsList"> @@ -749,12 +927,21 @@ extends java.lang.Object</pre> <a name="config"> <!-- --> </a> -<ul class="blockListLast"> +<ul class="blockList"> <li class="blockList"> <h4>config</h4> <pre>private com.typesafe.config.Config config</pre> </li> </ul> +<a name="objectMapper"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>objectMapper</h4> +<pre>private com.fasterxml.jackson.databind.ObjectMapper objectMapper</pre> +</li> +</ul> </li> </ul> <!-- ========= CONSTRUCTOR DETAIL ======== --> @@ -763,13 +950,26 @@ extends java.lang.Object</pre> <!-- --> </a> <h3>Constructor Detail</h3> -<a name="Configuration-de.griefed.serverpackcreator.i18n.LocalizationManager-"> +<a name="Configuration-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack-"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>Configuration</h4> -<pre>public Configuration(<a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</pre> +<pre>public Configuration(<a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager, + <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a> injectedCurseCreateModpack)</pre> +<div class="block"><strong>Constructor</strong><p> + Used for Dependency Injection.<p> + Receives an instance of <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> or creates one if the received + one is null. Required for use of localization.<p> + Receives an instance of <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseCreateModpack</code></a> in case the modpack has to be created from a combination of + CurseForge projectID and fileID, from which to <em>then</em> create the server pack.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>injectedLocalizationManager</code> - Instance of <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> required for localized log messages.</dd> +<dd><code>injectedCurseCreateModpack</code> - Instance of <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseCreateModpack</code></a> in case the modpack has to be created from a combination of + CurseForge projectID and fileID, from which to <em>then</em> create the server pack.</dd> +</dl> </li> </ul> </li> @@ -780,6 +980,15 @@ extends java.lang.Object</pre> <!-- --> </a> <h3>Method Detail</h3> +<a name="getObjectMapper--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getObjectMapper</h4> +<pre>public com.fasterxml.jackson.databind.ObjectMapper getObjectMapper()</pre> +</li> +</ul> <a name="getOldConfigFile--"> <!-- --> </a> @@ -787,6 +996,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getOldConfigFile</h4> <pre>public java.io.File getOldConfigFile()</pre> +<div class="block">Getter for creator.conf.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>File. Returns the creator.conf-file for use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#writeConfigToFile-java.lang.String-java.lang.String-java.lang.String-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-java.io.File-boolean-"><code>writeConfigToFile(String, String, String, boolean, String, String, String, String, boolean, boolean, boolean, boolean, File, boolean)</code></a></dd> +</dl> </li> </ul> <a name="getConfigFile--"> @@ -796,6 +1010,14 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getConfigFile</h4> <pre>public java.io.File getConfigFile()</pre> +<div class="block">Getter for serverpackcreator.conf.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>File. Returns the serverpackcreator.conf-file for use in <br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a>,<br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#createConfigurationFile--"><code>createConfigurationFile()</code></a>,<br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#writeConfigToFile-java.lang.String-java.lang.String-java.lang.String-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-java.io.File-boolean-"><code>writeConfigToFile(String, String, String, boolean, String, String, String, String, boolean, boolean, boolean, boolean, File, boolean)</code></a></dd> +</dl> </li> </ul> <a name="getMinecraftManifestUrl--"> @@ -805,6 +1027,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getMinecraftManifestUrl</h4> <pre>java.lang.String getMinecraftManifestUrl()</pre> +<div class="block">Getter for Mojang's Minecraft version-manifest.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns the URL to the JSON-file for use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#isMinecraftVersionCorrect-java.lang.String-"><code>isMinecraftVersionCorrect(String)</code></a></dd> +</dl> </li> </ul> <a name="getForgeManifestUrl--"> @@ -814,6 +1041,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getForgeManifestUrl</h4> <pre>java.lang.String getForgeManifestUrl()</pre> +<div class="block">Getter for Forge's version-manifest.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns the URL to the JSON-file for use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#isForgeVersionCorrect-java.lang.String-"><code>isForgeVersionCorrect(String)</code></a></dd> +</dl> </li> </ul> <a name="getFabricManifestUrl--"> @@ -823,6 +1055,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getFabricManifestUrl</h4> <pre>java.lang.String getFabricManifestUrl()</pre> +<div class="block">Getter for Fabric's version-manifest.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns the URL to the JSON-file for use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#isFabricVersionCorrect-java.lang.String-"><code>isFabricVersionCorrect(String)</code></a></dd> +</dl> </li> </ul> <a name="getConfig--"> @@ -832,6 +1069,14 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getConfig</h4> <pre>public com.typesafe.config.Config getConfig()</pre> +<div class="block">Getter for a <code>Config</code> containing a parsed configuration-file.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Config. Returns parsed serverpackcreator.conf for use in<br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#isDir-java.lang.String-"><code>isDir(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></dd> +</dl> </li> </ul> <a name="setConfig-com.typesafe.config.Config-"> @@ -841,6 +1086,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setConfig</h4> <pre>public void setConfig(com.typesafe.config.Config newConfig)</pre> +<div class="block">Setter for a <code>Config</code> containing a parsed configuration-file. + For use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a></div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newConfig</code> - The new Typesafe Config to store.</dd> +</dl> </li> </ul> <a name="getFallbackModsList--"> @@ -850,6 +1101,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getFallbackModsList</h4> <pre>java.util.List<java.lang.String> getFallbackModsList()</pre> +<div class="block">Getter for the fallback clientside-only mods-list, in case no customized one is provided by the user.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>List String. Returns the fallback clientside-only mods-list for use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a></dd> +</dl> </li> </ul> <a name="getClientMods--"> @@ -859,6 +1115,13 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getClientMods</h4> <pre>java.util.List<java.lang.String> getClientMods()</pre> +<div class="block">Getter for a list of clientside-only mods to exclude from server pack.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>List String. Returns the list of clientside-only mods for use in<br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></dd> +</dl> </li> </ul> <a name="setClientMods-java.util.List-"> @@ -868,6 +1131,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setClientMods</h4> <pre>void setClientMods(java.util.List<java.lang.String> newClientMods)</pre> +<div class="block">Setter for the list of clientside-only mods to exclude from server pack. + For use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a></div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newClientMods</code> - The new list of clientside-only mods to store.</dd> +</dl> </li> </ul> <a name="getCopyDirs--"> @@ -876,7 +1145,14 @@ extends java.lang.Object</pre> <ul class="blockList"> <li class="blockList"> <h4>getCopyDirs</h4> -<pre>java.util.List<java.lang.String> getCopyDirs()</pre> +<pre>public java.util.List<java.lang.String> getCopyDirs()</pre> +<div class="block">Getter for the list of directories in the modpack to copy to the server pack.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>List String. Returns the list of directories to copy to the server pack for use in<br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></dd> +</dl> </li> </ul> <a name="setCopyDirs-java.util.List-"> @@ -886,6 +1162,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setCopyDirs</h4> <pre>void setCopyDirs(java.util.List<java.lang.String> newCopyDirs)</pre> +<div class="block">Setter for the list of directories in the modpack to copy to the server pack. + For use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#isDir-java.lang.String-"><code>isDir(String)</code></a> and <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newCopyDirs</code> - The new list of directories to include in server pack to store.</dd> +</dl> </li> </ul> <a name="getModpackDir--"> @@ -894,7 +1176,15 @@ extends java.lang.Object</pre> <ul class="blockList"> <li class="blockList"> <h4>getModpackDir</h4> -<pre>java.lang.String getModpackDir()</pre> +<pre>public java.lang.String getModpackDir()</pre> +<div class="block">Getter for the path to the modpack directory.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns the path to the modpack directory for use in<br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#isDir-java.lang.String-"><code>isDir(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></dd> +</dl> </li> </ul> <a name="setModpackDir-java.lang.String-"> @@ -904,6 +1194,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setModpackDir</h4> <pre>void setModpackDir(java.lang.String newModpackDir)</pre> +<div class="block">Setter for the path to the modpack directory. Replaces any occurrences of \ with /. + For use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#isDir-java.lang.String-"><code>isDir(String)</code></a> and <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newModpackDir</code> - The new modpack directory path to store.</dd> +</dl> </li> </ul> <a name="getJavaPath--"> @@ -913,6 +1209,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getJavaPath</h4> <pre>java.lang.String getJavaPath()</pre> +<div class="block">Getter for the path to the Java executable/binary.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns the path to the Java executable/binary for use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a> and <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></dd> +</dl> </li> </ul> <a name="setJavaPath-java.lang.String-"> @@ -922,6 +1223,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setJavaPath</h4> <pre>void setJavaPath(java.lang.String newJavaPath)</pre> +<div class="block">Setter for the path to the Java executable/binary. Replaces any occurrences of \ with /. + For use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#isDir-java.lang.String-"><code>isDir(String)</code></a> and <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newJavaPath</code> - The new Java path to store.</dd> +</dl> </li> </ul> <a name="getMinecraftVersion--"> @@ -931,6 +1238,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getMinecraftVersion</h4> <pre>java.lang.String getMinecraftVersion()</pre> +<div class="block">Getter for the version of Minecraft used by the modpack.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns the for use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a> and <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></dd> +</dl> </li> </ul> <a name="setMinecraftVersion-java.lang.String-"> @@ -940,6 +1252,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setMinecraftVersion</h4> <pre>void setMinecraftVersion(java.lang.String newMinecraftVersion)</pre> +<div class="block">Setter for the Minecraft version used by the modpack. + For use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#isDir-java.lang.String-"><code>isDir(String)</code></a> and <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newMinecraftVersion</code> - The new Minecraft version to store.</dd> +</dl> </li> </ul> <a name="getModLoader--"> @@ -949,6 +1267,14 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getModLoader</h4> <pre>java.lang.String getModLoader()</pre> +<div class="block">Getter for the modloader used by the modpack.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns the modloader used by the modpack for use in<br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#isDir-java.lang.String-"><code>isDir(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></dd> +</dl> </li> </ul> <a name="setModLoader-java.lang.String-"> @@ -958,6 +1284,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setModLoader</h4> <pre>void setModLoader(java.lang.String newModLoader)</pre> +<div class="block">Setter for the modloader used by the modpack. + For use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#isDir-java.lang.String-"><code>isDir(String)</code></a> and <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newModLoader</code> - The new modloader to store.</dd> +</dl> </li> </ul> <a name="getModLoaderVersion--"> @@ -967,6 +1299,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getModLoaderVersion</h4> <pre>java.lang.String getModLoaderVersion()</pre> +<div class="block">Getter for the version of the modloader used by the modpack.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns the version of the modloader used by the modpack for use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a> and <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></dd> +</dl> </li> </ul> <a name="setModLoaderVersion-java.lang.String-"> @@ -976,6 +1313,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setModLoaderVersion</h4> <pre>void setModLoaderVersion(java.lang.String newModLoaderVersion)</pre> +<div class="block">Setter for the version of the modloader used by the modpack. + For use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#isDir-java.lang.String-"><code>isDir(String)</code></a> and <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newModLoaderVersion</code> - The new modloader version to store.</dd> +</dl> </li> </ul> <a name="getIncludeServerInstallation--"> @@ -985,6 +1328,14 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getIncludeServerInstallation</h4> <pre>boolean getIncludeServerInstallation()</pre> +<div class="block">Getter for whether the modloader server installation should be included.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns whether the server installation should be included, for use in<br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#isDir-java.lang.String-"><code>isDir(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></dd> +</dl> </li> </ul> <a name="setIncludeServerInstallation-boolean-"> @@ -994,6 +1345,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setIncludeServerInstallation</h4> <pre>void setIncludeServerInstallation(boolean newIncludeServerInstallation)</pre> +<div class="block">Setter for whether the modloader server installation should be included. + For use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a></div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newIncludeServerInstallation</code> - The new boolean to store.</dd> +</dl> </li> </ul> <a name="getIncludeServerIcon--"> @@ -1003,6 +1360,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getIncludeServerIcon</h4> <pre>boolean getIncludeServerIcon()</pre> +<div class="block">Getter for whether the server-icon.png should be included in the server pack.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns whether the server-icon.png should be included in the server pack, for use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a> + and <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></dd> +</dl> </li> </ul> <a name="setIncludeServerIcon-boolean-"> @@ -1012,6 +1375,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setIncludeServerIcon</h4> <pre>void setIncludeServerIcon(boolean newIncludeServerIcon)</pre> +<div class="block">Setter for whether the server-icon.png should be included in the server pack. + For use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a></div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newIncludeServerIcon</code> - The new boolean to store.</dd> +</dl> </li> </ul> <a name="getIncludeServerProperties--"> @@ -1021,6 +1390,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getIncludeServerProperties</h4> <pre>boolean getIncludeServerProperties()</pre> +<div class="block">Getter for whether the server.properties should be included in the server pack.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns whether the server.properties should be included in the server pack, for use in + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a> and <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></dd> +</dl> </li> </ul> <a name="setIncludeServerProperties-boolean-"> @@ -1030,6 +1405,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setIncludeServerProperties</h4> <pre>void setIncludeServerProperties(boolean newIncludeServerProperties)</pre> +<div class="block">Setter for whether the server.properties should be included in the server pack. + For use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a></div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newIncludeServerProperties</code> - The new boolean to store.</dd> +</dl> </li> </ul> <a name="getIncludeStartScripts--"> @@ -1039,6 +1420,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getIncludeStartScripts</h4> <pre>boolean getIncludeStartScripts()</pre> +<div class="block">Getter for whether the start scripts should be included in the server pack.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns the whether the start scripts should be included in the server pack, for use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a> and <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></dd> +</dl> </li> </ul> <a name="setIncludeStartScripts-boolean-"> @@ -1048,6 +1434,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setIncludeStartScripts</h4> <pre>void setIncludeStartScripts(boolean newIncludeStartScripts)</pre> +<div class="block">Setter for whether the start scripts should be included in the server pack. + For use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a></div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newIncludeStartScripts</code> - The new boolean to store.</dd> +</dl> </li> </ul> <a name="getIncludeZipCreation--"> @@ -1057,6 +1449,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getIncludeZipCreation</h4> <pre>boolean getIncludeZipCreation()</pre> +<div class="block">Getter for whether a ZIP-archive of the server pack should be created.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Boolean. Returns whether a ZIP-archive of the server pack should be created, for use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a> and <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a></dd> +</dl> </li> </ul> <a name="setIncludeZipCreation-boolean-"> @@ -1066,6 +1463,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setIncludeZipCreation</h4> <pre>void setIncludeZipCreation(boolean newIncludeZipCreation)</pre> +<div class="block">Setter for whether a ZIP-archive of the server pack should be created. + For use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-"><code>checkConfigFile(File, boolean)</code></a></div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newIncludeZipCreation</code> - The new boolean to store.</dd> +</dl> </li> </ul> <a name="getProjectID--"> @@ -1075,6 +1478,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getProjectID</h4> <pre>int getProjectID()</pre> +<div class="block">Getter for the CurseForge projectID of a modpack, which will be created by <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a>.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Integer. Returns the CurseForge projectID of a modpack, for use in <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a> and <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkCurseForge-java.lang.String-"><code>checkCurseForge(String)</code></a></dd> +</dl> </li> </ul> <a name="setProjectID-int-"> @@ -1084,6 +1492,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setProjectID</h4> <pre>void setProjectID(int newProjectID)</pre> +<div class="block">Setter for the CurseForge projectID of a modpack, which will be created by <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a>. + For use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkCurseForge-java.lang.String-"><code>checkCurseForge(String)</code></a></div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newProjectID</code> - The new projectID to store.</dd> +</dl> </li> </ul> <a name="getProjectFileID--"> @@ -1093,6 +1507,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getProjectFileID</h4> <pre>int getProjectFileID()</pre> +<div class="block">Getter for the CurseForge file of a modpack, which will be created by <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a>.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Integer. Returns the CurseForge fileID of a modpack, for use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a> and <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkCurseForge-java.lang.String-"><code>checkCurseForge(String)</code></a></dd> +</dl> </li> </ul> <a name="setProjectFileID-int-"> @@ -1102,21 +1521,45 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setProjectFileID</h4> <pre>void setProjectFileID(int newProjectFileID)</pre> +<div class="block">Setter for the CurseForge file of a modpack, which will be created by <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a>. + For use in <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkCurseForge-java.lang.String-"><code>checkCurseForge(String)</code></a></div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newProjectFileID</code> - The new projectFileID to store.</dd> +</dl> </li> </ul> -<a name="checkConfigFile-java.io.File-"> +<a name="checkConfigFile-java.io.File-boolean-"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>checkConfigFile</h4> -<pre>public boolean checkConfigFile(java.io.File configFile)</pre> -<div class="block">Check the config file for configuration errors. If an error is found, the log file will tell the user where the error is, so they can fix their config.</div> +<pre>public boolean checkConfigFile(java.io.File configFile, + boolean shouldModpackBeCreated)</pre> +<div class="block">Sets <a href="../../../de/griefed/serverpackcreator/Configuration.html#setConfig-com.typesafe.config.Config-"><code>setConfig(Config)</code></a> and calls checks for the provided configuration-file. If any check returns <code>true</code> + then the server pack will not be created. In order to find out which check failed, the user has to check their + serverpackcreator.log in the logs directory. Calls<br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setConfig-com.typesafe.config.Config-"><code>setConfig(Config)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#getConfig--"><code>getConfig()</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setClientMods-java.util.List-"><code>setClientMods(List)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#getFallbackModsList--"><code>getFallbackModsList()</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeServerInstallation-boolean-"><code>setIncludeServerInstallation(boolean)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeServerIcon-boolean-"><code>setIncludeServerIcon(boolean)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeServerProperties-boolean-"><code>setIncludeServerProperties(boolean)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeStartScripts-boolean-"><code>setIncludeStartScripts(boolean)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setIncludeZipCreation-boolean-"><code>setIncludeZipCreation(boolean)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkModpackDir-java.lang.String-"><code>checkModpackDir(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkCurseForge-java.lang.String-"><code>checkCurseForge(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#isDir-java.lang.String-"><code>isDir(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#isCurse--"><code>isCurse()</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#printConfig-java.lang.String-java.util.List-java.util.List-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-"><code>printConfig(String, List, List, boolean, String, String, String, String, boolean, boolean, boolean, boolean)</code></a></div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>configFile</code> - The configuration file to check. Must be a valid configuration file for serverpackcreator to work.</dd> +<dd><code>configFile</code> - File. The configuration file to check. Must be a valid configuration file for serverpackcreator to work.</dd> +<dd><code>shouldModpackBeCreated</code> - Boolean. Whether the CurseForge modpack should be downloaded and created.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Return true if error is found in user's configuration. If an error is found, the application will exit in main.</dd> +<dd>Boolean. Returns <code>false</code> if all checks are passed.</dd> </dl> </li> </ul> @@ -1127,12 +1570,31 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>isDir</h4> <pre>private boolean isDir(java.lang.String modpackDir)</pre> -<div class="block">Checks whether the specified modpack exists. If it does, the config file is checked for errors. Should any error be found, it will return true so the configCheck method informs the user about an invalid configuration.</div> +<div class="block">If the in the configuration specified modpack dir is an existing directory, checks are made for valid configuration + of: directories to copy to server pack,<br> + if includeServerInstallation is <code>true</code>) path to Java executable/binary, Minecraft version, modloader and modloader version. + Calls<br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setModpackDir-java.lang.String-"><code>setModpackDir(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#getModpackDir--"><code>getModpackDir()</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkCopyDirs-java.util.List-java.lang.String-"><code>checkCopyDirs(List, String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setCopyDirs-java.util.List-"><code>setCopyDirs(List)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#getIncludeServerInstallation--"><code>getIncludeServerInstallation()</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkJavaPath-java.lang.String-"><code>checkJavaPath(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setJavaPath-java.lang.String-"><code>setJavaPath(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#getJavaPathFromSystem-java.lang.String-"><code>getJavaPathFromSystem(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#isMinecraftVersionCorrect-java.lang.String-"><code>isMinecraftVersionCorrect(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setMinecraftVersion-java.lang.String-"><code>setMinecraftVersion(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkModloader-java.lang.String-"><code>checkModloader(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setModLoader-java.lang.String-"><code>setModLoader(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setModLoaderCase-java.lang.String-"><code>setModLoaderCase(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkModloaderVersion-java.lang.String-java.lang.String-"><code>checkModloaderVersion(String, String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setModLoaderVersion-java.lang.String-"><code>setModLoaderVersion(String)</code></a><br></div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. Should an existing modpack be specified, all configurations are read from local file and the server pack is created, if config is correct.</dd> +<dd><code>modpackDir</code> - String. Should an existing modpack be specified, all configurations are read from the provided + configuration file and checks are made in this directory.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if an error is found during configuration check. False if the configuration is deemed valid.</dd> +<dd>Boolean. Returns true if an error is found during configuration check.</dd> </dl> </li> </ul> @@ -1143,10 +1605,30 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>isCurse</h4> <pre>private boolean isCurse()</pre> -<div class="block">Checks whether the specified projectID,fileID combination is a valid CurseForge project and file and whether the resulting directory exists. If the directory does not exist, make calls to other methods which create the modpack. Parses information gathered from the modpack to later replace the previous configuration file.</div> +<div class="block">If modpackDir in the configuration file is a CurseForge projectID,fileID combination, then the modpack is first + created from said combination, using <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a>, + before proceeding to checking the rest of the configuration. If everything passes and the modpack was created, + a new configuration file is created, replacing the one used to create the modpack in the first place, with the + modpackDir field pointing to the newly created modpack. Calls<br> + <code>CurseAPI</code> and various methods of it.<br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setModpackDir-java.lang.String-"><code>setModpackDir(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#getModpackDir--"><code>getModpackDir()</code></a><br> + <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseModpack</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#containsFabric-de.griefed.serverpackcreator.curseforgemodpack.CurseModpack-"><code>containsFabric(CurseModpack)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setModLoader-java.lang.String-"><code>setModLoader(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setModLoaderVersion-java.lang.String-"><code>setModLoaderVersion(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setModLoaderCase-java.lang.String-"><code>setModLoaderCase(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkJavaPath-java.lang.String-"><code>checkJavaPath(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setJavaPath-java.lang.String-"><code>setJavaPath(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#getJavaPathFromSystem-java.lang.String-"><code>getJavaPathFromSystem(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setCopyDirs-java.util.List-"><code>setCopyDirs(List)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#suggestCopyDirs-java.lang.String-"><code>suggestCopyDirs(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#writeConfigToFile-java.lang.String-java.lang.String-java.lang.String-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-java.io.File-boolean-"><code>writeConfigToFile(String, String, String, boolean, String, String, String, String, boolean, boolean, boolean, boolean, File, boolean)</code></a><br></div> <dl> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Currently always returns true so serverpackcreator does not go straight into server pack creation after the creation of the specified modpack. Gives the user the chance to check their config before actually creating the server pack.</dd> +<dd>Boolean. Returns false unless an error was encountered during either the acquisition of the CurseForge + project name and displayname, or when the creation of the modpack fails.</dd> </dl> </li> </ul> @@ -1157,12 +1639,14 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>containsFabric</h4> <pre>private boolean containsFabric(<a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a> modpack)</pre> -<div class="block">Checks for the Jumploader mod in the project list of the modpack. If Jumploader is found, the modloader in the configuration will be set to Fabric.</div> +<div class="block">Checks whether the projectID for the Jumploader mod is present in the list of mods required by the CurseForge modpack. + If Jumploader is found, the modloader for the new configuration-file will be set to Fabric.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpack</code> - Object. Contains information about our modpack. Used to get a list of all projects used in the modpack.</dd> +<dd><code>modpack</code> - CurseModpack. Contains information about the CurseForge modpack. Used to get a list of all projects + required by the modpack.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if Jumploader is found, false if not found.</dd> +<dd>Boolean. Returns true if Jumploader is found.</dd> </dl> </li> </ul> @@ -1173,12 +1657,16 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>suggestCopyDirs</h4> <pre>private java.util.List<java.lang.String> suggestCopyDirs(java.lang.String modpackDir)</pre> -<div class="block">Creates a list of suggested directories to include in server pack which is later on written to a new configuration file.</div> +<div class="block">Creates a list of suggested directories to include in server pack which is later on written to a new configuration file. + The list of directories to include in the server pack which is generated by this method excludes well know directories + which would not be needed by a server pack. If you have suggestions to this list, open an issue on + <a href=https://github.com/Griefed/ServerPackCreator/issues>GitHub</a></div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. The directory for which to gather a list of directories.</dd> +<dd><code>modpackDir</code> - String. The directory for which to gather a list of directories to copy to the server pack.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>List, String. Returns a list of directories inside the modpack, excluding well known client-side only directories which would not be needed by a server pack. If you have suggestions to this list, open an issue on https://github.com/Griefed/ServerPackCreator/issues</dd> +<dd>List, String. Returns a list of directories inside the modpack, excluding well known client-side only + directories.</dd> </dl> </li> </ul> @@ -1189,7 +1677,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>checkCurseForge</h4> <pre>boolean checkCurseForge(java.lang.String modpackDir)</pre> -<div class="block">Checks whether the modpackDir contains a valid projectID,fileID combination. ProjectIDs must be at least two digits long, fileIDs must be at least 5 digits long. Must be numbers separated by a ",".</div> +<div class="block">Checks whether the specified modpack directory contains a valid projectID,fileID combination. + ProjectIDs must be at least two digits long, fileIDs must be at least 5 digits long. + Must be numbers separated by a ",". If modpackDir successfully matched a projectID,fileID combination, CurseForge + is then checked for existence of said projectID and fileID. If the project can not be found or the file returns null + then false is returned and the check is considered failed.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> <dd><code>modpackDir</code> - String. The string which to check for a valid projectID,fileID combination.</dd> @@ -1205,7 +1697,23 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>convertToBoolean</h4> <pre>public boolean convertToBoolean(java.lang.String stringBoolean)</pre> -<div class="block">Converts various strings to booleans.</div> +<div class="block">Converts various strings to booleans, by using regex, to allow for more variations in input.<br> + <strong>Converted to <code>TRUE</code> are:<br></strong> + <code>[Tt]rue</code><br> + <code>1</code><br> + <code>[Yy]es</code><br> + <code>[Yy]</code><br> + Language Key <code>cli.input.true</code><br> + Language Key <code>cli.input.yes</code><br> + Language Key <code>cli.input.yes.short</code><br> + <strong>Converted to <code>FALSE</code> are:<br></strong> + <code>[Ff]alse</code><br> + <code>0</code><br> + <code>[Nn]o</code><br> + <code>[Nn]</code><br> + Language Key <code>cli.input.false</code><br> + Language Key <code>cli.input.no</code><br> + Language Key <code>cli.input.no.short</code><br></div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> <dd><code>stringBoolean</code> - String. The string which should be converted to boolean if it matches certain patterns.</dd> @@ -1232,21 +1740,25 @@ extends java.lang.Object</pre> boolean includeProperties, boolean includeScripts, boolean includeZip)</pre> -<div class="block">Prints the configuration.</div> +<div class="block">Prints all passed fields to the console and serverpackcreator.log. Used to show the user the configuration before + ServerPackCreator starts the generation of the server pack or, if checks failed, to show the user their last + configuration so they can more easily identify problems with said configuration.<br> + Should a user report an issue on GitHub and include their logs (which I hope they do....), this would also + help me help them. Logging is good. People should use more logging.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDirectory</code> - String. Path to modpack directory.</dd> -<dd><code>clientsideMods</code> - String List. List of clientside mods to delete from server pack.</dd> -<dd><code>copyDirectories</code> - String List. List of directories to copy to server pack.</dd> -<dd><code>installServer</code> - Boolean. Whether to install the modloader server.</dd> -<dd><code>javaInstallPath</code> - String. Path to Java installation needed to install modloader server.</dd> -<dd><code>minecraftVer</code> - String. Minecraft version the modpack uses.</dd> -<dd><code>modloader</code> - String. Modloader the modpack uses.</dd> -<dd><code>modloaderVersion</code> - String. Version of the modloader the modpack uses.</dd> +<dd><code>modpackDirectory</code> - String. The used modpackDir field either from a configuration file or from configuration setup.</dd> +<dd><code>clientsideMods</code> - String List. List of clientside-only mods to exclude from the server pack..</dd> +<dd><code>copyDirectories</code> - String List. List of directories in the modpack which are to be included in the server pack.</dd> +<dd><code>installServer</code> - Boolean. Whether to install the modloader server in the server pack.</dd> +<dd><code>javaInstallPath</code> - String. Path to the Java executable/binary needed for installing the modloader server in the server pack.</dd> +<dd><code>minecraftVer</code> - String. The Minecraft version the modpack uses.</dd> +<dd><code>modloader</code> - String. The modloader the modpack uses.</dd> +<dd><code>modloaderVersion</code> - String. The version of the modloader the modpack uses.</dd> <dd><code>includeIcon</code> - Boolean. Whether to include the server-icon.png in the server pack.</dd> <dd><code>includeProperties</code> - Boolean. Whether to include the server.properties in the server pack.</dd> -<dd><code>includeScripts</code> - Boolean. Whether to include start scripts for the specified modloader in the server pack.</dd> -<dd><code>includeZip</code> - Boolean. Whether to create a zip-archive of the server pack.</dd> +<dd><code>includeScripts</code> - Boolean. Whether to include the start scripts for the specified modloader in the server pack.</dd> +<dd><code>includeZip</code> - Boolean. Whether to create a zip-archive of the server pack, excluding the Minecraft server JAR according to Mojang's TOS and EULA.</dd> </dl> </li> </ul> @@ -1257,12 +1769,15 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>checkModpackDir</h4> <pre>boolean checkModpackDir(java.lang.String modpackDir)</pre> -<div class="block">Check whether the specified modpack directory exists.</div> +<div class="block">Checks whether the passed String is empty and if it is empty, prints the corresponding message to the console and + serverpackcreator.log so the user knows what went wrong.<br> + Checks whether the passed String is a directory and if it is not, prints the corresponding message to the console + and serverpackcreator.log so the user knows what went wrong.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. The path to the modpack directory.</dd> +<dd><code>modpackDir</code> - String. The path to the modpack directory to check whether it is empty and whether it is a directory.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the directory exists. False if not.</dd> +<dd>Boolean. Returns true if the directory exists.</dd> </dl> </li> </ul> @@ -1274,29 +1789,37 @@ extends java.lang.Object</pre> <h4>checkCopyDirs</h4> <pre>boolean checkCopyDirs(java.util.List<java.lang.String> copyDirs, java.lang.String modpackDir)</pre> -<div class="block">Check whether the specified directories exist in the modpack directory.</div> +<div class="block">Checks whether the passed list of directories which are supposed to be in the modpack directory is empty and + prints a message to the console and serverpackcreator.log if it is.<br> + Checks whether all directories in the list exist in the modpack directory and prints a message to the console + and serverpackcreator.log if any one of the directories could not be found.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>copyDirs</code> - String. The directories for which to check.</dd> -<dd><code>modpackDir</code> - String. The path to the modpack directory in which to check for directories.</dd> +<dd><code>copyDirs</code> - List String. The list of directories to check for existence.</dd> +<dd><code>modpackDir</code> - String. The path to the modpack directory in which to check for existence of the passed list of + directories.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if all directories exist. False if any one does not.</dd> +<dd>Boolean. Returns true if every directory was found in the modpack directory. If any single one was not found, + false is returned.</dd> </dl> </li> </ul> -<a name="getJavaPath-java.lang.String-"> +<a name="getJavaPathFromSystem-java.lang.String-"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> -<h4>getJavaPath</h4> -<pre>java.lang.String getJavaPath(java.lang.String enteredPath)</pre> -<div class="block">Automatically set Java path if none is specified</div> +<h4>getJavaPathFromSystem</h4> +<pre>java.lang.String getJavaPathFromSystem(java.lang.String enteredPath)</pre> +<div class="block">Checks the passed String whether it is empty, and if it is, automatically acquires the path to the users Java + installation and appends bin/java.exe or bin/java depending on whether the path to said installation starts with + Windows-typical C: prefix.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> <dd><code>enteredPath</code> - String. The path to check whether it is empty.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>String. Return the entered Java path if it is not empty. Automatically determine path if empty.</dd> +<dd>String. Returns the passed String as is if it is not empty. Returns the automatically acquired path to the + Java executable/binary if the passed String was empty.</dd> </dl> </li> </ul> @@ -1307,12 +1830,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>checkJavaPath</h4> <pre>boolean checkJavaPath(java.lang.String pathToJava)</pre> -<div class="block">Checks whether the correct path to the Java installation was set.</div> +<div class="block">Checks whether the passed String ends with <code>java.exe</code> or <code>java</code> and whether the files exist.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>pathToJava</code> - String. The path to check for java.exe or java.</dd> +<dd><code>pathToJava</code> - String. The path to check for java.exe and java.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the path was correctly set. False if not.</dd> +<dd>Boolean. Returns true if the String ends with java.exe or java, and if either of these files exist.</dd> </dl> </li> </ul> @@ -1323,28 +1846,30 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>checkModloader</h4> <pre>boolean checkModloader(java.lang.String modloader)</pre> -<div class="block">Checks whether Forge or Fabric were specified as modloader.</div> +<div class="block">Checks whether either Forge or Fabric were specified as the modloader.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> <dd><code>modloader</code> - String. Check case insensitive for Forge or Fabric.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the specified modloader is either Forge or Fabric. False if not.</dd> +<dd>Boolean. Returns true if the specified modloader is either Forge or Fabric. False if neither.</dd> </dl> </li> </ul> -<a name="setModloader-java.lang.String-"> +<a name="setModLoaderCase-java.lang.String-"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> -<h4>setModloader</h4> -<pre>java.lang.String setModloader(java.lang.String modloader)</pre> -<div class="block">Standardize the specified modloader.</div> +<h4>setModLoaderCase</h4> +<pre>java.lang.String setModLoaderCase(java.lang.String modloader)</pre> +<div class="block">Ensures the modloader is normalized to first letter upper case and rest lower case. Basically allows the user to + input Forge or Fabric in any combination of upper- and lowercase and ServerPackCreator will still be able to + work with the users input.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modloader</code> - String. If any case of Forge or Fabric was specified, return "Forge" or "Fabric", so users can enter "forge" or "fabric" or any combination of upper- and lowercase letters..</dd> +<dd><code>modloader</code> - String. The String to check for case-insensitive cases of either Forge or Fabric.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>String. Returns a standardized String of the specified modloader.</dd> +<dd>String. Returns a normalized String of the specified modloader.</dd> </dl> </li> </ul> @@ -1356,13 +1881,18 @@ extends java.lang.Object</pre> <h4>checkModloaderVersion</h4> <pre>boolean checkModloaderVersion(java.lang.String modloader, java.lang.String modloaderVersion)</pre> -<div class="block">Determine whether to check for correct Forge or correct Fabric modloader version.</div> +<div class="block">Depending on whether Forge or Fabric was specified as the modloader, this will call the corresponding version check + to verify that the user correctly set their modloader version.<br> + If the user specified Forge as their modloader, <a href="../../../de/griefed/serverpackcreator/Configuration.html#isForgeVersionCorrect-java.lang.String-"><code>isForgeVersionCorrect(String)</code></a> is called and the version + the user specified is checked against Forge's version manifest..<br> + If the user specified Fabric as their modloader, <a href="../../../de/griefed/serverpackcreator/Configuration.html#isFabricVersionCorrect-java.lang.String-"><code>isFabricVersionCorrect(String)</code></a> is called and the version + the user specified is checked against Fabric's version manifest.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modloader</code> - String. Determines whether the check for Forge or Fabric is called.</dd> -<dd><code>modloaderVersion</code> - String. The version of the modloader to check for.</dd> +<dd><code>modloader</code> - String. The passed modloader which determines whether the check for Forge or Fabric is called.</dd> +<dd><code>modloaderVersion</code> - String. The version of the modloader which is checked against the corresponding modloaders manifest.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the specified modloader version is correct. False if not.</dd> +<dd>Boolean. Returns true if the specified modloader version was found in the corresponding manifest.</dd> </dl> </li> </ul> @@ -1373,12 +1903,13 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>isMinecraftVersionCorrect</h4> <pre>boolean isMinecraftVersionCorrect(java.lang.String minecraftVersion)</pre> -<div class="block">Check the specified Minecraft version against Mojang's version manifest to validate the version.</div> +<div class="block">Checks whether the passed String is empty and if it is not. check the String against Mojang's version manifest + to validate the version.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>minecraftVersion</code> - Minecraft version to check.</dd> +<dd><code>minecraftVersion</code> - String. The version to check for in Mojang's version manifest.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the specified Minecraft version could be found in Mojang's manifest. False if not.</dd> +<dd>Boolean. Returns true if the specified Minecraft version could be found in Mojang's manifest.</dd> </dl> </li> </ul> @@ -1389,12 +1920,13 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>isFabricVersionCorrect</h4> <pre>boolean isFabricVersionCorrect(java.lang.String fabricVersion)</pre> -<div class="block">Check the specified Fabric version against Fabric's version manifest to validate the version.</div> +<div class="block">Checks whether the passed String is empty and if it is not. check the String against Fabric's version manifest + to validate the version.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>fabricVersion</code> - String. The Fabric version to check.</dd> +<dd><code>fabricVersion</code> - String. The version to check for in Fabric's version manifest.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the specified Fabric version could be found in Fabric's manifest. False if not.</dd> +<dd>Boolean. Returns true if the specified fabric version could be found in Fabric's manifest.</dd> </dl> </li> </ul> @@ -1405,12 +1937,13 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>isForgeVersionCorrect</h4> <pre>boolean isForgeVersionCorrect(java.lang.String forgeVersion)</pre> -<div class="block">Checks Forge version for errors (basically for its availability in Forge manifest)</div> +<div class="block">Checks whether the passed String is empty and if it is not. check the String against Forge's version manifest + to validate the version.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>forgeVersion</code> - String. The Forge version to check.</dd> +<dd><code>forgeVersion</code> - String. The version to check for in Forge's version manifest.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if Forge version correct and false if it isn't correct.</dd> +<dd>Boolean. Returns true if the specified Forge version could be found in Forge's manifest.</dd> </dl> </li> </ul> @@ -1421,10 +1954,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>latestFabricLoader</h4> <pre>private java.lang.String latestFabricLoader(java.lang.String modpackDir)</pre> -<div class="block">Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer.</div> +<div class="block">Returns the latest version for the Fabric-loader. If Fabric's version manifest should be unreachable for whatever + reason, version 0.11.3 is returned by default.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack The directory where the Fabric installer will be placed in.</dd> +<dd><code>modpackDir</code> - String. The Fabric-loader manifest will be stored inside the server_pack directory inside the modpack + directory.</dd> <dt><span class="returnLabel">Returns:</span></dt> <dd>Boolean. Returns true if the download was successful. False if not.</dd> </dl> @@ -1437,7 +1972,30 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>createConfigurationFile</h4> <pre>void createConfigurationFile()</pre> -<div class="block">Generate new configuration file from CLI input. Prompts user to enter config file values and then generates a config file with values entered by user.</div> +<div class="block">Walk the user through the generation of a new ServerPackCreator configuration file by asking them for input, + step-by-step, regarding their modpack. At the end of this method a fully configured serverpackcreator.conf file + is saved and any previously existing configuration file replaced by the new one.<br> + After every input, said input is displayed to the user and they're asked whether they are satisfied with said + input. The user can then decide whether they would like to restart the entry of the field they just configured, + or agree and move to the next one.<br> + At the end of this method, the user will have a newly configured and created configuration file for ServerPackCreator.<br> + <br> + Most user-input is checked after entry to ensure the configuration is already in working-condition after completion + of this method.<br> + Calls<br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkModpackDir-java.lang.String-"><code>checkModpackDir(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#readBoolean--"><code>readBoolean()</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#getFallbackModsList--"><code>getFallbackModsList()</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#readStringArray--"><code>readStringArray()</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkCopyDirs-java.util.List-java.lang.String-"><code>checkCopyDirs(List, String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#isMinecraftVersionCorrect-java.lang.String-"><code>isMinecraftVersionCorrect(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkModloader-java.lang.String-"><code>checkModloader(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#setModLoaderCase-java.lang.String-"><code>setModLoaderCase(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkModloaderVersion-java.lang.String-java.lang.String-"><code>checkModloaderVersion(String, String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#getJavaPathFromSystem-java.lang.String-"><code>getJavaPathFromSystem(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#checkJavaPath-java.lang.String-"><code>checkJavaPath(String)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#printConfig-java.lang.String-java.util.List-java.util.List-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-"><code>printConfig(String, List, List, boolean, String, String, String, String, boolean, boolean, boolean, boolean)</code></a><br> + <a href="../../../de/griefed/serverpackcreator/Configuration.html#writeConfigToFile-java.lang.String-java.lang.String-java.lang.String-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-java.io.File-boolean-"><code>writeConfigToFile(String, String, String, boolean, String, String, String, String, boolean, boolean, boolean, boolean, File, boolean)</code></a></div> </li> </ul> <a name="readStringArray--"> @@ -1447,10 +2005,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>readStringArray</h4> <pre>private java.util.List<java.lang.String> readStringArray()</pre> -<div class="block">A helper method for config setup. Prompts user to enter the values that will be stored in arrays in config.</div> +<div class="block">A helper method for <a href="../../../de/griefed/serverpackcreator/Configuration.html#createConfigurationFile--"><code>createConfigurationFile()</code></a>. Prompts the user to enter the values which will make up + a String List in the new configuration file. If the user enters an empty line, the method is exited and the + String List returned.</div> <dl> <dt><span class="returnLabel">Returns:</span></dt> -<dd>String List. Returns list with user input values that will be stored in config.</dd> +<dd>String List. Returns the list of values entered by the user.</dd> </dl> </li> </ul> @@ -1461,7 +2021,7 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>buildString</h4> <pre>public java.lang.String buildString(java.lang.String... args)</pre> -<div class="block">Converts list of strings into concatenated string.</div> +<div class="block">Converts a sequence of Strings, for example from a list, into a concatenated String.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> <dd><code>args</code> - Strings that will be concatenated into one string</dd> @@ -1477,10 +2037,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>readBoolean</h4> <pre>private boolean readBoolean()</pre> -<div class="block">A helper method for config setup. Prompts user to enter boolean values that will be stored in config and checks entered values to prevent storing non-boolean values in boolean variables.</div> +<div class="block">A helper method for <a href="../../../de/griefed/serverpackcreator/Configuration.html#createConfigurationFile--"><code>createConfigurationFile()</code></a>. Prompts the user to enter values which will then be + converted to booleans, either <code>TRUE</code> or <code>FALSE</code>. This prevents any non-boolean values + from being written to the new configuration file.</div> <dl> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Converts to boolean and returns value entered by user that will be stored in config.</dd> +<dd>Boolean. True or False, depending on user input.</dd> </dl> </li> </ul> @@ -1504,22 +2066,23 @@ extends java.lang.Object</pre> boolean includeZip, java.io.File fileName, boolean isTemporary)</pre> -<div class="block">Writes a new configuration file with the parameters passed to it.</div> +<div class="block">Writes a new configuration file with the parameters passed to it.<br> + Calls <a href="../../../de/griefed/serverpackcreator/Configuration.html#getConfigFile--"><code>getConfigFile()</code></a><br></div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> <dd><code>modpackDir</code> - String. The path to the modpack.</dd> <dd><code>clientMods</code> - List, String. List of clientside-only mods.</dd> <dd><code>copyDirs</code> - List, String. List of directories to include in server pack.</dd> -<dd><code>includeServer</code> - Boolean. Whether to include a modloader server installation.</dd> -<dd><code>javaPath</code> - String. Path to the java executable.</dd> +<dd><code>includeServer</code> - Boolean. Whether the modloader server software should be installed.</dd> +<dd><code>javaPath</code> - String. Path to the java executable/binary.</dd> <dd><code>minecraftVersion</code> - String. Minecraft version used by the modpack and server pack.</dd> <dd><code>modLoader</code> - String. Modloader used by the modpack and server pack. Ether Forge or Fabric.</dd> <dd><code>modLoaderVersion</code> - String. Modloader version used by the modpack and server pack.</dd> <dd><code>includeIcon</code> - Boolean. Whether to include a server-icon in the server pack.</dd> <dd><code>includeProperties</code> - Boolean. Whether to include a properties file in the server pack.</dd> <dd><code>includeScripts</code> - Boolean. Whether to include start scripts in the server pack.</dd> -<dd><code>includeZip</code> - Boolean. Whether to create a ZIP-archive of the server pack, excluding Mojang's Minecraft server jar.</dd> -<dd><code>fileName</code> - The name under which to write the new file.</dd> +<dd><code>includeZip</code> - Boolean. Whether to create a ZIP-archive of the server pack, excluding Mojang's Minecraft server JAR.</dd> +<dd><code>fileName</code> - The name under which to write the new configuration file.</dd> <dd><code>isTemporary</code> - Decides whether to delete existing config-file. If isTemporary is false, existing config files will be deleted before writing the new file.</dd> <dt><span class="returnLabel">Returns:</span></dt> <dd>Boolean. Returns true if the configuration file has been successfully written and old ones replaced.</dd> diff --git a/docs/de/griefed/serverpackcreator/CreateServerPack.html b/docs/de/griefed/serverpackcreator/CreateServerPack.html index 51d6a84c0..27f25a256 100644 --- a/docs/de/griefed/serverpackcreator/CreateServerPack.html +++ b/docs/de/griefed/serverpackcreator/CreateServerPack.html @@ -109,6 +109,43 @@ var activeTableTab = "activeTableTab"; <br> <pre>public class <span class="typeNameLabel">CreateServerPack</span> extends java.lang.Object</pre> +<div class="block"><strong>Table of methods</strong><p> + 1. <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#CreateServerPack-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack-"><code>CreateServerPack(LocalizationManager, Configuration, CurseCreateModpack)</code></a><br> + 2. <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getPropertiesFile--"><code>getPropertiesFile()</code></a><br> + 3. <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getIconFile--"><code>getIconFile()</code></a><br> + 4. <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getForgeWindowsFile--"><code>getForgeWindowsFile()</code></a><br> + 5. <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getForgeLinuxFile--"><code>getForgeLinuxFile()</code></a><br> + 6. <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getFabricWindowsFile--"><code>getFabricWindowsFile()</code></a><br> + 7. <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getFabricLinuxFile--"><code>getFabricLinuxFile()</code></a><br> + 8. <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#run--"><code>run()</code></a><br> + 9. <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#cleanupEnvironment-java.lang.String-"><code>cleanupEnvironment(String)</code></a><br> + 10.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyStartScripts-java.lang.String-java.lang.String-boolean-"><code>copyStartScripts(String, String, boolean)</code></a><br> + 11.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyFiles-java.lang.String-java.util.List-java.util.List-"><code>copyFiles(String, List, List)</code></a><br> + 12.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#excludeClientMods-java.lang.String-java.util.List-"><code>excludeClientMods(String, List)</code></a><br> + 13.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyIcon-java.lang.String-"><code>copyIcon(String)</code></a><br> + 14.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyProperties-java.lang.String-"><code>copyProperties(String)</code></a><br> + 15.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#installServer-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-"><code>installServer(String, String, String, String, String)</code></a><br> + 16.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#zipBuilder-java.lang.String-java.lang.String-java.lang.Boolean-java.lang.String-"><code>zipBuilder(String, String, Boolean, String)</code></a><br> + 17.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#generateDownloadScripts-java.lang.String-java.lang.String-java.lang.String-"><code>generateDownloadScripts(String, String, String)</code></a><br> + 18.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#fabricShell-java.lang.String-java.lang.String-"><code>fabricShell(String, String)</code></a><br> + 19.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#fabricBatch-java.lang.String-java.lang.String-"><code>fabricBatch(String, String)</code></a><br> + 20.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#forgeShell-java.lang.String-java.lang.String-"><code>forgeShell(String, String)</code></a><br> + 21.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#forgeBatch-java.lang.String-java.lang.String-"><code>forgeBatch(String, String)</code></a><br> + 22.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#downloadFabricJar-java.lang.String-"><code>downloadFabricJar(String)</code></a><br> + 23.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#latestFabricInstaller-java.lang.String-"><code>latestFabricInstaller(String)</code></a><br> + 24.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#downloadForgeJar-java.lang.String-java.lang.String-java.lang.String-"><code>downloadForgeJar(String, String, String)</code></a><br> + 25.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#deleteMinecraftJar-java.lang.String-java.lang.String-java.lang.String-"><code>deleteMinecraftJar(String, String, String)</code></a><br> + 26.<a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#cleanUpServerPack-java.io.File-java.io.File-java.lang.String-java.lang.String-java.lang.String-java.lang.String-"><code>cleanUpServerPack(File, File, String, String, String, String)</code></a> + <p> + Requires an instance of <a href="../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator"><code>Configuration</code></a> from which to get all required information about the modpack and the + then to be generated server pack. + <p> + Requires an instance of <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> for use of localization, but creates one if injected one is null. + <p> + Create a server pack from a modpack by copying all specified or required files from the modpack to the server pack + as well as installing the modloader server for the specified modloader, modloader version and Minecraft version. + Create a ZIP-archive of the server pack, excluding the Minecraft server JAR, for immediate upload to CurseForge or + other platforms.</div> </li> </ul> </div> @@ -136,34 +173,38 @@ extends java.lang.Object</pre> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#configuration">configuration</a></span></code> </td> </tr> <tr class="altColor"> +<td class="colFirst"><code>private <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#curseCreateModpack">curseCreateModpack</a></span></code> </td> +</tr> +<tr class="rowColor"> <td class="colFirst"><code>private java.io.File</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#fabricLinuxFile">fabricLinuxFile</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private java.io.File</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#fabricWindowsFile">fabricWindowsFile</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private java.io.File</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#forgeLinuxFile">forgeLinuxFile</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private java.io.File</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#forgeWindowsFile">forgeWindowsFile</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private java.io.File</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#iconFile">iconFile</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#installerLogger">installerLogger</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#localizationManager">localizationManager</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private java.io.File</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#propertiesFile">propertiesFile</a></span></code> </td> </tr> @@ -182,8 +223,12 @@ extends java.lang.Object</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#CreateServerPack-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-">CreateServerPack</a></span>(<a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager, - <a href="../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfigCheck)</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#CreateServerPack-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack-">CreateServerPack</a></span>(<a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager, + <a href="../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfiguration, + <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a> injectedCurseCreateModpack)</code> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</td> </tr> </table> </li> @@ -203,7 +248,8 @@ extends java.lang.Object</pre> <tr id="i0" class="altColor"> <td class="colFirst"><code>(package private) void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#cleanupEnvironment-java.lang.String-">cleanupEnvironment</a></span>(java.lang.String modpackDir)</code> -<div class="block">Deletes files from previous runs of serverpackcreator.</div> +<div class="block">Deletes all files, directories and ZIP-archives of previously generated server packs to ensure newly generated + server pack is as clean as possible.</div> </td> </tr> <tr id="i1" class="rowColor"> @@ -214,7 +260,7 @@ extends java.lang.Object</pre> java.lang.String modpackDir, java.lang.String minecraftVersion, java.lang.String modLoaderVersion)</code> -<div class="block">Deletes remnant files from Fabric/Forge installation no longer needed.</div> +<div class="block">Cleans up the server_pack directory by deleting left-over files from modloader installations and version checking.</div> </td> </tr> <tr id="i2" class="altColor"> @@ -222,7 +268,8 @@ extends java.lang.Object</pre> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyFiles-java.lang.String-java.util.List-java.util.List-">copyFiles</a></span>(java.lang.String modpackDir, java.util.List<java.lang.String> copyDirs, java.util.List<java.lang.String> clientMods)</code> -<div class="block">Copies all specified folders and their files to the modpackDir.</div> +<div class="block">Copies all specified directories and mods, excluding clientside-only mods, from the modpack directory into the + server pack directory.</div> </td> </tr> <tr id="i3" class="rowColor"> @@ -242,7 +289,7 @@ extends java.lang.Object</pre> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyStartScripts-java.lang.String-java.lang.String-boolean-">copyStartScripts</a></span>(java.lang.String modpackDir, java.lang.String modLoader, boolean includeStartScripts)</code> -<div class="block">Copies start scripts for Forge modloader into the server_pack folder.</div> +<div class="block">Copies start scripts for the specified modloader into the server pack.</div> </td> </tr> <tr id="i6" class="altColor"> @@ -250,13 +297,13 @@ extends java.lang.Object</pre> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#deleteMinecraftJar-java.lang.String-java.lang.String-java.lang.String-">deleteMinecraftJar</a></span>(java.lang.String modLoader, java.lang.String modpackDir, java.lang.String minecraftVersion)</code> -<div class="block">Deletes Mojang's minecraft_server.jar from the zip-archive so users do not accidentally upload a file containing software from Mojang.</div> +<div class="block">Deletes the Minecraft server JAR from the ZIP-archive as per Mojang's TOS and EULA.</div> </td> </tr> <tr id="i7" class="rowColor"> <td class="colFirst"><code>(package private) boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#downloadFabricJar-java.lang.String-">downloadFabricJar</a></span>(java.lang.String modpackDir)</code> -<div class="block">Downloads the specified version of Fabric.</div> +<div class="block">Downloads the latest Fabric installer into the server pack.</div> </td> </tr> <tr id="i8" class="altColor"> @@ -264,42 +311,42 @@ extends java.lang.Object</pre> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#downloadForgeJar-java.lang.String-java.lang.String-java.lang.String-">downloadForgeJar</a></span>(java.lang.String minecraftVersion, java.lang.String modLoaderVersion, java.lang.String modpackDir)</code> -<div class="block">Downloads the specified version of the Forge installer to be used in ServerSetup.installServer.</div> +<div class="block">Downloads the modloader server installer for Forge, for the specified modloader version.</div> </td> </tr> <tr id="i9" class="rowColor"> <td class="colFirst"><code>(package private) java.util.List<java.lang.String></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#excludeClientMods-java.lang.String-java.util.List-">excludeClientMods</a></span>(java.lang.String modsDir, java.util.List<java.lang.String> clientMods)</code> -<div class="block">Generate a list of all mods in a modpack EXCEPT clientside-only mods.</div> +<div class="block">Generates a list of all mods to include in the server pack excluding clientside-only mods.</div> </td> </tr> <tr id="i10" class="altColor"> <td class="colFirst"><code>(package private) void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#fabricBatch-java.lang.String-java.lang.String-">fabricBatch</a></span>(java.lang.String modpackDir, java.lang.String minecraftVersion)</code> -<div class="block">Generates download scripts for Mojang's Minecraft server for Fabric,Windows.</div> +<div class="block">Generates Fabric Windows-Batch download scripts for Mojang's Minecraft server JAR for the specified Minecraft version.</div> </td> </tr> <tr id="i11" class="rowColor"> <td class="colFirst"><code>(package private) void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#fabricShell-java.lang.String-java.lang.String-">fabricShell</a></span>(java.lang.String modpackDir, java.lang.String minecraftVersion)</code> -<div class="block">Generates download scripts for Mojang's Minecraft server for Fabric,Linux.</div> +<div class="block">Generates Fabric Linux-shell download scripts for Mojang's Minecraft server JAR for the specified Minecraft version.</div> </td> </tr> <tr id="i12" class="altColor"> <td class="colFirst"><code>(package private) void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#forgeBatch-java.lang.String-java.lang.String-">forgeBatch</a></span>(java.lang.String modpackDir, java.lang.String minecraftVersion)</code> -<div class="block">Generates download scripts for Mojang's Minecraft server for Forge,Windows.</div> +<div class="block">Generates Forge Windows-Batch download scripts for Mojang's Minecraft server JAR for the specified Minecraft version.</div> </td> </tr> <tr id="i13" class="rowColor"> <td class="colFirst"><code>(package private) void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#forgeShell-java.lang.String-java.lang.String-">forgeShell</a></span>(java.lang.String modpackDir, java.lang.String minecraftVersion)</code> -<div class="block">Generates download scripts for Mojang's Minecraft server for Forge,Linux.</div> +<div class="block">Generates Forge Linux-shell download scripts for Mojang's Minecraft server JAR for the specified Minecraft version.</div> </td> </tr> <tr id="i14" class="altColor"> @@ -307,32 +354,45 @@ extends java.lang.Object</pre> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#generateDownloadScripts-java.lang.String-java.lang.String-java.lang.String-">generateDownloadScripts</a></span>(java.lang.String modLoader, java.lang.String modpackDir, java.lang.String minecraftVersion)</code> -<div class="block">Calls methods for generating download scripts for Mojang's Minecraft server depending on the specified versions and modloader.</div> +<div class="block">Depending on the specified modloader and Minecraft version, this method makes calls to generate the corresponding + download scripts for the Minecraft server JAR.</div> </td> </tr> <tr id="i15" class="rowColor"> <td class="colFirst"><code>java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getFabricLinuxFile--">getFabricLinuxFile</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getFabricLinuxFile--">getFabricLinuxFile</a></span>()</code> +<div class="block">Getter for start-fabric.sh.</div> +</td> </tr> <tr id="i16" class="altColor"> <td class="colFirst"><code>java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getFabricWindowsFile--">getFabricWindowsFile</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getFabricWindowsFile--">getFabricWindowsFile</a></span>()</code> +<div class="block">Getter for start-fabric.bat.</div> +</td> </tr> <tr id="i17" class="rowColor"> <td class="colFirst"><code>java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getForgeLinuxFile--">getForgeLinuxFile</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getForgeLinuxFile--">getForgeLinuxFile</a></span>()</code> +<div class="block">Getter for start-forge.sh</div> +</td> </tr> <tr id="i18" class="altColor"> <td class="colFirst"><code>java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getForgeWindowsFile--">getForgeWindowsFile</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getForgeWindowsFile--">getForgeWindowsFile</a></span>()</code> +<div class="block">Getter for start-forge.bat.</div> +</td> </tr> <tr id="i19" class="rowColor"> <td class="colFirst"><code>java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getIconFile--">getIconFile</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getIconFile--">getIconFile</a></span>()</code> +<div class="block">Getter for server-icon.png</div> +</td> </tr> <tr id="i20" class="altColor"> <td class="colFirst"><code>java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getPropertiesFile--">getPropertiesFile</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#getPropertiesFile--">getPropertiesFile</a></span>()</code> +<div class="block">Getter for server.properties.</div> +</td> </tr> <tr id="i21" class="rowColor"> <td class="colFirst"><code>(package private) void</code></td> @@ -341,19 +401,19 @@ extends java.lang.Object</pre> java.lang.String minecraftVersion, java.lang.String modLoaderVersion, java.lang.String javaPath)</code> -<div class="block">Installs the files for a Forge/Fabric server.</div> +<div class="block">Installs the modloader server for the specified modloader, modloader version and Minecraft version.</div> </td> </tr> <tr id="i22" class="altColor"> <td class="colFirst"><code>(package private) java.lang.String</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#latestFabricInstaller-java.lang.String-">latestFabricInstaller</a></span>(java.lang.String modpackDir)</code> -<div class="block">Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer.</div> +<div class="block">Acquires the latest version of the Fabric modloader installer and returns it as a string.</div> </td> </tr> <tr id="i23" class="rowColor"> <td class="colFirst"><code>boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#run--">run</a></span>()</code> -<div class="block">Run when serverpackcreator is run in either -cli or -cgen mode.</div> +<div class="block">Create a server pack if the check of the configuration file was successfull.</div> </td> </tr> <tr id="i24" class="altColor"> @@ -362,7 +422,7 @@ extends java.lang.Object</pre> java.lang.String modLoader, java.lang.Boolean includeServerInstallation, java.lang.String minecraftVersion)</code> -<div class="block">Create a zip-archive of the serverpack, excluding Mojang's minecraft_server.jar.</div> +<div class="block">Creates a ZIP-archive of the server_pack directory and deletes the Minecraft server JAR afterwards.</div> </td> </tr> </table> @@ -414,6 +474,15 @@ extends java.lang.Object</pre> <pre>private <a href="../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> configuration</pre> </li> </ul> +<a name="curseCreateModpack"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>curseCreateModpack</h4> +<pre>private <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a> curseCreateModpack</pre> +</li> +</ul> <a name="localizationManager"> <!-- --> </a> @@ -485,14 +554,29 @@ extends java.lang.Object</pre> <!-- --> </a> <h3>Constructor Detail</h3> -<a name="CreateServerPack-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-"> +<a name="CreateServerPack-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack-"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>CreateServerPack</h4> <pre>public CreateServerPack(<a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager, - <a href="../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfigCheck)</pre> + <a href="../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfiguration, + <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a> injectedCurseCreateModpack)</pre> +<div class="block"><strong>Constructor</strong><p> + Used for Dependency Injection.<p> + Receives an instance of <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> or creates one if the received + one is null. Required for use of localization.<p> + Receives an instance of <a href="../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator"><code>Configuration</code></a> required to successfully and correctly create the server pack.<p> + Receives an instance of <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseCreateModpack</code></a> in case the modpack has to be created from a combination of + CurseForge projectID and fileID, from which to <em>then</em> create the server pack.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>injectedLocalizationManager</code> - Instance of <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> required for localized log messages.</dd> +<dd><code>injectedConfiguration</code> - Instance of <a href="../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator"><code>Configuration</code></a> required to successfully and correctly create the server pack.</dd> +<dd><code>injectedCurseCreateModpack</code> - Instance of <a href="../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseCreateModpack</code></a> in case the modpack has to be created from a combination of + CurseForge projectID and fileID, from which to <em>then</em> create the server pack.</dd> +</dl> </li> </ul> </li> @@ -510,6 +594,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getPropertiesFile</h4> <pre>public java.io.File getPropertiesFile()</pre> +<div class="block">Getter for server.properties.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Returns the server.properties-file for use in <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyProperties-java.lang.String-"><code>copyProperties(String)</code></a></dd> +</dl> </li> </ul> <a name="getIconFile--"> @@ -519,6 +608,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getIconFile</h4> <pre>public java.io.File getIconFile()</pre> +<div class="block">Getter for server-icon.png</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Returns the server-icon.png-file for use in <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyIcon-java.lang.String-"><code>copyIcon(String)</code></a></dd> +</dl> </li> </ul> <a name="getForgeWindowsFile--"> @@ -528,6 +622,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getForgeWindowsFile</h4> <pre>public java.io.File getForgeWindowsFile()</pre> +<div class="block">Getter for start-forge.bat.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Returns the start-forge.bat-file for use in <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyStartScripts-java.lang.String-java.lang.String-boolean-"><code>copyStartScripts(String, String, boolean)</code></a></dd> +</dl> </li> </ul> <a name="getForgeLinuxFile--"> @@ -537,6 +636,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getForgeLinuxFile</h4> <pre>public java.io.File getForgeLinuxFile()</pre> +<div class="block">Getter for start-forge.sh</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Returns the start-forge.sh-file for use in <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyStartScripts-java.lang.String-java.lang.String-boolean-"><code>copyStartScripts(String, String, boolean)</code></a></dd> +</dl> </li> </ul> <a name="getFabricWindowsFile--"> @@ -546,6 +650,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getFabricWindowsFile</h4> <pre>public java.io.File getFabricWindowsFile()</pre> +<div class="block">Getter for start-fabric.bat.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Returns the start-fabric.bat-file for use in <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyStartScripts-java.lang.String-java.lang.String-boolean-"><code>copyStartScripts(String, String, boolean)</code></a></dd> +</dl> </li> </ul> <a name="getFabricLinuxFile--"> @@ -555,6 +664,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getFabricLinuxFile</h4> <pre>public java.io.File getFabricLinuxFile()</pre> +<div class="block">Getter for start-fabric.sh.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Returns the start-fabric.sh-file for use in <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyStartScripts-java.lang.String-java.lang.String-boolean-"><code>copyStartScripts(String, String, boolean)</code></a></dd> +</dl> </li> </ul> <a name="run--"> @@ -564,10 +678,22 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>run</h4> <pre>public boolean run()</pre> -<div class="block">Run when serverpackcreator is run in either -cli or -cgen mode. Runs what used to be the main content in Main in pre-1.x.x. times. Inits config checks and, if config checks are successfull, calls methods to create the server pack.</div> +<div class="block">Create a server pack if the check of the configuration file was successfull.<p> + Calls<p> + <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#cleanupEnvironment-java.lang.String-"><code>cleanupEnvironment(String)</code></a> to delete any previously generated server packs or ZIP-archives thereof.<p> + <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyFiles-java.lang.String-java.util.List-java.util.List-"><code>copyFiles(String, List, List)</code></a> to copy all specified directories and mods, excluding clientside-only mods, + to the server pack.<p> + <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyStartScripts-java.lang.String-java.lang.String-boolean-"><code>copyStartScripts(String, String, boolean)</code></a> to copy the start scripts for the specified modloader to the + server pack.<p> + <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#installServer-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-"><code>installServer(String, String, String, String, String)</code></a> to install the server software for the specified + modloader, modloader version and Minecraft version in the server pack.<p> + <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyIcon-java.lang.String-"><code>copyIcon(String)</code></a> to copy the server-icon.png to the server pack.<p> + <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#copyProperties-java.lang.String-"><code>copyProperties(String)</code></a> to copy the server.properties to the server pack.<p> + <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#zipBuilder-java.lang.String-java.lang.String-java.lang.Boolean-java.lang.String-"><code>zipBuilder(String, String, Boolean, String)</code></a> to create a ZIP-archive of the server pack and delete the + Minecraft server JAR from it.</div> <dl> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Return true if the serverpack was successfully generated, false if not.</dd> +<dd>Boolean. Returns true if the server pack was successfully generated.</dd> </dl> </li> </ul> @@ -578,10 +704,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>cleanupEnvironment</h4> <pre>void cleanupEnvironment(java.lang.String modpackDir)</pre> -<div class="block">Deletes files from previous runs of serverpackcreator.</div> +<div class="block">Deletes all files, directories and ZIP-archives of previously generated server packs to ensure newly generated + server pack is as clean as possible.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. The directory in where to check for files from previous runs.</dd> +<dd><code>modpackDir</code> - String. The server_pack directory and ZIP-archive will be deleted inside the modpack directory.</dd> </dl> </li> </ul> @@ -594,12 +721,12 @@ extends java.lang.Object</pre> <pre>void copyStartScripts(java.lang.String modpackDir, java.lang.String modLoader, boolean includeStartScripts)</pre> -<div class="block">Copies start scripts for Forge modloader into the server_pack folder.</div> +<div class="block">Copies start scripts for the specified modloader into the server pack.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. Files will be copied into subfolder server_pack. Checks for valid modpackDir are in ConfigCheck.</dd> -<dd><code>modLoader</code> - String. Determines whether start scripts for Forge or Fabric are copied to modpackDir. Checks for valid modLoader are in ConfigCheck.</dd> -<dd><code>includeStartScripts</code> - Boolean. Whether to include start scripts in server_pack. Boolean.</dd> +<dd><code>modpackDir</code> - String. Start scripts are copied into the server_pack directory in the modpack directory.</dd> +<dd><code>modLoader</code> - String. Whether to copy the Forge or Fabric scripts into the server pack.</dd> +<dd><code>includeStartScripts</code> - Boolean. Whether to copy the start scripts into the server pack.</dd> </dl> </li> </ul> @@ -611,16 +738,16 @@ extends java.lang.Object</pre> <h4>copyFiles</h4> <pre>void copyFiles(java.lang.String modpackDir, java.util.List<java.lang.String> copyDirs, - java.util.List<java.lang.String> clientMods) - throws java.io.IOException</pre> -<div class="block">Copies all specified folders and their files to the modpackDir.</div> + java.util.List<java.lang.String> clientMods)</pre> +<div class="block">Copies all specified directories and mods, excluding clientside-only mods, from the modpack directory into the + server pack directory. + Calls <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#excludeClientMods-java.lang.String-java.util.List-"><code>excludeClientMods(String, List)</code></a> to generate a list of all mods to copy to server pack, excluding + clientside-only mods.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack. Directory where all directories listed in copyDirs will be copied into.</dd> -<dd><code>copyDirs</code> - String List. The folders and files within to copy.</dd> -<dd><code>clientMods</code> - String List. List of clientside-only mods NOT to copy to server pack.</dd> -<dt><span class="throwsLabel">Throws:</span></dt> -<dd><code>java.io.IOException</code> - Only print stacktrace if it does not start with java.nio.file.DirectoryNotEmptyException.</dd> +<dd><code>modpackDir</code> - String. Files and directories are copied into the server_pack directory inside the modpack directory.</dd> +<dd><code>copyDirs</code> - String List. All directories and files therein to copy to the server pack.</dd> +<dd><code>clientMods</code> - String List. List of clientside-only mods to exclude from the server pack.</dd> </dl> </li> </ul> @@ -632,13 +759,13 @@ extends java.lang.Object</pre> <h4>excludeClientMods</h4> <pre>java.util.List<java.lang.String> excludeClientMods(java.lang.String modsDir, java.util.List<java.lang.String> clientMods)</pre> -<div class="block">Generate a list of all mods in a modpack EXCEPT clientside-only mods. This list is then used by copyFiles.</div> +<div class="block">Generates a list of all mods to include in the server pack excluding clientside-only mods.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modsDir</code> - String. /mods The directory in which to generate a list of all available mods.</dd> -<dd><code>clientMods</code> - List String. A list of all clientside-only mods passed by copyFiles, which is then removed from the list generated in this method.</dd> +<dd><code>modsDir</code> - String. The mods directory of the modpack of which to generate a list of all it's contents.</dd> +<dd><code>clientMods</code> - List String. A list of all clientside-only mods.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>List String. A list of all mods inside the modpack excluding the specified clientside-only mods.</dd> +<dd>List String. A list of all mods to include in the server pack.</dd> </dl> </li> </ul> @@ -652,7 +779,7 @@ extends java.lang.Object</pre> <div class="block">Copies the server-icon.png into server_pack.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack. Directory where the server-icon.png will be copied to.</dd> +<dd><code>modpackDir</code> - String. The server-icon.png is copied into the server_pack directory inside the modpack directory.</dd> </dl> </li> </ul> @@ -666,7 +793,7 @@ extends java.lang.Object</pre> <div class="block">Copies the server.properties into server_pack.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack. Directory where the server.properties. will be copied to.</dd> +<dd><code>modpackDir</code> - String. The server.properties file is copied into the server_pack directory inside the modpack directory.</dd> </dl> </li> </ul> @@ -681,14 +808,22 @@ extends java.lang.Object</pre> java.lang.String minecraftVersion, java.lang.String modLoaderVersion, java.lang.String javaPath)</pre> -<div class="block">Installs the files for a Forge/Fabric server.</div> +<div class="block">Installs the modloader server for the specified modloader, modloader version and Minecraft version. + Calls<p> + <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#downloadFabricJar-java.lang.String-"><code>downloadFabricJar(String)</code></a> to download the Fabric installer into the server_pack directory.<p> + <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#downloadForgeJar-java.lang.String-java.lang.String-java.lang.String-"><code>downloadForgeJar(String, String, String)</code></a> to download the Forge installer for the specified Forge version + and Minecraft version.<p> + <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#generateDownloadScripts-java.lang.String-java.lang.String-java.lang.String-"><code>generateDownloadScripts(String, String, String)</code></a> to generate the download scripts of the Minecraft server JAR + for the specified Minecraft version and file-name depending on whether the modloader is Forge or Fabric.<p> + <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#cleanUpServerPack-java.io.File-java.io.File-java.lang.String-java.lang.String-java.lang.String-java.lang.String-"><code>cleanUpServerPack(File, File, String, String, String, String)</code></a> to delete no longer needed files generated + by the installation process of the modloader server software.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modLoader</code> - String. The modloader for which to install the server.</dd> -<dd><code>modpackDir</code> - String. /server_pack The directory where the modloader server will be installed in.</dd> +<dd><code>modLoader</code> - String. The modloader for which to install the server software. Either Forge or Fabric.</dd> +<dd><code>modpackDir</code> - String. The server software is installed into the server_pack directory inside the modpack directory.</dd> <dd><code>minecraftVersion</code> - String. The Minecraft version for which to install the modloader and Minecraft server.</dd> <dd><code>modLoaderVersion</code> - String. The modloader version for which to install the modloader and Minecraft server.</dd> -<dd><code>javaPath</code> - String. Path to Java installation needed to execute the Fabric and Forge installers.</dd> +<dd><code>javaPath</code> - String. The path to the Java executable/binary which is needed to execute the Forge/Fabric installers.</dd> </dl> </li> </ul> @@ -702,14 +837,17 @@ extends java.lang.Object</pre> java.lang.String modLoader, java.lang.Boolean includeServerInstallation, java.lang.String minecraftVersion)</pre> -<div class="block">Create a zip-archive of the serverpack, excluding Mojang's minecraft_server.jar. - With help from https://stackoverflow.com/questions/1091788/how-to-create-a-zip-file-in-java</div> +<div class="block">Creates a ZIP-archive of the server_pack directory and deletes the Minecraft server JAR afterwards.<p> + With help from <a href="https://stackoverflow.com/questions/1091788/how-to-create-a-zip-file-in-java">Stackoverflow</a><p> + Calls<p> + <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#deleteMinecraftJar-java.lang.String-java.lang.String-java.lang.String-"><code>deleteMinecraftJar(String, String, String)</code></a> to delete the Minecraft server JAR from the ZIP-archive, + depending on which modloader and Minecraft version is specified.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. The directory where the zip-archive will be created and saved in.</dd> -<dd><code>modLoader</code> - String. Determines the name of Minecraft#s server jar which will be deleted from the zip-archive.</dd> -<dd><code>includeServerInstallation</code> - Boolean. Determines whether the Minecraft server jar needs to be deleted from the zip-archive.</dd> -<dd><code>minecraftVersion</code> - String. The Minecraft version of which to delete the server jar. Used if modloader is Forge.</dd> +<dd><code>modpackDir</code> - String. The directory server_pack will be zipped and placed inside the modpack directory.</dd> +<dd><code>modLoader</code> - String. Determines the name of the Minecraft server JAR to delete from the ZIP-archive.</dd> +<dd><code>includeServerInstallation</code> - Boolean. Determines whether the Minecraft server JAR needs to be deleted from the ZIP-archive.</dd> +<dd><code>minecraftVersion</code> - String. Determines the name of the Minecraft server JAR to delete from the ZIP-archive if the modloader is Forge.</dd> </dl> </li> </ul> @@ -722,12 +860,18 @@ extends java.lang.Object</pre> <pre>void generateDownloadScripts(java.lang.String modLoader, java.lang.String modpackDir, java.lang.String minecraftVersion)</pre> -<div class="block">Calls methods for generating download scripts for Mojang's Minecraft server depending on the specified versions and modloader.</div> +<div class="block">Depending on the specified modloader and Minecraft version, this method makes calls to generate the corresponding + download scripts for the Minecraft server JAR.<p> + Calls<p> + <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#fabricShell-java.lang.String-java.lang.String-"><code>fabricShell(String, String)</code></a> if the modloader is Fabric. + <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#fabricBatch-java.lang.String-java.lang.String-"><code>fabricBatch(String, String)</code></a> if the modloader is Fabric. + <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#forgeShell-java.lang.String-java.lang.String-"><code>forgeShell(String, String)</code></a> if the modloader is Forge. + <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#forgeBatch-java.lang.String-java.lang.String-"><code>forgeBatch(String, String)</code></a> if the modloader is Forge.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modLoader</code> - String. The specified modloader determines the name under which Mojang's server jar will be downloaded as.</dd> -<dd><code>modpackDir</code> - String. /server_pack The directory where the scripts will be placed in.</dd> -<dd><code>minecraftVersion</code> - String. The version of the Minecraft server jar to download.</dd> +<dd><code>modLoader</code> - String. Determines whether the scripts are generated for Forge or Fabric.</dd> +<dd><code>modpackDir</code> - String. The scripts are generated in the server_pack directory inside the modpack directory.</dd> +<dd><code>minecraftVersion</code> - String. Determines the Minecraft version for which the scripts are generated.</dd> </dl> </li> </ul> @@ -739,11 +883,11 @@ extends java.lang.Object</pre> <h4>fabricShell</h4> <pre>void fabricShell(java.lang.String modpackDir, java.lang.String minecraftVersion)</pre> -<div class="block">Generates download scripts for Mojang's Minecraft server for Fabric,Linux.</div> +<div class="block">Generates Fabric Linux-shell download scripts for Mojang's Minecraft server JAR for the specified Minecraft version.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack The directory where the scripts will be placed in.</dd> -<dd><code>minecraftVersion</code> - String. The version of the Minecraft server jar to download.</dd> +<dd><code>modpackDir</code> - String. The script is generated in the server_pack directory inside the modpack directory.</dd> +<dd><code>minecraftVersion</code> - String. The Minecraft version for which to download the server JAR.</dd> </dl> </li> </ul> @@ -755,11 +899,11 @@ extends java.lang.Object</pre> <h4>fabricBatch</h4> <pre>void fabricBatch(java.lang.String modpackDir, java.lang.String minecraftVersion)</pre> -<div class="block">Generates download scripts for Mojang's Minecraft server for Fabric,Windows.</div> +<div class="block">Generates Fabric Windows-Batch download scripts for Mojang's Minecraft server JAR for the specified Minecraft version.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack The directory where the scripts will be placed in.</dd> -<dd><code>minecraftVersion</code> - String. The version of the Minecraft server jar to download.</dd> +<dd><code>modpackDir</code> - String. The script is generated in the server_pack directory inside the modpack directory.</dd> +<dd><code>minecraftVersion</code> - String. The Minecraft version for which to download the server JAR.</dd> </dl> </li> </ul> @@ -771,11 +915,11 @@ extends java.lang.Object</pre> <h4>forgeShell</h4> <pre>void forgeShell(java.lang.String modpackDir, java.lang.String minecraftVersion)</pre> -<div class="block">Generates download scripts for Mojang's Minecraft server for Forge,Linux.</div> +<div class="block">Generates Forge Linux-shell download scripts for Mojang's Minecraft server JAR for the specified Minecraft version.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack The directory where the scripts will be placed in.</dd> -<dd><code>minecraftVersion</code> - String. The version of the Minecraft server jar to download.</dd> +<dd><code>modpackDir</code> - String. The script is generated in the server_pack directory inside the modpack directory.</dd> +<dd><code>minecraftVersion</code> - String. The Minecraft version for which to download the server JAR.</dd> </dl> </li> </ul> @@ -787,11 +931,11 @@ extends java.lang.Object</pre> <h4>forgeBatch</h4> <pre>void forgeBatch(java.lang.String modpackDir, java.lang.String minecraftVersion)</pre> -<div class="block">Generates download scripts for Mojang's Minecraft server for Forge,Windows.</div> +<div class="block">Generates Forge Windows-Batch download scripts for Mojang's Minecraft server JAR for the specified Minecraft version.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack The directory where the scripts will be placed in.</dd> -<dd><code>minecraftVersion</code> - String. The version of the Minecraft server jar to download.</dd> +<dd><code>modpackDir</code> - String. The script is generated in the server_pack directory inside the modpack directory.</dd> +<dd><code>minecraftVersion</code> - String. The Minecraft version for which to download the server JAR.</dd> </dl> </li> </ul> @@ -802,12 +946,14 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>downloadFabricJar</h4> <pre>boolean downloadFabricJar(java.lang.String modpackDir)</pre> -<div class="block">Downloads the specified version of Fabric.</div> +<div class="block">Downloads the latest Fabric installer into the server pack.<p> + Calls<p> + <a href="../../../de/griefed/serverpackcreator/CreateServerPack.html#latestFabricInstaller-java.lang.String-"><code>latestFabricInstaller(String)</code></a> to acquire the latest version of the Fabric installer.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack The directory where the Fabric installer will be placed in.</dd> +<dd><code>modpackDir</code> - String. The Fabric installer is downloaded into the server_pack directory inside the modpack directory.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the download was successful. False if not.</dd> +<dd>Boolean. Returns true if the download was successfull.</dd> </dl> </li> </ul> @@ -818,12 +964,14 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>latestFabricInstaller</h4> <pre>java.lang.String latestFabricInstaller(java.lang.String modpackDir)</pre> -<div class="block">Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer.</div> +<div class="block">Acquires the latest version of the Fabric modloader installer and returns it as a string. If acquisition of the + latest version fails, version 0.7.2 is returned by default.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. /server_pack The directory where the Fabric installer will be placed in.</dd> +<dd><code>modpackDir</code> - String. The fabric-installer.xml-file is saved inside the server_pack directory inside the modpack + directory.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the download was successful. False if not.</dd> +<dd>String. Returns the version of the latest Fabric modloader installer.</dd> </dl> </li> </ul> @@ -836,14 +984,14 @@ extends java.lang.Object</pre> <pre>boolean downloadForgeJar(java.lang.String minecraftVersion, java.lang.String modLoaderVersion, java.lang.String modpackDir)</pre> -<div class="block">Downloads the specified version of the Forge installer to be used in ServerSetup.installServer.</div> +<div class="block">Downloads the modloader server installer for Forge, for the specified modloader version.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>minecraftVersion</code> - String. The Minecraft version corresponding to the Forge version. Minecraft version and Forge version build a pair.</dd> -<dd><code>modLoaderVersion</code> - String. The Forge version corresponding to the Minecraft version. Minecraft version and Forge version build a pair.</dd> -<dd><code>modpackDir</code> - String. /server_pack The directory where the Forge installer will be placed in.</dd> +<dd><code>minecraftVersion</code> - String. The Minecraft version for which to download the modloader server installer.</dd> +<dd><code>modLoaderVersion</code> - String. The Forge version for which to download the modloader server installer.</dd> +<dd><code>modpackDir</code> - String. The modloader installer is downloaded to the server_pack directory inside the modloader directory.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the download was successful. False if not.</dd> +<dd>Boolean. Returns true if the download was successful.</dd> </dl> </li> </ul> @@ -856,13 +1004,14 @@ extends java.lang.Object</pre> <pre>void deleteMinecraftJar(java.lang.String modLoader, java.lang.String modpackDir, java.lang.String minecraftVersion)</pre> -<div class="block">Deletes Mojang's minecraft_server.jar from the zip-archive so users do not accidentally upload a file containing software from Mojang. - With help from https://stackoverflow.com/questions/5244963/delete-files-from-a-zip-archive-without-decompressing-in-java-or-maybe-python and https://bugs.openjdk.java.net/browse/JDK-8186227</div> +<div class="block">Deletes the Minecraft server JAR from the ZIP-archive as per Mojang's TOS and EULA. + With help from <a href=https://stackoverflow.com/questions/5244963/delete-files-from-a-zip-archive-without-decompressing-in-java-or-maybe-python>Stackoverflow</a> + and <a href=https://bugs.openjdk.java.net/browse/JDK-8186227>OpenJDK Bugtracker</a>.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modLoader</code> - String. Determines the name of the file to delete.</dd> -<dd><code>modpackDir</code> - String. /server_pack The directory in which the file will be deleted.</dd> -<dd><code>minecraftVersion</code> - String. The Minecraft version of which to delete the server jar. Used if modloader is Forge.</dd> +<dd><code>modLoader</code> - String. The name of the Minecraft server JAR depends on the modloader used.</dd> +<dd><code>modpackDir</code> - String. The directory in which the ZIP-archive is stored.</dd> +<dd><code>minecraftVersion</code> - String. The name of the Minecraft server JAR depends on the Minecraft version if the modloader is Forge.</dd> </dl> </li> </ul> @@ -878,15 +1027,15 @@ extends java.lang.Object</pre> java.lang.String modpackDir, java.lang.String minecraftVersion, java.lang.String modLoaderVersion)</pre> -<div class="block">Deletes remnant files from Fabric/Forge installation no longer needed.</div> +<div class="block">Cleans up the server_pack directory by deleting left-over files from modloader installations and version checking.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>fabricInstaller</code> - File. Fabric installer to be deleted.</dd> -<dd><code>forgeInstaller</code> - File. Forge installer to be deleted.</dd> +<dd><code>fabricInstaller</code> - File. The Fabric installer file which is to be deleted.</dd> +<dd><code>forgeInstaller</code> - File. The Forge installer file which is to be deleted.</dd> <dd><code>modLoader</code> - String. Whether Forge or Fabric files are to be deleted.</dd> -<dd><code>modpackDir</code> - String. /server_pack The directory where files are to be deleted.</dd> -<dd><code>minecraftVersion</code> - String. Needed for renaming the Forge server jar to work with launch scripts provided by serverpackcreator.</dd> -<dd><code>modLoaderVersion</code> - String. Needed for renaming the Forge server jar to work with launch scripts provided by serverpackcreator.</dd> +<dd><code>modpackDir</code> - String. Cleanup tasks are done inside the server_pack directory inside the modpack directory.</dd> +<dd><code>minecraftVersion</code> - String. Needed for renaming the Forge server JAR to work with launch scripts provided by ServerPackCreator.</dd> +<dd><code>modLoaderVersion</code> - String. Needed for renaming the Forge server JAR to work with launch scripts provided by ServerPackCreator.</dd> </dl> </li> </ul> diff --git a/docs/de/griefed/serverpackcreator/FilesSetup.html b/docs/de/griefed/serverpackcreator/FilesSetup.html index 34c6204fe..f64d2bf42 100644 --- a/docs/de/griefed/serverpackcreator/FilesSetup.html +++ b/docs/de/griefed/serverpackcreator/FilesSetup.html @@ -109,6 +109,40 @@ var activeTableTab = "activeTableTab"; <br> <pre>public class <span class="typeNameLabel">FilesSetup</span> extends java.lang.Object</pre> +<div class="block"><strong>Table of methods</strong> + <p> + 1. <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#FilesSetup-de.griefed.serverpackcreator.i18n.LocalizationManager-"><code>FilesSetup(LocalizationManager)</code></a><br> + 2. <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getConfigFile--"><code>getConfigFile()</code></a><br> + 3. <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getOldConfigFile--"><code>getOldConfigFile()</code></a><br> + 4. <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getPropertiesFile--"><code>getPropertiesFile()</code></a><br> + 5. <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getIconFile--"><code>getIconFile()</code></a><br> + 6. <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getForgeWindowsFile--"><code>getForgeWindowsFile()</code></a><br> + 7. <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getForgeLinuxFile--"><code>getForgeLinuxFile()</code></a><br> + 8. <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getFabricWindowsFile--"><code>getFabricWindowsFile()</code></a><br> + 9. <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getFabricLinuxFile--"><code>getFabricLinuxFile()</code></a><br> + 10.<a href="../../../de/griefed/serverpackcreator/FilesSetup.html#filesSetup--"><code>filesSetup()</code></a><br> + 11.<a href="../../../de/griefed/serverpackcreator/FilesSetup.html#checkForConfig--"><code>checkForConfig()</code></a><br> + 12.<a href="../../../de/griefed/serverpackcreator/FilesSetup.html#checkForFabricLinux--"><code>checkForFabricLinux()</code></a><br> + 13.<a href="../../../de/griefed/serverpackcreator/FilesSetup.html#checkForFabricWindows--"><code>checkForFabricWindows()</code></a><br> + 14.<a href="../../../de/griefed/serverpackcreator/FilesSetup.html#checkForForgeLinux--"><code>checkForForgeLinux()</code></a><br> + 15.<a href="../../../de/griefed/serverpackcreator/FilesSetup.html#checkForForgeWindows--"><code>checkForForgeWindows()</code></a><br> + 16.<a href="../../../de/griefed/serverpackcreator/FilesSetup.html#checkForProperties--"><code>checkForProperties()</code></a><br> + 17.<a href="../../../de/griefed/serverpackcreator/FilesSetup.html#checkForIcon--"><code>checkForIcon()</code></a> + <p> + Requires instances of <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> for use of localization, but creates one if injected one is null. + <p> + Ensures all files needed by ServerPackCreator are available. If any one is missing, a new one is generated from the + template. Among the default files are:<p> + <strong>serverpackcreator.conf</strong><br> + <strong>server.properties</strong><br> + <strong>server-icon.png</strong><br> + <strong>start-forge.bar</strong><br> + <strong>start-forge.sh</strong><br> + <strong>start-fabric.bat</strong><br> + <strong>start-fabric.sh</strong> + <p> + Should an old configuration file, <em>creator.conf</em>, be detected, it is renamed to <em>serverpackcreator.conf</em> + to ensure a configuration file is present at all times.</div> </li> </ul> </div> @@ -182,7 +216,10 @@ extends java.lang.Object</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#FilesSetup-de.griefed.serverpackcreator.i18n.LocalizationManager-">FilesSetup</a></span>(<a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#FilesSetup-de.griefed.serverpackcreator.i18n.LocalizationManager-">FilesSetup</a></span>(<a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</code> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</td> </tr> </table> </li> @@ -249,35 +286,51 @@ extends java.lang.Object</pre> </tr> <tr id="i8" class="altColor"> <td class="colFirst"><code>java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getConfigFile--">getConfigFile</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getConfigFile--">getConfigFile</a></span>()</code> +<div class="block">Getter for serverpackcreator.conf.</div> +</td> </tr> <tr id="i9" class="rowColor"> <td class="colFirst"><code>java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getFabricLinuxFile--">getFabricLinuxFile</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getFabricLinuxFile--">getFabricLinuxFile</a></span>()</code> +<div class="block">Getter for start-fabric.sh.</div> +</td> </tr> <tr id="i10" class="altColor"> <td class="colFirst"><code>java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getFabricWindowsFile--">getFabricWindowsFile</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getFabricWindowsFile--">getFabricWindowsFile</a></span>()</code> +<div class="block">Getter for start-fabric.bat.</div> +</td> </tr> <tr id="i11" class="rowColor"> <td class="colFirst"><code>java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getForgeLinuxFile--">getForgeLinuxFile</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getForgeLinuxFile--">getForgeLinuxFile</a></span>()</code> +<div class="block">Getter for start-forge.sh.</div> +</td> </tr> <tr id="i12" class="altColor"> <td class="colFirst"><code>java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getForgeWindowsFile--">getForgeWindowsFile</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getForgeWindowsFile--">getForgeWindowsFile</a></span>()</code> +<div class="block">Getter for start-forge.bat.</div> +</td> </tr> <tr id="i13" class="rowColor"> <td class="colFirst"><code>java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getIconFile--">getIconFile</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getIconFile--">getIconFile</a></span>()</code> +<div class="block">Getter for server-icon.png</div> +</td> </tr> <tr id="i14" class="altColor"> <td class="colFirst"><code>java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getOldConfigFile--">getOldConfigFile</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getOldConfigFile--">getOldConfigFile</a></span>()</code> +<div class="block">Getter for creator.conf.</div> +</td> </tr> <tr id="i15" class="rowColor"> <td class="colFirst"><code>java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getPropertiesFile--">getPropertiesFile</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html#getPropertiesFile--">getPropertiesFile</a></span>()</code> +<div class="block">Getter for server.properties.</div> +</td> </tr> </table> <ul class="blockList"> @@ -310,6 +363,15 @@ extends java.lang.Object</pre> <pre>private static final org.apache.logging.log4j.Logger appLogger</pre> </li> </ul> +<a name="localizationManager"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>localizationManager</h4> +<pre>private <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +</li> +</ul> <a name="configFile"> <!-- --> </a> @@ -376,21 +438,12 @@ extends java.lang.Object</pre> <a name="fabricLinuxFile"> <!-- --> </a> -<ul class="blockList"> +<ul class="blockListLast"> <li class="blockList"> <h4>fabricLinuxFile</h4> <pre>private final java.io.File fabricLinuxFile</pre> </li> </ul> -<a name="localizationManager"> -<!-- --> -</a> -<ul class="blockListLast"> -<li class="blockList"> -<h4>localizationManager</h4> -<pre>private <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> -</li> -</ul> </li> </ul> <!-- ========= CONSTRUCTOR DETAIL ======== --> @@ -406,6 +459,13 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>FilesSetup</h4> <pre>public FilesSetup(<a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</pre> +<div class="block"><strong>Constructor</strong><p> + Used for Dependency Injection. Receives an instance of <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> or creates one if the received + one is null. Required for use of localization.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>injectedLocalizationManager</code> - Instance of <a href="../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> required for localized log messages.</dd> +</dl> </li> </ul> </li> @@ -423,6 +483,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getConfigFile</h4> <pre>public java.io.File getConfigFile()</pre> +<div class="block">Getter for serverpackcreator.conf.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Returns the serverpackcreator.conf-file for use in <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#checkForConfig--"><code>checkForConfig()</code></a></dd> +</dl> </li> </ul> <a name="getOldConfigFile--"> @@ -432,6 +497,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getOldConfigFile</h4> <pre>public java.io.File getOldConfigFile()</pre> +<div class="block">Getter for creator.conf.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Returns the creator.conf-file for use in <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#checkForConfig--"><code>checkForConfig()</code></a>.</dd> +</dl> </li> </ul> <a name="getPropertiesFile--"> @@ -441,6 +511,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getPropertiesFile</h4> <pre>public java.io.File getPropertiesFile()</pre> +<div class="block">Getter for server.properties.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Returns the server.properties-file for use in <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#checkForProperties--"><code>checkForProperties()</code></a></dd> +</dl> </li> </ul> <a name="getIconFile--"> @@ -450,6 +525,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getIconFile</h4> <pre>public java.io.File getIconFile()</pre> +<div class="block">Getter for server-icon.png</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Returns the server-icon.png-file for use in <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#checkForIcon--"><code>checkForIcon()</code></a></dd> +</dl> </li> </ul> <a name="getForgeWindowsFile--"> @@ -459,6 +539,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getForgeWindowsFile</h4> <pre>public java.io.File getForgeWindowsFile()</pre> +<div class="block">Getter for start-forge.bat.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Returns the start-forge.bat-file for use in <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#checkForForgeWindows--"><code>checkForForgeWindows()</code></a></dd> +</dl> </li> </ul> <a name="getForgeLinuxFile--"> @@ -468,6 +553,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getForgeLinuxFile</h4> <pre>public java.io.File getForgeLinuxFile()</pre> +<div class="block">Getter for start-forge.sh.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Returns the start-forge.sh-file for use in <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#checkForForgeLinux--"><code>checkForForgeLinux()</code></a></dd> +</dl> </li> </ul> <a name="getFabricWindowsFile--"> @@ -477,6 +567,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getFabricWindowsFile</h4> <pre>public java.io.File getFabricWindowsFile()</pre> +<div class="block">Getter for start-fabric.bat.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Returns the start-fabric.bat-file for use in <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#checkForFabricWindows--"><code>checkForFabricWindows()</code></a></dd> +</dl> </li> </ul> <a name="getFabricLinuxFile--"> @@ -486,6 +581,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getFabricLinuxFile</h4> <pre>public java.io.File getFabricLinuxFile()</pre> +<div class="block">Getter for start-fabric.sh.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Returns the start-fabric.sh-file for use in <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#checkForFabricLinux--"><code>checkForFabricLinux()</code></a></dd> +</dl> </li> </ul> <a name="filesSetup--"> @@ -495,7 +595,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>filesSetup</h4> <pre>void filesSetup()</pre> -<div class="block">Calls individual methods which check for existence of default files. If any of these methods return true, serverpackcreator will exit, giving the user the chance to customize it before the program runs in production.</div> +<div class="block">Calls individual methods which check for existence of default files. Only this method should be called to check + for existence of all default files.<p> + If any file was newly generated from it's template, a warning is printed informing the user about said newly + generated file. If every file was present and none was generated, "Setup completed." is printed to the console + and log.</div> </li> </ul> <a name="checkForConfig--"> @@ -505,10 +609,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>checkForConfig</h4> <pre>boolean checkForConfig()</pre> -<div class="block">Check for old config file, if found rename to new name. If neither old nor new config file can be found, a new config file is generated.</div> +<div class="block">Check for old config file, if found rename to new name. If neither old nor new config file can be found, a new + config file is generated.</div> <dl> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if new config file was generated.</dd> +<dd>Boolean. Returns true if the file was generated, so <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#filesSetup--"><code>filesSetup()</code></a> can inform the user about + said newly generated file.</dd> </dl> </li> </ul> @@ -522,7 +628,8 @@ extends java.lang.Object</pre> <div class="block">Checks for existence of Fabric start script for Linux. If it is not found, it is generated.</div> <dl> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the file was generated.</dd> +<dd>Boolean. Returns true if the file was generated, so <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#filesSetup--"><code>filesSetup()</code></a> can inform the user about + said newly generated file.</dd> </dl> </li> </ul> @@ -536,7 +643,8 @@ extends java.lang.Object</pre> <div class="block">Checks for existence of Fabric start script for Windows. If it is not found, it is generated.</div> <dl> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the file was generated.</dd> +<dd>Boolean. Returns true if the file was generated, so <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#filesSetup--"><code>filesSetup()</code></a> can inform the user about + said newly generated file.</dd> </dl> </li> </ul> @@ -550,7 +658,8 @@ extends java.lang.Object</pre> <div class="block">Checks for existence of Forge start script for Linux. If it is not found, it is generated.</div> <dl> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the file was generated.</dd> +<dd>Boolean. Returns true if the file was generated, so <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#filesSetup--"><code>filesSetup()</code></a> can inform the user about + said newly generated file.</dd> </dl> </li> </ul> @@ -564,7 +673,8 @@ extends java.lang.Object</pre> <div class="block">Checks for existence of Forge start script for Windows. If it is not found, it is generated.</div> <dl> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the file was generated.</dd> +<dd>Boolean. Returns true if the file was generated, so <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#filesSetup--"><code>filesSetup()</code></a> can inform the user about + said newly generated file.</dd> </dl> </li> </ul> @@ -578,7 +688,8 @@ extends java.lang.Object</pre> <div class="block">Checks for existence of server.properties file. If it is not found, it is generated.</div> <dl> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the file was generated.</dd> +<dd>Boolean. Returns true if the file was generated, so <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#filesSetup--"><code>filesSetup()</code></a> can inform the user about + said newly generated file.</dd> </dl> </li> </ul> @@ -592,7 +703,8 @@ extends java.lang.Object</pre> <div class="block">Checks for existence of server-icon.png file. If it is not found, it is generated.</div> <dl> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the file was generated.</dd> +<dd>Boolean. Returns true if the file was generated, so <a href="../../../de/griefed/serverpackcreator/FilesSetup.html#filesSetup--"><code>filesSetup()</code></a> can inform the user about + said newly generated file.</dd> </dl> </li> </ul> diff --git a/docs/de/griefed/serverpackcreator/Main.html b/docs/de/griefed/serverpackcreator/Main.html index ebd1b2ce1..7bf7b9667 100644 --- a/docs/de/griefed/serverpackcreator/Main.html +++ b/docs/de/griefed/serverpackcreator/Main.html @@ -109,6 +109,34 @@ var activeTableTab = "activeTableTab"; <br> <pre>public class <span class="typeNameLabel">Main</span> extends java.lang.Object</pre> +<div class="block"><strong>Table of methods</strong> + <p> + <a href="../../../de/griefed/serverpackcreator/Main.html#main-java.lang.String:A-"><code>main(String[])</code></a> + <p> + Depending on the passed commandline arguments and whether ServerPackCreator is run in a headless environment, + one of the following modes will be entered:<p> + <strong>-cgen</strong><p> + When ServerPackCreator is run with the <code>-cgen</code>-argument, you will be guided through a step-by-step + generation of a new configuration file.<p> + This mode is also entered if:<p> + ServerPackCreator is run with the <code>-cli</code>-argument <strong>AND</strong> if no configuration-file exists.<p> + ServerPackCreator can not find any configuration-file when run in cli-mode, for whatever reason. + <p> + <strong>-cli</strong><p> + When ServerPackCreator is run with the <code>-cli</code>-argument, it will be executed in commandline-mode only. + Use this argument if you explicitly want to execute ServerPackCreator without GUI. * + <p> + <strong>-lang</strong><p> + Specifies the locale with which ServerPackCreator is run. If no locale is specified or if this argument is not + used, ServerPackCreator will use the default locale <code>en_us</code><p> + Correct usage is:<p> + <code>-lang your_locale</code><p> + Examples:<p> + <code>-lang de_de</code><p> + <code>-lang en_us</code><p> + <strong>Headless environments</strong><p> + If ServerPackCreator is run in a headless environment, without any graphical environment, it should automatically + enter <code>-cli</code>-mode.</div> </li> </ul> </div> @@ -166,7 +194,7 @@ extends java.lang.Object</pre> <tr id="i0" class="altColor"> <td class="colFirst"><code>static void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../de/griefed/serverpackcreator/Main.html#main-java.lang.String:A-">main</a></span>(java.lang.String[] args)</code> -<div class="block">Init and "main" has been moved to Handler-class.</div> +<div class="block">Initializes all objects needed for running ServerPackCreator and ensures Dependency Injection.</div> </td> </tr> </table> @@ -232,10 +260,14 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>main</h4> <pre>public static void main(java.lang.String[] args)</pre> -<div class="block">Init and "main" has been moved to Handler-class. Main now only inits the LocalizationManager and passes the cli args, if any, to Handler, which then runs the usual operations as they used to be in pre-2.x.x</div> +<div class="block">Initializes all objects needed for running ServerPackCreator and ensures Dependency Injection. + Calls <a href="../../../de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator"><code>FilesSetup</code></a> so all default files are available. + Checks arguments to determine which mode to enter. + Lists a couple of environment variables important for reporting issues.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>args</code> - Commandline arguments with which ServerPackCreator is run. Passed to Handler-class which then decides what to do corresponding to input.</dd> +<dd><code>args</code> - Commandline arguments with which ServerPackCreator is run. Determines which mode ServerPackCreator + will enter and which locale is used.</dd> </dl> </li> </ul> diff --git a/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html index 6b9f41b19..74a7ab7c9 100644 --- a/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html +++ b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html @@ -17,7 +17,7 @@ catch(err) { } //--> -var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10}; +var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10}; var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; var altColor = "altColor"; var rowColor = "rowColor"; @@ -109,6 +109,33 @@ var activeTableTab = "activeTableTab"; <br> <pre>public class <span class="typeNameLabel">CurseCreateModpack</span> extends java.lang.Object</pre> +<div class="block"><strong>Table of methods</strong><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#CurseCreateModpack-de.griefed.serverpackcreator.i18n.LocalizationManager-"><code>CurseCreateModpack(LocalizationManager)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#setModloaderCase-java.lang.String-"><code>setModloaderCase(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>curseForgeModpack(String, Integer, Integer)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#initializeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>initializeModpack(String, Integer, Integer)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#downloadMods-java.lang.String-"><code>downloadMods(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#copyOverride-java.lang.String-"><code>copyOverride(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#checkCurseForgeDir-java.lang.String-"><code>checkCurseForgeDir(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#unzipArchive-java.lang.String-java.lang.String-"><code>unzipArchive(String, String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#newFile-java.io.File-java.util.zip.ZipEntry-"><code>newFile(File, ZipEntry)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#cleanupEnvironment-java.lang.String-"><code>cleanupEnvironment(String)</code></a><p> + Download a modpack from CurseForge and create it by unzipping the ZIP-archive, copy all folders and files from the + override directory to the parent directory, download all mods in said modpack, and delete no longer needed files. + Modpacks are create in a ProjectName/FileDisplayName structure. Before a modpack is created, the FileDisplayName folder + is checked for existence and deleted should it already exist. The reason for this is the order in which ServerPackCreator + checks and uses the configuration file.<p> + First: the configuration is checked for a valid CurseForge projectID,fileID combination.<br> + Second: The folder structure is checked for an already existing folder with FileDisplayName and if it exists it is deleted.<br> + Third: The modpack is created and all mods are downloaded etc., files are copied, etc.<br> + Fourth: Information about the modpack is acquired from the modpack's manifest.json and written to a new configuration file + with said information. The configuration for modpackDir, which previously contained a projectID,fileID is replaced + with the path to the new modpack at ProjectName/FileDisplayName.<br> + If modpackDir holds a projectID,fileID combination we have to assume the modpack has yet to be created, thus + we need to make sure the target directory is empty in order to create a clean and fresh modpack.<br> + If modpackDir does not hold a projectID,fileID we have to assume it is a path pointing at a directory which already + contains a modpack we can work with and create a server pack from. Thus, we clean up the environment if modpackDir holds + a projectID,fileID.</div> </li> </ul> </div> @@ -162,7 +189,10 @@ extends java.lang.Object</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#CurseCreateModpack-de.griefed.serverpackcreator.i18n.LocalizationManager-">CurseCreateModpack</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#CurseCreateModpack-de.griefed.serverpackcreator.i18n.LocalizationManager-">CurseCreateModpack</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</code> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</td> </tr> </table> </li> @@ -182,56 +212,64 @@ extends java.lang.Object</pre> <tr id="i0" class="altColor"> <td class="colFirst"><code>private boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#checkCurseForgeDir-java.lang.String-">checkCurseForgeDir</a></span>(java.lang.String modpackDir)</code> -<div class="block">Check whether the folder for the specified CurseForge projectID/fileID exists.</div> +<div class="block">Check whether the folder for the specified CurseForge projectID/fileID exists and if it does exist, delete it + recursively to ensure we are working with a clean environment when creating a modpack from CurseForge.</div> </td> </tr> <tr id="i1" class="rowColor"> +<td class="colFirst"><code>private boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#cleanupEnvironment-java.lang.String-">cleanupEnvironment</a></span>(java.lang.String modpackDir)</code> +<div class="block">Deletes any and all folder and files, recursively, inside the target directory, thus ensuring we are working in a + clean environment when creating a new modpack from CurseForge.</div> +</td> +</tr> +<tr id="i2" class="altColor"> <td class="colFirst"><code>private void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#copyOverride-java.lang.String-">copyOverride</a></span>(java.lang.String modpackDir)</code> -<div class="block">Copies all folders and the files therein to the parent modpack directory.</div> +<div class="block">Recursively copy all folders and files from the override directory to the parent directory, our modpack directory.</div> </td> </tr> -<tr id="i2" class="altColor"> +<tr id="i3" class="rowColor"> <td class="colFirst"><code>boolean</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-">curseForgeModpack</a></span>(java.lang.String modpackDir, java.lang.Integer projectID, java.lang.Integer fileID)</code> -<div class="block">Gets the names of the specified project and file and makes calls to methods which create the modpack so we can then create a server pack from it.</div> +<div class="block">Acquires the names of the CurseForge project and file.</div> </td> </tr> -<tr id="i3" class="rowColor"> +<tr id="i4" class="altColor"> <td class="colFirst"><code>private void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#downloadMods-java.lang.String-">downloadMods</a></span>(java.lang.String modpackDir)</code> <div class="block">Downloads all mods specified in the modpack's manifest.json file.</div> </td> </tr> -<tr id="i4" class="altColor"> +<tr id="i5" class="rowColor"> <td class="colFirst"><code>private void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#initializeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-">initializeModpack</a></span>(java.lang.String modpackDir, java.lang.Integer projectID, java.lang.Integer fileID)</code> -<div class="block">Downloads the specified file of the specified project to a directory which is the combination of the project name and file display name.</div> +<div class="block">Downloads the specified file of the specified project to a directory which is the combination of the project + name and file display name.</div> </td> </tr> -<tr id="i5" class="rowColor"> +<tr id="i6" class="altColor"> <td class="colFirst"><code>private java.io.File</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#newFile-java.io.File-java.util.zip.ZipEntry-">newFile</a></span>(java.io.File destinationDir, java.util.zip.ZipEntry zipEntry)</code> -<div class="block">Helper-Method for unzipArchive.</div> +<div class="block">With help from <a href=https://www.baeldung.com/java-compress-and-uncompress>Baeldung Java Tutorials</a>.</div> </td> </tr> -<tr id="i6" class="altColor"> +<tr id="i7" class="rowColor"> <td class="colFirst"><code>(package private) java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#setModloader-java.lang.String-">setModloader</a></span>(java.lang.String modloader)</code> -<div class="block">Standardize the specified modloader.</div> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#setModloaderCase-java.lang.String-">setModloaderCase</a></span>(java.lang.String modloader)</code> +<div class="block">Ensures the modloader is normalized to first letter upper case and rest lower case.</div> </td> </tr> -<tr id="i7" class="rowColor"> +<tr id="i8" class="altColor"> <td class="colFirst"><code>private void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#unzipArchive-java.lang.String-java.lang.String-">unzipArchive</a></span>(java.lang.String zipFile, java.lang.String modpackDir)</code> -<div class="block">With help from: https://www.baeldung.com/java-compress-and-uncompress - Unzips the downloaded modpack archive to a directory.</div> +<div class="block">With help from <a href=https://www.baeldung.com/java-compress-and-uncompress>Baeldung Java Tutorials</a>.</div> </td> </tr> </table> @@ -316,6 +354,14 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>CurseCreateModpack</h4> <pre>public CurseCreateModpack(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</pre> +<div class="block"><strong>Constructor</strong><p> + Used for Dependency Injection.<p> + Receives an instance of <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> or creates one if the received + one is null. Required for use of localization.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>injectedLocalizationManager</code> - Instance of <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> required for localized log messages.</dd> +</dl> </li> </ul> </li> @@ -326,6 +372,24 @@ extends java.lang.Object</pre> <!-- --> </a> <h3>Method Detail</h3> +<a name="setModloaderCase-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setModloaderCase</h4> +<pre>java.lang.String setModloaderCase(java.lang.String modloader)</pre> +<div class="block">Ensures the modloader is normalized to first letter upper case and rest lower case. Basically allows the user to + input Forge or Fabric in any combination of upper- and lowercase and ServerPackCreator will still be able to + work with the users input.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modloader</code> - String. The String to check for case-insensitive cases of either Forge or Fabric.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns a normalized String of the specified modloader.</dd> +</dl> +</li> +</ul> <a name="curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"> <!-- --> </a> @@ -335,14 +399,22 @@ extends java.lang.Object</pre> <pre>public boolean curseForgeModpack(java.lang.String modpackDir, java.lang.Integer projectID, java.lang.Integer fileID)</pre> -<div class="block">Gets the names of the specified project and file and makes calls to methods which create the modpack so we can then create a server pack from it.</div> +<div class="block">Acquires the names of the CurseForge project and file. Should no filename exist, we will use the fileDiskName as + fallback to ensure we always have a folder-structure of projectName/FileDisplayName at hand in which the modpack + will be created. Calls<br> + <code>CurseAPI</code> and various methods of it in order to acquire information about the modpack.<br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#checkCurseForgeDir-java.lang.String-"><code>checkCurseForgeDir(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#initializeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>initializeModpack(String, Integer, Integer)</code></a></div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. Combination of project name and file name. Created during download procedure and later added to config file.</dd> -<dd><code>projectID</code> - Integer. The ID of the project. Used to gather information and to download the modpack.</dd> -<dd><code>fileID</code> - Integer. The ID of the file. Used to gather information and to download the modpack.</dd> +<dd><code>modpackDir</code> - String. Combination of project name and file name. Created during download procedure + and later replaces the modpackDir variable in the configuration file.</dd> +<dd><code>projectID</code> - Integer. The ID of the project. Used to gather information about the CurseForge project and to + download the modpack.</dd> +<dd><code>fileID</code> - Integer. The ID of the file. Used to gather information about the CurseForge file and to download + the modpack.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the modpack was freshly created.</dd> +<dd>Boolean. Returns true if the modpack was successfully created.</dd> </dl> </li> </ul> @@ -355,10 +427,17 @@ extends java.lang.Object</pre> <pre>private void initializeModpack(java.lang.String modpackDir, java.lang.Integer projectID, java.lang.Integer fileID)</pre> -<div class="block">Downloads the specified file of the specified project to a directory which is the combination of the project name and file display name. Unzips the downloaded modpack archive, gathers and displays information about the specified project/file and makes calls to methods which further setup the modpack.</div> +<div class="block">Downloads the specified file of the specified project to a directory which is the combination of the project + name and file display name. Unzips the downloaded modpack ZIP-archive, gathers and displays information about the + specified project/file and makes calls to methods which further setup the modpack. Calls<br> + <code>CurseAPI</code> and various methods of it to create the modpack.<br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#unzipArchive-java.lang.String-java.lang.String-"><code>unzipArchive(String, String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#copyOverride-java.lang.String-"><code>copyOverride(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#downloadMods-java.lang.String-"><code>downloadMods(String)</code></a><br></div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. Combination of project name and file name. Created during download procedure and later added to config file.</dd> +<dd><code>modpackDir</code> - String. Combination of project name and file name. Created during download procedure and later + replaces the modpackDir variable in the configuration file.</dd> <dd><code>projectID</code> - Integer. The ID of the project. Used to gather information and to download the modpack.</dd> <dd><code>fileID</code> - Integer. The ID of the file. Used to gather information and to download the modpack.</dd> </dl> @@ -371,10 +450,16 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>downloadMods</h4> <pre>private void downloadMods(java.lang.String modpackDir)</pre> -<div class="block">Downloads all mods specified in the modpack's manifest.json file. If a download fails, one retry will be made, if said retry fails, too, then the download url will be sent to the log.</div> +<div class="block">Downloads all mods specified in the modpack's manifest.json file. If a download of a mod fails, it will be + retried once before treating it as "currently unavailable" and adding the URL to the failed download + to a list which will be printed to the console and logs after the method has finished. The user will need to + download these failed mods themself as ServerPackCreator couldn't, for whatever reason, successfully download them. + If the acquisition of the download URL fails as well....well we're out of luck, then. The user will have to figure + this out on their own. Possible reasons for a failed download and failed URL acquisition might be that the file + was taken down, no longer exists, CurseForge is unavailable etc. etc. There's nothing we can do about that.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. All mods are downloaded to a child directory 'mods'</dd> +<dd><code>modpackDir</code> - String. All mods are downloaded to the child-directory "mods" inside the modpack directory.</dd> </dl> </li> </ul> @@ -385,10 +470,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>copyOverride</h4> <pre>private void copyOverride(java.lang.String modpackDir)</pre> -<div class="block">Copies all folders and the files therein to the parent modpack directory.</div> +<div class="block">Recursively copy all folders and files from the override directory to the parent directory, our modpack directory.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modpackDir</code> - String. The overrides directory resides in this directory. All folders and files within overrides are copied here.</dd> +<dd><code>modpackDir</code> - String. The overrides directory resides in this directory. All folders and files within overrides + are copied to the parent directory, the modpack directory.</dd> </dl> </li> </ul> @@ -399,12 +485,16 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>checkCurseForgeDir</h4> <pre>private boolean checkCurseForgeDir(java.lang.String modpackDir)</pre> -<div class="block">Check whether the folder for the specified CurseForge projectID/fileID exists.</div> +<div class="block">Check whether the folder for the specified CurseForge projectID/fileID exists and if it does exist, delete it + recursively to ensure we are working with a clean environment when creating a modpack from CurseForge.<br> + Calls <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#cleanupEnvironment-java.lang.String-"><code>cleanupEnvironment(String)</code></a> to ensure a clean environment when we create a new modpack from CurseForge.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> <dd><code>modpackDir</code> - String. The path to the modpack directory, a combination of project name and file display name.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Boolean. Returns true if the directory exists. False if not.</dd> +<dd>Boolean. Returns true if something went wrong during the cleanup of the modpack directory. If the cleanup + procedure finished successfully and we have a clean environment, false is returned. Returns false if the modpack + directory could not be found, indicating a clean environment.</dd> </dl> </li> </ul> @@ -416,12 +506,13 @@ extends java.lang.Object</pre> <h4>unzipArchive</h4> <pre>private void unzipArchive(java.lang.String zipFile, java.lang.String modpackDir)</pre> -<div class="block">With help from: https://www.baeldung.com/java-compress-and-uncompress - Unzips the downloaded modpack archive to a directory.</div> +<div class="block">With help from <a href=https://www.baeldung.com/java-compress-and-uncompress>Baeldung Java Tutorials</a>.<br> + Unzips the downloaded modpack ZIP-archive to the specified directory. Calls <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#newFile-java.io.File-java.util.zip.ZipEntry-"><code>newFile(File, ZipEntry)</code></a> as + a helper method.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>zipFile</code> - String. The name of the zipfile to extract.</dd> -<dd><code>modpackDir</code> - The directory where the archive resides in and will be extracted to.</dd> +<dd><code>zipFile</code> - String. The path to the ZIP-archive which we want to unzip.</dd> +<dd><code>modpackDir</code> - The directory into which the ZIP-archive will be unzipped into.</dd> </dl> </li> </ul> @@ -433,29 +524,34 @@ extends java.lang.Object</pre> <h4>newFile</h4> <pre>private java.io.File newFile(java.io.File destinationDir, java.util.zip.ZipEntry zipEntry)</pre> -<div class="block">Helper-Method for unzipArchive. With help from: https://www.baeldung.com/java-compress-and-uncompress</div> +<div class="block">With help from <a href=https://www.baeldung.com/java-compress-and-uncompress>Baeldung Java Tutorials</a>.<br> + Helper-Method for unzipArchive. This method guards us against writing any file to the file system <em>outside</em> + of the target folder, thus ensuring all files are successfully unzipped into the desired target directory.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>destinationDir</code> - Check whether the file is outside of the directory it is supposed to be in.</dd> -<dd><code>zipEntry</code> - Zip entry with which to check for location.</dd> +<dd><code>destinationDir</code> - The directory into which a file from the ZIP-archive is to be unzipped.</dd> +<dd><code>zipEntry</code> - File in the ZIP-archive which is to be unzipped from the ZIP-archive into the desired target + directory.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Returns the correct destination for the new file.</dd> +<dd>File. Returns a file from the ZIP-archive with the path pointing to the desired directory, ensuring proper + unzipping of the ZIP-archive.</dd> </dl> </li> </ul> -<a name="setModloader-java.lang.String-"> +<a name="cleanupEnvironment-java.lang.String-"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>setModloader</h4> -<pre>java.lang.String setModloader(java.lang.String modloader)</pre> -<div class="block">Standardize the specified modloader.</div> +<h4>cleanupEnvironment</h4> +<pre>private boolean cleanupEnvironment(java.lang.String modpackDir)</pre> +<div class="block">Deletes any and all folder and files, recursively, inside the target directory, thus ensuring we are working in a + clean environment when creating a new modpack from CurseForge.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>modloader</code> - String. If any case of Forge or Fabric was specified, return "Forge" or "Fabric", so users can enter "forge" or "fabric" or any combination of upper- and lowercase letters..</dd> +<dd><code>modpackDir</code> - String. The directory we want to delete.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>String. Returns a standardized String of the specified modloader.</dd> +<dd>Boolean. Returns false if every file and folder was, recursively and successfully, deleted.</dd> </dl> </li> </ul> diff --git a/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html index 265587130..cf8b045f0 100644 --- a/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html +++ b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html @@ -109,6 +109,15 @@ var activeTableTab = "activeTableTab"; <br> <pre>public class <span class="typeNameLabel">CurseFiles</span> extends java.lang.Object</pre> +<div class="block"><strong>Table of methods</strong><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#getProjectID--"><code>getProjectID()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#setProjectID-java.lang.String-"><code>setProjectID(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#getFileID--"><code>getFileID()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#setFileID-java.lang.String-"><code>setFileID(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#toString--"><code>toString()</code></a><p> + Retrieves information about a CurseForge Minecraft modpack by using <code>com.fasterxml.jackson.databind</code> JSON parsing. + This class retrieves the projectIDs and fileIDs a modpack acquired from CurseForge depends on. These can be mods, + resource packs, worlds etc. etc.</div> </li> </ul> </div> @@ -133,7 +142,9 @@ extends java.lang.Object</pre> </tr> <tr class="rowColor"> <td class="colFirst"><code>private java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#projectID">projectID</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#projectID">projectID</a></span></code> +<div class="block">Ignore unknown values/object.</div> +</td> </tr> </table> </li> @@ -169,23 +180,33 @@ extends java.lang.Object</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#getFileID--">getFileID</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#getFileID--">getFileID</a></span>()</code> +<div class="block">Getter for a fileID of a dependency in the CurseForge modpack.</div> +</td> </tr> <tr id="i1" class="rowColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#getProjectID--">getProjectID</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#getProjectID--">getProjectID</a></span>()</code> +<div class="block">Getter for a projectID of a dependency in the CurseForge modpack.</div> +</td> </tr> <tr id="i2" class="altColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#setFileID-java.lang.String-">setFileID</a></span>(java.lang.String fileID)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#setFileID-java.lang.String-">setFileID</a></span>(java.lang.String fileID)</code> +<div class="block">Setter for a fileID of a dependency in the CurseForge modpack.</div> +</td> </tr> <tr id="i3" class="rowColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#setProjectID-java.lang.String-">setProjectID</a></span>(java.lang.String projectID)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#setProjectID-java.lang.String-">setProjectID</a></span>(java.lang.String projectID)</code> +<div class="block">Setter for a projectID of a dependency in the CurseForge modpack.</div> +</td> </tr> <tr id="i4" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#toString--">toString</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#toString--">toString</a></span>()</code> +<div class="block">A comma separated combination of a dependency projectID and fileID of a CurseForge modpack.</div> +</td> </tr> </table> <ul class="blockList"> @@ -216,6 +237,9 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>projectID</h4> <pre>private java.lang.String projectID</pre> +<div class="block">Ignore unknown values/object. We only want to gather specific information and disregard the rest. Setting this + property allows us setup the class to only gather the information we want, so we don't have to worry about any + additions to the source-data being made, which would otherwise cause an "Unknown property" exception.</div> </li> </ul> <a name="fileID"> @@ -259,6 +283,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getProjectID</h4> <pre>public java.lang.String getProjectID()</pre> +<div class="block">Getter for a projectID of a dependency in the CurseForge modpack.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns a projectID of a dependency in the modpack acquired from CurseForge.</dd> +</dl> </li> </ul> <a name="setProjectID-java.lang.String-"> @@ -268,6 +297,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setProjectID</h4> <pre>public void setProjectID(java.lang.String projectID)</pre> +<div class="block">Setter for a projectID of a dependency in the CurseForge modpack.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>projectID</code> - Receives the projectID of a dependency in the modpack acquired from CurseForge.</dd> +</dl> </li> </ul> <a name="getFileID--"> @@ -277,6 +311,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getFileID</h4> <pre>public java.lang.String getFileID()</pre> +<div class="block">Getter for a fileID of a dependency in the CurseForge modpack.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns a fileID of a dependency in the modpack acquired from CurseForge.</dd> +</dl> </li> </ul> <a name="setFileID-java.lang.String-"> @@ -286,6 +325,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setFileID</h4> <pre>public void setFileID(java.lang.String fileID)</pre> +<div class="block">Setter for a fileID of a dependency in the CurseForge modpack.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>fileID</code> - Receives the fileID of a dependency in the modpack acquired from CurseForge.</dd> +</dl> </li> </ul> <a name="toString--"> @@ -295,9 +339,13 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>toString</h4> <pre>public java.lang.String toString()</pre> +<div class="block">A comma separated combination of a dependency projectID and fileID of a CurseForge modpack.</div> <dl> <dt><span class="overrideSpecifyLabel">Overrides:</span></dt> <dd><code>toString</code> in class <code>java.lang.Object</code></dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns a comma separated projectID,fileID combination of a dependency of a modpack acquired from + CurseForge.</dd> </dl> </li> </ul> diff --git a/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html index 5989e2acf..56f610116 100644 --- a/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html +++ b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html @@ -107,8 +107,16 @@ var activeTableTab = "activeTableTab"; <li class="blockList"> <hr> <br> -<pre>class <span class="typeNameLabel">CurseMinecraft</span> +<pre>public class <span class="typeNameLabel">CurseMinecraft</span> extends java.lang.Object</pre> +<div class="block"><strong>Table of methods</strong><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#getVersion--"><code>getVersion()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#setVersion-java.lang.String-"><code>setVersion(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#getModLoaders--"><code>getModLoaders()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#setModLoaders-java.util.List-"><code>setModLoaders(List)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#toString--"><code>toString()</code></a><p> + Retrieves information about a CurseForge Minecraft modpack by using <code>com.fasterxml.jackson.databind</code> JSON parsing. + This class retrieves the Minecraft version of a modpack.</div> </li> </ul> </div> @@ -133,7 +141,9 @@ extends java.lang.Object</pre> </tr> <tr class="rowColor"> <td class="colFirst"><code>private java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#version">version</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#version">version</a></span></code> +<div class="block">Ignore unknown values/object.</div> +</td> </tr> </table> </li> @@ -169,23 +179,34 @@ extends java.lang.Object</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a>></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#getModLoaders--">getModLoaders</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#getModLoaders--">getModLoaders</a></span>()</code> +<div class="block">Getter for modloader related information using <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseModLoaders</code></a>.</div> +</td> </tr> <tr id="i1" class="rowColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#getVersion--">getVersion</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#getVersion--">getVersion</a></span>()</code> +<div class="block">Getter for the Minecraft version used by the CurseForge modpack.</div> +</td> </tr> <tr id="i2" class="altColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#setModLoaders-java.util.List-">setModLoaders</a></span>(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a>> modLoaders)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#setModLoaders-java.util.List-">setModLoaders</a></span>(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a>> modLoaders)</code> +<div class="block">Setter for modloader related information using <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseModLoaders</code></a>.</div> +</td> </tr> <tr id="i3" class="rowColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#setVersion-java.lang.String-">setVersion</a></span>(java.lang.String version)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#setVersion-java.lang.String-">setVersion</a></span>(java.lang.String version)</code> +<div class="block">Setter for the Minecraft version used by the CurseForge modpack.</div> +</td> </tr> <tr id="i4" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#toString--">toString</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#toString--">toString</a></span>()</code> +<div class="block">String containing information about the Minecraft version, modloader and modloader version used by the CurseForge + modpack.</div> +</td> </tr> </table> <ul class="blockList"> @@ -216,6 +237,9 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>version</h4> <pre>private java.lang.String version</pre> +<div class="block">Ignore unknown values/object. We only want to gather specific information and disregard the rest. Setting this + property allows us setup the class to only gather the information we want, so we don't have to worry about any + additions to the source-data being made, which would otherwise cause an "Unknown property" exception.</div> </li> </ul> <a name="modLoaders"> @@ -241,7 +265,7 @@ extends java.lang.Object</pre> <ul class="blockListLast"> <li class="blockList"> <h4>CurseMinecraft</h4> -<pre>CurseMinecraft()</pre> +<pre>public CurseMinecraft()</pre> </li> </ul> </li> @@ -259,6 +283,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getVersion</h4> <pre>public java.lang.String getVersion()</pre> +<div class="block">Getter for the Minecraft version used by the CurseForge modpack.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns the Minecraft version used by the modpack acquired from CurseForge.</dd> +</dl> </li> </ul> <a name="setVersion-java.lang.String-"> @@ -268,6 +297,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setVersion</h4> <pre>public void setVersion(java.lang.String version)</pre> +<div class="block">Setter for the Minecraft version used by the CurseForge modpack.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>version</code> - Receives the Minecraft version of the CurseForge modpack.</dd> +</dl> </li> </ul> <a name="getModLoaders--"> @@ -277,6 +311,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getModLoaders</h4> <pre>public java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a>> getModLoaders()</pre> +<div class="block">Getter for modloader related information using <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseModLoaders</code></a>.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>List CurseModLoaders. Returns an isntance of CurseModLoaders.class with information about the modlaoder + and modloader version used by the CurseForge modpack.</dd> +</dl> </li> </ul> <a name="setModLoaders-java.util.List-"> @@ -286,6 +326,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setModLoaders</h4> <pre>public void setModLoaders(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a>> modLoaders)</pre> +<div class="block">Setter for modloader related information using <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseModLoaders</code></a>.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>modLoaders</code> - Receives an instance of CurseModLoaders.class.</dd> +</dl> </li> </ul> <a name="toString--"> @@ -295,9 +340,14 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>toString</h4> <pre>public java.lang.String toString()</pre> +<div class="block">String containing information about the Minecraft version, modloader and modloader version used by the CurseForge + modpack.</div> <dl> <dt><span class="overrideSpecifyLabel">Overrides:</span></dt> <dd><code>toString</code> in class <code>java.lang.Object</code></dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns a String with the Minecraft version, used modloader and modloader version of a modpack + acquired from CurseForge.</dd> </dl> </li> </ul> diff --git a/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html index f12e1bd49..5fef031b5 100644 --- a/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html +++ b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html @@ -107,8 +107,14 @@ var activeTableTab = "activeTableTab"; <li class="blockList"> <hr> <br> -<pre>class <span class="typeNameLabel">CurseModLoaders</span> +<pre>public class <span class="typeNameLabel">CurseModLoaders</span> extends java.lang.Object</pre> +<div class="block"><strong>Table of methods</strong><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#getId--"><code>getId()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#setId-java.lang.String-"><code>setId(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#toString--"><code>toString()</code></a><p> + Retrieves information about a CurseForge Minecraft modpack by using <code>com.fasterxml.jackson.databind</code> JSON parsing. + This class retrieves the modloader and modloader version of a modpack.</div> </li> </ul> </div> @@ -129,7 +135,9 @@ extends java.lang.Object</pre> </tr> <tr class="altColor"> <td class="colFirst"><code>private java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#id">id</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#id">id</a></span></code> +<div class="block">Ignore unknown values/object.</div> +</td> </tr> </table> </li> @@ -165,15 +173,21 @@ extends java.lang.Object</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#getId--">getId</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#getId--">getId</a></span>()</code> +<div class="block">Getter for the modloader and modloader version used by the CurseForge modpack.</div> +</td> </tr> <tr id="i1" class="rowColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#setId-java.lang.String-">setId</a></span>(java.lang.String id)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#setId-java.lang.String-">setId</a></span>(java.lang.String id)</code> +<div class="block">Setter for the modloader and modloader version used by the CurseForge modpack.</div> +</td> </tr> <tr id="i2" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#toString--">toString</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#toString--">toString</a></span>()</code> +<div class="block">String containing information about the CurseForge modpack's used modloader and the modloader version.</div> +</td> </tr> </table> <ul class="blockList"> @@ -204,6 +218,9 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>id</h4> <pre>private java.lang.String id</pre> +<div class="block">Ignore unknown values/object. We only want to gather specific information and disregard the rest. Setting this + property allows us setup the class to only gather the information we want, so we don't have to worry about any + additions to the source-data being made, which would otherwise cause an "Unknown property" exception.</div> </li> </ul> </li> @@ -220,7 +237,7 @@ extends java.lang.Object</pre> <ul class="blockListLast"> <li class="blockList"> <h4>CurseModLoaders</h4> -<pre>CurseModLoaders()</pre> +<pre>public CurseModLoaders()</pre> </li> </ul> </li> @@ -238,6 +255,13 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getId</h4> <pre>public java.lang.String getId()</pre> +<div class="block">Getter for the modloader and modloader version used by the CurseForge modpack. It's a single string in the + manifest.json which contains the modloader and the version of said modloader, for example <code>"id": "forge-36.1.4"</code></div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns the id of the modpack acquired from CurseForge containing information about the modloader + and the version of said modloader.</dd> +</dl> </li> </ul> <a name="setId-java.lang.String-"> @@ -247,6 +271,13 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>setId</h4> <pre>public void setId(java.lang.String id)</pre> +<div class="block">Setter for the modloader and modloader version used by the CurseForge modpack. It's a single string in the + manifest.json which contains the modloader and the version of said modloader, for example <code>"id": "forge-36.1.4"</code></div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>id</code> - Receives the id of the CurseForge modpack containing information about the modloader + and the version of said modloader.</dd> +</dl> </li> </ul> <a name="toString--"> @@ -256,9 +287,13 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>toString</h4> <pre>public java.lang.String toString()</pre> +<div class="block">String containing information about the CurseForge modpack's used modloader and the modloader version.</div> <dl> <dt><span class="overrideSpecifyLabel">Overrides:</span></dt> <dd><code>toString</code> in class <code>java.lang.Object</code></dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns the String with information about the modloader and modloader version used by the + CurseForge modpack.</dd> </dl> </li> </ul> diff --git a/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html index 6b71df42e..54b8b67cf 100644 --- a/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html +++ b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html @@ -17,7 +17,7 @@ catch(err) { } //--> -var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10}; +var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10}; var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; var altColor = "altColor"; var rowColor = "rowColor"; @@ -109,6 +109,20 @@ var activeTableTab = "activeTableTab"; <br> <pre>public class <span class="typeNameLabel">CurseModpack</span> extends java.lang.Object</pre> +<div class="block"><strong>Table of methods</strong><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getMinecraft--"><code>getMinecraft()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setMinecraft-java.util.List-"><code>setMinecraft(List)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getName--"><code>getName()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setName-java.lang.String-"><code>setName(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getVersion--"><code>getVersion()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setVersion-java.lang.String-"><code>setVersion(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getAuthor--"><code>getAuthor()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setAuthor-java.lang.String-"><code>setAuthor(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getFiles--"><code>getFiles()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setFiles-java.util.List-"><code>setFiles(List)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#toString--"><code>toString()</code></a><p> + Retrieve information about a CurseForge Minecraft modpack by using <code>com.fasterxml.jackson.databind</code> JSON parsing. + This class retrieves the name, version and author of a modpack.</div> </li> </ul> </div> @@ -137,7 +151,9 @@ extends java.lang.Object</pre> </tr> <tr class="altColor"> <td class="colFirst"><code>private java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a>></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#minecraft">minecraft</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#minecraft">minecraft</a></span></code> +<div class="block">Ignore unknown values/object.</div> +</td> </tr> <tr class="rowColor"> <td class="colFirst"><code>private java.lang.String</code></td> @@ -181,43 +197,69 @@ extends java.lang.Object</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getAuthor--">getAuthor</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getAuthor--">getAuthor</a></span>()</code> +<div class="block">Getter for the author of the CurseForge modpack.</div> +</td> </tr> <tr id="i1" class="rowColor"> <td class="colFirst"><code>java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a>></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getFiles--">getFiles</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getFiles--">getFiles</a></span>()</code> +<div class="block">Getter for the files on which the CurseForge modpack depends by using <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseFiles</code></a>.</div> +</td> </tr> <tr id="i2" class="altColor"> <td class="colFirst"><code>java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a>></code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getMinecraft--">getMinecraft</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getMinecraft--">getMinecraft</a></span>()</code> +<div class="block">Getter for Minecraft related information using <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseMinecraft</code></a>.</div> +</td> </tr> <tr id="i3" class="rowColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getName--">getName</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getName--">getName</a></span>()</code> +<div class="block">Getter for the name of the CurseForge modpack.</div> +</td> </tr> <tr id="i4" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getVersion--">getVersion</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getVersion--">getVersion</a></span>()</code> +<div class="block">Getter for the version of the CurseForge modpack.</div> +</td> </tr> <tr id="i5" class="rowColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setFiles-java.util.List-">setFiles</a></span>(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a>> files)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setAuthor-java.lang.String-">setAuthor</a></span>(java.lang.String newAuthor)</code> +<div class="block">Setter for the author of the CurseForge modpack.</div> +</td> </tr> <tr id="i6" class="altColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setMinecraft-java.util.List-">setMinecraft</a></span>(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a>> minecraft)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setFiles-java.util.List-">setFiles</a></span>(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a>> newFiles)</code> +<div class="block">Setter for the CurseForge modpack files on which it depends.</div> +</td> </tr> <tr id="i7" class="rowColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setName-java.lang.String-">setName</a></span>(java.lang.String name)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setMinecraft-java.util.List-">setMinecraft</a></span>(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a>> newMinecraft)</code> +<div class="block">Setter for Minecraft related information using <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseMinecraft</code></a></div> +</td> </tr> <tr id="i8" class="altColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setVersion-java.lang.String-">setVersion</a></span>(java.lang.String version)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setName-java.lang.String-">setName</a></span>(java.lang.String newName)</code> +<div class="block">Setter for the name of the CurseForge modpack.</div> +</td> </tr> <tr id="i9" class="rowColor"> +<td class="colFirst"><code>void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setVersion-java.lang.String-">setVersion</a></span>(java.lang.String newVersion)</code> +<div class="block">Setter for the version of the CurseForge modpack.</div> +</td> +</tr> +<tr id="i10" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#toString--">toString</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#toString--">toString</a></span>()</code> +<div class="block">String containing information about the CurseForge modpack.</div> +</td> </tr> </table> <ul class="blockList"> @@ -248,6 +290,9 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>minecraft</h4> <pre>private java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a>> minecraft</pre> +<div class="block">Ignore unknown values/object. We only want to gather specific information and disregard the rest. Setting this + property allows us setup the class to only gather the information we want, so we don't have to worry about any + additions to the source-data being made, which would otherwise cause an "Unknown property" exception.</div> </li> </ul> <a name="name"> @@ -318,6 +363,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getMinecraft</h4> <pre>public java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a>> getMinecraft()</pre> +<div class="block">Getter for Minecraft related information using <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseMinecraft</code></a>.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>List CurseMinecraft. Returns an instance of CurseMinecraft.class with information related to Minecraft.</dd> +</dl> </li> </ul> <a name="setMinecraft-java.util.List-"> @@ -326,7 +376,12 @@ extends java.lang.Object</pre> <ul class="blockList"> <li class="blockList"> <h4>setMinecraft</h4> -<pre>public void setMinecraft(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a>> minecraft)</pre> +<pre>public void setMinecraft(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a>> newMinecraft)</pre> +<div class="block">Setter for Minecraft related information using <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseMinecraft</code></a></div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newMinecraft</code> - Receives an instance of the CurseMinecraft.class.</dd> +</dl> </li> </ul> <a name="getName--"> @@ -336,6 +391,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getName</h4> <pre>public java.lang.String getName()</pre> +<div class="block">Getter for the name of the CurseForge modpack.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns the name of modpack acquired from CurseForge.</dd> +</dl> </li> </ul> <a name="setName-java.lang.String-"> @@ -344,7 +404,12 @@ extends java.lang.Object</pre> <ul class="blockList"> <li class="blockList"> <h4>setName</h4> -<pre>public void setName(java.lang.String name)</pre> +<pre>public void setName(java.lang.String newName)</pre> +<div class="block">Setter for the name of the CurseForge modpack.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newName</code> - Receives the name of the CurseForge modpack.</dd> +</dl> </li> </ul> <a name="getVersion--"> @@ -354,6 +419,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getVersion</h4> <pre>public java.lang.String getVersion()</pre> +<div class="block">Getter for the version of the CurseForge modpack.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns the version of the modpack acquired from CurseForge.</dd> +</dl> </li> </ul> <a name="setVersion-java.lang.String-"> @@ -362,7 +432,12 @@ extends java.lang.Object</pre> <ul class="blockList"> <li class="blockList"> <h4>setVersion</h4> -<pre>public void setVersion(java.lang.String version)</pre> +<pre>public void setVersion(java.lang.String newVersion)</pre> +<div class="block">Setter for the version of the CurseForge modpack.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newVersion</code> - Receives the version of the modpack acquired from CurseForge.</dd> +</dl> </li> </ul> <a name="getAuthor--"> @@ -372,6 +447,25 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getAuthor</h4> <pre>public java.lang.String getAuthor()</pre> +<div class="block">Getter for the author of the CurseForge modpack.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns the author of the modpack acquired from CurseForge.</dd> +</dl> +</li> +</ul> +<a name="setAuthor-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setAuthor</h4> +<pre>public void setAuthor(java.lang.String newAuthor)</pre> +<div class="block">Setter for the author of the CurseForge modpack.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newAuthor</code> - Receives the author of the modpack acquired from CurseForge.</dd> +</dl> </li> </ul> <a name="getFiles--"> @@ -381,6 +475,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getFiles</h4> <pre>public java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a>> getFiles()</pre> +<div class="block">Getter for the files on which the CurseForge modpack depends by using <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseFiles</code></a>.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>List CurseFiles. Returns an instance of CurseFiles.class with information related to the files included + in the CurseForge modpack.</dd> +</dl> </li> </ul> <a name="setFiles-java.util.List-"> @@ -389,7 +489,12 @@ extends java.lang.Object</pre> <ul class="blockList"> <li class="blockList"> <h4>setFiles</h4> -<pre>public void setFiles(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a>> files)</pre> +<pre>public void setFiles(java.util.List<<a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a>> newFiles)</pre> +<div class="block">Setter for the CurseForge modpack files on which it depends.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>newFiles</code> - Receives an instance of CurseFiles.class with information about the files on which the modpack depends.</dd> +</dl> </li> </ul> <a name="toString--"> @@ -399,9 +504,13 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>toString</h4> <pre>public java.lang.String toString()</pre> +<div class="block">String containing information about the CurseForge modpack. Included are <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getMinecraft--"><code>getMinecraft()</code></a>, + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getName--"><code>getName()</code></a>, <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getVersion--"><code>getVersion()</code></a>, <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getAuthor--"><code>getAuthor()</code></a>, <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getFiles--"><code>getFiles()</code></a>.</div> <dl> <dt><span class="overrideSpecifyLabel">Overrides:</span></dt> <dd><code>toString</code> in class <code>java.lang.Object</code></dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns String with information about the CurseForge modpack.</dd> </dl> </li> </ul> diff --git a/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html index c85ff1e0c..af22d346e 100644 --- a/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html +++ b/docs/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html @@ -107,8 +107,16 @@ var activeTableTab = "activeTableTab"; <li class="blockList"> <hr> <br> -<pre>class <span class="typeNameLabel">CurseSplines</span> +<pre>public class <span class="typeNameLabel">CurseSplines</span> extends java.lang.Object</pre> +<div class="block"><strong>Table of methods</strong><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulating"><code>reticulating</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getRandomInt--"><code>getRandomInt()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getSpline--"><code>getSpline()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulate--"><code>reticulate()</code></a><p> + Just something fun to brighten the mood. This class provides a list of messages which some of you may know from the + SimCity games. Thanks go out to MAXIS and Sim City, for the ridiculous messages these games contained. + Additional thanks to Larsz for providing a list of all these messages <a href=https://gamefaqs.gamespot.com/pc/561176-simcity-4/faqs/22135>on GameFAQs </a></div> </li> </ul> </div> @@ -129,7 +137,9 @@ extends java.lang.Object</pre> </tr> <tr class="altColor"> <td class="colFirst"><code>private java.lang.String[]</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulating">reticulating</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulating">reticulating</a></span></code> +<div class="block">The list of messages as they were available in SimCity, plus Reticulating Splines added by myself, for good measure.</div> +</td> </tr> </table> </li> @@ -165,15 +175,21 @@ extends java.lang.Object</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>private int</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getRandomInt--">getRandomInt</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getRandomInt--">getRandomInt</a></span>()</code> +<div class="block">Retrieves the index of a random message in <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulating"><code>reticulating</code></a>.</div> +</td> </tr> <tr id="i1" class="rowColor"> <td class="colFirst"><code>private java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getSpline--">getSpline</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getSpline--">getSpline</a></span>()</code> +<div class="block">Retrieves a message from <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulating"><code>reticulating</code></a> using a randomly generated index from <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getRandomInt--"><code>getRandomInt()</code></a>.</div> +</td> </tr> <tr id="i2" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulate--">reticulate</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulate--">reticulate</a></span>()</code> +<div class="block">Retrieve a random message from <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulating"><code>reticulating</code></a>.</div> +</td> </tr> </table> <ul class="blockList"> @@ -204,6 +220,7 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>reticulating</h4> <pre>private final java.lang.String[] reticulating</pre> +<div class="block">The list of messages as they were available in SimCity, plus Reticulating Splines added by myself, for good measure.</div> </li> </ul> </li> @@ -220,7 +237,7 @@ extends java.lang.Object</pre> <ul class="blockListLast"> <li class="blockList"> <h4>CurseSplines</h4> -<pre>CurseSplines()</pre> +<pre>public CurseSplines()</pre> </li> </ul> </li> @@ -238,6 +255,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getRandomInt</h4> <pre>private int getRandomInt()</pre> +<div class="block">Retrieves the index of a random message in <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulating"><code>reticulating</code></a>.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Integer. Returns a randomly generated index.</dd> +</dl> </li> </ul> <a name="getSpline--"> @@ -247,6 +269,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getSpline</h4> <pre>private java.lang.String getSpline()</pre> +<div class="block">Retrieves a message from <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulating"><code>reticulating</code></a> using a randomly generated index from <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getRandomInt--"><code>getRandomInt()</code></a>.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns the message at the index provided by the randomizer.</dd> +</dl> </li> </ul> <a name="reticulate--"> @@ -256,6 +283,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>reticulate</h4> <pre>public java.lang.String reticulate()</pre> +<div class="block">Retrieve a random message from <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulating"><code>reticulating</code></a>.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns a random message.</dd> +</dl> </li> </ul> </li> diff --git a/docs/de/griefed/serverpackcreator/curseforgemodpack/package-summary.html b/docs/de/griefed/serverpackcreator/curseforgemodpack/package-summary.html index 802b0cf25..f75910fbf 100644 --- a/docs/de/griefed/serverpackcreator/curseforgemodpack/package-summary.html +++ b/docs/de/griefed/serverpackcreator/curseforgemodpack/package-summary.html @@ -82,27 +82,84 @@ <tbody> <tr class="altColor"> <td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></td> -<td class="colLast"> </td> +<td class="colLast"> +<div class="block"><strong>Table of methods</strong><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#CurseCreateModpack-de.griefed.serverpackcreator.i18n.LocalizationManager-"><code>CurseCreateModpack.CurseCreateModpack(LocalizationManager)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#setModloaderCase-java.lang.String-"><code>CurseCreateModpack.setModloaderCase(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#initializeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.initializeModpack(String, Integer, Integer)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#downloadMods-java.lang.String-"><code>CurseCreateModpack.downloadMods(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#copyOverride-java.lang.String-"><code>CurseCreateModpack.copyOverride(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#checkCurseForgeDir-java.lang.String-"><code>CurseCreateModpack.checkCurseForgeDir(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#unzipArchive-java.lang.String-java.lang.String-"><code>CurseCreateModpack.unzipArchive(String, String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#newFile-java.io.File-java.util.zip.ZipEntry-"><code>CurseCreateModpack.newFile(File, ZipEntry)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#cleanupEnvironment-java.lang.String-"><code>CurseCreateModpack.cleanupEnvironment(String)</code></a> + Download a modpack from CurseForge and create it by unzipping the ZIP-archive, copy all folders and files from the + override directory to the parent directory, download all mods in said modpack, and delete no longer needed files.</div> +</td> </tr> <tr class="rowColor"> <td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></td> -<td class="colLast"> </td> +<td class="colLast"> +<div class="block"><strong>Table of methods</strong><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#getProjectID--"><code>CurseFiles.getProjectID()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#setProjectID-java.lang.String-"><code>CurseFiles.setProjectID(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#getFileID--"><code>CurseFiles.getFileID()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#setFileID-java.lang.String-"><code>CurseFiles.setFileID(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#toString--"><code>CurseFiles.toString()</code></a> + Retrieves information about a CurseForge Minecraft modpack by using <code>com.fasterxml.jackson.databind</code> JSON parsing.</div> +</td> </tr> <tr class="altColor"> <td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></td> -<td class="colLast"> </td> +<td class="colLast"> +<div class="block"><strong>Table of methods</strong><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#getVersion--"><code>CurseMinecraft.getVersion()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#setVersion-java.lang.String-"><code>CurseMinecraft.setVersion(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#getModLoaders--"><code>CurseMinecraft.getModLoaders()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#setModLoaders-java.util.List-"><code>CurseMinecraft.setModLoaders(List)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#toString--"><code>CurseMinecraft.toString()</code></a> + Retrieves information about a CurseForge Minecraft modpack by using <code>com.fasterxml.jackson.databind</code> JSON parsing.</div> +</td> </tr> <tr class="rowColor"> <td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a></td> -<td class="colLast"> </td> +<td class="colLast"> +<div class="block"><strong>Table of methods</strong><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#getId--"><code>CurseModLoaders.getId()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#setId-java.lang.String-"><code>CurseModLoaders.setId(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#toString--"><code>CurseModLoaders.toString()</code></a> + Retrieves information about a CurseForge Minecraft modpack by using <code>com.fasterxml.jackson.databind</code> JSON parsing.</div> +</td> </tr> <tr class="altColor"> <td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></td> -<td class="colLast"> </td> +<td class="colLast"> +<div class="block"><strong>Table of methods</strong><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getMinecraft--"><code>CurseModpack.getMinecraft()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setMinecraft-java.util.List-"><code>CurseModpack.setMinecraft(List)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getName--"><code>CurseModpack.getName()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setName-java.lang.String-"><code>CurseModpack.setName(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getVersion--"><code>CurseModpack.getVersion()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setVersion-java.lang.String-"><code>CurseModpack.setVersion(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getAuthor--"><code>CurseModpack.getAuthor()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setAuthor-java.lang.String-"><code>CurseModpack.setAuthor(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getFiles--"><code>CurseModpack.getFiles()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setFiles-java.util.List-"><code>CurseModpack.setFiles(List)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#toString--"><code>CurseModpack.toString()</code></a> + Retrieve information about a CurseForge Minecraft modpack by using <code>com.fasterxml.jackson.databind</code> JSON parsing.</div> +</td> </tr> <tr class="rowColor"> <td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseSplines</a></td> -<td class="colLast"> </td> +<td class="colLast"> +<div class="block"><strong>Table of methods</strong><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulating"><code>CurseSplines.reticulating</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getRandomInt--"><code>CurseSplines.getRandomInt()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getSpline--"><code>CurseSplines.getSpline()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulate--"><code>CurseSplines.reticulate()</code></a> + Just something fun to brighten the mood.</div> +</td> </tr> </tbody> </table> diff --git a/docs/de/griefed/serverpackcreator/gui/AboutTab.html b/docs/de/griefed/serverpackcreator/gui/AboutTab.html index 43070616e..524a56ca9 100644 --- a/docs/de/griefed/serverpackcreator/gui/AboutTab.html +++ b/docs/de/griefed/serverpackcreator/gui/AboutTab.html @@ -116,8 +116,15 @@ var activeTableTab = "activeTableTab"; </dl> <hr> <br> -<pre>class <span class="typeNameLabel">AboutTab</span> +<pre>public class <span class="typeNameLabel">AboutTab</span> extends java.awt.Component</pre> +<div class="block">This class creates the tab which displays the About-tab, with the about text, the list of contributors, buttons for + opening PasteBin in your browser, opening ServerPackCreator's issue page on GitHub and for opening the invite link + to Griefed#s discord server in your browser.</div> +<dl> +<dt><span class="seeLabel">See Also:</span></dt> +<dd><a href="../../../../serialized-form.html#de.griefed.serverpackcreator.gui.AboutTab">Serialized Form</a></dd> +</dl> </li> </ul> </div> @@ -152,29 +159,61 @@ extends java.awt.Component</pre> <th class="colLast" scope="col">Field and Description</th> </tr> <tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JComponent</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#aboutPanel">aboutPanel</a></span></code> </td> +</tr> +<tr class="rowColor"> <td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#appLogger">appLogger</a></span></code> </td> </tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.text.SimpleAttributeSet</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#attributeSet">attributeSet</a></span></code> </td> +</tr> <tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JButton</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#buttonCreatePasteBin">buttonCreatePasteBin</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JButton</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#buttonDiscord">buttonDiscord</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JButton</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#buttonOpenIssue">buttonOpenIssue</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.awt.GridBagConstraints</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#constraints">constraints</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.text.StyledDocument</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#document">document</a></span></code> </td> +</tr> +<tr class="altColor"> <td class="colFirst"><code>private javax.swing.ImageIcon</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#issueIcon">issueIcon</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#localizationManager">localizationManager</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private java.awt.Dimension</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#miscButtonDimension">miscButtonDimension</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private javax.swing.ImageIcon</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#pastebinIcon">pastebinIcon</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private javax.swing.ImageIcon</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#prosperIcon">prosperIcon</a></span></code> </td> </tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JTextPane</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#textPane">textPane</a></span></code> </td> +</tr> </table> <ul class="blockList"> <li class="blockList"><a name="fields.inherited.from.class.java.awt.Component"> @@ -204,7 +243,10 @@ extends java.awt.Component</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#AboutTab-de.griefed.serverpackcreator.i18n.LocalizationManager-">AboutTab</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#AboutTab-de.griefed.serverpackcreator.i18n.LocalizationManager-">AboutTab</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</code> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</td> </tr> </table> </li> @@ -223,7 +265,9 @@ extends java.awt.Component</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>(package private) javax.swing.JComponent</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#aboutTab--">aboutTab</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#aboutTab--">aboutTab</a></span>()</code> +<div class="block">Create the tab for the About-page of ServerpackCreator.</div> +</td> </tr> </table> <ul class="blockList"> @@ -263,6 +307,15 @@ extends java.awt.Component</pre> <pre>private static final org.apache.logging.log4j.Logger appLogger</pre> </li> </ul> +<a name="localizationManager"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>localizationManager</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +</li> +</ul> <a name="miscButtonDimension"> <!-- --> </a> @@ -299,13 +352,76 @@ extends java.awt.Component</pre> <pre>private final javax.swing.ImageIcon prosperIcon</pre> </li> </ul> -<a name="localizationManager"> +<a name="aboutPanel"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>aboutPanel</h4> +<pre>private javax.swing.JComponent aboutPanel</pre> +</li> +</ul> +<a name="constraints"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>constraints</h4> +<pre>private java.awt.GridBagConstraints constraints</pre> +</li> +</ul> +<a name="textPane"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>textPane</h4> +<pre>private javax.swing.JTextPane textPane</pre> +</li> +</ul> +<a name="attributeSet"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>attributeSet</h4> +<pre>private javax.swing.text.SimpleAttributeSet attributeSet</pre> +</li> +</ul> +<a name="document"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>document</h4> +<pre>private javax.swing.text.StyledDocument document</pre> +</li> +</ul> +<a name="buttonCreatePasteBin"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>buttonCreatePasteBin</h4> +<pre>private javax.swing.JButton buttonCreatePasteBin</pre> +</li> +</ul> +<a name="buttonOpenIssue"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>buttonOpenIssue</h4> +<pre>private javax.swing.JButton buttonOpenIssue</pre> +</li> +</ul> +<a name="buttonDiscord"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>localizationManager</h4> -<pre>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +<h4>buttonDiscord</h4> +<pre>private javax.swing.JButton buttonDiscord</pre> </li> </ul> </li> @@ -323,6 +439,14 @@ extends java.awt.Component</pre> <li class="blockList"> <h4>AboutTab</h4> <pre>public AboutTab(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</pre> +<div class="block"><strong>Constructor</strong><p> + Used for Dependency Injection.<p> + Receives an instance of <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> or creates one if the received + one is null. Required for use of localization.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>injectedLocalizationManager</code> - Instance of <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> required for localized log messages.</dd> +</dl> </li> </ul> </li> @@ -340,6 +464,16 @@ extends java.awt.Component</pre> <li class="blockList"> <h4>aboutTab</h4> <pre>javax.swing.JComponent aboutTab()</pre> +<div class="block">Create the tab for the About-page of ServerpackCreator. This tab displays the about text, the list of contributors + to ServerPackCreator and offers three buttons to the user. Left to right: Open PasteBin in the user's browser to + create pastes of the the log files or configuration files or whatever they wish. Open ServerPackCreator's issues + page on GitHub in case the user wants to report an issue. Open the invite link to Griefed's discord server in the + users browser.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>JComponent. Returns a JPanel containing a JTextPane with the about text in a styled document, as well as + the three aforementioned buttons.</dd> +</dl> </li> </ul> </li> diff --git a/docs/de/griefed/serverpackcreator/gui/CreateGui.html b/docs/de/griefed/serverpackcreator/gui/CreateGui.html index 0dc4b6863..b81258b3b 100644 --- a/docs/de/griefed/serverpackcreator/gui/CreateGui.html +++ b/docs/de/griefed/serverpackcreator/gui/CreateGui.html @@ -133,6 +133,14 @@ var activeTableTab = "activeTableTab"; <br> <pre>public class <span class="typeNameLabel">CreateGui</span> extends javax.swing.JPanel</pre> +<div class="block"><strong>Table of methods</strong><br> + <a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#CreateGui-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack-de.griefed.serverpackcreator.CreateServerPack-"><code>CreateGui(LocalizationManager, Configuration, CurseCreateModpack, CreateServerPack)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#mainGUI--"><code>mainGUI()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#createAndShowGUI--"><code>createAndShowGUI()</code></a><p> + This class creates and shows the GUI needed for running ServerPackCreator in....well...GUI mode. Calls <a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#mainGUI--"><code>mainGUI()</code></a> + which then calls <a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#createAndShowGUI--"><code>createAndShowGUI()</code></a> in order to create and show the GUI of ServerPackCreator. Instances of + the <a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui"><code>CreateServerPackTab</code></a>, <a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui"><code>ServerPackCreatorLogTab</code></a>, <a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui"><code>ModloaderInstallerLogTab</code></a>, <a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui"><code>AboutTab</code></a> + are created in the constructor of this class to make sure they are ready when the GUI is created and shown to the user.</div> <dl> <dt><span class="seeLabel">See Also:</span></dt> <dd><a href="../../../../serialized-form.html#de.griefed.serverpackcreator.gui.CreateGui">Serialized Form</a></dd> @@ -204,6 +212,14 @@ extends javax.swing.JPanel</pre> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#configuration">configuration</a></span></code> </td> </tr> <tr class="rowColor"> +<td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#createServerPack">createServerPack</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#curseCreateModpack">curseCreateModpack</a></span></code> </td> +</tr> +<tr class="rowColor"> <td class="colFirst"><code>private java.awt.Image</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#icon">icon</a></span></code> </td> </tr> @@ -212,6 +228,22 @@ extends javax.swing.JPanel</pre> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#localizationManager">localizationManager</a></span></code> </td> </tr> <tr class="rowColor"> +<td class="colFirst"><code>private com.typesafe.config.Config</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#secret">secret</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#secretFile">secretFile</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JLabel</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#serverPackCreatorBanner">serverPackCreatorBanner</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JFrame</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#serverPackCreatorFrame">serverPackCreatorFrame</a></span></code> </td> +</tr> +<tr class="rowColor"> <td class="colFirst"><code>private java.awt.Dimension</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#windowDimension">windowDimension</a></span></code> </td> </tr> @@ -251,8 +283,13 @@ extends javax.swing.JPanel</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#CreateGui-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-">CreateGui</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager, - <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfigCheck)</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#CreateGui-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack-de.griefed.serverpackcreator.CreateServerPack-">CreateGui</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager, + <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfiguration, + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a> injectedCurseCreateModpack, + <a href="../../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a> injectedCreateServerPack)</code> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</td> </tr> </table> </li> @@ -271,11 +308,15 @@ extends javax.swing.JPanel</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>private void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#createAndShowGUI--">createAndShowGUI</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#createAndShowGUI--">createAndShowGUI</a></span>()</code> +<div class="block">Creates the frame in which the banner, tabbed pane with all the tabs, icon and title are displayed and shows it.</div> +</td> </tr> <tr id="i1" class="rowColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#mainGUI--">mainGUI</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#mainGUI--">mainGUI</a></span>()</code> +<div class="block">Shows the GUI from the EDT by using SwingUtilities and it's invokeLater method by calling <a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#createAndShowGUI--"><code>createAndShowGUI()</code></a>.</div> +</td> </tr> </table> <ul class="blockList"> @@ -375,12 +416,66 @@ extends javax.swing.JPanel</pre> <a name="configuration"> <!-- --> </a> -<ul class="blockListLast"> +<ul class="blockList"> <li class="blockList"> <h4>configuration</h4> <pre>private <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> configuration</pre> </li> </ul> +<a name="curseCreateModpack"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>curseCreateModpack</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a> curseCreateModpack</pre> +</li> +</ul> +<a name="createServerPack"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>createServerPack</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a> createServerPack</pre> +</li> +</ul> +<a name="serverPackCreatorFrame"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>serverPackCreatorFrame</h4> +<pre>private javax.swing.JFrame serverPackCreatorFrame</pre> +</li> +</ul> +<a name="serverPackCreatorBanner"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>serverPackCreatorBanner</h4> +<pre>private javax.swing.JLabel serverPackCreatorBanner</pre> +</li> +</ul> +<a name="secretFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>secretFile</h4> +<pre>private java.io.File secretFile</pre> +</li> +</ul> +<a name="secret"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>secret</h4> +<pre>private com.typesafe.config.Config secret</pre> +</li> +</ul> </li> </ul> <!-- ========= CONSTRUCTOR DETAIL ======== --> @@ -389,14 +484,32 @@ extends javax.swing.JPanel</pre> <!-- --> </a> <h3>Constructor Detail</h3> -<a name="CreateGui-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-"> +<a name="CreateGui-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack-de.griefed.serverpackcreator.CreateServerPack-"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>CreateGui</h4> <pre>public CreateGui(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager, - <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfigCheck)</pre> + <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfiguration, + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a> injectedCurseCreateModpack, + <a href="../../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a> injectedCreateServerPack)</pre> +<div class="block"><strong>Constructor</strong><p> + Used for Dependency Injection.<p> + Receives an instance of <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> or creates one if the received + one is null. Required for use of localization.<p> + Receives an instance of <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator"><code>Configuration</code></a> required to successfully and correctly create the server pack.<p> + Receives an instance of <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseCreateModpack</code></a> in case the modpack has to be created from a combination of + CurseForge projectID and fileID, from which to <em>then</em> create the server pack. + Receives an instance of <a href="../../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator"><code>CreateServerPack</code></a> which is required to generate a server pack.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>injectedLocalizationManager</code> - Instance of <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> required for localized log messages.</dd> +<dd><code>injectedConfiguration</code> - Instance of <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator"><code>Configuration</code></a> required to successfully and correctly create the server pack.</dd> +<dd><code>injectedCurseCreateModpack</code> - Instance of <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseCreateModpack</code></a> in case the modpack has to be created from a combination of + CurseForge projectID and fileID, from which to <em>then</em> create the server pack.</dd> +<dd><code>injectedCreateServerPack</code> - Instance of <a href="../../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator"><code>CreateServerPack</code></a> required for the generation of server packs.</dd> +</dl> </li> </ul> </li> @@ -414,6 +527,9 @@ extends javax.swing.JPanel</pre> <li class="blockList"> <h4>mainGUI</h4> <pre>public void mainGUI()</pre> +<div class="block">Shows the GUI from the EDT by using SwingUtilities and it's invokeLater method by calling <a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#createAndShowGUI--"><code>createAndShowGUI()</code></a>. + Sets the font to bold, which may be overridden by the LookAndFeel which gets automatically determined and depends + on the OS ServerPackCreator is run on.</div> </li> </ul> <a name="createAndShowGUI--"> @@ -423,6 +539,7 @@ extends javax.swing.JPanel</pre> <li class="blockList"> <h4>createAndShowGUI</h4> <pre>private void createAndShowGUI()</pre> +<div class="block">Creates the frame in which the banner, tabbed pane with all the tabs, icon and title are displayed and shows it.</div> </li> </ul> </li> diff --git a/docs/de/griefed/serverpackcreator/gui/CreateServerPackTab.html b/docs/de/griefed/serverpackcreator/gui/CreateServerPackTab.html index a30a2928e..eaf81e0e3 100644 --- a/docs/de/griefed/serverpackcreator/gui/CreateServerPackTab.html +++ b/docs/de/griefed/serverpackcreator/gui/CreateServerPackTab.html @@ -118,6 +118,17 @@ var activeTableTab = "activeTableTab"; <br> <pre>public class <span class="typeNameLabel">CreateServerPackTab</span> extends java.awt.Component</pre> +<div class="block">This class creates the tab which displays the labels, textfields, buttons and functions in order to create a new + server pack. Available are:<br> + JLabels and JTextFields for modpackDir, clientMods, copyDirs, javaPath, minecraftVersion, modLoader, modLoaderVersion<br> + Checkboxes for Include- serverInstallation, serverIcon, serverProperties, startScripts, ZIParchive<br> + Buttons opening the file explorer and choosing: modpackDir, clientMods, copyDirs, javaPath, loadConfigFromFile<br> + A button for displaying an information windows which provides detailed explanation of the important parts of the GUI.<br> + The button start the generation of a new server pack.<br> + The label under the button to start the generation of a new server pack, which displays the latest log entry of the + serverpackcreator.log <em>during</em> the creation of a new server pack.<p> + If a configuration file is found during startup of ServerPackCreator, it is automatically loaded into the GUI. + </p></div> <dl> <dt><span class="seeLabel">See Also:</span></dt> <dd><a href="../../../../serialized-form.html#de.griefed.serverpackcreator.gui.CreateServerPackTab">Serialized Form</a></dd> @@ -160,25 +171,145 @@ extends java.awt.Component</pre> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#appLogger">appLogger</a></span></code> </td> </tr> <tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JButton</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#buttonClientMods">buttonClientMods</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JButton</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#buttonCopyDirs">buttonCopyDirs</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JButton</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#buttonGenerateServerPack">buttonGenerateServerPack</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JButton</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#buttonInfoWindow">buttonInfoWindow</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JButton</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#buttonJavaPath">buttonJavaPath</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JButton</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#buttonLoadConfigFromFile">buttonLoadConfigFromFile</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JButton</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#buttonModpackDir">buttonModpackDir</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JCheckBox</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#checkBoxIcon">checkBoxIcon</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JCheckBox</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#checkBoxProperties">checkBoxProperties</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JCheckBox</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#checkBoxScripts">checkBoxScripts</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JCheckBox</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#checkBoxServer">checkBoxServer</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JCheckBox</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#checkBoxZIP">checkBoxZIP</a></span></code> </td> +</tr> +<tr class="rowColor"> <td class="colFirst"><code>private java.awt.Dimension</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#chooserDimension">chooserDimension</a></span></code> </td> </tr> <tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JFileChooser</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#clientModsChooser">clientModsChooser</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JFileChooser</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#configChooser">configChooser</a></span></code> </td> +</tr> +<tr class="altColor"> <td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#configuration">configuration</a></span></code> </td> </tr> <tr class="rowColor"> +<td class="colFirst"><code>private java.awt.GridBagConstraints</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#constraints">constraints</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JFileChooser</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#copyDirsChooser">copyDirsChooser</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#createServerPack">createServerPack</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JComponent</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#createServerPackPanel">createServerPackPanel</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#curseCreateModpack">curseCreateModpack</a></span></code> </td> +</tr> +<tr class="altColor"> <td class="colFirst"><code>private java.awt.Dimension</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#folderButtonDimension">folderButtonDimension</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private javax.swing.ImageIcon</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#folderIcon">folderIcon</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private javax.swing.ImageIcon</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#helpIcon">helpIcon</a></span></code> </td> </tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JScrollPane</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#helpScrollPane">helpScrollPane</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JTextArea</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#helpTextArea">helpTextArea</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JFileChooser</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#javaChooser">javaChooser</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JLabel</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#labelClientMods">labelClientMods</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JLabel</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#labelCopyDirs">labelCopyDirs</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JLabel</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#labelGenerateServerPack">labelGenerateServerPack</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JLabel</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#labelJavaPath">labelJavaPath</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JLabel</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#labelMinecraftVersion">labelMinecraftVersion</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JLabel</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#labelModloader">labelModloader</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JLabel</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#labelModloaderVersion">labelModloaderVersion</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JLabel</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#labelModpackDir">labelModpackDir</a></span></code> </td> +</tr> <tr class="altColor"> <td class="colFirst"><code>private javax.swing.ImageIcon</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#loadIcon">loadIcon</a></span></code> </td> @@ -192,9 +323,41 @@ extends java.awt.Component</pre> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#miscButtonDimension">miscButtonDimension</a></span></code> </td> </tr> <tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JFileChooser</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#modpackDirChooser">modpackDirChooser</a></span></code> </td> +</tr> +<tr class="altColor"> <td class="colFirst"><code>private javax.swing.ImageIcon</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#startGeneration">startGeneration</a></span></code> </td> </tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JTextField</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textClientMods">textClientMods</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JTextField</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textCopyDirs">textCopyDirs</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JTextField</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textJavaPath">textJavaPath</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JTextField</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textMinecraftVersion">textMinecraftVersion</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JTextField</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textModloader">textModloader</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JTextField</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textModloaderVersion">textModloaderVersion</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JTextField</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textModpackDir">textModpackDir</a></span></code> </td> +</tr> </table> <ul class="blockList"> <li class="blockList"><a name="fields.inherited.from.class.java.awt.Component"> @@ -224,8 +387,13 @@ extends java.awt.Component</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#CreateServerPackTab-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-">CreateServerPackTab</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager, - <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfigCheck)</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#CreateServerPackTab-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack-de.griefed.serverpackcreator.CreateServerPack-">CreateServerPackTab</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager, + <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfiguration, + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a> injectedCurseCreateModpack, + <a href="../../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a> injectedCreateServerPack)</code> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</td> </tr> </table> </li> @@ -244,7 +412,9 @@ extends java.awt.Component</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>(package private) javax.swing.JComponent</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#createServerPackTab--">createServerPackTab</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#createServerPackTab--">createServerPackTab</a></span>()</code> +<div class="block">Create the tab which displays every component related to configuring ServerPackCreator and creating a server pack.</div> +</td> </tr> </table> <ul class="blockList"> @@ -284,6 +454,42 @@ extends java.awt.Component</pre> <pre>private static final org.apache.logging.log4j.Logger appLogger</pre> </li> </ul> +<a name="configuration"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>configuration</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> configuration</pre> +</li> +</ul> +<a name="localizationManager"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>localizationManager</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +</li> +</ul> +<a name="curseCreateModpack"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>curseCreateModpack</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a> curseCreateModpack</pre> +</li> +</ul> +<a name="createServerPack"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>createServerPack</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a> createServerPack</pre> +</li> +</ul> <a name="loadIcon"> <!-- --> </a> @@ -347,22 +553,328 @@ extends java.awt.Component</pre> <pre>private final java.awt.Dimension chooserDimension</pre> </li> </ul> -<a name="configuration"> +<a name="createServerPackPanel"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> -<h4>configuration</h4> -<pre>private <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> configuration</pre> +<h4>createServerPackPanel</h4> +<pre>private javax.swing.JComponent createServerPackPanel</pre> </li> </ul> -<a name="localizationManager"> +<a name="helpScrollPane"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>helpScrollPane</h4> +<pre>private javax.swing.JScrollPane helpScrollPane</pre> +</li> +</ul> +<a name="constraints"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>constraints</h4> +<pre>private java.awt.GridBagConstraints constraints</pre> +</li> +</ul> +<a name="labelModpackDir"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>labelModpackDir</h4> +<pre>private javax.swing.JLabel labelModpackDir</pre> +</li> +</ul> +<a name="labelClientMods"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>labelClientMods</h4> +<pre>private javax.swing.JLabel labelClientMods</pre> +</li> +</ul> +<a name="labelCopyDirs"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>labelCopyDirs</h4> +<pre>private javax.swing.JLabel labelCopyDirs</pre> +</li> +</ul> +<a name="labelJavaPath"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>labelJavaPath</h4> +<pre>private javax.swing.JLabel labelJavaPath</pre> +</li> +</ul> +<a name="labelMinecraftVersion"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>labelMinecraftVersion</h4> +<pre>private javax.swing.JLabel labelMinecraftVersion</pre> +</li> +</ul> +<a name="labelModloader"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>labelModloader</h4> +<pre>private javax.swing.JLabel labelModloader</pre> +</li> +</ul> +<a name="labelModloaderVersion"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>labelModloaderVersion</h4> +<pre>private javax.swing.JLabel labelModloaderVersion</pre> +</li> +</ul> +<a name="labelGenerateServerPack"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>labelGenerateServerPack</h4> +<pre>private javax.swing.JLabel labelGenerateServerPack</pre> +</li> +</ul> +<a name="textModpackDir"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>textModpackDir</h4> +<pre>private javax.swing.JTextField textModpackDir</pre> +</li> +</ul> +<a name="textClientMods"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>textClientMods</h4> +<pre>private javax.swing.JTextField textClientMods</pre> +</li> +</ul> +<a name="textCopyDirs"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>textCopyDirs</h4> +<pre>private javax.swing.JTextField textCopyDirs</pre> +</li> +</ul> +<a name="textJavaPath"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>textJavaPath</h4> +<pre>private javax.swing.JTextField textJavaPath</pre> +</li> +</ul> +<a name="textMinecraftVersion"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>textMinecraftVersion</h4> +<pre>private javax.swing.JTextField textMinecraftVersion</pre> +</li> +</ul> +<a name="textModloader"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>textModloader</h4> +<pre>private javax.swing.JTextField textModloader</pre> +</li> +</ul> +<a name="textModloaderVersion"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>textModloaderVersion</h4> +<pre>private javax.swing.JTextField textModloaderVersion</pre> +</li> +</ul> +<a name="helpTextArea"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>helpTextArea</h4> +<pre>private javax.swing.JTextArea helpTextArea</pre> +</li> +</ul> +<a name="checkBoxServer"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>checkBoxServer</h4> +<pre>private javax.swing.JCheckBox checkBoxServer</pre> +</li> +</ul> +<a name="checkBoxIcon"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>checkBoxIcon</h4> +<pre>private javax.swing.JCheckBox checkBoxIcon</pre> +</li> +</ul> +<a name="checkBoxProperties"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>checkBoxProperties</h4> +<pre>private javax.swing.JCheckBox checkBoxProperties</pre> +</li> +</ul> +<a name="checkBoxScripts"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>checkBoxScripts</h4> +<pre>private javax.swing.JCheckBox checkBoxScripts</pre> +</li> +</ul> +<a name="checkBoxZIP"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>checkBoxZIP</h4> +<pre>private javax.swing.JCheckBox checkBoxZIP</pre> +</li> +</ul> +<a name="buttonModpackDir"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>buttonModpackDir</h4> +<pre>private javax.swing.JButton buttonModpackDir</pre> +</li> +</ul> +<a name="buttonClientMods"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>buttonClientMods</h4> +<pre>private javax.swing.JButton buttonClientMods</pre> +</li> +</ul> +<a name="buttonCopyDirs"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>buttonCopyDirs</h4> +<pre>private javax.swing.JButton buttonCopyDirs</pre> +</li> +</ul> +<a name="buttonJavaPath"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>buttonJavaPath</h4> +<pre>private javax.swing.JButton buttonJavaPath</pre> +</li> +</ul> +<a name="buttonLoadConfigFromFile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>buttonLoadConfigFromFile</h4> +<pre>private javax.swing.JButton buttonLoadConfigFromFile</pre> +</li> +</ul> +<a name="buttonInfoWindow"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>buttonInfoWindow</h4> +<pre>private javax.swing.JButton buttonInfoWindow</pre> +</li> +</ul> +<a name="buttonGenerateServerPack"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>buttonGenerateServerPack</h4> +<pre>private javax.swing.JButton buttonGenerateServerPack</pre> +</li> +</ul> +<a name="modpackDirChooser"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>modpackDirChooser</h4> +<pre>private javax.swing.JFileChooser modpackDirChooser</pre> +</li> +</ul> +<a name="clientModsChooser"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>clientModsChooser</h4> +<pre>private javax.swing.JFileChooser clientModsChooser</pre> +</li> +</ul> +<a name="copyDirsChooser"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>copyDirsChooser</h4> +<pre>private javax.swing.JFileChooser copyDirsChooser</pre> +</li> +</ul> +<a name="javaChooser"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>javaChooser</h4> +<pre>private javax.swing.JFileChooser javaChooser</pre> +</li> +</ul> +<a name="configChooser"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> -<h4>localizationManager</h4> -<pre>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +<h4>configChooser</h4> +<pre>private javax.swing.JFileChooser configChooser</pre> </li> </ul> </li> @@ -373,14 +885,32 @@ extends java.awt.Component</pre> <!-- --> </a> <h3>Constructor Detail</h3> -<a name="CreateServerPackTab-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-"> +<a name="CreateServerPackTab-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack-de.griefed.serverpackcreator.CreateServerPack-"> <!-- --> </a> <ul class="blockListLast"> <li class="blockList"> <h4>CreateServerPackTab</h4> <pre>public CreateServerPackTab(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager, - <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfigCheck)</pre> + <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> injectedConfiguration, + <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a> injectedCurseCreateModpack, + <a href="../../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a> injectedCreateServerPack)</pre> +<div class="block"><strong>Constructor</strong><p> + Used for Dependency Injection.<p> + Receives an instance of <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> or creates one if the received + one is null. Required for use of localization.<p> + Receives an instance of <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator"><code>Configuration</code></a> required to successfully and correctly create the server pack.<p> + Receives an instance of <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseCreateModpack</code></a> in case the modpack has to be created from a combination of + CurseForge projectID and fileID, from which to <em>then</em> create the server pack. + Receives an instance of <a href="../../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator"><code>CreateServerPack</code></a> which is required to generate a server pack.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>injectedLocalizationManager</code> - Instance of <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> required for localized log messages.</dd> +<dd><code>injectedConfiguration</code> - Instance of <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator"><code>Configuration</code></a> required to successfully and correctly create the server pack.</dd> +<dd><code>injectedCurseCreateModpack</code> - Instance of <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseCreateModpack</code></a> in case the modpack has to be created from a combination of + CurseForge projectID and fileID, from which to <em>then</em> create the server pack.</dd> +<dd><code>injectedCreateServerPack</code> - Instance of <a href="../../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator"><code>CreateServerPack</code></a> required for the generation of server packs.</dd> +</dl> </li> </ul> </li> @@ -398,6 +928,11 @@ extends java.awt.Component</pre> <li class="blockList"> <h4>createServerPackTab</h4> <pre>javax.swing.JComponent createServerPackTab()</pre> +<div class="block">Create the tab which displays every component related to configuring ServerPackCreator and creating a server pack.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>JComponent. Returns a JPanel everything needed for displaying the CreateServerPackTab.</dd> +</dl> </li> </ul> </li> diff --git a/docs/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html b/docs/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html index aea07d964..b01639d66 100644 --- a/docs/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html +++ b/docs/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html @@ -116,8 +116,13 @@ var activeTableTab = "activeTableTab"; </dl> <hr> <br> -<pre>class <span class="typeNameLabel">ModloaderInstallerLogTab</span> +<pre>public class <span class="typeNameLabel">ModloaderInstallerLogTab</span> extends java.awt.Component</pre> +<div class="block">This class creates the tab which display the latest modloader_installer.log tailer.</div> +<dl> +<dt><span class="seeLabel">See Also:</span></dt> +<dd><a href="../../../../serialized-form.html#de.griefed.serverpackcreator.gui.ModloaderInstallerLogTab">Serialized Form</a></dd> +</dl> </li> </ul> </div> @@ -152,9 +157,25 @@ extends java.awt.Component</pre> <th class="colLast" scope="col">Field and Description</th> </tr> <tr class="altColor"> +<td class="colFirst"><code>private java.awt.GridBagConstraints</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#constraints">constraints</a></span></code> </td> +</tr> +<tr class="rowColor"> <td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#localizationManager">localizationManager</a></span></code> </td> </tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JComponent</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#modloaderInstallerLogPanel">modloaderInstallerLogPanel</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JScrollPane</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#scrollPane">scrollPane</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JTextArea</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#textArea">textArea</a></span></code> </td> +</tr> </table> <ul class="blockList"> <li class="blockList"><a name="fields.inherited.from.class.java.awt.Component"> @@ -184,7 +205,10 @@ extends java.awt.Component</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#ModloaderInstallerLogTab-de.griefed.serverpackcreator.i18n.LocalizationManager-">ModloaderInstallerLogTab</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#ModloaderInstallerLogTab-de.griefed.serverpackcreator.i18n.LocalizationManager-">ModloaderInstallerLogTab</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</code> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</td> </tr> </table> </li> @@ -203,7 +227,10 @@ extends java.awt.Component</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>(package private) javax.swing.JComponent</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#modloaderInstallerLogTab--">modloaderInstallerLogTab</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#modloaderInstallerLogTab--">modloaderInstallerLogTab</a></span>()</code> +<div class="block">Create the tab for the modloader_installer.log tailer in a JScrollPane with an always available vertical scrollbar + and a horizontal scrollbar available as needed.</div> +</td> </tr> </table> <ul class="blockList"> @@ -237,12 +264,48 @@ extends java.awt.Component</pre> <a name="localizationManager"> <!-- --> </a> -<ul class="blockListLast"> +<ul class="blockList"> <li class="blockList"> <h4>localizationManager</h4> <pre>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> </li> </ul> +<a name="modloaderInstallerLogPanel"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>modloaderInstallerLogPanel</h4> +<pre>private javax.swing.JComponent modloaderInstallerLogPanel</pre> +</li> +</ul> +<a name="constraints"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>constraints</h4> +<pre>private java.awt.GridBagConstraints constraints</pre> +</li> +</ul> +<a name="textArea"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>textArea</h4> +<pre>private javax.swing.JTextArea textArea</pre> +</li> +</ul> +<a name="scrollPane"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>scrollPane</h4> +<pre>private javax.swing.JScrollPane scrollPane</pre> +</li> +</ul> </li> </ul> <!-- ========= CONSTRUCTOR DETAIL ======== --> @@ -258,6 +321,14 @@ extends java.awt.Component</pre> <li class="blockList"> <h4>ModloaderInstallerLogTab</h4> <pre>public ModloaderInstallerLogTab(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</pre> +<div class="block"><strong>Constructor</strong><p> + Used for Dependency Injection.<p> + Receives an instance of <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> or creates one if the received + one is null. Required for use of localization.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>injectedLocalizationManager</code> - Instance of <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> required for localized log messages.</dd> +</dl> </li> </ul> </li> @@ -275,6 +346,15 @@ extends java.awt.Component</pre> <li class="blockList"> <h4>modloaderInstallerLogTab</h4> <pre>javax.swing.JComponent modloaderInstallerLogTab()</pre> +<div class="block">Create the tab for the modloader_installer.log tailer in a JScrollPane with an always available vertical scrollbar + and a horizontal scrollbar available as needed. Uses Apache commons-io's <code>Tailer</code> to keep the JTextArea up + to date with the latest log entries. Should any line contain "Starting Fabric installation." or + "Starting Forge installation." the textarea is cleared.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>JComponent. Returns a JPanel containing a JScrollPane containing the JTextArea with the latest + modloader_installer.log entries.</dd> +</dl> </li> </ul> </li> diff --git a/docs/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html b/docs/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html index aac0717bc..3c42bf0d9 100644 --- a/docs/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html +++ b/docs/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html @@ -116,8 +116,13 @@ var activeTableTab = "activeTableTab"; </dl> <hr> <br> -<pre>class <span class="typeNameLabel">ServerPackCreatorLogTab</span> +<pre>public class <span class="typeNameLabel">ServerPackCreatorLogTab</span> extends java.awt.Component</pre> +<div class="block">This class creates the tab which display the latest serverpackcreator.log tailer.</div> +<dl> +<dt><span class="seeLabel">See Also:</span></dt> +<dd><a href="../../../../serialized-form.html#de.griefed.serverpackcreator.gui.ServerPackCreatorLogTab">Serialized Form</a></dd> +</dl> </li> </ul> </div> @@ -152,9 +157,25 @@ extends java.awt.Component</pre> <th class="colLast" scope="col">Field and Description</th> </tr> <tr class="altColor"> +<td class="colFirst"><code>private java.awt.GridBagConstraints</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#constraints">constraints</a></span></code> </td> +</tr> +<tr class="rowColor"> <td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#localizationManager">localizationManager</a></span></code> </td> </tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JScrollPane</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#scrollPane">scrollPane</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.JComponent</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#serverPackCreatorLogPanel">serverPackCreatorLogPanel</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JTextArea</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#textArea">textArea</a></span></code> </td> +</tr> </table> <ul class="blockList"> <li class="blockList"><a name="fields.inherited.from.class.java.awt.Component"> @@ -184,7 +205,10 @@ extends java.awt.Component</pre> <th class="colOne" scope="col">Constructor and Description</th> </tr> <tr class="altColor"> -<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#ServerPackCreatorLogTab-de.griefed.serverpackcreator.i18n.LocalizationManager-">ServerPackCreatorLogTab</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</code> </td> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#ServerPackCreatorLogTab-de.griefed.serverpackcreator.i18n.LocalizationManager-">ServerPackCreatorLogTab</a></span>(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</code> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</td> </tr> </table> </li> @@ -203,7 +227,10 @@ extends java.awt.Component</pre> </tr> <tr id="i0" class="altColor"> <td class="colFirst"><code>(package private) javax.swing.JComponent</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#serverPackCreatorLogTab--">serverPackCreatorLogTab</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#serverPackCreatorLogTab--">serverPackCreatorLogTab</a></span>()</code> +<div class="block">Create the tab for the serverpackcreator.log tailer in a JScrollPane with an always available vertical scrollbar + and a horizontal scrollbar available as needed.</div> +</td> </tr> </table> <ul class="blockList"> @@ -237,12 +264,48 @@ extends java.awt.Component</pre> <a name="localizationManager"> <!-- --> </a> -<ul class="blockListLast"> +<ul class="blockList"> <li class="blockList"> <h4>localizationManager</h4> <pre>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> </li> </ul> +<a name="serverPackCreatorLogPanel"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>serverPackCreatorLogPanel</h4> +<pre>private javax.swing.JComponent serverPackCreatorLogPanel</pre> +</li> +</ul> +<a name="constraints"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>constraints</h4> +<pre>private java.awt.GridBagConstraints constraints</pre> +</li> +</ul> +<a name="textArea"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>textArea</h4> +<pre>private javax.swing.JTextArea textArea</pre> +</li> +</ul> +<a name="scrollPane"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>scrollPane</h4> +<pre>private javax.swing.JScrollPane scrollPane</pre> +</li> +</ul> </li> </ul> <!-- ========= CONSTRUCTOR DETAIL ======== --> @@ -258,6 +321,14 @@ extends java.awt.Component</pre> <li class="blockList"> <h4>ServerPackCreatorLogTab</h4> <pre>public ServerPackCreatorLogTab(<a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> injectedLocalizationManager)</pre> +<div class="block"><strong>Constructor</strong><p> + Used for Dependency Injection.<p> + Receives an instance of <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> or creates one if the received + one is null. Required for use of localization.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>injectedLocalizationManager</code> - Instance of <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a> required for localized log messages.</dd> +</dl> </li> </ul> </li> @@ -275,6 +346,15 @@ extends java.awt.Component</pre> <li class="blockList"> <h4>serverPackCreatorLogTab</h4> <pre>javax.swing.JComponent serverPackCreatorLogTab()</pre> +<div class="block">Create the tab for the serverpackcreator.log tailer in a JScrollPane with an always available vertical scrollbar + and a horizontal scrollbar available as needed. Uses Apache commons-io's <code>Tailer</code> to keep the JTextArea up + to date with the latest log entries. Should any line contain "Checking entered configuration." the textarea is + cleared.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>JComponent. Returns a JPanel containing a JScrollPane containing the JTextArea with the latest + serverpackcreator.log entries.</dd> +</dl> </li> </ul> </li> diff --git a/docs/de/griefed/serverpackcreator/gui/package-summary.html b/docs/de/griefed/serverpackcreator/gui/package-summary.html index 2215a12ad..4103dc391 100644 --- a/docs/de/griefed/serverpackcreator/gui/package-summary.html +++ b/docs/de/griefed/serverpackcreator/gui/package-summary.html @@ -82,23 +82,40 @@ <tbody> <tr class="altColor"> <td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></td> -<td class="colLast"> </td> +<td class="colLast"> +<div class="block">This class creates the tab which displays the About-tab, with the about text, the list of contributors, buttons for + opening PasteBin in your browser, opening ServerPackCreator's issue page on GitHub and for opening the invite link + to Griefed#s discord server in your browser.</div> +</td> </tr> <tr class="rowColor"> <td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></td> -<td class="colLast"> </td> +<td class="colLast"> +<div class="block"><strong>Table of methods</strong><br> + <a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#CreateGui-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack-de.griefed.serverpackcreator.CreateServerPack-"><code>CreateGui.CreateGui(LocalizationManager, Configuration, CurseCreateModpack, CreateServerPack)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#mainGUI--"><code>CreateGui.mainGUI()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#createAndShowGUI--"><code>CreateGui.createAndShowGUI()</code></a> + This class creates and shows the GUI needed for running ServerPackCreator in....well...GUI mode.</div> +</td> </tr> <tr class="altColor"> <td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></td> -<td class="colLast"> </td> +<td class="colLast"> +<div class="block">This class creates the tab which displays the labels, textfields, buttons and functions in order to create a new + server pack.</div> +</td> </tr> <tr class="rowColor"> <td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a></td> -<td class="colLast"> </td> +<td class="colLast"> +<div class="block">This class creates the tab which display the latest modloader_installer.log tailer.</div> +</td> </tr> <tr class="altColor"> <td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></td> -<td class="colLast"> </td> +<td class="colLast"> +<div class="block">This class creates the tab which display the latest serverpackcreator.log tailer.</div> +</td> </tr> </tbody> </table> diff --git a/docs/de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html b/docs/de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html index 38e9f9856..f9569c952 100644 --- a/docs/de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html +++ b/docs/de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html @@ -117,6 +117,12 @@ <br> <pre>public class <span class="typeNameLabel">IncorrectLanguageException</span> extends java.lang.Exception</pre> +<div class="block"><strong>Table of Exceptions</strong><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html#IncorrectLanguageException--"><code>IncorrectLanguageException()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html#IncorrectLanguageException-java.lang.String-"><code>IncorrectLanguageException(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html#IncorrectLanguageException-java.lang.Throwable-"><code>IncorrectLanguageException(Throwable)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html#IncorrectLanguageException-java.lang.String-java.lang.Throwable-"><code>IncorrectLanguageException(String, Throwable)</code></a><p> + Provides exceptions to <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a></div> <dl> <dt><span class="seeLabel">See Also:</span></dt> <dd><a href="../../../../serialized-form.html#de.griefed.serverpackcreator.i18n.IncorrectLanguageException">Serialized Form</a></dd> diff --git a/docs/de/griefed/serverpackcreator/i18n/LocalizationManager.html b/docs/de/griefed/serverpackcreator/i18n/LocalizationManager.html index e42752bb2..5c4a57f8a 100644 --- a/docs/de/griefed/serverpackcreator/i18n/LocalizationManager.html +++ b/docs/de/griefed/serverpackcreator/i18n/LocalizationManager.html @@ -109,13 +109,25 @@ var activeTableTab = "activeTableTab"; <br> <pre>public class <span class="typeNameLabel">LocalizationManager</span> extends java.lang.Object</pre> -<div class="block">This class is localization manager for your application. - <p>To use it, firstly run LocalizationManager.init(). - Then use LocalizationManager.getLocalizedString() to find the localized string in config file. - All localization config files need to be stored in <code>resources/i18n</code> directory +<div class="block"><strong>Table of methods</strong><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getSupportedLanguages--"><code>getSupportedLanguages()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLangPropertiesFile--"><code>getLangPropertiesFile()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocale--"><code>getLocale()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.lang.String-"><code>init(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.io.File-"><code>init(File)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#init--"><code>init()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocalizedString-java.lang.String-"><code>getLocalizedString(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#checkLocaleFile--"><code>checkLocaleFile()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#writeLocaleToFile-java.lang.String-"><code>writeLocaleToFile(String)</code></a> + <p> + This is the localizationManager for ServerPackCreator.<br> + To use it, initialize it by calling <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#init--"><code>init()</code></a>. + Then use <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocalizedString-java.lang.String-"><code>getLocalizedString(String)</code></a> to use a language key from the resource bundle corresponding to the + specified locale. If no locale is provided during the launch of ServerPackCreator, en_US is used by default.<br> + All localization properties-files need to be stored in the <code>de/griefed/resources/lang/</code>-directory and be named using following pattern: lang_{language code in lowercase}_{country code in lowercase}. - For example: lang_en_us.lang.</p> - Currently supports only strings to be used in localized fields.</div> + For example: <code>lang_en_us.properties</code>.<br> + Currently only supports Strings to be used in localized fields.</div> </li> </ul> </div> @@ -141,7 +153,7 @@ extends java.lang.Object</pre> <tr class="rowColor"> <td class="colFirst"><code>private java.util.Map<java.lang.String,java.lang.String></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#currentLanguage">currentLanguage</a></span></code> -<div class="block">Current language of application, mapped for easier further reference.</div> +<div class="block">Current language of ServerPackCreator, mapped for easier further reference.</div> </td> </tr> <tr class="altColor"> @@ -161,12 +173,14 @@ extends java.lang.Object</pre> <tr class="rowColor"> <td class="colFirst"><code>private java.util.ResourceBundle</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#localeResources">localeResources</a></span></code> -<div class="block">Localized strings that application uses.</div> +<div class="block">Localized strings which ServerPackCreator uses.</div> </td> </tr> <tr class="altColor"> <td class="colFirst"><code>private java.lang.String[]</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#SUPPORTED_LANGUAGES">SUPPORTED_LANGUAGES</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#SUPPORTED_LANGUAGES">SUPPORTED_LANGUAGES</a></span></code> +<div class="block">Languages supported by ServerPackCreator.</div> +</td> </tr> </table> </li> @@ -201,47 +215,58 @@ extends java.lang.Object</pre> <th class="colLast" scope="col">Method and Description</th> </tr> <tr id="i0" class="altColor"> -<td class="colFirst"><code>boolean</code></td> +<td class="colFirst"><code>void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#checkLocaleFile--">checkLocaleFile</a></span>()</code> -<div class="block">Check for existence of a lang.properties-file and if found assign language specified therein.</div> +<div class="block">Check for existence of a lang.properties file and, if found, assign the language specified therein.</div> </td> </tr> <tr id="i1" class="rowColor"> <td class="colFirst"><code>(package private) java.io.File</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLangPropertiesFile--">getLangPropertiesFile</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLangPropertiesFile--">getLangPropertiesFile</a></span>()</code> +<div class="block">Getter for the lang.properties file which will set the locale for ServerPackCreator.</div> +</td> </tr> <tr id="i2" class="altColor"> <td class="colFirst"><code>java.lang.String</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocale--">getLocale</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocale--">getLocale</a></span>()</code> +<div class="block">Getter for a String containing the currently used language.</div> +</td> </tr> <tr id="i3" class="rowColor"> <td class="colFirst"><code>java.lang.String</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocalizedString-java.lang.String-">getLocalizedString</a></span>(java.lang.String languageKey)</code> -<div class="block">Gets localized string from localization resource bundle.</div> +<div class="block">Acquires a localized String for the provided language key from the initialized locale resource.</div> </td> </tr> <tr id="i4" class="altColor"> <td class="colFirst"><code>(package private) java.lang.String[]</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getSupportedLanguages--">getSupportedLanguages</a></span>()</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getSupportedLanguages--">getSupportedLanguages</a></span>()</code> +<div class="block">Getter for the array of languages supported by ServerPackCreator.</div> +</td> </tr> <tr id="i5" class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#init--">init</a></span>()</code> -<div class="block">Initializer with default localization properties path.</div> +<div class="block">Initialize the LocalizationManager with en_us as the locale.</div> </td> </tr> <tr id="i6" class="altColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.io.File-">init</a></span>(java.io.File localePropertiesFile)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.io.File-">init</a></span>(java.io.File localePropertiesFile)</code> +<div class="block">Initializes the LocalizationManager with a provided localePropertiesFile.</div> +</td> </tr> <tr id="i7" class="rowColor"> <td class="colFirst"><code>void</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.lang.String-">init</a></span>(java.lang.String locale)</code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.lang.String-">init</a></span>(java.lang.String locale)</code> +<div class="block">Initializes the LocalizationManager with a provided locale.</div> +</td> </tr> <tr id="i8" class="altColor"> <td class="colFirst"><code>(package private) void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#writeLocaleToFile-java.lang.String-">writeLocaleToFile</a></span>(java.lang.String locale)</code> -<div class="block">Writes the specified locale from -lang your_locale to a lang.properties file to ensure every subsequent start of serverpackcreator is executed using said locale.</div> +<div class="block">Writes the specified locale from -lang your_locale to a lang.properties file to ensure every subsequent start + of serverpackcreator is executed using said locale.</div> </td> </tr> </table> @@ -291,7 +316,7 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>currentLanguage</h4> <pre>private java.util.Map<java.lang.String,java.lang.String> currentLanguage</pre> -<div class="block">Current language of application, mapped for easier further reference.</div> +<div class="block">Current language of ServerPackCreator, mapped for easier further reference.</div> </li> </ul> <a name="localeResources"> @@ -301,7 +326,7 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>localeResources</h4> <pre>private java.util.ResourceBundle localeResources</pre> -<div class="block">Localized strings that application uses.</div> +<div class="block">Localized strings which ServerPackCreator uses.</div> </li> </ul> <a name="LANGUAGE_MAP_PATH"> @@ -338,6 +363,7 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>SUPPORTED_LANGUAGES</h4> <pre>private final java.lang.String[] SUPPORTED_LANGUAGES</pre> +<div class="block">Languages supported by ServerPackCreator.</div> </li> </ul> </li> @@ -372,6 +398,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getSupportedLanguages</h4> <pre>java.lang.String[] getSupportedLanguages()</pre> +<div class="block">Getter for the array of languages supported by ServerPackCreator.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String Array. Returns the array of languages supported by ServerPackCreator.</dd> +</dl> </li> </ul> <a name="getLangPropertiesFile--"> @@ -381,6 +412,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getLangPropertiesFile</h4> <pre>java.io.File getLangPropertiesFile()</pre> +<div class="block">Getter for the lang.properties file which will set the locale for ServerPackCreator.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>File. Returns the file which will set the locale for ServerPackCreator.</dd> +</dl> </li> </ul> <a name="getLocale--"> @@ -390,6 +426,11 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getLocale</h4> <pre>public java.lang.String getLocale()</pre> +<div class="block">Getter for a String containing the currently used language.</div> +<dl> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns a String containing the currently used language.</dd> +</dl> </li> </ul> <a name="init-java.lang.String-"> @@ -400,11 +441,17 @@ extends java.lang.Object</pre> <h4>init</h4> <pre>public void init(java.lang.String locale) throws <a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n">IncorrectLanguageException</a></pre> +<div class="block">Initializes the LocalizationManager with a provided locale. + Calls<br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getSupportedLanguages--"><code>getSupportedLanguages()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocalizedString-java.lang.String-"><code>getLocalizedString(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#writeLocaleToFile-java.lang.String-"><code>writeLocaleToFile(String)</code></a></div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> <dd><code>locale</code> - Locale to be used by application in this run.</dd> <dt><span class="throwsLabel">Throws:</span></dt> -<dd><code><a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n">IncorrectLanguageException</a></code> - Thrown if the language specified in the properties file is not supported by SPC or specified in the invalid format.</dd> +<dd><code><a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n">IncorrectLanguageException</a></code> - Thrown if the language specified in the properties file is not supported by + ServerPackCreator or specified in the invalid format.</dd> </dl> </li> </ul> @@ -416,11 +463,13 @@ extends java.lang.Object</pre> <h4>init</h4> <pre>public void init(java.io.File localePropertiesFile) throws <a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n">IncorrectLanguageException</a></pre> +<div class="block">Initializes the LocalizationManager with a provided localePropertiesFile.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>localePropertiesFile</code> - Path to the properties file with the language specified.</dd> +<dd><code>localePropertiesFile</code> - Path to the locale properties file which specifies the language to use.</dd> <dt><span class="throwsLabel">Throws:</span></dt> -<dd><code><a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n">IncorrectLanguageException</a></code> - Thrown if the language specified in the properties file is not supported by SPC or specified in the invalid format.</dd> +<dd><code><a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n">IncorrectLanguageException</a></code> - Thrown if the language specified in the properties file is not supported by + ServerPackCreator or specified in the invalid format.</dd> </dl> </li> </ul> @@ -431,7 +480,7 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>init</h4> <pre>public void init()</pre> -<div class="block">Initializer with default localization properties path.</div> +<div class="block">Initialize the LocalizationManager with en_us as the locale.</div> </li> </ul> <a name="getLocalizedString-java.lang.String-"> @@ -441,12 +490,12 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>getLocalizedString</h4> <pre>public java.lang.String getLocalizedString(java.lang.String languageKey)</pre> -<div class="block">Gets localized string from localization resource bundle.</div> +<div class="block">Acquires a localized String for the provided language key from the initialized locale resource.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> <dd><code>languageKey</code> - The language key to search for.</dd> <dt><span class="returnLabel">Returns:</span></dt> -<dd>Localized string that is referred by the language key.</dd> +<dd>Localized string that is referred to by the language key.</dd> </dl> </li> </ul> @@ -456,13 +505,11 @@ extends java.lang.Object</pre> <ul class="blockList"> <li class="blockList"> <h4>checkLocaleFile</h4> -<pre>public boolean checkLocaleFile()</pre> -<div class="block">Check for existence of a lang.properties-file and if found assign language specified therein. If assigning the specified language fails because it is not supported, default to en_US. - This method should not contain the LocalizationManager, as the initialization of said manager is called from here. Therefore, localized string are not yet available.</div> -<dl> -<dt><span class="returnLabel">Returns:</span></dt> -<dd>Always returns true. Dirty hack until I one day figure out how to init Localization before UI start correctly.</dd> -</dl> +<pre>public void checkLocaleFile()</pre> +<div class="block">Check for existence of a lang.properties file and, if found, assign the language specified therein. + If assigning the specified language fails because it is not supported, default to en_us. + This method should <strong>not</strong> call <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocalizedString-java.lang.String-"><code>getLocalizedString(String)</code></a>, as the initialization of + said manager is called from here. Therefore, localized strings are not yet available.</div> </li> </ul> <a name="writeLocaleToFile-java.lang.String-"> @@ -472,11 +519,13 @@ extends java.lang.Object</pre> <li class="blockList"> <h4>writeLocaleToFile</h4> <pre>void writeLocaleToFile(java.lang.String locale)</pre> -<div class="block">Writes the specified locale from -lang your_locale to a lang.properties file to ensure every subsequent start of serverpackcreator is executed using said locale.</div> +<div class="block">Writes the specified locale from -lang your_locale to a lang.properties file to ensure every subsequent start + of serverpackcreator is executed using said locale. This method should <strong>not</strong> call + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocalizedString-java.lang.String-"><code>getLocalizedString(String)</code></a>, as the initialization of said manager is called from here. Therefore, + localized strings are not yet available.</div> <dl> <dt><span class="paramLabel">Parameters:</span></dt> -<dd><code>locale</code> - The locale the user specified when they ran serverpackcreator with -lang -your_locale. - This method should not contain the LocalizationManager, as the initialization of said manager is called from here. Therefore, localized string are not yet available.</dd> +<dd><code>locale</code> - The locale the user specified when they ran serverpackcreator with -lang -your_locale.</dd> </dl> </li> </ul> diff --git a/docs/de/griefed/serverpackcreator/i18n/package-summary.html b/docs/de/griefed/serverpackcreator/i18n/package-summary.html index 96f5915a6..a3ea2b1fe 100644 --- a/docs/de/griefed/serverpackcreator/i18n/package-summary.html +++ b/docs/de/griefed/serverpackcreator/i18n/package-summary.html @@ -83,7 +83,18 @@ <tr class="altColor"> <td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></td> <td class="colLast"> -<div class="block">This class is localization manager for your application.</div> +<div class="block"><strong>Table of methods</strong><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getSupportedLanguages--"><code>getSupportedLanguages()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLangPropertiesFile--"><code>getLangPropertiesFile()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocale--"><code>getLocale()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.lang.String-"><code>init(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.io.File-"><code>init(File)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#init--"><code>init()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocalizedString-java.lang.String-"><code>getLocalizedString(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#checkLocaleFile--"><code>checkLocaleFile()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html#writeLocaleToFile-java.lang.String-"><code>writeLocaleToFile(String)</code></a> + + This is the localizationManager for ServerPackCreator.</div> </td> </tr> </tbody> @@ -99,7 +110,14 @@ <tbody> <tr class="altColor"> <td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n">IncorrectLanguageException</a></td> -<td class="colLast"> </td> +<td class="colLast"> +<div class="block"><strong>Table of Exceptions</strong><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html#IncorrectLanguageException--"><code>IncorrectLanguageException.IncorrectLanguageException()</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html#IncorrectLanguageException-java.lang.String-"><code>IncorrectLanguageException.IncorrectLanguageException(String)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html#IncorrectLanguageException-java.lang.Throwable-"><code>IncorrectLanguageException.IncorrectLanguageException(Throwable)</code></a><br> + <a href="../../../../de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html#IncorrectLanguageException-java.lang.String-java.lang.Throwable-"><code>IncorrectLanguageException.IncorrectLanguageException(String, Throwable)</code></a> + Provides exceptions to <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a></div> +</td> </tr> </tbody> </table> diff --git a/docs/de/griefed/serverpackcreator/package-summary.html b/docs/de/griefed/serverpackcreator/package-summary.html index 1eb964f52..f606d08ba 100644 --- a/docs/de/griefed/serverpackcreator/package-summary.html +++ b/docs/de/griefed/serverpackcreator/package-summary.html @@ -82,19 +82,39 @@ <tbody> <tr class="altColor"> <td class="colFirst"><a href="../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></td> -<td class="colLast"> </td> +<td class="colLast"> +<div class="block"><strong>Table of methods</strong> + 1.</div> +</td> </tr> <tr class="rowColor"> <td class="colFirst"><a href="../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></td> -<td class="colLast"> </td> +<td class="colLast"> +<div class="block"><strong>Table of methods</strong> + 1.</div> +</td> </tr> <tr class="altColor"> <td class="colFirst"><a href="../../../de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></td> -<td class="colLast"> </td> +<td class="colLast"> +<div class="block"><strong>Table of methods</strong> + + 1.</div> +</td> </tr> <tr class="rowColor"> <td class="colFirst"><a href="../../../de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator">Main</a></td> -<td class="colLast"> </td> +<td class="colLast"> +<div class="block"><strong>Table of methods</strong> + + <a href="../../../de/griefed/serverpackcreator/Main.html#main-java.lang.String:A-"><code>Main.main(String[])</code></a> + + Depending on the passed commandline arguments and whether ServerPackCreator is run in a headless environment, + one of the following modes will be entered: + <strong>-cgen</strong> + When ServerPackCreator is run with the <code>-cgen</code>-argument, you will be guided through a step-by-step + generation of a new configuration file.</div> +</td> </tr> </tbody> </table> diff --git a/docs/index-all.html b/docs/index-all.html index 20f3a8570..a54654d17 100644 --- a/docs/index-all.html +++ b/docs/index-all.html @@ -72,12 +72,23 @@ </a> <h2 class="title">A</h2> <dl> -<dt><a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">AboutTab</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#aboutPanel">aboutPanel</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> <dd> </dd> +<dt><a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">AboutTab</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> +<dd> +<div class="block">This class creates the tab which displays the About-tab, with the about text, the list of contributors, buttons for + opening PasteBin in your browser, opening ServerPackCreator's issue page on GitHub and for opening the invite link + to Griefed#s discord server in your browser.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#AboutTab-de.griefed.serverpackcreator.i18n.LocalizationManager-">AboutTab(LocalizationManager)</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> -<dd> </dd> +<dd> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#aboutTab--">aboutTab()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> -<dd> </dd> +<dd> +<div class="block">Create the tab for the About-page of ServerpackCreator.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> @@ -94,6 +105,8 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Main.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator">Main</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#attributeSet">attributeSet</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#author">author</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> </dl> @@ -106,29 +119,61 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#buildString-java.lang.String...-">buildString(String...)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Converts list of strings into concatenated string.</div> +<div class="block">Converts a sequence of Strings, for example from a list, into a concatenated String.</div> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#buttonClientMods">buttonClientMods</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#buttonCopyDirs">buttonCopyDirs</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#buttonCreatePasteBin">buttonCreatePasteBin</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#buttonDiscord">buttonDiscord</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#buttonGenerateServerPack">buttonGenerateServerPack</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#buttonInfoWindow">buttonInfoWindow</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#buttonJavaPath">buttonJavaPath</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#buttonLoadConfigFromFile">buttonLoadConfigFromFile</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#buttonModpackDir">buttonModpackDir</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#buttonOpenIssue">buttonOpenIssue</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> </dl> <a name="I:C"> <!-- --> </a> <h2 class="title">C</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-">checkConfigFile(File)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#checkBoxIcon">checkBoxIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#checkBoxProperties">checkBoxProperties</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#checkBoxScripts">checkBoxScripts</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#checkBoxServer">checkBoxServer</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#checkBoxZIP">checkBoxZIP</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#checkConfigFile-java.io.File-boolean-">checkConfigFile(File, boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Check the config file for configuration errors.</div> +<div class="block">Sets <a href="de/griefed/serverpackcreator/Configuration.html#setConfig-com.typesafe.config.Config-"><code>Configuration.setConfig(Config)</code></a> and calls checks for the provided configuration-file.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#checkCopyDirs-java.util.List-java.lang.String-">checkCopyDirs(List<String>, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Check whether the specified directories exist in the modpack directory.</div> +<div class="block">Checks whether the passed list of directories which are supposed to be in the modpack directory is empty and + prints a message to the console and serverpackcreator.log if it is.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#checkCurseForge-java.lang.String-">checkCurseForge(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Checks whether the modpackDir contains a valid projectID,fileID combination.</div> +<div class="block">Checks whether the specified modpack directory contains a valid projectID,fileID combination.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#checkCurseForgeDir-java.lang.String-">checkCurseForgeDir(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> -<div class="block">Check whether the folder for the specified CurseForge projectID/fileID exists.</div> +<div class="block">Check whether the folder for the specified CurseForge projectID/fileID exists and if it does exist, delete it + recursively to ensure we are working with a clean environment when creating a modpack from CurseForge.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#checkForConfig--">checkForConfig()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> @@ -160,65 +205,94 @@ </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#checkJavaPath-java.lang.String-">checkJavaPath(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Checks whether the correct path to the Java installation was set.</div> +<div class="block">Checks whether the passed String ends with <code>java.exe</code> or <code>java</code> and whether the files exist.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#checkLocaleFile--">checkLocaleFile()</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> -<div class="block">Check for existence of a lang.properties-file and if found assign language specified therein.</div> +<div class="block">Check for existence of a lang.properties file and, if found, assign the language specified therein.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#checkModloader-java.lang.String-">checkModloader(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Checks whether Forge or Fabric were specified as modloader.</div> +<div class="block">Checks whether either Forge or Fabric were specified as the modloader.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#checkModloaderVersion-java.lang.String-java.lang.String-">checkModloaderVersion(String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Determine whether to check for correct Forge or correct Fabric modloader version.</div> +<div class="block">Depending on whether Forge or Fabric was specified as the modloader, this will call the corresponding version check + to verify that the user correctly set their modloader version.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#checkModpackDir-java.lang.String-">checkModpackDir(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Check whether the specified modpack directory exists.</div> +<div class="block">Checks whether the passed String is empty and if it is empty, prints the corresponding message to the console and + serverpackcreator.log so the user knows what went wrong.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#chooserDimension">chooserDimension</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#cleanupEnvironment-java.lang.String-">cleanupEnvironment(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> -<div class="block">Deletes files from previous runs of serverpackcreator.</div> +<div class="block">Deletes all files, directories and ZIP-archives of previously generated server packs to ensure newly generated + server pack is as clean as possible.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#cleanupEnvironment-java.lang.String-">cleanupEnvironment(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> +<dd> +<div class="block">Deletes any and all folder and files, recursively, inside the target directory, thus ensuring we are working in a + clean environment when creating a new modpack from CurseForge.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#cleanUpServerPack-java.io.File-java.io.File-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">cleanUpServerPack(File, File, String, String, String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> -<div class="block">Deletes remnant files from Fabric/Forge installation no longer needed.</div> +<div class="block">Cleans up the server_pack directory by deleting left-over files from modloader installations and version checking.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#clientMods">clientMods</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#clientModsChooser">clientModsChooser</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#config">config</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#configChooser">configChooser</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#configFile">configFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#configFile">configFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> <dt><a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Configuration</span></a> - Class in <a href="de/griefed/serverpackcreator/package-summary.html">de.griefed.serverpackcreator</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#Configuration-de.griefed.serverpackcreator.i18n.LocalizationManager-">Configuration(LocalizationManager)</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block"><strong>Table of methods</strong> + 1.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#Configuration-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack-">Configuration(LocalizationManager, CurseCreateModpack)</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dd> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#configuration">configuration</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#configuration">configuration</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#configuration">configuration</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#constraints">constraints</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#constraints">constraints</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#constraints">constraints</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#constraints">constraints</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#containsFabric-de.griefed.serverpackcreator.curseforgemodpack.CurseModpack-">containsFabric(CurseModpack)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Checks for the Jumploader mod in the project list of the modpack.</div> +<div class="block">Checks whether the projectID for the Jumploader mod is present in the list of mods required by the CurseForge modpack.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#convertToBoolean-java.lang.String-">convertToBoolean(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Converts various strings to booleans.</div> +<div class="block">Converts various strings to booleans, by using regex, to allow for more variations in input.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#copyDirs">copyDirs</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#copyDirsChooser">copyDirsChooser</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#copyFiles-java.lang.String-java.util.List-java.util.List-">copyFiles(String, List<String>, List<String>)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> -<div class="block">Copies all specified folders and their files to the modpackDir.</div> +<div class="block">Copies all specified directories and mods, excluding clientside-only mods, from the modpack directory into the + server pack directory.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#copyIcon-java.lang.String-">copyIcon(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> @@ -226,7 +300,7 @@ </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#copyOverride-java.lang.String-">copyOverride(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> -<div class="block">Copies all folders and the files therein to the parent modpack directory.</div> +<div class="block">Recursively copy all folders and files from the override directory to the parent directory, our modpack directory.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#copyProperties-java.lang.String-">copyProperties(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> @@ -234,60 +308,160 @@ </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#copyStartScripts-java.lang.String-java.lang.String-boolean-">copyStartScripts(String, String, boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> -<div class="block">Copies start scripts for Forge modloader into the server_pack folder.</div> +<div class="block">Copies start scripts for the specified modloader into the server pack.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#COUNTRY_MAP_PATH">COUNTRY_MAP_PATH</a></span> - Variable in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#createAndShowGUI--">createAndShowGUI()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> -<dd> </dd> +<dd> +<div class="block">Creates the frame in which the banner, tabbed pane with all the tabs, icon and title are displayed and shows it.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#createConfigurationFile--">createConfigurationFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Generate new configuration file from CLI input.</div> +<div class="block">Walk the user through the generation of a new ServerPackCreator configuration file by asking them for input, + step-by-step, regarding their modpack.</div> </dd> <dt><a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateGui</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#CreateGui-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-">CreateGui(LocalizationManager, Configuration)</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> -<dd> </dd> +<dd> +<div class="block"><strong>Table of methods</strong><br> + <a href="de/griefed/serverpackcreator/gui/CreateGui.html#CreateGui-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack-de.griefed.serverpackcreator.CreateServerPack-"><code>CreateGui.CreateGui(LocalizationManager, Configuration, CurseCreateModpack, CreateServerPack)</code></a><br> + <a href="de/griefed/serverpackcreator/gui/CreateGui.html#mainGUI--"><code>CreateGui.mainGUI()</code></a><br> + <a href="de/griefed/serverpackcreator/gui/CreateGui.html#createAndShowGUI--"><code>CreateGui.createAndShowGUI()</code></a> + This class creates and shows the GUI needed for running ServerPackCreator in....well...GUI mode.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#CreateGui-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack-de.griefed.serverpackcreator.CreateServerPack-">CreateGui(LocalizationManager, Configuration, CurseCreateModpack, CreateServerPack)</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> +<dd> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</dd> <dt><a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">CreateServerPack</span></a> - Class in <a href="de/griefed/serverpackcreator/package-summary.html">de.griefed.serverpackcreator</a></dt> +<dd> +<div class="block"><strong>Table of methods</strong> + 1.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#CreateServerPack-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack-">CreateServerPack(LocalizationManager, Configuration, CurseCreateModpack)</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> +<dd> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#createServerPack">createServerPack</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#CreateServerPack-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-">CreateServerPack(LocalizationManager, Configuration)</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> -<dd> </dd> -<dt><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateServerPackTab</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#createServerPack">createServerPack</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#CreateServerPackTab-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-">CreateServerPackTab(LocalizationManager, Configuration)</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#createServerPackPanel">createServerPackPanel</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> +<dt><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateServerPackTab</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> +<dd> +<div class="block">This class creates the tab which displays the labels, textfields, buttons and functions in order to create a new + server pack.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#CreateServerPackTab-de.griefed.serverpackcreator.i18n.LocalizationManager-de.griefed.serverpackcreator.Configuration-de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack-de.griefed.serverpackcreator.CreateServerPack-">CreateServerPackTab(LocalizationManager, Configuration, CurseCreateModpack, CreateServerPack)</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#createServerPackTab--">createServerPackTab()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> -<dd> </dd> +<dd> +<div class="block">Create the tab which displays every component related to configuring ServerPackCreator and creating a server pack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#currentLanguage">currentLanguage</a></span> - Variable in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> -<div class="block">Current language of application, mapped for easier further reference.</div> +<div class="block">Current language of ServerPackCreator, mapped for easier further reference.</div> </dd> -<dt><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseCreateModpack</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#curseCreateModpack">curseCreateModpack</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#curseCreateModpack">curseCreateModpack</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> +<dd> </dd> +<dt><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseCreateModpack</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> +<dd> +<div class="block"><strong>Table of methods</strong><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#CurseCreateModpack-de.griefed.serverpackcreator.i18n.LocalizationManager-"><code>CurseCreateModpack.CurseCreateModpack(LocalizationManager)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#setModloaderCase-java.lang.String-"><code>CurseCreateModpack.setModloaderCase(String)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#initializeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.initializeModpack(String, Integer, Integer)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#downloadMods-java.lang.String-"><code>CurseCreateModpack.downloadMods(String)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#copyOverride-java.lang.String-"><code>CurseCreateModpack.copyOverride(String)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#checkCurseForgeDir-java.lang.String-"><code>CurseCreateModpack.checkCurseForgeDir(String)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#unzipArchive-java.lang.String-java.lang.String-"><code>CurseCreateModpack.unzipArchive(String, String)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#newFile-java.io.File-java.util.zip.ZipEntry-"><code>CurseCreateModpack.newFile(File, ZipEntry)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#cleanupEnvironment-java.lang.String-"><code>CurseCreateModpack.cleanupEnvironment(String)</code></a> + Download a modpack from CurseForge and create it by unzipping the ZIP-archive, copy all folders and files from the + override directory to the parent directory, download all mods in said modpack, and delete no longer needed files.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#CurseCreateModpack-de.griefed.serverpackcreator.i18n.LocalizationManager-">CurseCreateModpack(LocalizationManager)</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> +<dd> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#curseCreateModpack">curseCreateModpack</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> <dd> </dd> -<dt><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseFiles</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#curseCreateModpack">curseCreateModpack</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> +<dt><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseFiles</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> +<dd> +<div class="block"><strong>Table of methods</strong><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#getProjectID--"><code>CurseFiles.getProjectID()</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#setProjectID-java.lang.String-"><code>CurseFiles.setProjectID(String)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#getFileID--"><code>CurseFiles.getFileID()</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#setFileID-java.lang.String-"><code>CurseFiles.setFileID(String)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#toString--"><code>CurseFiles.toString()</code></a> + Retrieves information about a CurseForge Minecraft modpack by using <code>com.fasterxml.jackson.databind</code> JSON parsing.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#CurseFiles--">CurseFiles()</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-">curseForgeModpack(String, Integer, Integer)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> -<div class="block">Gets the names of the specified project and file and makes calls to methods which create the modpack so we can then create a server pack from it.</div> +<div class="block">Acquires the names of the CurseForge project and file.</div> </dd> <dt><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseMinecraft</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> -<dd> </dd> +<dd> +<div class="block"><strong>Table of methods</strong><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#getVersion--"><code>CurseMinecraft.getVersion()</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#setVersion-java.lang.String-"><code>CurseMinecraft.setVersion(String)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#getModLoaders--"><code>CurseMinecraft.getModLoaders()</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#setModLoaders-java.util.List-"><code>CurseMinecraft.setModLoaders(List)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#toString--"><code>CurseMinecraft.toString()</code></a> + Retrieves information about a CurseForge Minecraft modpack by using <code>com.fasterxml.jackson.databind</code> JSON parsing.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#CurseMinecraft--">CurseMinecraft()</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> <dd> </dd> <dt><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseModLoaders</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> -<dd> </dd> +<dd> +<div class="block"><strong>Table of methods</strong><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#getId--"><code>CurseModLoaders.getId()</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#setId-java.lang.String-"><code>CurseModLoaders.setId(String)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#toString--"><code>CurseModLoaders.toString()</code></a> + Retrieves information about a CurseForge Minecraft modpack by using <code>com.fasterxml.jackson.databind</code> JSON parsing.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#CurseModLoaders--">CurseModLoaders()</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a></dt> <dd> </dd> <dt><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseModpack</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> -<dd> </dd> +<dd> +<div class="block"><strong>Table of methods</strong><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getMinecraft--"><code>CurseModpack.getMinecraft()</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setMinecraft-java.util.List-"><code>CurseModpack.setMinecraft(List)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getName--"><code>CurseModpack.getName()</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setName-java.lang.String-"><code>CurseModpack.setName(String)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getVersion--"><code>CurseModpack.getVersion()</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setVersion-java.lang.String-"><code>CurseModpack.setVersion(String)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getAuthor--"><code>CurseModpack.getAuthor()</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setAuthor-java.lang.String-"><code>CurseModpack.setAuthor(String)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getFiles--"><code>CurseModpack.getFiles()</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setFiles-java.util.List-"><code>CurseModpack.setFiles(List)</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#toString--"><code>CurseModpack.toString()</code></a> + Retrieve information about a CurseForge Minecraft modpack by using <code>com.fasterxml.jackson.databind</code> JSON parsing.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#CurseModpack--">CurseModpack()</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> <dt><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><span class="typeNameLink">CurseSplines</span></a> - Class in <a href="de/griefed/serverpackcreator/curseforgemodpack/package-summary.html">de.griefed.serverpackcreator.curseforgemodpack</a></dt> -<dd> </dd> +<dd> +<div class="block"><strong>Table of methods</strong><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulating"><code>CurseSplines.reticulating</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getRandomInt--"><code>CurseSplines.getRandomInt()</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getSpline--"><code>CurseSplines.getSpline()</code></a><br> + <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulate--"><code>CurseSplines.reticulate()</code></a> + Just something fun to brighten the mood.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#CurseSplines--">CurseSplines()</a></span> - Constructor for class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseSplines</a></dt> <dd> </dd> </dl> @@ -306,15 +480,17 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#deleteMinecraftJar-java.lang.String-java.lang.String-java.lang.String-">deleteMinecraftJar(String, String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> -<div class="block">Deletes Mojang's minecraft_server.jar from the zip-archive so users do not accidentally upload a file containing software from Mojang.</div> +<div class="block">Deletes the Minecraft server JAR from the ZIP-archive as per Mojang's TOS and EULA.</div> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#document">document</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#downloadFabricJar-java.lang.String-">downloadFabricJar(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> -<div class="block">Downloads the specified version of Fabric.</div> +<div class="block">Downloads the latest Fabric installer into the server pack.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#downloadForgeJar-java.lang.String-java.lang.String-java.lang.String-">downloadForgeJar(String, String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> -<div class="block">Downloads the specified version of the Forge installer to be used in ServerSetup.installServer.</div> +<div class="block">Downloads the modloader server installer for Forge, for the specified modloader version.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#downloadMods-java.lang.String-">downloadMods(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> @@ -328,7 +504,7 @@ <dl> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#excludeClientMods-java.lang.String-java.util.List-">excludeClientMods(String, List<String>)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> -<div class="block">Generate a list of all mods in a modpack EXCEPT clientside-only mods.</div> +<div class="block">Generates a list of all mods to include in the server pack excluding clientside-only mods.</div> </dd> </dl> <a name="I:F"> @@ -338,7 +514,7 @@ <dl> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#fabricBatch-java.lang.String-java.lang.String-">fabricBatch(String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> -<div class="block">Generates download scripts for Mojang's Minecraft server for Fabric,Windows.</div> +<div class="block">Generates Fabric Windows-Batch download scripts for Mojang's Minecraft server JAR for the specified Minecraft version.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#fabricLinuxFile">fabricLinuxFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> @@ -346,7 +522,7 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#fabricShell-java.lang.String-java.lang.String-">fabricShell(String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> -<div class="block">Generates download scripts for Mojang's Minecraft server for Fabric,Linux.</div> +<div class="block">Generates Fabric Linux-shell download scripts for Mojang's Minecraft server JAR for the specified Minecraft version.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#fabricWindowsFile">fabricWindowsFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> @@ -363,9 +539,16 @@ <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#files">files</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> <dt><a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">FilesSetup</span></a> - Class in <a href="de/griefed/serverpackcreator/package-summary.html">de.griefed.serverpackcreator</a></dt> -<dd> </dd> +<dd> +<div class="block"><strong>Table of methods</strong> + + 1.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#FilesSetup-de.griefed.serverpackcreator.i18n.LocalizationManager-">FilesSetup(LocalizationManager)</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> -<dd> </dd> +<dd> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#filesSetup--">filesSetup()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> <div class="block">Calls individual methods which check for existence of default files.</div> @@ -376,7 +559,7 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#forgeBatch-java.lang.String-java.lang.String-">forgeBatch(String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> -<div class="block">Generates download scripts for Mojang's Minecraft server for Forge,Windows.</div> +<div class="block">Generates Forge Windows-Batch download scripts for Mojang's Minecraft server JAR for the specified Minecraft version.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#forgeLinuxFile">forgeLinuxFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> @@ -384,7 +567,7 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#forgeShell-java.lang.String-java.lang.String-">forgeShell(String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> -<div class="block">Generates download scripts for Mojang's Minecraft server for Forge,Linux.</div> +<div class="block">Generates Forge Linux-shell download scripts for Mojang's Minecraft server JAR for the specified Minecraft version.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#forgeWindowsFile">forgeWindowsFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> @@ -398,116 +581,221 @@ <dl> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#generateDownloadScripts-java.lang.String-java.lang.String-java.lang.String-">generateDownloadScripts(String, String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> -<div class="block">Calls methods for generating download scripts for Mojang's Minecraft server depending on the specified versions and modloader.</div> +<div class="block">Depending on the specified modloader and Minecraft version, this method makes calls to generate the corresponding + download scripts for the Minecraft server JAR.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getAuthor--">getAuthor()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for the author of the CurseForge modpack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getClientMods--">getClientMods()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for a list of clientside-only mods to exclude from server pack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getConfig--">getConfig()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for a <code>Config</code> containing a parsed configuration-file.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getConfigFile--">getConfigFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for serverpackcreator.conf.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#getConfigFile--">getConfigFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for serverpackcreator.conf.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getCopyDirs--">getCopyDirs()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for the list of directories in the modpack to copy to the server pack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#getFabricLinuxFile--">getFabricLinuxFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for start-fabric.sh.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#getFabricLinuxFile--">getFabricLinuxFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for start-fabric.sh.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getFabricManifestUrl--">getFabricManifestUrl()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for Fabric's version-manifest.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#getFabricWindowsFile--">getFabricWindowsFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for start-fabric.bat.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#getFabricWindowsFile--">getFabricWindowsFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for start-fabric.bat.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getFallbackModsList--">getFallbackModsList()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for the fallback clientside-only mods-list, in case no customized one is provided by the user.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#getFileID--">getFileID()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for a fileID of a dependency in the CurseForge modpack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getFiles--">getFiles()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for the files on which the CurseForge modpack depends by using <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseFiles</code></a>.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#getForgeLinuxFile--">getForgeLinuxFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for start-forge.sh</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#getForgeLinuxFile--">getForgeLinuxFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for start-forge.sh.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getForgeManifestUrl--">getForgeManifestUrl()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for Forge's version-manifest.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#getForgeWindowsFile--">getForgeWindowsFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for start-forge.bat.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#getForgeWindowsFile--">getForgeWindowsFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for start-forge.bat.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#getIconFile--">getIconFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for server-icon.png</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#getIconFile--">getIconFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for server-icon.png</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#getId--">getId()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for the modloader and modloader version used by the CurseForge modpack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getIncludeServerIcon--">getIncludeServerIcon()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for whether the server-icon.png should be included in the server pack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getIncludeServerInstallation--">getIncludeServerInstallation()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for whether the modloader server installation should be included.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getIncludeServerProperties--">getIncludeServerProperties()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for whether the server.properties should be included in the server pack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getIncludeStartScripts--">getIncludeStartScripts()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for whether the start scripts should be included in the server pack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getIncludeZipCreation--">getIncludeZipCreation()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for whether a ZIP-archive of the server pack should be created.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getJavaPath--">getJavaPath()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getJavaPath-java.lang.String-">getJavaPath(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Automatically set Java path if none is specified</div> +<div class="block">Getter for the path to the Java executable/binary.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getJavaPathFromSystem-java.lang.String-">getJavaPathFromSystem(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dd> +<div class="block">Checks the passed String whether it is empty, and if it is, automatically acquires the path to the users Java + installation and appends bin/java.exe or bin/java depending on whether the path to said installation starts with + Windows-typical C: prefix.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLangPropertiesFile--">getLangPropertiesFile()</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for the lang.properties file which will set the locale for ServerPackCreator.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocale--">getLocale()</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for a String containing the currently used language.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocalizedString-java.lang.String-">getLocalizedString(String)</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> -<div class="block">Gets localized string from localization resource bundle.</div> +<div class="block">Acquires a localized String for the provided language key from the initialized locale resource.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getMinecraft--">getMinecraft()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for Minecraft related information using <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseMinecraft</code></a>.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getMinecraftManifestUrl--">getMinecraftManifestUrl()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for Mojang's Minecraft version-manifest.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getMinecraftVersion--">getMinecraftVersion()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for the version of Minecraft used by the modpack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getModLoader--">getModLoader()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for the modloader used by the modpack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#getModLoaders--">getModLoaders()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for modloader related information using <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseModLoaders</code></a>.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getModLoaderVersion--">getModLoaderVersion()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for the version of the modloader used by the modpack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getModpackDir--">getModpackDir()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for the path to the modpack directory.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getName--">getName()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> +<dd> +<div class="block">Getter for the name of the CurseForge modpack.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getObjectMapper--">getObjectMapper()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getOldConfigFile--">getOldConfigFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for creator.conf.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#getOldConfigFile--">getOldConfigFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for creator.conf.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getProjectFileID--">getProjectFileID()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for the CurseForge file of a modpack, which will be created by <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a>.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getProjectID--">getProjectID()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for the CurseForge projectID of a modpack, which will be created by <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a>.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#getProjectID--">getProjectID()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for a projectID of a dependency in the CurseForge modpack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#getPropertiesFile--">getPropertiesFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for server.properties.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#getPropertiesFile--">getPropertiesFile()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for server.properties.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getRandomInt--">getRandomInt()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseSplines</a></dt> -<dd> </dd> +<dd> +<div class="block">Retrieves the index of a random message in <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulating"><code>CurseSplines.reticulating</code></a>.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getSpline--">getSpline()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseSplines</a></dt> -<dd> </dd> +<dd> +<div class="block">Retrieves a message from <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulating"><code>CurseSplines.reticulating</code></a> using a randomly generated index from <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#getRandomInt--"><code>CurseSplines.getRandomInt()</code></a>.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#getSupportedLanguages--">getSupportedLanguages()</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for the array of languages supported by ServerPackCreator.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#getVersion--">getVersion()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for the Minecraft version used by the CurseForge modpack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#getVersion--">getVersion()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> -<dd> </dd> +<dd> +<div class="block">Getter for the version of the CurseForge modpack.</div> +</dd> </dl> <a name="I:H"> <!-- --> @@ -516,6 +804,10 @@ <dl> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#helpIcon">helpIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#helpScrollPane">helpScrollPane</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#helpTextArea">helpTextArea</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> </dl> <a name="I:I"> <!-- --> @@ -529,7 +821,9 @@ <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#iconFile">iconFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#id">id</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a></dt> -<dd> </dd> +<dd> +<div class="block">Ignore unknown values/object.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#includeServerIcon">includeServerIcon</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#includeServerInstallation">includeServerInstallation</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> @@ -541,7 +835,14 @@ <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#includeZipCreation">includeZipCreation</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> <dt><a href="de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n"><span class="typeNameLink">IncorrectLanguageException</span></a> - Exception in <a href="de/griefed/serverpackcreator/i18n/package-summary.html">de.griefed.serverpackcreator.i18n</a></dt> -<dd> </dd> +<dd> +<div class="block"><strong>Table of Exceptions</strong><br> + <a href="de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html#IncorrectLanguageException--"><code>IncorrectLanguageException.IncorrectLanguageException()</code></a><br> + <a href="de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html#IncorrectLanguageException-java.lang.String-"><code>IncorrectLanguageException.IncorrectLanguageException(String)</code></a><br> + <a href="de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html#IncorrectLanguageException-java.lang.Throwable-"><code>IncorrectLanguageException.IncorrectLanguageException(Throwable)</code></a><br> + <a href="de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html#IncorrectLanguageException-java.lang.String-java.lang.Throwable-"><code>IncorrectLanguageException.IncorrectLanguageException(String, Throwable)</code></a> + Provides exceptions to <a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><code>LocalizationManager</code></a></div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html#IncorrectLanguageException--">IncorrectLanguageException()</a></span> - Constructor for exception de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n">IncorrectLanguageException</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html#IncorrectLanguageException-java.lang.String-">IncorrectLanguageException(String)</a></span> - Constructor for exception de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n">IncorrectLanguageException</a></dt> @@ -551,42 +852,54 @@ <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html#IncorrectLanguageException-java.lang.Throwable-">IncorrectLanguageException(Throwable)</a></span> - Constructor for exception de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/IncorrectLanguageException.html" title="class in de.griefed.serverpackcreator.i18n">IncorrectLanguageException</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.lang.String-">init(String)</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> -<dd> </dd> +<dd> +<div class="block">Initializes the LocalizationManager with a provided locale.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.io.File-">init(File)</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> -<dd> </dd> +<dd> +<div class="block">Initializes the LocalizationManager with a provided localePropertiesFile.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#init--">init()</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> -<div class="block">Initializer with default localization properties path.</div> +<div class="block">Initialize the LocalizationManager with en_us as the locale.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#initializeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-">initializeModpack(String, Integer, Integer)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> -<div class="block">Downloads the specified file of the specified project to a directory which is the combination of the project name and file display name.</div> +<div class="block">Downloads the specified file of the specified project to a directory which is the combination of the project + name and file display name.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#installerLogger">installerLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#installServer-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">installServer(String, String, String, String, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> -<div class="block">Installs the files for a Forge/Fabric server.</div> +<div class="block">Installs the modloader server for the specified modloader, modloader version and Minecraft version.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#isCurse--">isCurse()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Checks whether the specified projectID,fileID combination is a valid CurseForge project and file and whether the resulting directory exists.</div> +<div class="block">If modpackDir in the configuration file is a CurseForge projectID,fileID combination, then the modpack is first + created from said combination, using <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a>, + before proceeding to checking the rest of the configuration.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#isDir-java.lang.String-">isDir(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Checks whether the specified modpack exists.</div> +<div class="block">If the in the configuration specified modpack dir is an existing directory, checks are made for valid configuration + of: directories to copy to server pack,<br> + if includeServerInstallation is <code>true</code>) path to Java executable/binary, Minecraft version, modloader and modloader version.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#isFabricVersionCorrect-java.lang.String-">isFabricVersionCorrect(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Check the specified Fabric version against Fabric's version manifest to validate the version.</div> +<div class="block">Checks whether the passed String is empty and if it is not. check the String against Fabric's version manifest + to validate the version.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#isForgeVersionCorrect-java.lang.String-">isForgeVersionCorrect(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Checks Forge version for errors (basically for its availability in Forge manifest)</div> +<div class="block">Checks whether the passed String is empty and if it is not. check the String against Forge's version manifest + to validate the version.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#isMinecraftVersionCorrect-java.lang.String-">isMinecraftVersionCorrect(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Check the specified Minecraft version against Mojang's version manifest to validate the version.</div> +<div class="block">Checks whether the passed String is empty and if it is not. check the String against Mojang's version manifest + to validate the version.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#issueIcon">issueIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> <dd> </dd> @@ -596,6 +909,8 @@ </a> <h2 class="title">J</h2> <dl> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#javaChooser">javaChooser</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#javaPath">javaPath</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> </dl> @@ -604,6 +919,22 @@ </a> <h2 class="title">L</h2> <dl> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#labelClientMods">labelClientMods</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#labelCopyDirs">labelCopyDirs</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#labelGenerateServerPack">labelGenerateServerPack</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#labelJavaPath">labelJavaPath</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#labelMinecraftVersion">labelMinecraftVersion</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#labelModloader">labelModloader</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#labelModloaderVersion">labelModloaderVersion</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#labelModpackDir">labelModpackDir</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#langPropertiesFile">langPropertiesFile</a></span> - Variable in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#LANGUAGE_MAP_PATH">LANGUAGE_MAP_PATH</a></span> - Variable in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> @@ -612,11 +943,11 @@ </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#latestFabricInstaller-java.lang.String-">latestFabricInstaller(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> -<div class="block">Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer.</div> +<div class="block">Acquires the latest version of the Fabric modloader installer and returns it as a string.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#latestFabricLoader-java.lang.String-">latestFabricLoader(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Returns the latest installer version for the Fabric installer to be used in ServerSetup.installServer.</div> +<div class="block">Returns the latest version for the Fabric-loader.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#loadIcon">loadIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> @@ -624,7 +955,7 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#localeResources">localeResources</a></span> - Variable in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> -<div class="block">Localized strings that application uses.</div> +<div class="block">Localized strings which ServerPackCreator uses.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#localizationManager">localizationManager</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> @@ -646,7 +977,18 @@ <dd> </dd> <dt><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n"><span class="typeNameLink">LocalizationManager</span></a> - Class in <a href="de/griefed/serverpackcreator/i18n/package-summary.html">de.griefed.serverpackcreator.i18n</a></dt> <dd> -<div class="block">This class is localization manager for your application.</div> +<div class="block"><strong>Table of methods</strong><br> + <a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#getSupportedLanguages--"><code>getSupportedLanguages()</code></a><br> + <a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLangPropertiesFile--"><code>getLangPropertiesFile()</code></a><br> + <a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocale--"><code>getLocale()</code></a><br> + <a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.lang.String-"><code>init(String)</code></a><br> + <a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#init-java.io.File-"><code>init(File)</code></a><br> + <a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#init--"><code>init()</code></a><br> + <a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#getLocalizedString-java.lang.String-"><code>getLocalizedString(String)</code></a><br> + <a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#checkLocaleFile--"><code>checkLocaleFile()</code></a><br> + <a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#writeLocaleToFile-java.lang.String-"><code>writeLocaleToFile(String)</code></a> + + This is the localizationManager for ServerPackCreator.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#LocalizationManager--">LocalizationManager()</a></span> - Constructor for class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> </dd> @@ -657,17 +999,31 @@ <h2 class="title">M</h2> <dl> <dt><a href="de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Main</span></a> - Class in <a href="de/griefed/serverpackcreator/package-summary.html">de.griefed.serverpackcreator</a></dt> -<dd> </dd> +<dd> +<div class="block"><strong>Table of methods</strong> + + <a href="de/griefed/serverpackcreator/Main.html#main-java.lang.String:A-"><code>Main.main(String[])</code></a> + + Depending on the passed commandline arguments and whether ServerPackCreator is run in a headless environment, + one of the following modes will be entered: + <strong>-cgen</strong> + When ServerPackCreator is run with the <code>-cgen</code>-argument, you will be guided through a step-by-step + generation of a new configuration file.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Main.html#Main--">Main()</a></span> - Constructor for class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator">Main</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Main.html#main-java.lang.String:A-">main(String[])</a></span> - Static method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Main.html" title="class in de.griefed.serverpackcreator">Main</a></dt> <dd> -<div class="block">Init and "main" has been moved to Handler-class.</div> +<div class="block">Initializes all objects needed for running ServerPackCreator and ensures Dependency Injection.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#mainGUI--">mainGUI()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> -<dd> </dd> +<dd> +<div class="block">Shows the GUI from the EDT by using SwingUtilities and it's invokeLater method by calling <a href="de/griefed/serverpackcreator/gui/CreateGui.html#createAndShowGUI--"><code>CreateGui.createAndShowGUI()</code></a>.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#minecraft">minecraft</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> -<dd> </dd> +<dd> +<div class="block">Ignore unknown values/object.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#minecraftVersion">minecraftVersion</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#miscButtonDimension">miscButtonDimension</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> @@ -676,18 +1032,30 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#modLoader">modLoader</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> -<dt><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ModloaderInstallerLogTab</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#modloaderInstallerLogPanel">modloaderInstallerLogPanel</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a></dt> <dd> </dd> +<dt><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ModloaderInstallerLogTab</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> +<dd> +<div class="block">This class creates the tab which display the latest modloader_installer.log tailer.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#ModloaderInstallerLogTab-de.griefed.serverpackcreator.i18n.LocalizationManager-">ModloaderInstallerLogTab(LocalizationManager)</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a></dt> -<dd> </dd> +<dd> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#modloaderInstallerLogTab--">modloaderInstallerLogTab()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a></dt> -<dd> </dd> +<dd> +<div class="block">Create the tab for the modloader_installer.log tailer in a JScrollPane with an always available vertical scrollbar + and a horizontal scrollbar available as needed.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#modLoaders">modLoaders</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#modLoaderVersion">modLoaderVersion</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#modpackDir">modpackDir</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#modpackDirChooser">modpackDirChooser</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> </dl> <a name="I:N"> <!-- --> @@ -698,7 +1066,7 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#newFile-java.io.File-java.util.zip.ZipEntry-">newFile(File, ZipEntry)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> -<div class="block">Helper-Method for unzipArchive.</div> +<div class="block">With help from <a href=https://www.baeldung.com/java-compress-and-uncompress>Baeldung Java Tutorials</a>.</div> </dd> </dl> <a name="I:O"> @@ -706,6 +1074,8 @@ </a> <h2 class="title">O</h2> <dl> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#objectMapper">objectMapper</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#oldConfigFile">oldConfigFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#oldConfigFile">oldConfigFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> @@ -720,14 +1090,16 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#printConfig-java.lang.String-java.util.List-java.util.List-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-">printConfig(String, List<String>, List<String>, boolean, String, String, String, String, boolean, boolean, boolean, boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Prints the configuration.</div> +<div class="block">Prints all passed fields to the console and serverpackcreator.log.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#projectFileID">projectFileID</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#projectID">projectID</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#projectID">projectID</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> -<dd> </dd> +<dd> +<div class="block">Ignore unknown values/object.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#projectName">projectName</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#propertiesFile">propertiesFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> @@ -744,19 +1116,23 @@ <dl> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#readBoolean--">readBoolean()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">A helper method for config setup.</div> +<div class="block">A helper method for <a href="de/griefed/serverpackcreator/Configuration.html#createConfigurationFile--"><code>Configuration.createConfigurationFile()</code></a>.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#readStringArray--">readStringArray()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">A helper method for config setup.</div> +<div class="block">A helper method for <a href="de/griefed/serverpackcreator/Configuration.html#createConfigurationFile--"><code>Configuration.createConfigurationFile()</code></a>.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulate--">reticulate()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseSplines</a></dt> -<dd> </dd> +<dd> +<div class="block">Retrieve a random message from <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulating"><code>CurseSplines.reticulating</code></a>.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html#reticulating">reticulating</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseSplines</a></dt> -<dd> </dd> +<dd> +<div class="block">The list of messages as they were available in SimCity, plus Reticulating Splines added by myself, for good measure.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#run--">run()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> -<div class="block">Run when serverpackcreator is run in either -cli or -cgen mode.</div> +<div class="block">Create a server pack if the check of the configuration file was successfull.</div> </dd> </dl> <a name="I:S"> @@ -764,68 +1140,142 @@ </a> <h2 class="title">S</h2> <dl> -<dt><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ServerPackCreatorLogTab</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#scrollPane">scrollPane</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#ServerPackCreatorLogTab-de.griefed.serverpackcreator.i18n.LocalizationManager-">ServerPackCreatorLogTab(LocalizationManager)</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#scrollPane">scrollPane</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#serverPackCreatorLogTab--">serverPackCreatorLogTab()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#secret">secret</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setClientMods-java.util.List-">setClientMods(List<String>)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#secretFile">secretFile</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setConfig-com.typesafe.config.Config-">setConfig(Config)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#serverPackCreatorBanner">serverPackCreatorBanner</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setCopyDirs-java.util.List-">setCopyDirs(List<String>)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#serverPackCreatorFrame">serverPackCreatorFrame</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#setFileID-java.lang.String-">setFileID(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#serverPackCreatorLogPanel">serverPackCreatorLogPanel</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></dt> <dd> </dd> +<dt><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ServerPackCreatorLogTab</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> +<dd> +<div class="block">This class creates the tab which display the latest serverpackcreator.log tailer.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#ServerPackCreatorLogTab-de.griefed.serverpackcreator.i18n.LocalizationManager-">ServerPackCreatorLogTab(LocalizationManager)</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></dt> +<dd> +<div class="block"><strong>Constructor</strong> + Used for Dependency Injection.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#serverPackCreatorLogTab--">serverPackCreatorLogTab()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></dt> +<dd> +<div class="block">Create the tab for the serverpackcreator.log tailer in a JScrollPane with an always available vertical scrollbar + and a horizontal scrollbar available as needed.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setAuthor-java.lang.String-">setAuthor(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> +<dd> +<div class="block">Setter for the author of the CurseForge modpack.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setClientMods-java.util.List-">setClientMods(List<String>)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dd> +<div class="block">Setter for the list of clientside-only mods to exclude from server pack.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setConfig-com.typesafe.config.Config-">setConfig(Config)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dd> +<div class="block">Setter for a <code>Config</code> containing a parsed configuration-file.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setCopyDirs-java.util.List-">setCopyDirs(List<String>)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> +<dd> +<div class="block">Setter for the list of directories in the modpack to copy to the server pack.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#setFileID-java.lang.String-">setFileID(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> +<dd> +<div class="block">Setter for a fileID of a dependency in the CurseForge modpack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setFiles-java.util.List-">setFiles(List<CurseFiles>)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for the CurseForge modpack files on which it depends.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#setId-java.lang.String-">setId(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for the modloader and modloader version used by the CurseForge modpack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setIncludeServerIcon-boolean-">setIncludeServerIcon(boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for whether the server-icon.png should be included in the server pack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setIncludeServerInstallation-boolean-">setIncludeServerInstallation(boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for whether the modloader server installation should be included.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setIncludeServerProperties-boolean-">setIncludeServerProperties(boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for whether the server.properties should be included in the server pack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setIncludeStartScripts-boolean-">setIncludeStartScripts(boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for whether the start scripts should be included in the server pack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setIncludeZipCreation-boolean-">setIncludeZipCreation(boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for whether a ZIP-archive of the server pack should be created.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setJavaPath-java.lang.String-">setJavaPath(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for the path to the Java executable/binary.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setMinecraft-java.util.List-">setMinecraft(List<CurseMinecraft>)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for Minecraft related information using <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseMinecraft</code></a></div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setMinecraftVersion-java.lang.String-">setMinecraftVersion(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for the Minecraft version used by the modpack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setModLoader-java.lang.String-">setModLoader(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setModloader-java.lang.String-">setModloader(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Standardize the specified modloader.</div> +<div class="block">Setter for the modloader used by the modpack.</div> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#setModloader-java.lang.String-">setModloader(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setModLoaderCase-java.lang.String-">setModLoaderCase(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> -<div class="block">Standardize the specified modloader.</div> +<div class="block">Ensures the modloader is normalized to first letter upper case and rest lower case.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#setModloaderCase-java.lang.String-">setModloaderCase(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> +<dd> +<div class="block">Ensures the modloader is normalized to first letter upper case and rest lower case.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#setModLoaders-java.util.List-">setModLoaders(List<CurseModLoaders>)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for modloader related information using <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack"><code>CurseModLoaders</code></a>.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setModLoaderVersion-java.lang.String-">setModLoaderVersion(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for the version of the modloader used by the modpack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setModpackDir-java.lang.String-">setModpackDir(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for the path to the modpack directory.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setName-java.lang.String-">setName(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for the name of the CurseForge modpack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setProjectFileID-int-">setProjectFileID(int)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for the CurseForge file of a modpack, which will be created by <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a>.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setProjectID-int-">setProjectID(int)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for the CurseForge projectID of a modpack, which will be created by <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a>.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#setProjectID-java.lang.String-">setProjectID(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for a projectID of a dependency in the CurseForge modpack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#setVersion-java.lang.String-">setVersion(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for the Minecraft version used by the CurseForge modpack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#setVersion-java.lang.String-">setVersion(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> -<dd> </dd> +<dd> +<div class="block">Setter for the version of the CurseForge modpack.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#startGeneration">startGeneration</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#suggestCopyDirs-java.lang.String-">suggestCopyDirs(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> @@ -833,21 +1283,52 @@ <div class="block">Creates a list of suggested directories to include in server pack which is later on written to a new configuration file.</div> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#SUPPORTED_LANGUAGES">SUPPORTED_LANGUAGES</a></span> - Variable in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> -<dd> </dd> +<dd> +<div class="block">Languages supported by ServerPackCreator.</div> +</dd> </dl> <a name="I:T"> <!-- --> </a> <h2 class="title">T</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#toString--">toString()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#textArea">textArea</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#toString--">toString()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#textArea">textArea</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#toString--">toString()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textClientMods">textClientMods</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#toString--">toString()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textCopyDirs">textCopyDirs</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textJavaPath">textJavaPath</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textMinecraftVersion">textMinecraftVersion</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textModloader">textModloader</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textModloaderVersion">textModloaderVersion</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textModpackDir">textModpackDir</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#textPane">textPane</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#toString--">toString()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> +<dd> +<div class="block">A comma separated combination of a dependency projectID and fileID of a CurseForge modpack.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#toString--">toString()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> +<dd> +<div class="block">String containing information about the Minecraft version, modloader and modloader version used by the CurseForge + modpack.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html#toString--">toString()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModLoaders</a></dt> +<dd> +<div class="block">String containing information about the CurseForge modpack's used modloader and the modloader version.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#toString--">toString()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> +<dd> +<div class="block">String containing information about the CurseForge modpack.</div> +</dd> </dl> <a name="I:U"> <!-- --> @@ -856,8 +1337,7 @@ <dl> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#unzipArchive-java.lang.String-java.lang.String-">unzipArchive(String, String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></dt> <dd> -<div class="block">With help from: https://www.baeldung.com/java-compress-and-uncompress - Unzips the downloaded modpack archive to a directory.</div> +<div class="block">With help from <a href=https://www.baeldung.com/java-compress-and-uncompress>Baeldung Java Tutorials</a>.</div> </dd> </dl> <a name="I:V"> @@ -866,7 +1346,9 @@ <h2 class="title">V</h2> <dl> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#version">version</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> -<dd> </dd> +<dd> +<div class="block">Ignore unknown values/object.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#version">version</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> </dd> </dl> @@ -883,7 +1365,8 @@ </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html#writeLocaleToFile-java.lang.String-">writeLocaleToFile(String)</a></span> - Method in class de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></dt> <dd> -<div class="block">Writes the specified locale from -lang your_locale to a lang.properties file to ensure every subsequent start of serverpackcreator is executed using said locale.</div> +<div class="block">Writes the specified locale from -lang your_locale to a lang.properties file to ensure every subsequent start + of serverpackcreator is executed using said locale.</div> </dd> </dl> <a name="I:Z"> @@ -893,7 +1376,7 @@ <dl> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#zipBuilder-java.lang.String-java.lang.String-java.lang.Boolean-java.lang.String-">zipBuilder(String, String, Boolean, String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> <dd> -<div class="block">Create a zip-archive of the serverpack, excluding Mojang's minecraft_server.jar.</div> +<div class="block">Creates a ZIP-archive of the server_pack directory and deletes the Minecraft server JAR afterwards.</div> </dd> </dl> <a href="#I:A">A</a> <a href="#I:B">B</a> <a href="#I:C">C</a> <a href="#I:D">D</a> <a href="#I:E">E</a> <a href="#I:F">F</a> <a href="#I:G">G</a> <a href="#I:H">H</a> <a href="#I:I">I</a> <a href="#I:J">J</a> <a href="#I:L">L</a> <a href="#I:M">M</a> <a href="#I:N">N</a> <a href="#I:O">O</a> <a href="#I:P">P</a> <a href="#I:R">R</a> <a href="#I:S">S</a> <a href="#I:T">T</a> <a href="#I:U">U</a> <a href="#I:V">V</a> <a href="#I:W">W</a> <a href="#I:Z">Z</a> </div> diff --git a/docs/serialized-form.html b/docs/serialized-form.html index f972898ce..1ea730567 100644 --- a/docs/serialized-form.html +++ b/docs/serialized-form.html @@ -75,6 +75,70 @@ <li class="blockList"> <h2 title="Package">Package de.griefed.serverpackcreator.gui</h2> <ul class="blockList"> +<li class="blockList"><a name="de.griefed.serverpackcreator.gui.AboutTab"> +<!-- --> +</a> +<h3>Class <a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">de.griefed.serverpackcreator.gui.AboutTab</a> extends java.awt.Component implements Serializable</h3> +<ul class="blockList"> +<li class="blockList"> +<h3>Serialized Fields</h3> +<ul class="blockList"> +<li class="blockList"> +<h4>localizationManager</h4> +<pre><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +</li> +<li class="blockList"> +<h4>miscButtonDimension</h4> +<pre>java.awt.Dimension miscButtonDimension</pre> +</li> +<li class="blockList"> +<h4>issueIcon</h4> +<pre>javax.swing.ImageIcon issueIcon</pre> +</li> +<li class="blockList"> +<h4>pastebinIcon</h4> +<pre>javax.swing.ImageIcon pastebinIcon</pre> +</li> +<li class="blockList"> +<h4>prosperIcon</h4> +<pre>javax.swing.ImageIcon prosperIcon</pre> +</li> +<li class="blockList"> +<h4>aboutPanel</h4> +<pre>javax.swing.JComponent aboutPanel</pre> +</li> +<li class="blockList"> +<h4>constraints</h4> +<pre>java.awt.GridBagConstraints constraints</pre> +</li> +<li class="blockList"> +<h4>textPane</h4> +<pre>javax.swing.JTextPane textPane</pre> +</li> +<li class="blockList"> +<h4>attributeSet</h4> +<pre>javax.swing.text.SimpleAttributeSet attributeSet</pre> +</li> +<li class="blockList"> +<h4>document</h4> +<pre>javax.swing.text.StyledDocument document</pre> +</li> +<li class="blockList"> +<h4>buttonCreatePasteBin</h4> +<pre>javax.swing.JButton buttonCreatePasteBin</pre> +</li> +<li class="blockList"> +<h4>buttonOpenIssue</h4> +<pre>javax.swing.JButton buttonOpenIssue</pre> +</li> +<li class="blockListLast"> +<h4>buttonDiscord</h4> +<pre>javax.swing.JButton buttonDiscord</pre> +</li> +</ul> +</li> +</ul> +</li> <li class="blockList"><a name="de.griefed.serverpackcreator.gui.CreateGui"> <!-- --> </a> @@ -99,10 +163,34 @@ <h4>localizationManager</h4> <pre><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> </li> -<li class="blockListLast"> +<li class="blockList"> <h4>configuration</h4> <pre><a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> configuration</pre> </li> +<li class="blockList"> +<h4>curseCreateModpack</h4> +<pre><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a> curseCreateModpack</pre> +</li> +<li class="blockList"> +<h4>createServerPack</h4> +<pre><a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a> createServerPack</pre> +</li> +<li class="blockList"> +<h4>serverPackCreatorFrame</h4> +<pre>javax.swing.JFrame serverPackCreatorFrame</pre> +</li> +<li class="blockList"> +<h4>serverPackCreatorBanner</h4> +<pre>javax.swing.JLabel serverPackCreatorBanner</pre> +</li> +<li class="blockList"> +<h4>secretFile</h4> +<pre>java.io.File secretFile</pre> +</li> +<li class="blockListLast"> +<h4>secret</h4> +<pre>com.typesafe.config.Config secret</pre> +</li> </ul> </li> </ul> @@ -116,6 +204,22 @@ <h3>Serialized Fields</h3> <ul class="blockList"> <li class="blockList"> +<h4>configuration</h4> +<pre><a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> configuration</pre> +</li> +<li class="blockList"> +<h4>localizationManager</h4> +<pre><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +</li> +<li class="blockList"> +<h4>curseCreateModpack</h4> +<pre><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a> curseCreateModpack</pre> +</li> +<li class="blockList"> +<h4>createServerPack</h4> +<pre><a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a> createServerPack</pre> +</li> +<li class="blockList"> <h4>loadIcon</h4> <pre>javax.swing.ImageIcon loadIcon</pre> </li> @@ -144,13 +248,213 @@ <pre>java.awt.Dimension chooserDimension</pre> </li> <li class="blockList"> -<h4>configuration</h4> -<pre><a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a> configuration</pre> +<h4>createServerPackPanel</h4> +<pre>javax.swing.JComponent createServerPackPanel</pre> +</li> +<li class="blockList"> +<h4>helpScrollPane</h4> +<pre>javax.swing.JScrollPane helpScrollPane</pre> +</li> +<li class="blockList"> +<h4>constraints</h4> +<pre>java.awt.GridBagConstraints constraints</pre> +</li> +<li class="blockList"> +<h4>labelModpackDir</h4> +<pre>javax.swing.JLabel labelModpackDir</pre> +</li> +<li class="blockList"> +<h4>labelClientMods</h4> +<pre>javax.swing.JLabel labelClientMods</pre> +</li> +<li class="blockList"> +<h4>labelCopyDirs</h4> +<pre>javax.swing.JLabel labelCopyDirs</pre> +</li> +<li class="blockList"> +<h4>labelJavaPath</h4> +<pre>javax.swing.JLabel labelJavaPath</pre> +</li> +<li class="blockList"> +<h4>labelMinecraftVersion</h4> +<pre>javax.swing.JLabel labelMinecraftVersion</pre> +</li> +<li class="blockList"> +<h4>labelModloader</h4> +<pre>javax.swing.JLabel labelModloader</pre> +</li> +<li class="blockList"> +<h4>labelModloaderVersion</h4> +<pre>javax.swing.JLabel labelModloaderVersion</pre> +</li> +<li class="blockList"> +<h4>labelGenerateServerPack</h4> +<pre>javax.swing.JLabel labelGenerateServerPack</pre> +</li> +<li class="blockList"> +<h4>textModpackDir</h4> +<pre>javax.swing.JTextField textModpackDir</pre> +</li> +<li class="blockList"> +<h4>textClientMods</h4> +<pre>javax.swing.JTextField textClientMods</pre> +</li> +<li class="blockList"> +<h4>textCopyDirs</h4> +<pre>javax.swing.JTextField textCopyDirs</pre> +</li> +<li class="blockList"> +<h4>textJavaPath</h4> +<pre>javax.swing.JTextField textJavaPath</pre> +</li> +<li class="blockList"> +<h4>textMinecraftVersion</h4> +<pre>javax.swing.JTextField textMinecraftVersion</pre> +</li> +<li class="blockList"> +<h4>textModloader</h4> +<pre>javax.swing.JTextField textModloader</pre> +</li> +<li class="blockList"> +<h4>textModloaderVersion</h4> +<pre>javax.swing.JTextField textModloaderVersion</pre> +</li> +<li class="blockList"> +<h4>helpTextArea</h4> +<pre>javax.swing.JTextArea helpTextArea</pre> +</li> +<li class="blockList"> +<h4>checkBoxServer</h4> +<pre>javax.swing.JCheckBox checkBoxServer</pre> +</li> +<li class="blockList"> +<h4>checkBoxIcon</h4> +<pre>javax.swing.JCheckBox checkBoxIcon</pre> +</li> +<li class="blockList"> +<h4>checkBoxProperties</h4> +<pre>javax.swing.JCheckBox checkBoxProperties</pre> +</li> +<li class="blockList"> +<h4>checkBoxScripts</h4> +<pre>javax.swing.JCheckBox checkBoxScripts</pre> +</li> +<li class="blockList"> +<h4>checkBoxZIP</h4> +<pre>javax.swing.JCheckBox checkBoxZIP</pre> +</li> +<li class="blockList"> +<h4>buttonModpackDir</h4> +<pre>javax.swing.JButton buttonModpackDir</pre> +</li> +<li class="blockList"> +<h4>buttonClientMods</h4> +<pre>javax.swing.JButton buttonClientMods</pre> +</li> +<li class="blockList"> +<h4>buttonCopyDirs</h4> +<pre>javax.swing.JButton buttonCopyDirs</pre> +</li> +<li class="blockList"> +<h4>buttonJavaPath</h4> +<pre>javax.swing.JButton buttonJavaPath</pre> +</li> +<li class="blockList"> +<h4>buttonLoadConfigFromFile</h4> +<pre>javax.swing.JButton buttonLoadConfigFromFile</pre> +</li> +<li class="blockList"> +<h4>buttonInfoWindow</h4> +<pre>javax.swing.JButton buttonInfoWindow</pre> +</li> +<li class="blockList"> +<h4>buttonGenerateServerPack</h4> +<pre>javax.swing.JButton buttonGenerateServerPack</pre> +</li> +<li class="blockList"> +<h4>modpackDirChooser</h4> +<pre>javax.swing.JFileChooser modpackDirChooser</pre> +</li> +<li class="blockList"> +<h4>clientModsChooser</h4> +<pre>javax.swing.JFileChooser clientModsChooser</pre> +</li> +<li class="blockList"> +<h4>copyDirsChooser</h4> +<pre>javax.swing.JFileChooser copyDirsChooser</pre> +</li> +<li class="blockList"> +<h4>javaChooser</h4> +<pre>javax.swing.JFileChooser javaChooser</pre> +</li> +<li class="blockListLast"> +<h4>configChooser</h4> +<pre>javax.swing.JFileChooser configChooser</pre> +</li> +</ul> +</li> +</ul> +</li> +<li class="blockList"><a name="de.griefed.serverpackcreator.gui.ModloaderInstallerLogTab"> +<!-- --> +</a> +<h3>Class <a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">de.griefed.serverpackcreator.gui.ModloaderInstallerLogTab</a> extends java.awt.Component implements Serializable</h3> +<ul class="blockList"> +<li class="blockList"> +<h3>Serialized Fields</h3> +<ul class="blockList"> +<li class="blockList"> +<h4>localizationManager</h4> +<pre><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> +</li> +<li class="blockList"> +<h4>modloaderInstallerLogPanel</h4> +<pre>javax.swing.JComponent modloaderInstallerLogPanel</pre> +</li> +<li class="blockList"> +<h4>constraints</h4> +<pre>java.awt.GridBagConstraints constraints</pre> +</li> +<li class="blockList"> +<h4>textArea</h4> +<pre>javax.swing.JTextArea textArea</pre> </li> <li class="blockListLast"> +<h4>scrollPane</h4> +<pre>javax.swing.JScrollPane scrollPane</pre> +</li> +</ul> +</li> +</ul> +</li> +<li class="blockList"><a name="de.griefed.serverpackcreator.gui.ServerPackCreatorLogTab"> +<!-- --> +</a> +<h3>Class <a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">de.griefed.serverpackcreator.gui.ServerPackCreatorLogTab</a> extends java.awt.Component implements Serializable</h3> +<ul class="blockList"> +<li class="blockList"> +<h3>Serialized Fields</h3> +<ul class="blockList"> +<li class="blockList"> <h4>localizationManager</h4> <pre><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> </li> +<li class="blockList"> +<h4>serverPackCreatorLogPanel</h4> +<pre>javax.swing.JComponent serverPackCreatorLogPanel</pre> +</li> +<li class="blockList"> +<h4>constraints</h4> +<pre>java.awt.GridBagConstraints constraints</pre> +</li> +<li class="blockList"> +<h4>textArea</h4> +<pre>javax.swing.JTextArea textArea</pre> +</li> +<li class="blockListLast"> +<h4>scrollPane</h4> +<pre>javax.swing.JScrollPane scrollPane</pre> +</li> </ul> </li> </ul> -- GitLab From 1f2e28dd3371ddf96a7fbf81c01ea4e9dcb24e7f Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sun, 2 May 2021 14:05:15 +0200 Subject: [PATCH 45/91] refactor(DI): Add check whether user is satisfied with modpack directory and list directories in modpack directory when asked to specify copy directories --- .../serverpackcreator/Configuration.java | 24 +++++++++++++++---- .../resources/lang/lang_de_de.properties | 2 ++ .../resources/lang/lang_en_us.properties | 2 ++ .../resources/lang/lang_uk_ua.properties | 2 ++ 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/Configuration.java b/src/main/java/de/griefed/serverpackcreator/Configuration.java index 2e56f6b92..9d9820316 100644 --- a/src/main/java/de/griefed/serverpackcreator/Configuration.java +++ b/src/main/java/de/griefed/serverpackcreator/Configuration.java @@ -1557,9 +1557,17 @@ public class Configuration { appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.modpack.example")); do { - System.out.print(localizationManager.getLocalizedString("clisetup.log.info.modpack.cli")); - tmpModpackDir = reader.nextLine(); - } while (!checkModpackDir(tmpModpackDir)); + + do { + System.out.print(localizationManager.getLocalizedString("clisetup.log.info.modpack.cli")); + tmpModpackDir = reader.nextLine(); + } while (!checkModpackDir(tmpModpackDir)); + + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), tmpModpackDir)); + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.modpack.checkreturninfo")); + System.out.print(localizationManager.getLocalizedString("clisetup.log.info.answer")); + + } while (!readBoolean()); modpackDir = tmpModpackDir.replace("\\", "/"); appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), modpackDir)); @@ -1570,8 +1578,7 @@ public class Configuration { do { clientMods.addAll(readStringArray()); appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), clientMods)); - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.clientmods.checkreturninfo")); - System.out.print(localizationManager.getLocalizedString("clisetup.log.info.answer")); + if (clientMods.isEmpty()) { clientMods = getFallbackModsList(); appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.checkconfig.clientmods")); @@ -1580,6 +1587,10 @@ public class Configuration { appLogger.warn(String.format(" %s", clientMods.get(i))); } //TODO: @Griefed Test whether this works } + + appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.clientmods.checkreturninfo")); + System.out.print(localizationManager.getLocalizedString("clisetup.log.info.answer")); + } while (!readBoolean()); appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), clientMods)); tmpClientMods = new String[clientMods.size()]; @@ -1588,6 +1599,9 @@ public class Configuration { //---------------------------------------------------------------------------DIRECTORIES TO COPY TO SERVER PACK--------- appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.copydirs.enter")); + File directories = new File(modpackDir); + List<String> dirList = Arrays.asList(Objects.requireNonNull(directories.list((current, name) -> new File(current, name).isDirectory()))); + appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.copydirs.dirsinmodpack"), dirList.toString().replace("[","").replace("]",""))); do { do { copyDirs.clear(); diff --git a/src/main/resources/de/griefed/resources/lang/lang_de_de.properties b/src/main/resources/de/griefed/resources/lang/lang_de_de.properties index 6dfd2575c..b47910450 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_de_de.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_de_de.properties @@ -215,11 +215,13 @@ clisetup.log.info.start=You started ServerPackCreator with the "%s" argument. St clisetup.log.info.modpack.enter=Please enter your modpack path. This path can be relative to ServerPackCreator, or absolute. clisetup.log.info.modpack.example=Example: "./Some Modpack" or "C:/Minecraft/Some Modpack" clisetup.log.info.modpack.cli=Path to modpack directory: +clisetup.log.info.modpack.checkreturninfo=If you are satisfied with this setting, enter ture. If not, enter false to restart modpack directory configuration. clisetup.log.info.clientmods.enter=Enter filenames of clientside-only mods, one per line. When you are done, simply press enter with empty input. clisetup.log.info.checkreturn=You entered: %s clisetup.log.info.clientmods.checkreturninfo=If you are satisfied with these values, enter true. If not, enter false to restart clientmod configuration. clisetup.log.info.answer=Answer: clisetup.log.info.copydirs.enter=Which directories should be copied to the server pack? These are folder names inside your modpack directory. +clisetup.log.info.copydirs.dirsinmodpack=The modpack directory you specified contains the following directories: %s clisetup.log.info.copydirs.specify=Specify your directories you want to be copied: clisetup.log.info.copydirs.checkreturninfo=If you are satisfied with these values, enter true. If not, enter false to restart clientmod configuration. clisetup.log.info.server.enter=Do you want ServerPackCreator to install the modloader server for your server pack? Must be true or false. diff --git a/src/main/resources/de/griefed/resources/lang/lang_en_us.properties b/src/main/resources/de/griefed/resources/lang/lang_en_us.properties index 9583239cb..0a9c2c330 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_en_us.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_en_us.properties @@ -215,11 +215,13 @@ clisetup.log.info.start=You started ServerPackCreator with the "%s" argument. St clisetup.log.info.modpack.enter=Please enter your modpack path. This path can be relative to ServerPackCreator, or absolute. clisetup.log.info.modpack.example=Example: "./Some Modpack" or "C:/Minecraft/Some Modpack" clisetup.log.info.modpack.cli=Path to modpack directory: +clisetup.log.info.modpack.checkreturninfo=If you are satisfied with this setting, enter ture. If not, enter false to restart modpack directory configuration. clisetup.log.info.clientmods.enter=Enter filenames of clientside-only mods, one per line. When you are done, simply press enter with empty input. clisetup.log.info.checkreturn=You entered: %s clisetup.log.info.clientmods.checkreturninfo=If you are satisfied with these values, enter true. If not, enter false to restart clientmod configuration. clisetup.log.info.answer=Answer: clisetup.log.info.copydirs.enter=Which directories should be copied to the server pack? These are folder names inside your modpack directory. +clisetup.log.info.copydirs.dirsinmodpack=The modpack directory you specified contains the following directories: %s clisetup.log.info.copydirs.specify=Specify your directories you want to be copied: clisetup.log.info.copydirs.checkreturninfo=If you are satisfied with these values, enter true. If not, enter false to restart clientmod configuration. clisetup.log.info.server.enter=Do you want ServerPackCreator to install the modloader server for your server pack? Must be true or false. diff --git a/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties b/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties index 7b26ef92f..10989a2ed 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties @@ -215,11 +215,13 @@ clisetup.log.info.start=You started ServerPackCreator with the "%s" argument. St clisetup.log.info.modpack.enter=Please enter your modpack path. This path can be relative to ServerPackCreator, or absolute. clisetup.log.info.modpack.example=Example: "./Some Modpack" or "C:/Minecraft/Some Modpack" clisetup.log.info.modpack.cli=Path to modpack directory: +clisetup.log.info.modpack.checkreturninfo=If you are satisfied with this setting, enter ture. If not, enter false to restart modpack directory configuration. clisetup.log.info.clientmods.enter=Enter filenames of clientside-only mods, one per line. When you are done, simply press enter with empty input. clisetup.log.info.checkreturn=You entered: %s clisetup.log.info.clientmods.checkreturninfo=If you are satisfied with these values, enter true. If not, enter false to restart clientmod configuration. clisetup.log.info.answer=Answer: clisetup.log.info.copydirs.enter=Which directories should be copied to the server pack? These are folder names inside your modpack directory. +clisetup.log.info.copydirs.dirsinmodpack=The modpack directory you specified contains the following directories: %s clisetup.log.info.copydirs.specify=Specify your directories you want to be copied: clisetup.log.info.copydirs.checkreturninfo=If you are satisfied with these values, enter true. If not, enter false to restart clientmod configuration. clisetup.log.info.server.enter=Do you want ServerPackCreator to install the modloader server for your server pack? Must be true or false. -- GitLab From 78dedeb93b39df0515d6726adbe215508a178bfe Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sun, 2 May 2021 14:05:52 +0200 Subject: [PATCH 46/91] refactor(DI): Remove no longer needed TODO --- src/main/java/de/griefed/serverpackcreator/Configuration.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/de/griefed/serverpackcreator/Configuration.java b/src/main/java/de/griefed/serverpackcreator/Configuration.java index 9d9820316..eb5421cc9 100644 --- a/src/main/java/de/griefed/serverpackcreator/Configuration.java +++ b/src/main/java/de/griefed/serverpackcreator/Configuration.java @@ -1585,7 +1585,6 @@ public class Configuration { for (int i = 0; i < clientMods.size(); i++) { appLogger.warn(String.format(" %s", clientMods.get(i))); } - //TODO: @Griefed Test whether this works } appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.clientmods.checkreturninfo")); -- GitLab From 53cca064002d67356e16d598b153fe6c17474d1b Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Mon, 3 May 2021 13:27:37 +0200 Subject: [PATCH 47/91] refactor(DI): Implement HasteBin wrapper and change button functionality to create pastes of configuration and serverpackcreator.log files --- build.gradle | 1 + img/pastebin.png | Bin 22072 -> 0 bytes img/pastebin.xcf | Bin 11765 -> 0 bytes .../serverpackcreator/gui/AboutTab.java | 167 ++++++++++++++++-- .../serverpackcreator/gui/CreateGui.java | 18 +- .../gui/CreateServerPackTab.java | 9 +- .../de/griefed/resources/gui/hastebin.png | Bin 0 -> 16102 bytes .../de/griefed/resources/gui/pastebin.png | Bin 22072 -> 0 bytes .../resources/lang/lang_de_de.properties | 13 +- .../resources/lang/lang_en_us.properties | 13 +- .../resources/lang/lang_uk_ua.properties | 13 +- 11 files changed, 213 insertions(+), 21 deletions(-) delete mode 100644 img/pastebin.png delete mode 100644 img/pastebin.xcf create mode 100644 src/main/resources/de/griefed/resources/gui/hastebin.png delete mode 100644 src/main/resources/de/griefed/resources/gui/pastebin.png diff --git a/build.gradle b/build.gradle index c68708e46..78b4104bd 100644 --- a/build.gradle +++ b/build.gradle @@ -85,6 +85,7 @@ javadoc { options.memberLevel = JavadocMemberLevel.PRIVATE classpath = sourceSets.main.runtimeClasspath } + java { withSourcesJar() withJavadocJar() diff --git a/img/pastebin.png b/img/pastebin.png deleted file mode 100644 index c013b4038789fd3e273362c964b4517eafb275da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22072 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 Wu&_>9kAgJ-0000<MNUMnLSTYu=E9-? diff --git a/img/pastebin.xcf b/img/pastebin.xcf deleted file mode 100644 index 506efb66929744e72beca172b02ca2507ba7aa93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11765 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 diff --git a/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java b/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java index 7d06ef495..84dc6a337 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java @@ -20,14 +20,19 @@ package de.griefed.serverpackcreator.gui; import de.griefed.serverpackcreator.i18n.LocalizationManager; +import org.apache.commons.io.FileUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import javax.net.ssl.HttpsURLConnection; import javax.swing.*; import javax.swing.text.*; import java.awt.*; -import java.io.IOException; -import java.net.URI; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.StringSelection; +import java.io.*; +import java.net.*; +import java.nio.charset.StandardCharsets; import java.util.Objects; /** @@ -56,19 +61,41 @@ public class AboutTab extends Component { } private final Dimension miscButtonDimension = new Dimension(50,50); + private final ImageIcon issueIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/issue.png"))); - private final ImageIcon pastebinIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/pastebin.png"))); + private final ImageIcon hastebinIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/hastebin.png"))); private final ImageIcon prosperIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/prosper.png"))); private JComponent aboutPanel; + private GridBagConstraints constraints; + private JTextPane textPane; + private SimpleAttributeSet attributeSet; + private StyledDocument document; + private JButton buttonCreatePasteBin; private JButton buttonOpenIssue; private JButton buttonDiscord; + private JTextArea textArea; + + private String configURL; + private String spclogURL; + private String textAreaContent; + + private StringSelection stringSelection; + + private Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); + + private final File serverPackCreatorConf = new File("serverpackcreator.conf"); + private final File serverPackCreatorLog = new File("logs/serverpackcreator.log"); + + private String[] options; + private int userResponse; + /** * Create the tab for the About-page of ServerpackCreator. This tab displays the about text, the list of contributors * to ServerPackCreator and offers three buttons to the user. Left to right: Open PasteBin in the user's browser to @@ -129,21 +156,65 @@ public class AboutTab extends Component { constraints.ipady = 40; constraints.gridwidth = 1; - //Button to upload log file to pastebin + //Button to upload log file to hastebin buttonCreatePasteBin = new JButton(); - buttonCreatePasteBin.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.about.pastebin")); - buttonCreatePasteBin.setIcon(pastebinIcon); + buttonCreatePasteBin.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.about.hastebin")); + buttonCreatePasteBin.setIcon(hastebinIcon); buttonCreatePasteBin.setPreferredSize(miscButtonDimension); buttonCreatePasteBin.addActionListener(e -> { - try { - if (Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) { - Desktop.getDesktop().browse(URI.create("https://pastebin.com")); - } - } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("about.log.error.browser"), ex); - } + textArea = new JTextArea(); + textArea.setOpaque(false); + configURL = createHasteBinFromFile(serverPackCreatorConf); + spclogURL = createHasteBinFromFile(serverPackCreatorLog); + textAreaContent = String.format( + "%s\n%s\n" + + "%s\n%s\n", + localizationManager.getLocalizedString("createserverpack.gui.about.hastebin.conf"), + configURL, + localizationManager.getLocalizedString("createserverpack.gui.about.hastebin.spclog"), + spclogURL + ); + + textArea.setText(textAreaContent); + options = new String[] { + localizationManager.getLocalizedString("createserverpack.gui.about.hastebin.dialog.yes"), + localizationManager.getLocalizedString("createserverpack.gui.about.hastebin.dialog.no"), + localizationManager.getLocalizedString("createserverpack.gui.about.hastebin.dialog.clipboard"), + }; + + userResponse = JOptionPane.showOptionDialog( + aboutPanel, + textArea, + localizationManager.getLocalizedString("createserverpack.gui.about.hastebin.dialog"), + JOptionPane.DEFAULT_OPTION, + JOptionPane.INFORMATION_MESSAGE, + hastebinIcon, + options, + options[0] + ); + + switch (userResponse) { + case 0: + try { + if (Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) { + + Desktop.getDesktop().browse(URI.create(configURL)); + Desktop.getDesktop().browse(URI.create(spclogURL)); + } + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("about.log.error.browser"), ex); + } + break; + case 2: + stringSelection = new StringSelection(textAreaContent); + clipboard.setContents(stringSelection, null); + break; + default: + + break; + } }); constraints.gridx = 0; constraints.gridy = 2; @@ -192,4 +263,74 @@ public class AboutTab extends Component { return aboutPanel; } + /** + * Create a HasteBin post from a given text file. The text file provided is read into a string and then passed onto + * <a href="https://haste.zneix.eu">Haste zneix</a> which creates a HasteBin post out of the passed String and + * returns the URL to the newly created post.<br> + * Created with the help of <a href="https://github.com/kaimu-kun/hastebin.java">kaimu-kun's hastebin.java (MIT License)</a> + * and edited to use HasteBin fork <a href="https://github.com/zneix/haste-server">zneix/haste-server</a>. My fork + * of kaimu-kun's hastebin.java is available at <a href="https://github.com/Griefed/hastebin.java">Griefed/hastebin.java</a>. + * @param textFile The file which will be read into a String of which then to create a HasteBin post of. + * @return String. Returns a String containing the URL to the newly created HasteBin post. + */ + private String createHasteBinFromFile(File textFile) { + String text = null; + String requestURL = "https://haste.zneix.eu/documents"; + String response = null; + + int postDataLength; + + URL url = null; + + HttpsURLConnection conn = null; + + byte[] postData; + + DataOutputStream dataOutputStream; + + BufferedReader bufferedReader; + + try { url = new URL(requestURL); } + catch (IOException ex) {appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.abouttab.hastebin.request"), ex);} + + try { text = FileUtils.readFileToString(textFile, "UTF-8"); } + catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.abouttab.hastebin.readfile"),ex); } + + postData = Objects.requireNonNull(text).getBytes(StandardCharsets.UTF_8); + postDataLength = postData.length; + + try { conn = (HttpsURLConnection) Objects.requireNonNull(url).openConnection(); } + catch (IOException ex) {appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.abouttab.hastebin.connection"), ex);} + + Objects.requireNonNull(conn).setDoOutput(true); + conn.setInstanceFollowRedirects(false); + + try { conn.setRequestMethod("POST"); } + catch (ProtocolException ex) {appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.abouttab.hastebin.method"), ex);} + + conn.setRequestProperty("User-Agent", "HasteBin-Creator for ServerPackCreator"); + conn.setRequestProperty("Content-Length", Integer.toString(postDataLength)); + conn.setUseCaches(false); + + try { + dataOutputStream = new DataOutputStream(conn.getOutputStream()); + dataOutputStream.write(postData); + bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream())); + response = bufferedReader.readLine(); + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.abouttab.hastebin.response"), ex); + } + + if (Objects.requireNonNull(response).contains("\"key\"")) { + response = "https://haste.zneix.eu/" + response.substring(response.indexOf(":") + 2, response.length() - 2); + } + + if (response.contains("https://haste.zneix.eu")) { + return response; + } else { + return localizationManager.getLocalizedString("createserverpack.log.error.abouttab.hastebin.response"); + } + + } + } \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java index 8b0802f09..0da4b63a1 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java @@ -57,6 +57,11 @@ public class CreateGui extends JPanel { private CurseCreateModpack curseCreateModpack; private CreateServerPack createServerPack; + private CreateServerPackTab createServerPackTab; + private ServerPackCreatorLogTab serverPackCreatorLogTab; + private ModloaderInstallerLogTab modloaderInstallerLogTab; + private AboutTab aboutTab; + /** * <strong>Constructor</strong><p> * Used for Dependency Injection.<p> @@ -99,12 +104,17 @@ public class CreateGui extends JPanel { this.createServerPack = injectedCreateServerPack; } + createServerPackTab = new CreateServerPackTab(localizationManager, configuration, curseCreateModpack, createServerPack); + serverPackCreatorLogTab = new ServerPackCreatorLogTab(localizationManager); + modloaderInstallerLogTab = new ModloaderInstallerLogTab(localizationManager); + aboutTab = new AboutTab(localizationManager); + JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); tabbedPane.addTab( localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.title"), null, - new CreateServerPackTab(localizationManager, configuration, curseCreateModpack, createServerPack).createServerPackTab(), + createServerPackTab.createServerPackTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.tip")); tabbedPane.setMnemonicAt(0, KeyEvent.VK_1); @@ -112,7 +122,7 @@ public class CreateGui extends JPanel { tabbedPane.addTab( localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.title"), null, - new ServerPackCreatorLogTab(localizationManager).serverPackCreatorLogTab(), + serverPackCreatorLogTab.serverPackCreatorLogTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.tip")); tabbedPane.setMnemonicAt(1, KeyEvent.VK_2); @@ -120,7 +130,7 @@ public class CreateGui extends JPanel { tabbedPane.addTab( localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.modloaderinstallerlog.title"), null, - new ModloaderInstallerLogTab(localizationManager).modloaderInstallerLogTab(), + modloaderInstallerLogTab.modloaderInstallerLogTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.modloaderinstallerlog.tip")); tabbedPane.setMnemonicAt(2, KeyEvent.VK_3); @@ -128,7 +138,7 @@ public class CreateGui extends JPanel { tabbedPane.addTab( localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.about.title"), null, - new AboutTab(localizationManager).aboutTab(), + aboutTab.aboutTab(), localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.about.tip")); tabbedPane.setMnemonicAt(3, KeyEvent.VK_4); diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java index 773d71310..7d58029f3 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java @@ -587,6 +587,7 @@ public class CreateServerPackTab extends Component { localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.copyicon"), localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.createzip") )); + helpTextArea.setEditable(false); helpTextArea.setOpaque(false); @@ -611,7 +612,13 @@ public class CreateServerPackTab extends Component { } }); - JOptionPane.showMessageDialog(new JFrame(), helpScrollPane, localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.title"), JOptionPane.INFORMATION_MESSAGE, helpIcon); + JOptionPane.showMessageDialog( + createServerPackPanel, + helpScrollPane, + localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.title"), + JOptionPane.INFORMATION_MESSAGE, + helpIcon + ); }); constraints.anchor = GridBagConstraints.CENTER; diff --git a/src/main/resources/de/griefed/resources/gui/hastebin.png b/src/main/resources/de/griefed/resources/gui/hastebin.png new file mode 100644 index 0000000000000000000000000000000000000000..8e15ebae11f4f9ee8fa13eed96f0547d874345be GIT binary patch literal 16102 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 V4y^UwZ%<tSvXV*?)nZ0L{|A?G0zUu% literal 0 HcmV?d00001 diff --git a/src/main/resources/de/griefed/resources/gui/pastebin.png b/src/main/resources/de/griefed/resources/gui/pastebin.png deleted file mode 100644 index c013b4038789fd3e273362c964b4517eafb275da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22072 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 Wu&_>9kAgJ-0000<MNUMnLSTYu=E9-? diff --git a/src/main/resources/de/griefed/resources/lang/lang_de_de.properties b/src/main/resources/de/griefed/resources/lang/lang_de_de.properties index b47910450..79ed23879 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_de_de.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_de_de.properties @@ -81,7 +81,13 @@ createserverpack.gui.buttongenerateserverpack.ready=ServerPackCreator ready. createserverpack.gui.buttongenerateserverpack.tip=Check the configuration for errors and start the generation of the server pack. createserverpack.gui.buttongenerateserverpack.fail=Config check not successfull. Check your configuration. createserverpack.gui.about.text=ServerPackCreator was made as a training ground for Java\nand because I wanted an easier way to update/make server packs for updates to my modpack.\nIt has grown substantially since the first release, which was when it was CLI only.\nNow it provides a GUI as well!\nThe fact that this is, and always will be, a playground for me, in Java, still remains though. As with every application, bugs are bound to appear, and I will try to fix them whenever I can.\nI am working on this program in my spare time, please keep that in mind when reporting issues or requesting new features to be added.\n\nThis project would not be where it is today without the help from my contributors:\n\nWhitebear60 -createserverpack.gui.about.pastebin=Open pastebin in your browser to create pastes of logs files or config files. +createserverpack.gui.about.hastebin=Create pastes of your configuration and serverpackcreator.log files. +createserverpack.gui.about.hastebin.conf=HasteBin URL for configuration file: +createserverpack.gui.about.hastebin.spclog=HasteBin URL for serverpackcreator.log: +createserverpack.gui.about.hastebin.dialog=Open HasteBins in Browser? +createserverpack.gui.about.hastebin.dialog.yes=Yes +createserverpack.gui.about.hastebin.dialog.no=No +createserverpack.gui.about.hastebin.dialog.clipboard=Copy to clipboard createserverpack.gui.about.issue=Create an issue on GitHub. createserverpack.gui.about.discord=Get support and chat on Griefed's Discord server. @@ -189,6 +195,11 @@ createserverpack.log.error.buttonjavapath=Error getting path to java binary/exec createserverpack.log.error.buttonloadconfigfromfile=Error loading configuration from selected file. createserverpack.log.error.buttoncreateserverpack.tempfile=Could not delete temporary config file. createserverpack.log.error.browserserverpack=Error opening file explorer for server pack. +createserverpack.log.error.abouttab.hastebin.readfile=Error reading text from file. +createserverpack.log.error.abouttab.hastebin.request=Error during acquisition of request URL. +createserverpack.log.error.abouttab.hastebin.connection=Error during opening of connection to URL. +createserverpack.log.error.abouttab.hastebin.method=Error during request of POST method. +createserverpack.log.error.abouttab.hastebin.response=Error encountered when acquiring response from URL. tabbedpane.log.error=Error: There was an error setting the look and feel. ## Info logs diff --git a/src/main/resources/de/griefed/resources/lang/lang_en_us.properties b/src/main/resources/de/griefed/resources/lang/lang_en_us.properties index 0a9c2c330..a78703694 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_en_us.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_en_us.properties @@ -81,7 +81,13 @@ createserverpack.gui.buttongenerateserverpack.ready=ServerPackCreator ready. createserverpack.gui.buttongenerateserverpack.tip=Check the configuration for errors and start the generation of the server pack. createserverpack.gui.buttongenerateserverpack.fail=Config check not successfull. Check your configuration. createserverpack.gui.about.text=ServerPackCreator was made as a training ground for Java\nand because I wanted an easier way to update/make server packs for updates to my modpack.\nIt has grown substantially since the first release, which was when it was CLI only.\nNow it provides a GUI as well!\nThe fact that this is, and always will be, a playground for me, in Java, still remains though. As with every application, bugs are bound to appear, and I will try to fix them whenever I can.\nI am working on this program in my spare time, please keep that in mind when reporting issues or requesting new features to be added.\n\nThis project would not be where it is today without the help from my contributors:\n\nWhitebear60 -createserverpack.gui.about.pastebin=Open pastebin in your browser to create pastes of logs files or config files. +createserverpack.gui.about.hastebin=Create pastes of your configuration and serverpackcreator.log files. +createserverpack.gui.about.hastebin.conf=HasteBin URL for configuration file: +createserverpack.gui.about.hastebin.spclog=HasteBin URL for serverpackcreator.log: +createserverpack.gui.about.hastebin.dialog=Open HasteBins in Browser? +createserverpack.gui.about.hastebin.dialog.yes=Yes +createserverpack.gui.about.hastebin.dialog.no=No +createserverpack.gui.about.hastebin.dialog.clipboard=Copy to clipboard createserverpack.gui.about.issue=Create an issue on GitHub. createserverpack.gui.about.discord=Get support and chat on Griefed's Discord server. @@ -189,6 +195,11 @@ createserverpack.log.error.buttonjavapath=Error getting path to java binary/exec createserverpack.log.error.buttonloadconfigfromfile=Error loading configuration from selected file. createserverpack.log.error.buttoncreateserverpack.tempfile=Could not delete temporary config file. createserverpack.log.error.browserserverpack=Error opening file explorer for server pack. +createserverpack.log.error.abouttab.hastebin.readfile=Error reading text from file. +createserverpack.log.error.abouttab.hastebin.request=Error during acquisition of request URL. +createserverpack.log.error.abouttab.hastebin.connection=Error during opening of connection to URL. +createserverpack.log.error.abouttab.hastebin.method=Error during request of POST method. +createserverpack.log.error.abouttab.hastebin.response=Error encountered when acquiring response from URL. tabbedpane.log.error=Error: There was an error setting the look and feel. ## Info logs diff --git a/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties b/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties index 10989a2ed..0fe83cba8 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties @@ -81,7 +81,13 @@ createserverpack.gui.buttongenerateserverpack.ready=ServerPackCreator ready. createserverpack.gui.buttongenerateserverpack.tip=Check the configuration for errors and start the generation of the server pack. createserverpack.gui.buttongenerateserverpack.fail=Config check not successfull. Check your configuration. createserverpack.gui.about.text=ServerPackCreator was made as a training ground for Java\nand because I wanted an easier way to update/make server packs for updates to my modpack.\nIt has grown substantially since the first release, which was when it was CLI only.\nNow it provides a GUI as well!\nThe fact that this is, and always will be, a playground for me, in Java, still remains though. As with every application, bugs are bound to appear, and I will try to fix them whenever I can.\nI am working on this program in my spare time, please keep that in mind when reporting issues or requesting new features to be added.\n\nThis project would not be where it is today without the help from my contributors:\n\nWhitebear60 -createserverpack.gui.about.pastebin=Open pastebin in your browser to create pastes of logs files or config files. +createserverpack.gui.about.hastebin=Create pastes of your configuration and serverpackcreator.log files. +createserverpack.gui.about.hastebin.conf=HasteBin URL for configuration file: +createserverpack.gui.about.hastebin.spclog=HasteBin URL for serverpackcreator.log: +createserverpack.gui.about.hastebin.dialog=Open HasteBins in Browser? +createserverpack.gui.about.hastebin.dialog.yes=Yes +createserverpack.gui.about.hastebin.dialog.no=No +createserverpack.gui.about.hastebin.dialog.clipboard=Copy to clipboard createserverpack.gui.about.issue=Create an issue on GitHub. createserverpack.gui.about.discord=Get support and chat on Griefed's Discord server. @@ -189,6 +195,11 @@ createserverpack.log.error.buttonjavapath=Error getting path to java binary/exec createserverpack.log.error.buttonloadconfigfromfile=Error loading configuration from selected file. createserverpack.log.error.buttoncreateserverpack.tempfile=Could not delete temporary config file. createserverpack.log.error.browserserverpack=Error opening file explorer for server pack. +createserverpack.log.error.abouttab.hastebin.readfile=Error reading text from file. +createserverpack.log.error.abouttab.hastebin.request=Error during acquisition of request URL. +createserverpack.log.error.abouttab.hastebin.connection=Error during opening of connection to URL. +createserverpack.log.error.abouttab.hastebin.method=Error during request of POST method. +createserverpack.log.error.abouttab.hastebin.response=Error encountered when acquiring response from URL. tabbedpane.log.error=Error: There was an error setting the look and feel. ## Info logs -- GitLab From 0e68979c4788969526f7a78aab9ee9d10e5d4c18 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Mon, 3 May 2021 13:28:21 +0200 Subject: [PATCH 48/91] refactor(DI): Implement HasteBin wrapper and change button functionality to create pastes of configuration and serverpackcreator.log files --- img/hastebin.png | Bin 0 -> 16102 bytes img/hastebin.xcf | Bin 0 -> 22800 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/hastebin.png create mode 100644 img/hastebin.xcf diff --git a/img/hastebin.png b/img/hastebin.png new file mode 100644 index 0000000000000000000000000000000000000000..8e15ebae11f4f9ee8fa13eed96f0547d874345be GIT binary patch literal 16102 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 V4y^UwZ%<tSvXV*?)nZ0L{|A?G0zUu% literal 0 HcmV?d00001 diff --git a/img/hastebin.xcf b/img/hastebin.xcf new file mode 100644 index 0000000000000000000000000000000000000000..7389491da23ab958413d784a7f18208effd05cf4 GIT binary patch literal 22800 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 literal 0 HcmV?d00001 -- GitLab From 1cad352639c6a94ea53eea83552935eb7dabf250 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Mon, 3 May 2021 17:11:27 +0200 Subject: [PATCH 49/91] refactor(DI): Remove borders for filechooser buttons --- .../griefed/serverpackcreator/gui/CreateServerPackTab.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java index 7d58029f3..fa1fa8c48 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java @@ -31,6 +31,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import javax.swing.*; +import javax.swing.border.Border; import javax.swing.filechooser.FileNameExtensionFilter; import java.awt.*; import java.awt.event.HierarchyEvent; @@ -56,7 +57,7 @@ import java.util.concurrent.Executors; * If a configuration file is found during startup of ServerPackCreator, it is automatically loaded into the GUI. * </p> */ -public class CreateServerPackTab extends Component { +public class CreateServerPackTab extends JComponent { private static final Logger appLogger = LogManager.getLogger(CreateServerPackTab.class); private Configuration configuration; @@ -322,6 +323,7 @@ public class CreateServerPackTab extends Component { //Select modpackDir button buttonModpackDir = new JButton(); buttonModpackDir.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttonmodpackdir")); + buttonModpackDir.setContentAreaFilled(false); buttonModpackDir.setIcon(folderIcon); buttonModpackDir.setMinimumSize(folderButtonDimension); buttonModpackDir.setPreferredSize(folderButtonDimension); @@ -356,6 +358,7 @@ public class CreateServerPackTab extends Component { //Select clientside-mods button buttonClientMods = new JButton(); buttonClientMods.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttonclientmods")); + buttonClientMods.setContentAreaFilled(false); buttonClientMods.setIcon(folderIcon); buttonClientMods.setMinimumSize(folderButtonDimension); buttonClientMods.setPreferredSize(folderButtonDimension); @@ -407,6 +410,7 @@ public class CreateServerPackTab extends Component { //Select directories to copy to server pack button buttonCopyDirs = new JButton(); buttonCopyDirs.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttoncopydirs")); + buttonCopyDirs.setContentAreaFilled(false); buttonCopyDirs.setIcon(folderIcon); buttonCopyDirs.setMinimumSize(folderButtonDimension); buttonCopyDirs.setPreferredSize(folderButtonDimension); @@ -447,6 +451,7 @@ public class CreateServerPackTab extends Component { //Select javaPath button buttonJavaPath = new JButton(); buttonJavaPath.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttonjavapath")); + buttonJavaPath.setContentAreaFilled(false); buttonJavaPath.setIcon(folderIcon); buttonJavaPath.setMinimumSize(folderButtonDimension); buttonJavaPath.setPreferredSize(folderButtonDimension); -- GitLab From 43db830709ed61146c895a0fd3d67544211060b0 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Mon, 3 May 2021 17:12:14 +0200 Subject: [PATCH 50/91] refactor(DI): Explicitly extend JComponent --- .../griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java | 2 +- .../griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java b/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java index 104e715ee..d1d2e2f6f 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java @@ -30,7 +30,7 @@ import java.io.File; /** * This class creates the tab which display the latest modloader_installer.log tailer. */ -public class ModloaderInstallerLogTab extends Component { +public class ModloaderInstallerLogTab extends JComponent { private LocalizationManager localizationManager; diff --git a/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java b/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java index dc873eddf..0e6dbf1b0 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java @@ -30,7 +30,7 @@ import java.io.File; /** * This class creates the tab which display the latest serverpackcreator.log tailer. */ -public class ServerPackCreatorLogTab extends Component { +public class ServerPackCreatorLogTab extends JComponent { private LocalizationManager localizationManager; -- GitLab From 744d2ecf3469fff72979e13db9720a46490d53d2 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Mon, 3 May 2021 19:47:11 +0200 Subject: [PATCH 51/91] refactor(DI): Add a tiled background to the JFrame holding the JTabbedPane for better visibility of content in the banner. --- img/tile.png | Bin 0 -> 19435 bytes img/tile2.png | Bin 0 -> 19196 bytes .../gui/BackgroundPanel.java | 273 ++++++++++++++++++ .../serverpackcreator/gui/CreateGui.java | 26 +- .../de/griefed/resources/gui/tile.png | Bin 0 -> 28889 bytes 5 files changed, 298 insertions(+), 1 deletion(-) create mode 100644 img/tile.png create mode 100644 img/tile2.png create mode 100644 src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java create mode 100644 src/main/resources/de/griefed/resources/gui/tile.png diff --git a/img/tile.png b/img/tile.png new file mode 100644 index 0000000000000000000000000000000000000000..f63fde3241828f9e71818e97446eae9719841b82 GIT binary patch literal 19435 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 X@I7F@uhc%^>0Jz-u6{1-oD!M<P4Z*I literal 0 HcmV?d00001 diff --git a/img/tile2.png b/img/tile2.png new file mode 100644 index 0000000000000000000000000000000000000000..9c2f2c1c949642195d0f05fbf2a1e1c4e1ad6a44 GIT binary patch literal 19196 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 IwU7RP0GFHQ%K!iX literal 0 HcmV?d00001 diff --git a/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java b/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java new file mode 100644 index 000000000..25edcc61f --- /dev/null +++ b/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java @@ -0,0 +1,273 @@ +package de.griefed.serverpackcreator.gui; + +import javax.swing.*; +import java.awt.*; + +/** + * Hey, Griefed here. I tried to add a tiled background image to the frame which holds the JTabbedPane, but after serveral + * failed attempts, I gave up and almost threw the idea out of the window. I wanted to set the background to a tiled image, + * because simply setting a colour seemed too boring, and I needed <em>something</em> in the background so the banner + * icon would be more clear to the eye. So, I activated my Google-Fu and encountered this holy grail of tiling images + * for Swing.<br> + * Links:<br> + * <a href="https://tips4java.wordpress.com/2008/10/12/background-panel/">Background Panel by Rob Camick from October 12, 2008</a><br> + * <a href="http://www.camick.com/java/source/BackgroundPanel.java">BackgroundPanel.java</a><br> + * Seriously, give this man an award, because this class is a <strong>BEAST</strong>.<p> + * Rob, if you somehow ever get wind of your class being used here: Thank you, thank you, thank you, thank you, thank you + * so very much! You seriously made my day here.<br> + * Rob, you rule. + */ +public class BackgroundPanel extends JPanel { + public static final int SCALED = 0; + public static final int TILED = 1; + public static final int ACTUAL = 2; + + private Paint painter; + + private Image image; + + private int style = SCALED; + + private float alignmentX = 0.5f; + private float alignmentY = 0.5f; + + private boolean isTransparentAdd = true; + + /** + * <strong>Constructor</strong><br> + * Set image as the background with the SCALED style. + * @param image Pass an image to the constructor to be used in the new JPanel. + */ + public BackgroundPanel(Image image) { + this(image, SCALED); + } + + /** + * <strong>Constructor</strong><br> + * Set image as the background with the specified style. + * @param image Pass an image to the constructor to be used in the new JPanel. + * @param style The style with which the image should be painted. See {@link #SCALED}, {@link #TILED}, {@link #ACTUAL} + */ + public BackgroundPanel(Image image, int style) { + setImage( image ); + setStyle( style ); + setLayout( new BorderLayout() ); + } + + /** + * <strong>Constructor</strong><br> + * Set image as the background with the specified style and alignment. + * @param image Pass an image to the constructor to be used in the new JPanel. + * @param style The style with which the image should be painted. See {@link #SCALED}, {@link #TILED}, {@link #ACTUAL} + * @param alignmentX Alignment along the x-axis. + * @param alignmentY Alignment along the y axis. + */ + public BackgroundPanel(Image image, int style, float alignmentX, float alignmentY) { + setImage( image ); + setStyle( style ); + setImageAlignmentX( alignmentX ); + setImageAlignmentY( alignmentY ); + setLayout( new BorderLayout() ); + } + + /** + * <strong>Constructor</strong><br> + * Use the Paint interface to paint a background. + * @param painter Pass a painter to be used as the background in the new JPanel. + */ + public BackgroundPanel(Paint painter) { + setPaint( painter ); + setLayout( new BorderLayout() ); + } + + /** + * Setter for the image used as the background. + * @param image Image to be set as the background. + */ + public void setImage(Image image) { + this.image = image; + repaint(); + } + + /** + * Setter the style used to paint the background image. + * @param style Sets the style with which the image should be painted. + */ + public void setStyle(int style) { + this.style = style; + repaint(); + } + + /** + * Setter for the Paint object used to paint the background. + * @param painter Sets the painter with which the background should be painted. + */ + public void setPaint(Paint painter) { + this.painter = painter; + repaint(); + } + + /** + * Setter for the horizontal alignment of the image when using ACTUAL style. + * @param alignmentX Sets the alignment along the x-axis. + */ + public void setImageAlignmentX(float alignmentX) { + this.alignmentX = alignmentX > 1.0f ? 1.0f : alignmentX < 0.0f ? 0.0f : alignmentX; + repaint(); + } + + /** + * Setter for the horizontal alignment of the image when using ACTUAL style. + * @param alignmentY Sets the alignment along the y-axis. + */ + public void setImageAlignmentY(float alignmentY) { + this.alignmentY = alignmentY > 1.0f ? 1.0f : alignmentY < 0.0f ? 0.0f : alignmentY; + repaint(); + } + + /** + * Override method so we can make the component transparent. + * @param component JComponent to add to the panel. + */ + public void add(JComponent component) { + add(component, null); + } + + /** + * Override to provide a preferred size equal to the image size. + * @return Dimension. Returns the dimension of the passed image. + */ + @Override + public Dimension getPreferredSize() { + if (image == null) + return super.getPreferredSize(); + else + return new Dimension(image.getWidth(null), image.getHeight(null)); + } + + /** + * Override method so we can make the component transparent. + * @param component JComponent to add to the panel. + * @param constraints Contraints wich which the panel should be added. + */ + public void add(JComponent component, Object constraints) { + if (isTransparentAdd) + { + makeComponentTransparent(component); + } + + super.add(component, constraints); + } + + /** + * Controls whether components added to this panel should automatically + * be made transparent. That is, setOpaque(false) will be invoked. + * The default is set to true. + * @param isTransparentAdd Whether to automatically make components transparent. + */ + public void setTransparentAdd(boolean isTransparentAdd) { + this.isTransparentAdd = isTransparentAdd; + } + + /** + * Try to make the component transparent. + * For components that use renderers, like JTable, you will also need to + * change the renderer to be transparent. An easy way to do this it to + * set the background of the table to a Color using an alpha value of 0. + * @param component The component to make transparent. + */ + private void makeComponentTransparent(JComponent component) { + component.setOpaque( false ); + + if (component instanceof JScrollPane) { + JScrollPane scrollPane = (JScrollPane)component; + JViewport viewport = scrollPane.getViewport(); + viewport.setOpaque( false ); + Component c = viewport.getView(); + + if (c instanceof JComponent) { + ((JComponent)c).setOpaque( false ); + } + } + } + + /** + * Add custom painting. + * @param g Received from parent. + */ + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + + // Invoke the painter for the background + + if (painter != null) { + Dimension d = getSize(); + Graphics2D g2 = (Graphics2D) g; + g2.setPaint(painter); + g2.fill( new Rectangle(0, 0, d.width, d.height) ); + } + + // Draw the image + + if (image == null ) return; + + switch (style) { + case SCALED : + drawScaled(g); + break; + + case TILED : + drawTiled(g); + break; + + case ACTUAL : + drawActual(g); + break; + + default: + drawScaled(g); + } + } + + /** + * Custom painting code for drawing a SCALED image as the background. + * @param g Received from parent. + */ + private void drawScaled(Graphics g) { + Dimension d = getSize(); + g.drawImage(image, 0, 0, d.width, d.height, null); + } + + /** + * Custom painting code for drawing TILED images as the background. + * @param g Received from parent. + */ + private void drawTiled(Graphics g) { + Dimension d = getSize(); + int width = image.getWidth( null ); + int height = image.getHeight( null ); + + for (int x = 0; x < d.width; x += width) { + for (int y = 0; y < d.height; y += height) { + g.drawImage( image, x, y, null, null ); + } + } + } + + /** + * Custom painting code for drawing the ACTUAL image as the background. + * The image is positioned in the panel based on the horizontal and + * vertical alignments specified. + * @param g Received from parent. + */ + private void drawActual(Graphics g) { + Dimension d = getSize(); + Insets insets = getInsets(); + int width = d.width - insets.left - insets.right; + int height = d.height - insets.top - insets.left; + float x = (width - image.getWidth(null)) * alignmentX; + float y = (height - image.getHeight(null)) * alignmentY; + g.drawImage(image, (int)x + insets.left, (int)y + insets.top, this); + } +} \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java index 0da4b63a1..7d05cdc9f 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java @@ -29,10 +29,13 @@ import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.event.KeyEvent; +import java.awt.image.BufferedImage; import java.io.File; +import java.io.IOException; import java.util.Objects; /** @@ -51,6 +54,17 @@ public class CreateGui extends JPanel { private final ImageIcon bannerIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/banner.png"))); private final Image icon = Toolkit.getDefaultToolkit().getImage(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/app.png"))); private final Dimension windowDimension = new Dimension(800,860); + private final Image tile = Toolkit.getDefaultToolkit().getImage(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/tile.png"))); + private BufferedImage bufferedImage; + { + try { + bufferedImage = ImageIO.read(getClass().getResource("/de/griefed/resources/gui/tile.png")); + } catch (IOException ex) { + //Can't use localization here. + appLogger.error("Could not read image for tiling.", ex); + } + } + private LocalizationManager localizationManager; private Configuration configuration; @@ -61,6 +75,7 @@ public class CreateGui extends JPanel { private ServerPackCreatorLogTab serverPackCreatorLogTab; private ModloaderInstallerLogTab modloaderInstallerLogTab; private AboutTab aboutTab; + private BackgroundPanel backgroundPanel; /** * <strong>Constructor</strong><p> @@ -109,8 +124,12 @@ public class CreateGui extends JPanel { modloaderInstallerLogTab = new ModloaderInstallerLogTab(localizationManager); aboutTab = new AboutTab(localizationManager); + backgroundPanel = new BackgroundPanel(bufferedImage, BackgroundPanel.TILED, 0.0f, 0.0f); + JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); + setOpaque(false); + tabbedPane.addTab( localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.title"), null, @@ -144,7 +163,7 @@ public class CreateGui extends JPanel { tabbedPane.setMnemonicAt(3, KeyEvent.VK_4); add(tabbedPane); - + tabbedPane.setOpaque(false); tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); } @@ -206,13 +225,18 @@ public class CreateGui extends JPanel { serverPackCreatorFrame = new JFrame(localizationManager.getLocalizedString("createserverpack.gui.createandshowgui")); serverPackCreatorFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + serverPackCreatorFrame.setContentPane(backgroundPanel); + serverPackCreatorFrame.setIconImage(icon); + serverPackCreatorBanner = new JLabel(bannerIcon); serverPackCreatorBanner.setOpaque(false); serverPackCreatorFrame.add(serverPackCreatorBanner, BorderLayout.PAGE_START); + serverPackCreatorFrame.add(new CreateGui(localizationManager, configuration, curseCreateModpack, createServerPack), BorderLayout.CENTER); + serverPackCreatorFrame.setSize(windowDimension); serverPackCreatorFrame.setPreferredSize(windowDimension); serverPackCreatorFrame.setMaximumSize(windowDimension); serverPackCreatorFrame.setResizable(true); diff --git a/src/main/resources/de/griefed/resources/gui/tile.png b/src/main/resources/de/griefed/resources/gui/tile.png new file mode 100644 index 0000000000000000000000000000000000000000..5e3a93aaaddbcf3d163b4046134269f15f9c5b3c GIT binary patch literal 28889 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 U;rv`+Q`5gJFWQ(^o<~Lh7jrB{ApigX literal 0 HcmV?d00001 -- GitLab From d66eb708388211078df4be0d8c3b9290ee26304b Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Mon, 3 May 2021 19:47:26 +0200 Subject: [PATCH 52/91] refactor(DI): Get rid of pmd. Not that useful anyway. --- build.gradle | 9 --------- 1 file changed, 9 deletions(-) diff --git a/build.gradle b/build.gradle index 78b4104bd..f0b019289 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,6 @@ plugins { id 'java' id 'maven-publish' id 'idea' - id 'pmd' id 'edu.sc.seis.launch4j' version '2.5.0' } @@ -41,14 +40,6 @@ launch4j { icon = "${projectDir}/src/main/resources/de/griefed/resources/gui/icon.ico" } -pmd { - consoleOutput = true - toolVersion = "6.21.0" - //noinspection GroovyAccessibility, GroovyAssignabilityCheck - rulesMinimumPriority = 1 - ruleSets = ["category/java/errorprone.xml", "category/java/bestpractices.xml"] -} - configurations { embed implementation.extendsFrom(embed) -- GitLab From 52dc9dd79a559692800c0e1972ee79de0e3dfd32 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Mon, 3 May 2021 19:50:17 +0200 Subject: [PATCH 53/91] refactor(DI): Some more whitespace --- src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java b/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java index 84dc6a337..0f1d06e96 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java @@ -197,6 +197,7 @@ public class AboutTab extends Component { switch (userResponse) { case 0: + try { if (Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) { @@ -207,12 +208,14 @@ public class AboutTab extends Component { appLogger.error(localizationManager.getLocalizedString("about.log.error.browser"), ex); } break; + case 2: + stringSelection = new StringSelection(textAreaContent); clipboard.setContents(stringSelection, null); break; - default: + default: break; } }); -- GitLab From 59d5aa360bf12909e74fb01ce9480b8a453c9245 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Mon, 3 May 2021 19:51:13 +0200 Subject: [PATCH 54/91] refactor(DI): Remove borders and implement mouse hover. Add "(optional)" to javapath label --- .../gui/CreateServerPackTab.java | 74 ++++++++++++++++++- .../resources/lang/lang_de_de.properties | 2 +- .../resources/lang/lang_en_us.properties | 2 +- .../resources/lang/lang_uk_ua.properties | 2 +- 4 files changed, 74 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java index fa1fa8c48..5b59a87c5 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java @@ -31,7 +31,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import javax.swing.*; -import javax.swing.border.Border; import javax.swing.filechooser.FileNameExtensionFilter; import java.awt.*; import java.awt.event.HierarchyEvent; @@ -112,6 +111,7 @@ public class CreateServerPackTab extends JComponent { private final ImageIcon helpIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/help.png"))); private final Dimension folderButtonDimension = new Dimension(24,24); private final Dimension miscButtonDimension = new Dimension(50,50); + private final Dimension startDimension = new Dimension(64,64); private final Dimension chooserDimension = new Dimension(750,450); private JComponent createServerPackPanel; @@ -351,6 +351,15 @@ public class CreateServerPackTab extends JComponent { } } }); + buttonModpackDir.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseEntered(java.awt.event.MouseEvent evt) { + buttonModpackDir.setContentAreaFilled(true); + } + + public void mouseExited(java.awt.event.MouseEvent evt) { + buttonModpackDir.setContentAreaFilled(false); + } + }); constraints.gridx = 2; constraints.gridy = 1; createServerPackPanel.add(buttonModpackDir, constraints); @@ -403,6 +412,15 @@ public class CreateServerPackTab extends JComponent { appLogger.info(String.format(localizationManager.getLocalizedString("createserverpack.log.info.buttonclientmods"), clientModsFilenames)); } }); + buttonClientMods.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseEntered(java.awt.event.MouseEvent evt) { + buttonClientMods.setContentAreaFilled(true); + } + + public void mouseExited(java.awt.event.MouseEvent evt) { + buttonClientMods.setContentAreaFilled(false); + } + }); constraints.gridx = 2; constraints.gridy = 3; createServerPackPanel.add(buttonClientMods, constraints); @@ -444,6 +462,15 @@ public class CreateServerPackTab extends JComponent { appLogger.info(String.format(localizationManager.getLocalizedString("createserverpack.log.info.buttoncopydirs"), copyDirsNames)); } }); + buttonCopyDirs.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseEntered(java.awt.event.MouseEvent evt) { + buttonCopyDirs.setContentAreaFilled(true); + } + + public void mouseExited(java.awt.event.MouseEvent evt) { + buttonCopyDirs.setContentAreaFilled(false); + } + }); constraints.gridx = 2; constraints.gridy = 5; createServerPackPanel.add(buttonCopyDirs, constraints); @@ -490,6 +517,15 @@ public class CreateServerPackTab extends JComponent { } } }); + buttonJavaPath.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseEntered(java.awt.event.MouseEvent evt) { + buttonJavaPath.setContentAreaFilled(true); + } + + public void mouseExited(java.awt.event.MouseEvent evt) { + buttonJavaPath.setContentAreaFilled(false); + } + }); constraints.gridx = 2; constraints.gridy = 7; createServerPackPanel.add(buttonJavaPath, constraints); @@ -497,6 +533,7 @@ public class CreateServerPackTab extends JComponent { //Load config from file buttonLoadConfigFromFile = new JButton(); buttonLoadConfigFromFile.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttonloadconfig")); + buttonLoadConfigFromFile.setContentAreaFilled(false); buttonLoadConfigFromFile.setIcon(loadIcon); buttonLoadConfigFromFile.setMinimumSize(miscButtonDimension); buttonLoadConfigFromFile.setPreferredSize(miscButtonDimension); @@ -562,15 +599,25 @@ public class CreateServerPackTab extends JComponent { } } }); + buttonLoadConfigFromFile.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseEntered(java.awt.event.MouseEvent evt) { + buttonLoadConfigFromFile.setContentAreaFilled(true); + } + + public void mouseExited(java.awt.event.MouseEvent evt) { + buttonLoadConfigFromFile.setContentAreaFilled(false); + } + }); constraints.anchor = GridBagConstraints.CENTER; constraints.gridx = 3; constraints.gridy = 1; constraints.gridheight = 3; createServerPackPanel.add(buttonLoadConfigFromFile, constraints); - //Load config from file + //Open window with detailed information about the UI buttonInfoWindow = new JButton(); buttonInfoWindow.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.button")); + buttonInfoWindow.setContentAreaFilled(false); buttonInfoWindow.setIcon(helpIcon); buttonInfoWindow.setMinimumSize(miscButtonDimension); buttonInfoWindow.setPreferredSize(miscButtonDimension); @@ -626,6 +673,15 @@ public class CreateServerPackTab extends JComponent { ); }); + buttonInfoWindow.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseEntered(java.awt.event.MouseEvent evt) { + buttonInfoWindow.setContentAreaFilled(true); + } + + public void mouseExited(java.awt.event.MouseEvent evt) { + buttonInfoWindow.setContentAreaFilled(false); + } + }); constraints.anchor = GridBagConstraints.CENTER; constraints.gridx = 3; constraints.gridy = 5; @@ -647,8 +703,12 @@ public class CreateServerPackTab extends JComponent { createServerPackPanel.add(labelGenerateServerPack, constraints); buttonGenerateServerPack = new JButton(); + buttonGenerateServerPack.setContentAreaFilled(false); buttonGenerateServerPack.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttongenerateserverpack.tip")); buttonGenerateServerPack.setIcon(startGeneration); + buttonGenerateServerPack.setMinimumSize(startDimension); + buttonGenerateServerPack.setPreferredSize(startDimension); + buttonGenerateServerPack.setMaximumSize(startDimension); buttonGenerateServerPack.addActionListener(e -> { buttonGenerateServerPack.setEnabled(false); @@ -775,12 +835,20 @@ public class CreateServerPackTab extends JComponent { buttonGenerateServerPack.setEnabled(true); } }); + buttonGenerateServerPack.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseEntered(java.awt.event.MouseEvent evt) { + buttonGenerateServerPack.setContentAreaFilled(true); + } + + public void mouseExited(java.awt.event.MouseEvent evt) { + buttonGenerateServerPack.setContentAreaFilled(false); + } + }); constraints.gridx = 0; constraints.gridy = 17; constraints.gridwidth = 4; constraints.weightx = 1; constraints.weighty = 1; - constraints.ipadx = 80; constraints.anchor = GridBagConstraints.CENTER; createServerPackPanel.add(buttonGenerateServerPack, constraints); diff --git a/src/main/resources/de/griefed/resources/lang/lang_de_de.properties b/src/main/resources/de/griefed/resources/lang/lang_de_de.properties index 79ed23879..9454e0bbd 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_de_de.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_de_de.properties @@ -31,7 +31,7 @@ createserverpack.gui.createserverpack.labelclientmods=Enter the list of clientsi createserverpack.gui.createserverpack.labelclientmods.tip=Comma separated. Example: AmbientSounds,BackTools,BetterAdvancement,BetterPing createserverpack.gui.createserverpack.labelcopydirs=Enter the list of directories in your modpack to include in the server pack: createserverpack.gui.createserverpack.labelcopydirs.tip=Comma separated. Example: mods,config,defaultconfigs,scripts -createserverpack.gui.createserverpack.labeljavapath=Enter the path to your Java executable/binary: +createserverpack.gui.createserverpack.labeljavapath=Enter the path to your Java executable/binary (optional): createserverpack.gui.createserverpack.labeljavapath.tip=Must end with /java.exe or /java. Example: C:/Program Files/AdoptOpenJDK/jdk-8.0.275.1-hotspot/jre/bin/java.exe createserverpack.gui.createserverpack.labelminecraft=Enter the Minecraft version your modpack uses: createserverpack.gui.createserverpack.labelminecraft.tip=Example: 1.16.5 or 1.12.2 diff --git a/src/main/resources/de/griefed/resources/lang/lang_en_us.properties b/src/main/resources/de/griefed/resources/lang/lang_en_us.properties index a78703694..5617fffd7 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_en_us.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_en_us.properties @@ -31,7 +31,7 @@ createserverpack.gui.createserverpack.labelclientmods=Enter the list of clientsi createserverpack.gui.createserverpack.labelclientmods.tip=Comma separated. Example: AmbientSounds,BackTools,BetterAdvancement,BetterPing createserverpack.gui.createserverpack.labelcopydirs=Enter the list of directories in your modpack to include in the server pack: createserverpack.gui.createserverpack.labelcopydirs.tip=Comma separated. Example: mods,config,defaultconfigs,scripts -createserverpack.gui.createserverpack.labeljavapath=Enter the path to your Java executable/binary: +createserverpack.gui.createserverpack.labeljavapath=Enter the path to your Java executable/binary (optional): createserverpack.gui.createserverpack.labeljavapath.tip=Must end with /java.exe or /java. Example: C:/Program Files/AdoptOpenJDK/jdk-8.0.275.1-hotspot/jre/bin/java.exe createserverpack.gui.createserverpack.labelminecraft=Enter the Minecraft version your modpack uses: createserverpack.gui.createserverpack.labelminecraft.tip=Example: 1.16.5 or 1.12.2 diff --git a/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties b/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties index 0fe83cba8..02fc1428a 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties @@ -31,7 +31,7 @@ createserverpack.gui.createserverpack.labelclientmods=Enter the list of clientsi createserverpack.gui.createserverpack.labelclientmods.tip=Comma separated. Example: AmbientSounds,BackTools,BetterAdvancement,BetterPing createserverpack.gui.createserverpack.labelcopydirs=Enter the list of directories in your modpack to include in the server pack: createserverpack.gui.createserverpack.labelcopydirs.tip=Comma separated. Example: mods,config,defaultconfigs,scripts -createserverpack.gui.createserverpack.labeljavapath=Enter the path to your Java executable/binary: +createserverpack.gui.createserverpack.labeljavapath=Enter the path to your Java executable/binary (optional): createserverpack.gui.createserverpack.labeljavapath.tip=Must end with /java.exe or /java. Example: C:/Program Files/AdoptOpenJDK/jdk-8.0.275.1-hotspot/jre/bin/java.exe createserverpack.gui.createserverpack.labelminecraft=Enter the Minecraft version your modpack uses: createserverpack.gui.createserverpack.labelminecraft.tip=Example: 1.16.5 or 1.12.2 -- GitLab From 3bd258fa935b2726f7416f26b7e879adeefbdc69 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Mon, 3 May 2021 19:57:24 +0200 Subject: [PATCH 55/91] refactor(DI): Update docs --- docs/allclasses-frame.html | 1 + docs/allclasses-noframe.html | 1 + docs/constant-values.html | 35 + .../serverpackcreator/gui/AboutTab.html | 183 +++- .../gui/BackgroundPanel.html | 911 ++++++++++++++++++ .../serverpackcreator/gui/CreateGui.html | 103 +- .../gui/CreateServerPackTab.html | 80 +- .../gui/ModloaderInstallerLogTab.html | 53 +- .../gui/ServerPackCreatorLogTab.html | 53 +- .../serverpackcreator/gui/package-frame.html | 1 + .../gui/package-summary.html | 12 +- .../serverpackcreator/gui/package-tree.html | 7 +- docs/index-all.html | 141 ++- docs/overview-tree.html | 7 +- docs/serialized-form.html | 120 ++- 15 files changed, 1654 insertions(+), 54 deletions(-) create mode 100644 docs/de/griefed/serverpackcreator/gui/BackgroundPanel.html diff --git a/docs/allclasses-frame.html b/docs/allclasses-frame.html index 9386895c2..55751628c 100644 --- a/docs/allclasses-frame.html +++ b/docs/allclasses-frame.html @@ -12,6 +12,7 @@ <div class="indexContainer"> <ul> <li><a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">AboutTab</a></li> +<li><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">BackgroundPanel</a></li> <li><a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator" target="classFrame">Configuration</a></li> <li><a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">CreateGui</a></li> <li><a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator" target="classFrame">CreateServerPack</a></li> diff --git a/docs/allclasses-noframe.html b/docs/allclasses-noframe.html index ea3196e74..d64be7783 100644 --- a/docs/allclasses-noframe.html +++ b/docs/allclasses-noframe.html @@ -12,6 +12,7 @@ <div class="indexContainer"> <ul> <li><a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></li> +<li><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></li> <li><a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></li> <li><a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></li> <li><a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></li> diff --git a/docs/constant-values.html b/docs/constant-values.html index c98ea627c..c4dbce6a5 100644 --- a/docs/constant-values.html +++ b/docs/constant-values.html @@ -81,6 +81,41 @@ <ul class="blockList"> <li class="blockList"> <table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values"> +<caption><span>de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></span><span class="tabEnd"> </span></caption> +<tr> +<th class="colFirst" scope="col">Modifier and Type</th> +<th scope="col">Constant Field</th> +<th class="colLast" scope="col">Value</th> +</tr> +<tbody> +<tr class="altColor"> +<td class="colFirst"><a name="de.griefed.serverpackcreator.gui.BackgroundPanel.ACTUAL"> +<!-- --> +</a><code>public static final int</code></td> +<td><code><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#ACTUAL">ACTUAL</a></code></td> +<td class="colLast"><code>2</code></td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><a name="de.griefed.serverpackcreator.gui.BackgroundPanel.SCALED"> +<!-- --> +</a><code>public static final int</code></td> +<td><code><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#SCALED">SCALED</a></code></td> +<td class="colLast"><code>0</code></td> +</tr> +<tr class="altColor"> +<td class="colFirst"><a name="de.griefed.serverpackcreator.gui.BackgroundPanel.TILED"> +<!-- --> +</a><code>public static final int</code></td> +<td><code><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#TILED">TILED</a></code></td> +<td class="colLast"><code>1</code></td> +</tr> +</tbody> +</table> +</li> +</ul> +<ul class="blockList"> +<li class="blockList"> +<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values"> <caption><span>de.griefed.serverpackcreator.i18n.<a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></span><span class="tabEnd"> </span></caption> <tr> <th class="colFirst" scope="col">Modifier and Type</th> diff --git a/docs/de/griefed/serverpackcreator/gui/AboutTab.html b/docs/de/griefed/serverpackcreator/gui/AboutTab.html index 524a56ca9..2e3a8226a 100644 --- a/docs/de/griefed/serverpackcreator/gui/AboutTab.html +++ b/docs/de/griefed/serverpackcreator/gui/AboutTab.html @@ -17,7 +17,7 @@ catch(err) { } //--> -var methods = {"i0":10}; +var methods = {"i0":10,"i1":10}; var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; var altColor = "altColor"; var rowColor = "rowColor"; @@ -48,7 +48,7 @@ var activeTableTab = "activeTableTab"; <div class="subNav"> <ul class="navList"> <li>Prev Class</li> -<li><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> <li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/AboutTab.html" target="_top">Frames</a></li> @@ -183,6 +183,14 @@ extends java.awt.Component</pre> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#buttonOpenIssue">buttonOpenIssue</a></span></code> </td> </tr> <tr class="altColor"> +<td class="colFirst"><code>private java.awt.datatransfer.Clipboard</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#clipboard">clipboard</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#configURL">configURL</a></span></code> </td> +</tr> +<tr class="altColor"> <td class="colFirst"><code>private java.awt.GridBagConstraints</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#constraints">constraints</a></span></code> </td> </tr> @@ -192,28 +200,60 @@ extends java.awt.Component</pre> </tr> <tr class="altColor"> <td class="colFirst"><code>private javax.swing.ImageIcon</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#issueIcon">issueIcon</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#hastebinIcon">hastebinIcon</a></span></code> </td> </tr> <tr class="rowColor"> +<td class="colFirst"><code>private javax.swing.ImageIcon</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#issueIcon">issueIcon</a></span></code> </td> +</tr> +<tr class="altColor"> <td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#localizationManager">localizationManager</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private java.awt.Dimension</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#miscButtonDimension">miscButtonDimension</a></span></code> </td> </tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.lang.String[]</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#options">options</a></span></code> </td> +</tr> <tr class="rowColor"> <td class="colFirst"><code>private javax.swing.ImageIcon</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#pastebinIcon">pastebinIcon</a></span></code> </td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#prosperIcon">prosperIcon</a></span></code> </td> </tr> <tr class="altColor"> -<td class="colFirst"><code>private javax.swing.ImageIcon</code></td> -<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#prosperIcon">prosperIcon</a></span></code> </td> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#serverPackCreatorConf">serverPackCreatorConf</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.io.File</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#serverPackCreatorLog">serverPackCreatorLog</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#spclogURL">spclogURL</a></span></code> </td> </tr> <tr class="rowColor"> +<td class="colFirst"><code>private java.awt.datatransfer.StringSelection</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#stringSelection">stringSelection</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private javax.swing.JTextArea</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#textArea">textArea</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#textAreaContent">textAreaContent</a></span></code> </td> +</tr> +<tr class="altColor"> <td class="colFirst"><code>private javax.swing.JTextPane</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#textPane">textPane</a></span></code> </td> </tr> +<tr class="rowColor"> +<td class="colFirst"><code>private int</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#userResponse">userResponse</a></span></code> </td> +</tr> </table> <ul class="blockList"> <li class="blockList"><a name="fields.inherited.from.class.java.awt.Component"> @@ -269,6 +309,12 @@ extends java.awt.Component</pre> <div class="block">Create the tab for the About-page of ServerpackCreator.</div> </td> </tr> +<tr id="i1" class="rowColor"> +<td class="colFirst"><code>private java.lang.String</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html#createHasteBinFromFile-java.io.File-">createHasteBinFromFile</a></span>(java.io.File textFile)</code> +<div class="block">Create a HasteBin post from a given text file.</div> +</td> +</tr> </table> <ul class="blockList"> <li class="blockList"><a name="methods.inherited.from.class.java.awt.Component"> @@ -334,13 +380,13 @@ extends java.awt.Component</pre> <pre>private final javax.swing.ImageIcon issueIcon</pre> </li> </ul> -<a name="pastebinIcon"> +<a name="hastebinIcon"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> -<h4>pastebinIcon</h4> -<pre>private final javax.swing.ImageIcon pastebinIcon</pre> +<h4>hastebinIcon</h4> +<pre>private final javax.swing.ImageIcon hastebinIcon</pre> </li> </ul> <a name="prosperIcon"> @@ -418,12 +464,102 @@ extends java.awt.Component</pre> <a name="buttonDiscord"> <!-- --> </a> -<ul class="blockListLast"> +<ul class="blockList"> <li class="blockList"> <h4>buttonDiscord</h4> <pre>private javax.swing.JButton buttonDiscord</pre> </li> </ul> +<a name="textArea"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>textArea</h4> +<pre>private javax.swing.JTextArea textArea</pre> +</li> +</ul> +<a name="configURL"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>configURL</h4> +<pre>private java.lang.String configURL</pre> +</li> +</ul> +<a name="spclogURL"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>spclogURL</h4> +<pre>private java.lang.String spclogURL</pre> +</li> +</ul> +<a name="textAreaContent"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>textAreaContent</h4> +<pre>private java.lang.String textAreaContent</pre> +</li> +</ul> +<a name="stringSelection"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>stringSelection</h4> +<pre>private java.awt.datatransfer.StringSelection stringSelection</pre> +</li> +</ul> +<a name="clipboard"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>clipboard</h4> +<pre>private java.awt.datatransfer.Clipboard clipboard</pre> +</li> +</ul> +<a name="serverPackCreatorConf"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>serverPackCreatorConf</h4> +<pre>private final java.io.File serverPackCreatorConf</pre> +</li> +</ul> +<a name="serverPackCreatorLog"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>serverPackCreatorLog</h4> +<pre>private final java.io.File serverPackCreatorLog</pre> +</li> +</ul> +<a name="options"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>options</h4> +<pre>private java.lang.String[] options</pre> +</li> +</ul> +<a name="userResponse"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>userResponse</h4> +<pre>private int userResponse</pre> +</li> +</ul> </li> </ul> <!-- ========= CONSTRUCTOR DETAIL ======== --> @@ -460,7 +596,7 @@ extends java.awt.Component</pre> <a name="aboutTab--"> <!-- --> </a> -<ul class="blockListLast"> +<ul class="blockList"> <li class="blockList"> <h4>aboutTab</h4> <pre>javax.swing.JComponent aboutTab()</pre> @@ -476,6 +612,27 @@ extends java.awt.Component</pre> </dl> </li> </ul> +<a name="createHasteBinFromFile-java.io.File-"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>createHasteBinFromFile</h4> +<pre>private java.lang.String createHasteBinFromFile(java.io.File textFile)</pre> +<div class="block">Create a HasteBin post from a given text file. The text file provided is read into a string and then passed onto + <a href="https://haste.zneix.eu">Haste zneix</a> which creates a HasteBin post out of the passed String and + returns the URL to the newly created post.<br> + Created with the help of <a href="https://github.com/kaimu-kun/hastebin.java">kaimu-kun's hastebin.java (MIT License)</a> + and edited to use HasteBin fork <a href="https://github.com/zneix/haste-server">zneix/haste-server</a>. My fork + of kaimu-kun's hastebin.java is available at <a href="https://github.com/Griefed/hastebin.java">Griefed/hastebin.java</a>.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>textFile</code> - The file which will be read into a String of which then to create a HasteBin post of.</dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>String. Returns a String containing the URL to the newly created HasteBin post.</dd> +</dl> +</li> +</ul> </li> </ul> </li> @@ -504,7 +661,7 @@ extends java.awt.Component</pre> <div class="subNav"> <ul class="navList"> <li>Prev Class</li> -<li><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> <li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/AboutTab.html" target="_top">Frames</a></li> diff --git a/docs/de/griefed/serverpackcreator/gui/BackgroundPanel.html b/docs/de/griefed/serverpackcreator/gui/BackgroundPanel.html new file mode 100644 index 000000000..2eeae20f5 --- /dev/null +++ b/docs/de/griefed/serverpackcreator/gui/BackgroundPanel.html @@ -0,0 +1,911 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!-- NewPage --> +<html lang="de"> +<head> +<!-- Generated by javadoc --> +<title>BackgroundPanel (serverpackcreator API)</title> +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> +<script type="text/javascript" src="../../../../script.js"></script> +</head> +<body> +<script type="text/javascript"><!-- + try { + if (location.href.indexOf('is-external=true') == -1) { + parent.document.title="BackgroundPanel (serverpackcreator API)"; + } + } + catch(err) { + } +//--> +var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10}; +var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; +var altColor = "altColor"; +var rowColor = "rowColor"; +var tableTab = "tableTab"; +var activeTableTab = "activeTableTab"; +</script> +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<!-- ========= START OF TOP NAVBAR ======= --> +<div class="topNav"><a name="navbar.top"> +<!-- --> +</a> +<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div> +<a name="navbar.top.firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../overview-summary.html">Overview</a></li> +<li><a href="package-summary.html">Package</a></li> +<li class="navBarCell1Rev">Class</li> +<li><a href="package-tree.html">Tree</a></li> +<li><a href="../../../../deprecated-list.html">Deprecated</a></li> +<li><a href="../../../../index-all.html">Index</a></li> +<li><a href="../../../../help-doc.html">Help</a></li> +</ul> +</div> +<div class="subNav"> +<ul class="navList"> +<li><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/BackgroundPanel.html" target="_top">Frames</a></li> +<li><a href="BackgroundPanel.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_top"> +<li><a href="../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_top"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li><a href="#nested.classes.inherited.from.class.javax.swing.JPanel">Nested</a> | </li> +<li><a href="#field.summary">Field</a> | </li> +<li><a href="#constructor.summary">Constr</a> | </li> +<li><a href="#method.summary">Method</a></li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li><a href="#field.detail">Field</a> | </li> +<li><a href="#constructor.detail">Constr</a> | </li> +<li><a href="#method.detail">Method</a></li> +</ul> +</div> +<a name="skip.navbar.top"> +<!-- --> +</a></div> +<!-- ========= END OF TOP NAVBAR ========= --> +<!-- ======== START OF CLASS DATA ======== --> +<div class="header"> +<div class="subTitle">de.griefed.serverpackcreator.gui</div> +<h2 title="Class BackgroundPanel" class="title">Class BackgroundPanel</h2> +</div> +<div class="contentContainer"> +<ul class="inheritance"> +<li>java.lang.Object</li> +<li> +<ul class="inheritance"> +<li>java.awt.Component</li> +<li> +<ul class="inheritance"> +<li>java.awt.Container</li> +<li> +<ul class="inheritance"> +<li>javax.swing.JComponent</li> +<li> +<ul class="inheritance"> +<li>javax.swing.JPanel</li> +<li> +<ul class="inheritance"> +<li>de.griefed.serverpackcreator.gui.BackgroundPanel</li> +</ul> +</li> +</ul> +</li> +</ul> +</li> +</ul> +</li> +</ul> +</li> +</ul> +<div class="description"> +<ul class="blockList"> +<li class="blockList"> +<dl> +<dt>All Implemented Interfaces:</dt> +<dd>java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible</dd> +</dl> +<hr> +<br> +<pre>public class <span class="typeNameLabel">BackgroundPanel</span> +extends javax.swing.JPanel</pre> +<div class="block">Hey, Griefed here. I tried to add a tiled background image to the frame which holds the JTabbedPane, but after serveral + failed attempts, I gave up and almost threw the idea out of the window. I wanted to set the background to a tiled image, + because simply setting a colour seemed too boring, and I needed <em>something</em> in the background so the banner + icon would be more clear to the eye. So, I activated my Google-Fu and encountered this holy grail of tiling images + for Swing.<br> + Links:<br> + <a href="https://tips4java.wordpress.com/2008/10/12/background-panel/">Background Panel by Rob Camick from October 12, 2008</a><br> + <a href="http://www.camick.com/java/source/BackgroundPanel.java">BackgroundPanel.java</a><br> + Seriously, give this man an award, because this class is a <strong>BEAST</strong>.<p> + Rob, if you somehow ever get wind of your class being used here: Thank you, thank you, thank you, thank you, thank you + so very much! You seriously made my day here.<br> + Rob, you rule.</div> +<dl> +<dt><span class="seeLabel">See Also:</span></dt> +<dd><a href="../../../../serialized-form.html#de.griefed.serverpackcreator.gui.BackgroundPanel">Serialized Form</a></dd> +</dl> +</li> +</ul> +</div> +<div class="summary"> +<ul class="blockList"> +<li class="blockList"> +<!-- ======== NESTED CLASS SUMMARY ======== --> +<ul class="blockList"> +<li class="blockList"><a name="nested.class.summary"> +<!-- --> +</a> +<h3>Nested Class Summary</h3> +<ul class="blockList"> +<li class="blockList"><a name="nested.classes.inherited.from.class.javax.swing.JPanel"> +<!-- --> +</a> +<h3>Nested classes/interfaces inherited from class javax.swing.JPanel</h3> +<code>javax.swing.JPanel.AccessibleJPanel</code></li> +</ul> +<ul class="blockList"> +<li class="blockList"><a name="nested.classes.inherited.from.class.javax.swing.JComponent"> +<!-- --> +</a> +<h3>Nested classes/interfaces inherited from class javax.swing.JComponent</h3> +<code>javax.swing.JComponent.AccessibleJComponent</code></li> +</ul> +<ul class="blockList"> +<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Container"> +<!-- --> +</a> +<h3>Nested classes/interfaces inherited from class java.awt.Container</h3> +<code>java.awt.Container.AccessibleAWTContainer</code></li> +</ul> +<ul class="blockList"> +<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Component"> +<!-- --> +</a> +<h3>Nested classes/interfaces inherited from class java.awt.Component</h3> +<code>java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy</code></li> +</ul> +</li> +</ul> +<!-- =========== FIELD SUMMARY =========== --> +<ul class="blockList"> +<li class="blockList"><a name="field.summary"> +<!-- --> +</a> +<h3>Field Summary</h3> +<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation"> +<caption><span>Fields</span><span class="tabEnd"> </span></caption> +<tr> +<th class="colFirst" scope="col">Modifier and Type</th> +<th class="colLast" scope="col">Field and Description</th> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>static int</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#ACTUAL">ACTUAL</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private float</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#alignmentX">alignmentX</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private float</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#alignmentY">alignmentY</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.awt.Image</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#image">image</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>private boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#isTransparentAdd">isTransparentAdd</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private java.awt.Paint</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#painter">painter</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>static int</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#SCALED">SCALED</a></span></code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code>private int</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#style">style</a></span></code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>static int</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#TILED">TILED</a></span></code> </td> +</tr> +</table> +<ul class="blockList"> +<li class="blockList"><a name="fields.inherited.from.class.javax.swing.JComponent"> +<!-- --> +</a> +<h3>Fields inherited from class javax.swing.JComponent</h3> +<code>listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW</code></li> +</ul> +<ul class="blockList"> +<li class="blockList"><a name="fields.inherited.from.class.java.awt.Component"> +<!-- --> +</a> +<h3>Fields inherited from class java.awt.Component</h3> +<code>accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT</code></li> +</ul> +<ul class="blockList"> +<li class="blockList"><a name="fields.inherited.from.class.java.awt.image.ImageObserver"> +<!-- --> +</a> +<h3>Fields inherited from interface java.awt.image.ImageObserver</h3> +<code>ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH</code></li> +</ul> +</li> +</ul> +<!-- ======== CONSTRUCTOR SUMMARY ======== --> +<ul class="blockList"> +<li class="blockList"><a name="constructor.summary"> +<!-- --> +</a> +<h3>Constructor Summary</h3> +<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> +<caption><span>Constructors</span><span class="tabEnd"> </span></caption> +<tr> +<th class="colOne" scope="col">Constructor and Description</th> +</tr> +<tr class="altColor"> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#BackgroundPanel-java.awt.Image-">BackgroundPanel</a></span>(java.awt.Image image)</code> +<div class="block"><strong>Constructor</strong><br> + Set image as the background with the SCALED style.</div> +</td> +</tr> +<tr class="rowColor"> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#BackgroundPanel-java.awt.Image-int-">BackgroundPanel</a></span>(java.awt.Image image, + int style)</code> +<div class="block"><strong>Constructor</strong><br> + Set image as the background with the specified style.</div> +</td> +</tr> +<tr class="altColor"> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#BackgroundPanel-java.awt.Image-int-float-float-">BackgroundPanel</a></span>(java.awt.Image image, + int style, + float alignmentX, + float alignmentY)</code> +<div class="block"><strong>Constructor</strong><br> + Set image as the background with the specified style and alignment.</div> +</td> +</tr> +<tr class="rowColor"> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#BackgroundPanel-java.awt.Paint-">BackgroundPanel</a></span>(java.awt.Paint painter)</code> +<div class="block"><strong>Constructor</strong><br> + Use the Paint interface to paint a background.</div> +</td> +</tr> +</table> +</li> +</ul> +<!-- ========== METHOD SUMMARY =========== --> +<ul class="blockList"> +<li class="blockList"><a name="method.summary"> +<!-- --> +</a> +<h3>Method Summary</h3> +<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> +<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> +<tr> +<th class="colFirst" scope="col">Modifier and Type</th> +<th class="colLast" scope="col">Method and Description</th> +</tr> +<tr id="i0" class="altColor"> +<td class="colFirst"><code>void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#add-javax.swing.JComponent-">add</a></span>(javax.swing.JComponent component)</code> +<div class="block">Override method so we can make the component transparent.</div> +</td> +</tr> +<tr id="i1" class="rowColor"> +<td class="colFirst"><code>void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#add-javax.swing.JComponent-java.lang.Object-">add</a></span>(javax.swing.JComponent component, + java.lang.Object constraints)</code> +<div class="block">Override method so we can make the component transparent.</div> +</td> +</tr> +<tr id="i2" class="altColor"> +<td class="colFirst"><code>private void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#drawActual-java.awt.Graphics-">drawActual</a></span>(java.awt.Graphics g)</code> +<div class="block">Custom painting code for drawing the ACTUAL image as the background.</div> +</td> +</tr> +<tr id="i3" class="rowColor"> +<td class="colFirst"><code>private void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#drawScaled-java.awt.Graphics-">drawScaled</a></span>(java.awt.Graphics g)</code> +<div class="block">Custom painting code for drawing a SCALED image as the background.</div> +</td> +</tr> +<tr id="i4" class="altColor"> +<td class="colFirst"><code>private void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#drawTiled-java.awt.Graphics-">drawTiled</a></span>(java.awt.Graphics g)</code> +<div class="block">Custom painting code for drawing TILED images as the background.</div> +</td> +</tr> +<tr id="i5" class="rowColor"> +<td class="colFirst"><code>java.awt.Dimension</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#getPreferredSize--">getPreferredSize</a></span>()</code> +<div class="block">Override to provide a preferred size equal to the image size.</div> +</td> +</tr> +<tr id="i6" class="altColor"> +<td class="colFirst"><code>private void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#makeComponentTransparent-javax.swing.JComponent-">makeComponentTransparent</a></span>(javax.swing.JComponent component)</code> +<div class="block">Try to make the component transparent.</div> +</td> +</tr> +<tr id="i7" class="rowColor"> +<td class="colFirst"><code>protected void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#paintComponent-java.awt.Graphics-">paintComponent</a></span>(java.awt.Graphics g)</code> +<div class="block">Add custom painting.</div> +</td> +</tr> +<tr id="i8" class="altColor"> +<td class="colFirst"><code>void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#setImage-java.awt.Image-">setImage</a></span>(java.awt.Image image)</code> +<div class="block">Setter for the image used as the background.</div> +</td> +</tr> +<tr id="i9" class="rowColor"> +<td class="colFirst"><code>void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#setImageAlignmentX-float-">setImageAlignmentX</a></span>(float alignmentX)</code> +<div class="block">Setter for the horizontal alignment of the image when using ACTUAL style.</div> +</td> +</tr> +<tr id="i10" class="altColor"> +<td class="colFirst"><code>void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#setImageAlignmentY-float-">setImageAlignmentY</a></span>(float alignmentY)</code> +<div class="block">Setter for the horizontal alignment of the image when using ACTUAL style.</div> +</td> +</tr> +<tr id="i11" class="rowColor"> +<td class="colFirst"><code>void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#setPaint-java.awt.Paint-">setPaint</a></span>(java.awt.Paint painter)</code> +<div class="block">Setter for the Paint object used to paint the background.</div> +</td> +</tr> +<tr id="i12" class="altColor"> +<td class="colFirst"><code>void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#setStyle-int-">setStyle</a></span>(int style)</code> +<div class="block">Setter the style used to paint the background image.</div> +</td> +</tr> +<tr id="i13" class="rowColor"> +<td class="colFirst"><code>void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#setTransparentAdd-boolean-">setTransparentAdd</a></span>(boolean isTransparentAdd)</code> +<div class="block">Controls whether components added to this panel should automatically + be made transparent.</div> +</td> +</tr> +</table> +<ul class="blockList"> +<li class="blockList"><a name="methods.inherited.from.class.javax.swing.JPanel"> +<!-- --> +</a> +<h3>Methods inherited from class javax.swing.JPanel</h3> +<code>getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI</code></li> +</ul> +<ul class="blockList"> +<li class="blockList"><a name="methods.inherited.from.class.javax.swing.JComponent"> +<!-- --> +</a> +<h3>Methods inherited from class javax.swing.JComponent</h3> +<code>addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update</code></li> +</ul> +<ul class="blockList"> +<li class="blockList"><a name="methods.inherited.from.class.java.awt.Container"> +<!-- --> +</a> +<h3>Methods inherited from class java.awt.Container</h3> +<code>add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree</code></li> +</ul> +<ul class="blockList"> +<li class="blockList"><a name="methods.inherited.from.class.java.awt.Component"> +<!-- --> +</a> +<h3>Methods inherited from class java.awt.Component</h3> +<code>action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle</code></li> +</ul> +<ul class="blockList"> +<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> +<!-- --> +</a> +<h3>Methods inherited from class java.lang.Object</h3> +<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li> +</ul> +</li> +</ul> +</li> +</ul> +</div> +<div class="details"> +<ul class="blockList"> +<li class="blockList"> +<!-- ============ FIELD DETAIL =========== --> +<ul class="blockList"> +<li class="blockList"><a name="field.detail"> +<!-- --> +</a> +<h3>Field Detail</h3> +<a name="SCALED"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>SCALED</h4> +<pre>public static final int SCALED</pre> +<dl> +<dt><span class="seeLabel">See Also:</span></dt> +<dd><a href="../../../../constant-values.html#de.griefed.serverpackcreator.gui.BackgroundPanel.SCALED">Constant Field Values</a></dd> +</dl> +</li> +</ul> +<a name="TILED"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>TILED</h4> +<pre>public static final int TILED</pre> +<dl> +<dt><span class="seeLabel">See Also:</span></dt> +<dd><a href="../../../../constant-values.html#de.griefed.serverpackcreator.gui.BackgroundPanel.TILED">Constant Field Values</a></dd> +</dl> +</li> +</ul> +<a name="ACTUAL"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>ACTUAL</h4> +<pre>public static final int ACTUAL</pre> +<dl> +<dt><span class="seeLabel">See Also:</span></dt> +<dd><a href="../../../../constant-values.html#de.griefed.serverpackcreator.gui.BackgroundPanel.ACTUAL">Constant Field Values</a></dd> +</dl> +</li> +</ul> +<a name="painter"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>painter</h4> +<pre>private java.awt.Paint painter</pre> +</li> +</ul> +<a name="image"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>image</h4> +<pre>private java.awt.Image image</pre> +</li> +</ul> +<a name="style"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>style</h4> +<pre>private int style</pre> +</li> +</ul> +<a name="alignmentX"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>alignmentX</h4> +<pre>private float alignmentX</pre> +</li> +</ul> +<a name="alignmentY"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>alignmentY</h4> +<pre>private float alignmentY</pre> +</li> +</ul> +<a name="isTransparentAdd"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>isTransparentAdd</h4> +<pre>private boolean isTransparentAdd</pre> +</li> +</ul> +</li> +</ul> +<!-- ========= CONSTRUCTOR DETAIL ======== --> +<ul class="blockList"> +<li class="blockList"><a name="constructor.detail"> +<!-- --> +</a> +<h3>Constructor Detail</h3> +<a name="BackgroundPanel-java.awt.Image-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>BackgroundPanel</h4> +<pre>public BackgroundPanel(java.awt.Image image)</pre> +<div class="block"><strong>Constructor</strong><br> + Set image as the background with the SCALED style.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>image</code> - Pass an image to the constructor to be used in the new JPanel.</dd> +</dl> +</li> +</ul> +<a name="BackgroundPanel-java.awt.Image-int-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>BackgroundPanel</h4> +<pre>public BackgroundPanel(java.awt.Image image, + int style)</pre> +<div class="block"><strong>Constructor</strong><br> + Set image as the background with the specified style.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>image</code> - Pass an image to the constructor to be used in the new JPanel.</dd> +<dd><code>style</code> - The style with which the image should be painted. See <a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#SCALED"><code>SCALED</code></a>, <a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#TILED"><code>TILED</code></a>, <a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#ACTUAL"><code>ACTUAL</code></a></dd> +</dl> +</li> +</ul> +<a name="BackgroundPanel-java.awt.Image-int-float-float-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>BackgroundPanel</h4> +<pre>public BackgroundPanel(java.awt.Image image, + int style, + float alignmentX, + float alignmentY)</pre> +<div class="block"><strong>Constructor</strong><br> + Set image as the background with the specified style and alignment.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>image</code> - Pass an image to the constructor to be used in the new JPanel.</dd> +<dd><code>style</code> - The style with which the image should be painted. See <a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#SCALED"><code>SCALED</code></a>, <a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#TILED"><code>TILED</code></a>, <a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html#ACTUAL"><code>ACTUAL</code></a></dd> +<dd><code>alignmentX</code> - Alignment along the x-axis.</dd> +<dd><code>alignmentY</code> - Alignment along the y axis.</dd> +</dl> +</li> +</ul> +<a name="BackgroundPanel-java.awt.Paint-"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>BackgroundPanel</h4> +<pre>public BackgroundPanel(java.awt.Paint painter)</pre> +<div class="block"><strong>Constructor</strong><br> + Use the Paint interface to paint a background.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>painter</code> - Pass a painter to be used as the background in the new JPanel.</dd> +</dl> +</li> +</ul> +</li> +</ul> +<!-- ============ METHOD DETAIL ========== --> +<ul class="blockList"> +<li class="blockList"><a name="method.detail"> +<!-- --> +</a> +<h3>Method Detail</h3> +<a name="setImage-java.awt.Image-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setImage</h4> +<pre>public void setImage(java.awt.Image image)</pre> +<div class="block">Setter for the image used as the background.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>image</code> - Image to be set as the background.</dd> +</dl> +</li> +</ul> +<a name="setStyle-int-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setStyle</h4> +<pre>public void setStyle(int style)</pre> +<div class="block">Setter the style used to paint the background image.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>style</code> - Sets the style with which the image should be painted.</dd> +</dl> +</li> +</ul> +<a name="setPaint-java.awt.Paint-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setPaint</h4> +<pre>public void setPaint(java.awt.Paint painter)</pre> +<div class="block">Setter for the Paint object used to paint the background.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>painter</code> - Sets the painter with which the background should be painted.</dd> +</dl> +</li> +</ul> +<a name="setImageAlignmentX-float-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setImageAlignmentX</h4> +<pre>public void setImageAlignmentX(float alignmentX)</pre> +<div class="block">Setter for the horizontal alignment of the image when using ACTUAL style.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>alignmentX</code> - Sets the alignment along the x-axis.</dd> +</dl> +</li> +</ul> +<a name="setImageAlignmentY-float-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setImageAlignmentY</h4> +<pre>public void setImageAlignmentY(float alignmentY)</pre> +<div class="block">Setter for the horizontal alignment of the image when using ACTUAL style.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>alignmentY</code> - Sets the alignment along the y-axis.</dd> +</dl> +</li> +</ul> +<a name="add-javax.swing.JComponent-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>add</h4> +<pre>public void add(javax.swing.JComponent component)</pre> +<div class="block">Override method so we can make the component transparent.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>component</code> - JComponent to add to the panel.</dd> +</dl> +</li> +</ul> +<a name="getPreferredSize--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>getPreferredSize</h4> +<pre>public java.awt.Dimension getPreferredSize()</pre> +<div class="block">Override to provide a preferred size equal to the image size.</div> +<dl> +<dt><span class="overrideSpecifyLabel">Overrides:</span></dt> +<dd><code>getPreferredSize</code> in class <code>javax.swing.JComponent</code></dd> +<dt><span class="returnLabel">Returns:</span></dt> +<dd>Dimension. Returns the dimension of the passed image.</dd> +</dl> +</li> +</ul> +<a name="add-javax.swing.JComponent-java.lang.Object-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>add</h4> +<pre>public void add(javax.swing.JComponent component, + java.lang.Object constraints)</pre> +<div class="block">Override method so we can make the component transparent.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>component</code> - JComponent to add to the panel.</dd> +<dd><code>constraints</code> - Contraints wich which the panel should be added.</dd> +</dl> +</li> +</ul> +<a name="setTransparentAdd-boolean-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setTransparentAdd</h4> +<pre>public void setTransparentAdd(boolean isTransparentAdd)</pre> +<div class="block">Controls whether components added to this panel should automatically + be made transparent. That is, setOpaque(false) will be invoked. + The default is set to true.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>isTransparentAdd</code> - Whether to automatically make components transparent.</dd> +</dl> +</li> +</ul> +<a name="makeComponentTransparent-javax.swing.JComponent-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>makeComponentTransparent</h4> +<pre>private void makeComponentTransparent(javax.swing.JComponent component)</pre> +<div class="block">Try to make the component transparent. + For components that use renderers, like JTable, you will also need to + change the renderer to be transparent. An easy way to do this it to + set the background of the table to a Color using an alpha value of 0.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>component</code> - The component to make transparent.</dd> +</dl> +</li> +</ul> +<a name="paintComponent-java.awt.Graphics-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>paintComponent</h4> +<pre>protected void paintComponent(java.awt.Graphics g)</pre> +<div class="block">Add custom painting.</div> +<dl> +<dt><span class="overrideSpecifyLabel">Overrides:</span></dt> +<dd><code>paintComponent</code> in class <code>javax.swing.JComponent</code></dd> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>g</code> - Received from parent.</dd> +</dl> +</li> +</ul> +<a name="drawScaled-java.awt.Graphics-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>drawScaled</h4> +<pre>private void drawScaled(java.awt.Graphics g)</pre> +<div class="block">Custom painting code for drawing a SCALED image as the background.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>g</code> - Received from parent.</dd> +</dl> +</li> +</ul> +<a name="drawTiled-java.awt.Graphics-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>drawTiled</h4> +<pre>private void drawTiled(java.awt.Graphics g)</pre> +<div class="block">Custom painting code for drawing TILED images as the background.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>g</code> - Received from parent.</dd> +</dl> +</li> +</ul> +<a name="drawActual-java.awt.Graphics-"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>drawActual</h4> +<pre>private void drawActual(java.awt.Graphics g)</pre> +<div class="block">Custom painting code for drawing the ACTUAL image as the background. + The image is positioned in the panel based on the horizontal and + vertical alignments specified.</div> +<dl> +<dt><span class="paramLabel">Parameters:</span></dt> +<dd><code>g</code> - Received from parent.</dd> +</dl> +</li> +</ul> +</li> +</ul> +</li> +</ul> +</div> +</div> +<!-- ========= END OF CLASS DATA ========= --> +<!-- ======= START OF BOTTOM NAVBAR ====== --> +<div class="bottomNav"><a name="navbar.bottom"> +<!-- --> +</a> +<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div> +<a name="navbar.bottom.firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../overview-summary.html">Overview</a></li> +<li><a href="package-summary.html">Package</a></li> +<li class="navBarCell1Rev">Class</li> +<li><a href="package-tree.html">Tree</a></li> +<li><a href="../../../../deprecated-list.html">Deprecated</a></li> +<li><a href="../../../../index-all.html">Index</a></li> +<li><a href="../../../../help-doc.html">Help</a></li> +</ul> +</div> +<div class="subNav"> +<ul class="navList"> +<li><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../index.html?de/griefed/serverpackcreator/gui/BackgroundPanel.html" target="_top">Frames</a></li> +<li><a href="BackgroundPanel.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_bottom"> +<li><a href="../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_bottom"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li><a href="#nested.classes.inherited.from.class.javax.swing.JPanel">Nested</a> | </li> +<li><a href="#field.summary">Field</a> | </li> +<li><a href="#constructor.summary">Constr</a> | </li> +<li><a href="#method.summary">Method</a></li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li><a href="#field.detail">Field</a> | </li> +<li><a href="#constructor.detail">Constr</a> | </li> +<li><a href="#method.detail">Method</a></li> +</ul> +</div> +<a name="skip.navbar.bottom"> +<!-- --> +</a></div> +<!-- ======== END OF BOTTOM NAVBAR ======= --> +</body> +</html> diff --git a/docs/de/griefed/serverpackcreator/gui/CreateGui.html b/docs/de/griefed/serverpackcreator/gui/CreateGui.html index b81258b3b..710997e75 100644 --- a/docs/de/griefed/serverpackcreator/gui/CreateGui.html +++ b/docs/de/griefed/serverpackcreator/gui/CreateGui.html @@ -47,7 +47,7 @@ var activeTableTab = "activeTableTab"; </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> <li><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> @@ -200,21 +200,37 @@ extends javax.swing.JPanel</pre> <th class="colLast" scope="col">Field and Description</th> </tr> <tr class="altColor"> +<td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#aboutTab">aboutTab</a></span></code> </td> +</tr> +<tr class="rowColor"> <td class="colFirst"><code>private static org.apache.logging.log4j.Logger</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#appLogger">appLogger</a></span></code> </td> </tr> +<tr class="altColor"> +<td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#backgroundPanel">backgroundPanel</a></span></code> </td> +</tr> <tr class="rowColor"> <td class="colFirst"><code>private javax.swing.ImageIcon</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#bannerIcon">bannerIcon</a></span></code> </td> </tr> <tr class="altColor"> +<td class="colFirst"><code>private java.awt.image.BufferedImage</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#bufferedImage">bufferedImage</a></span></code> </td> +</tr> +<tr class="rowColor"> <td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#configuration">configuration</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#createServerPack">createServerPack</a></span></code> </td> </tr> +<tr class="rowColor"> +<td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#createServerPackTab">createServerPackTab</a></span></code> </td> +</tr> <tr class="altColor"> <td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseCreateModpack</a></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#curseCreateModpack">curseCreateModpack</a></span></code> </td> @@ -228,22 +244,34 @@ extends javax.swing.JPanel</pre> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#localizationManager">localizationManager</a></span></code> </td> </tr> <tr class="rowColor"> +<td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#modloaderInstallerLogTab">modloaderInstallerLogTab</a></span></code> </td> +</tr> +<tr class="altColor"> <td class="colFirst"><code>private com.typesafe.config.Config</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#secret">secret</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private java.io.File</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#secretFile">secretFile</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private javax.swing.JLabel</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#serverPackCreatorBanner">serverPackCreatorBanner</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private javax.swing.JFrame</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#serverPackCreatorFrame">serverPackCreatorFrame</a></span></code> </td> </tr> +<tr class="altColor"> +<td class="colFirst"><code>private <a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#serverPackCreatorLogTab">serverPackCreatorLogTab</a></span></code> </td> +</tr> <tr class="rowColor"> +<td class="colFirst"><code>private java.awt.Image</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#tile">tile</a></span></code> </td> +</tr> +<tr class="altColor"> <td class="colFirst"><code>private java.awt.Dimension</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html#windowDimension">windowDimension</a></span></code> </td> </tr> @@ -404,6 +432,24 @@ extends javax.swing.JPanel</pre> <pre>private final java.awt.Dimension windowDimension</pre> </li> </ul> +<a name="tile"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>tile</h4> +<pre>private final java.awt.Image tile</pre> +</li> +</ul> +<a name="bufferedImage"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>bufferedImage</h4> +<pre>private java.awt.image.BufferedImage bufferedImage</pre> +</li> +</ul> <a name="localizationManager"> <!-- --> </a> @@ -440,6 +486,51 @@ extends javax.swing.JPanel</pre> <pre>private <a href="../../../../de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a> createServerPack</pre> </li> </ul> +<a name="createServerPackTab"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>createServerPackTab</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a> createServerPackTab</pre> +</li> +</ul> +<a name="serverPackCreatorLogTab"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>serverPackCreatorLogTab</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a> serverPackCreatorLogTab</pre> +</li> +</ul> +<a name="modloaderInstallerLogTab"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>modloaderInstallerLogTab</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a> modloaderInstallerLogTab</pre> +</li> +</ul> +<a name="aboutTab"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>aboutTab</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a> aboutTab</pre> +</li> +</ul> +<a name="backgroundPanel"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>backgroundPanel</h4> +<pre>private <a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a> backgroundPanel</pre> +</li> +</ul> <a name="serverPackCreatorFrame"> <!-- --> </a> @@ -569,7 +660,7 @@ extends javax.swing.JPanel</pre> </div> <div class="subNav"> <ul class="navList"> -<li><a href="../../../../de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Prev Class</span></a></li> <li><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">Next Class</span></a></li> </ul> <ul class="navList"> diff --git a/docs/de/griefed/serverpackcreator/gui/CreateServerPackTab.html b/docs/de/griefed/serverpackcreator/gui/CreateServerPackTab.html index eaf81e0e3..7ca391aea 100644 --- a/docs/de/griefed/serverpackcreator/gui/CreateServerPackTab.html +++ b/docs/de/griefed/serverpackcreator/gui/CreateServerPackTab.html @@ -72,7 +72,7 @@ var activeTableTab = "activeTableTab"; <div> <ul class="subNavList"> <li>Summary: </li> -<li><a href="#nested.classes.inherited.from.class.java.awt.Component">Nested</a> | </li> +<li><a href="#nested.classes.inherited.from.class.javax.swing.JComponent">Nested</a> | </li> <li><a href="#field.summary">Field</a> | </li> <li><a href="#constructor.summary">Constr</a> | </li> <li><a href="#method.summary">Method</a></li> @@ -101,12 +101,22 @@ var activeTableTab = "activeTableTab"; <li>java.awt.Component</li> <li> <ul class="inheritance"> +<li>java.awt.Container</li> +<li> +<ul class="inheritance"> +<li>javax.swing.JComponent</li> +<li> +<ul class="inheritance"> <li>de.griefed.serverpackcreator.gui.CreateServerPackTab</li> </ul> </li> </ul> </li> </ul> +</li> +</ul> +</li> +</ul> <div class="description"> <ul class="blockList"> <li class="blockList"> @@ -117,7 +127,7 @@ var activeTableTab = "activeTableTab"; <hr> <br> <pre>public class <span class="typeNameLabel">CreateServerPackTab</span> -extends java.awt.Component</pre> +extends javax.swing.JComponent</pre> <div class="block">This class creates the tab which displays the labels, textfields, buttons and functions in order to create a new server pack. Available are:<br> JLabels and JTextFields for modpackDir, clientMods, copyDirs, javaPath, minecraftVersion, modLoader, modLoaderVersion<br> @@ -146,6 +156,20 @@ extends java.awt.Component</pre> </a> <h3>Nested Class Summary</h3> <ul class="blockList"> +<li class="blockList"><a name="nested.classes.inherited.from.class.javax.swing.JComponent"> +<!-- --> +</a> +<h3>Nested classes/interfaces inherited from class javax.swing.JComponent</h3> +<code>javax.swing.JComponent.AccessibleJComponent</code></li> +</ul> +<ul class="blockList"> +<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Container"> +<!-- --> +</a> +<h3>Nested classes/interfaces inherited from class java.awt.Container</h3> +<code>java.awt.Container.AccessibleAWTContainer</code></li> +</ul> +<ul class="blockList"> <li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Component"> <!-- --> </a> @@ -327,39 +351,50 @@ extends java.awt.Component</pre> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#modpackDirChooser">modpackDirChooser</a></span></code> </td> </tr> <tr class="altColor"> +<td class="colFirst"><code>private java.awt.Dimension</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#startDimension">startDimension</a></span></code> </td> +</tr> +<tr class="rowColor"> <td class="colFirst"><code>private javax.swing.ImageIcon</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#startGeneration">startGeneration</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private javax.swing.JTextField</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textClientMods">textClientMods</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private javax.swing.JTextField</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textCopyDirs">textCopyDirs</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private javax.swing.JTextField</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textJavaPath">textJavaPath</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private javax.swing.JTextField</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textMinecraftVersion">textMinecraftVersion</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private javax.swing.JTextField</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textModloader">textModloader</a></span></code> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><code>private javax.swing.JTextField</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textModloaderVersion">textModloaderVersion</a></span></code> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><code>private javax.swing.JTextField</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textModpackDir">textModpackDir</a></span></code> </td> </tr> </table> <ul class="blockList"> +<li class="blockList"><a name="fields.inherited.from.class.javax.swing.JComponent"> +<!-- --> +</a> +<h3>Fields inherited from class javax.swing.JComponent</h3> +<code>listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW</code></li> +</ul> +<ul class="blockList"> <li class="blockList"><a name="fields.inherited.from.class.java.awt.Component"> <!-- --> </a> @@ -418,11 +453,25 @@ extends java.awt.Component</pre> </tr> </table> <ul class="blockList"> +<li class="blockList"><a name="methods.inherited.from.class.javax.swing.JComponent"> +<!-- --> +</a> +<h3>Methods inherited from class javax.swing.JComponent</h3> +<code>addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI</code></li> +</ul> +<ul class="blockList"> +<li class="blockList"><a name="methods.inherited.from.class.java.awt.Container"> +<!-- --> +</a> +<h3>Methods inherited from class java.awt.Container</h3> +<code>add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree</code></li> +</ul> +<ul class="blockList"> <li class="blockList"><a name="methods.inherited.from.class.java.awt.Component"> <!-- --> </a> <h3>Methods inherited from class java.awt.Component</h3> -<code>action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, deliverEvent, disable, disableEvents, dispatchEvent, doLayout, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getAlignmentX, getAlignmentY, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentAt, getComponentAt, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeys, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getListeners, getLocale, getLocation, getLocation, getLocationOnScreen, getMaximumSize, getMinimumSize, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, invalidate, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusCycleRoot, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, layout, list, list, list, list, list, locate, location, lostFocus, minimumSize, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paint, paintAll, paramString, postEvent, preferredSize, prepareImage, prepareImage, print, printAll, processComponentEvent, processEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, revalidate, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeys, setFocusTraversalKeysEnabled, setFont, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle, update, validate</code></li> +<code>action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle</code></li> </ul> <ul class="blockList"> <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> @@ -544,6 +593,15 @@ extends java.awt.Component</pre> <pre>private final java.awt.Dimension miscButtonDimension</pre> </li> </ul> +<a name="startDimension"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>startDimension</h4> +<pre>private final java.awt.Dimension startDimension</pre> +</li> +</ul> <a name="chooserDimension"> <!-- --> </a> @@ -987,7 +1045,7 @@ extends java.awt.Component</pre> <div> <ul class="subNavList"> <li>Summary: </li> -<li><a href="#nested.classes.inherited.from.class.java.awt.Component">Nested</a> | </li> +<li><a href="#nested.classes.inherited.from.class.javax.swing.JComponent">Nested</a> | </li> <li><a href="#field.summary">Field</a> | </li> <li><a href="#constructor.summary">Constr</a> | </li> <li><a href="#method.summary">Method</a></li> diff --git a/docs/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html b/docs/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html index b01639d66..bf9d5e420 100644 --- a/docs/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html +++ b/docs/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html @@ -72,7 +72,7 @@ var activeTableTab = "activeTableTab"; <div> <ul class="subNavList"> <li>Summary: </li> -<li><a href="#nested.classes.inherited.from.class.java.awt.Component">Nested</a> | </li> +<li><a href="#nested.classes.inherited.from.class.javax.swing.JComponent">Nested</a> | </li> <li><a href="#field.summary">Field</a> | </li> <li><a href="#constructor.summary">Constr</a> | </li> <li><a href="#method.summary">Method</a></li> @@ -101,12 +101,22 @@ var activeTableTab = "activeTableTab"; <li>java.awt.Component</li> <li> <ul class="inheritance"> +<li>java.awt.Container</li> +<li> +<ul class="inheritance"> +<li>javax.swing.JComponent</li> +<li> +<ul class="inheritance"> <li>de.griefed.serverpackcreator.gui.ModloaderInstallerLogTab</li> </ul> </li> </ul> </li> </ul> +</li> +</ul> +</li> +</ul> <div class="description"> <ul class="blockList"> <li class="blockList"> @@ -117,7 +127,7 @@ var activeTableTab = "activeTableTab"; <hr> <br> <pre>public class <span class="typeNameLabel">ModloaderInstallerLogTab</span> -extends java.awt.Component</pre> +extends javax.swing.JComponent</pre> <div class="block">This class creates the tab which display the latest modloader_installer.log tailer.</div> <dl> <dt><span class="seeLabel">See Also:</span></dt> @@ -136,6 +146,20 @@ extends java.awt.Component</pre> </a> <h3>Nested Class Summary</h3> <ul class="blockList"> +<li class="blockList"><a name="nested.classes.inherited.from.class.javax.swing.JComponent"> +<!-- --> +</a> +<h3>Nested classes/interfaces inherited from class javax.swing.JComponent</h3> +<code>javax.swing.JComponent.AccessibleJComponent</code></li> +</ul> +<ul class="blockList"> +<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Container"> +<!-- --> +</a> +<h3>Nested classes/interfaces inherited from class java.awt.Container</h3> +<code>java.awt.Container.AccessibleAWTContainer</code></li> +</ul> +<ul class="blockList"> <li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Component"> <!-- --> </a> @@ -178,6 +202,13 @@ extends java.awt.Component</pre> </tr> </table> <ul class="blockList"> +<li class="blockList"><a name="fields.inherited.from.class.javax.swing.JComponent"> +<!-- --> +</a> +<h3>Fields inherited from class javax.swing.JComponent</h3> +<code>listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW</code></li> +</ul> +<ul class="blockList"> <li class="blockList"><a name="fields.inherited.from.class.java.awt.Component"> <!-- --> </a> @@ -234,11 +265,25 @@ extends java.awt.Component</pre> </tr> </table> <ul class="blockList"> +<li class="blockList"><a name="methods.inherited.from.class.javax.swing.JComponent"> +<!-- --> +</a> +<h3>Methods inherited from class javax.swing.JComponent</h3> +<code>addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI</code></li> +</ul> +<ul class="blockList"> +<li class="blockList"><a name="methods.inherited.from.class.java.awt.Container"> +<!-- --> +</a> +<h3>Methods inherited from class java.awt.Container</h3> +<code>add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree</code></li> +</ul> +<ul class="blockList"> <li class="blockList"><a name="methods.inherited.from.class.java.awt.Component"> <!-- --> </a> <h3>Methods inherited from class java.awt.Component</h3> -<code>action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, deliverEvent, disable, disableEvents, dispatchEvent, doLayout, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getAlignmentX, getAlignmentY, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentAt, getComponentAt, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeys, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getListeners, getLocale, getLocation, getLocation, getLocationOnScreen, getMaximumSize, getMinimumSize, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, invalidate, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusCycleRoot, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, layout, list, list, list, list, list, locate, location, lostFocus, minimumSize, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paint, paintAll, paramString, postEvent, preferredSize, prepareImage, prepareImage, print, printAll, processComponentEvent, processEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, revalidate, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeys, setFocusTraversalKeysEnabled, setFont, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle, update, validate</code></li> +<code>action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle</code></li> </ul> <ul class="blockList"> <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> @@ -409,7 +454,7 @@ extends java.awt.Component</pre> <div> <ul class="subNavList"> <li>Summary: </li> -<li><a href="#nested.classes.inherited.from.class.java.awt.Component">Nested</a> | </li> +<li><a href="#nested.classes.inherited.from.class.javax.swing.JComponent">Nested</a> | </li> <li><a href="#field.summary">Field</a> | </li> <li><a href="#constructor.summary">Constr</a> | </li> <li><a href="#method.summary">Method</a></li> diff --git a/docs/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html b/docs/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html index 3c42bf0d9..24beabf88 100644 --- a/docs/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html +++ b/docs/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html @@ -72,7 +72,7 @@ var activeTableTab = "activeTableTab"; <div> <ul class="subNavList"> <li>Summary: </li> -<li><a href="#nested.classes.inherited.from.class.java.awt.Component">Nested</a> | </li> +<li><a href="#nested.classes.inherited.from.class.javax.swing.JComponent">Nested</a> | </li> <li><a href="#field.summary">Field</a> | </li> <li><a href="#constructor.summary">Constr</a> | </li> <li><a href="#method.summary">Method</a></li> @@ -101,12 +101,22 @@ var activeTableTab = "activeTableTab"; <li>java.awt.Component</li> <li> <ul class="inheritance"> +<li>java.awt.Container</li> +<li> +<ul class="inheritance"> +<li>javax.swing.JComponent</li> +<li> +<ul class="inheritance"> <li>de.griefed.serverpackcreator.gui.ServerPackCreatorLogTab</li> </ul> </li> </ul> </li> </ul> +</li> +</ul> +</li> +</ul> <div class="description"> <ul class="blockList"> <li class="blockList"> @@ -117,7 +127,7 @@ var activeTableTab = "activeTableTab"; <hr> <br> <pre>public class <span class="typeNameLabel">ServerPackCreatorLogTab</span> -extends java.awt.Component</pre> +extends javax.swing.JComponent</pre> <div class="block">This class creates the tab which display the latest serverpackcreator.log tailer.</div> <dl> <dt><span class="seeLabel">See Also:</span></dt> @@ -136,6 +146,20 @@ extends java.awt.Component</pre> </a> <h3>Nested Class Summary</h3> <ul class="blockList"> +<li class="blockList"><a name="nested.classes.inherited.from.class.javax.swing.JComponent"> +<!-- --> +</a> +<h3>Nested classes/interfaces inherited from class javax.swing.JComponent</h3> +<code>javax.swing.JComponent.AccessibleJComponent</code></li> +</ul> +<ul class="blockList"> +<li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Container"> +<!-- --> +</a> +<h3>Nested classes/interfaces inherited from class java.awt.Container</h3> +<code>java.awt.Container.AccessibleAWTContainer</code></li> +</ul> +<ul class="blockList"> <li class="blockList"><a name="nested.classes.inherited.from.class.java.awt.Component"> <!-- --> </a> @@ -178,6 +202,13 @@ extends java.awt.Component</pre> </tr> </table> <ul class="blockList"> +<li class="blockList"><a name="fields.inherited.from.class.javax.swing.JComponent"> +<!-- --> +</a> +<h3>Fields inherited from class javax.swing.JComponent</h3> +<code>listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW</code></li> +</ul> +<ul class="blockList"> <li class="blockList"><a name="fields.inherited.from.class.java.awt.Component"> <!-- --> </a> @@ -234,11 +265,25 @@ extends java.awt.Component</pre> </tr> </table> <ul class="blockList"> +<li class="blockList"><a name="methods.inherited.from.class.javax.swing.JComponent"> +<!-- --> +</a> +<h3>Methods inherited from class javax.swing.JComponent</h3> +<code>addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI</code></li> +</ul> +<ul class="blockList"> +<li class="blockList"><a name="methods.inherited.from.class.java.awt.Container"> +<!-- --> +</a> +<h3>Methods inherited from class java.awt.Container</h3> +<code>add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree</code></li> +</ul> +<ul class="blockList"> <li class="blockList"><a name="methods.inherited.from.class.java.awt.Component"> <!-- --> </a> <h3>Methods inherited from class java.awt.Component</h3> -<code>action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, deliverEvent, disable, disableEvents, dispatchEvent, doLayout, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getAlignmentX, getAlignmentY, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentAt, getComponentAt, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeys, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getListeners, getLocale, getLocation, getLocation, getLocationOnScreen, getMaximumSize, getMinimumSize, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, invalidate, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusCycleRoot, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, layout, list, list, list, list, list, locate, location, lostFocus, minimumSize, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paint, paintAll, paramString, postEvent, preferredSize, prepareImage, prepareImage, print, printAll, processComponentEvent, processEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, revalidate, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeys, setFocusTraversalKeysEnabled, setFont, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle, update, validate</code></li> +<code>action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle</code></li> </ul> <ul class="blockList"> <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> @@ -409,7 +454,7 @@ extends java.awt.Component</pre> <div> <ul class="subNavList"> <li>Summary: </li> -<li><a href="#nested.classes.inherited.from.class.java.awt.Component">Nested</a> | </li> +<li><a href="#nested.classes.inherited.from.class.javax.swing.JComponent">Nested</a> | </li> <li><a href="#field.summary">Field</a> | </li> <li><a href="#constructor.summary">Constr</a> | </li> <li><a href="#method.summary">Method</a></li> diff --git a/docs/de/griefed/serverpackcreator/gui/package-frame.html b/docs/de/griefed/serverpackcreator/gui/package-frame.html index f2da25ef0..d86f4cc52 100644 --- a/docs/de/griefed/serverpackcreator/gui/package-frame.html +++ b/docs/de/griefed/serverpackcreator/gui/package-frame.html @@ -13,6 +13,7 @@ <h2 title="Classes">Classes</h2> <ul title="Classes"> <li><a href="AboutTab.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">AboutTab</a></li> +<li><a href="BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">BackgroundPanel</a></li> <li><a href="CreateGui.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">CreateGui</a></li> <li><a href="CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">CreateServerPackTab</a></li> <li><a href="ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui" target="classFrame">ModloaderInstallerLogTab</a></li> diff --git a/docs/de/griefed/serverpackcreator/gui/package-summary.html b/docs/de/griefed/serverpackcreator/gui/package-summary.html index 4103dc391..740b16a0c 100644 --- a/docs/de/griefed/serverpackcreator/gui/package-summary.html +++ b/docs/de/griefed/serverpackcreator/gui/package-summary.html @@ -89,6 +89,12 @@ </td> </tr> <tr class="rowColor"> +<td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></td> +<td class="colLast"> +<div class="block">Hey, Griefed here.</div> +</td> +</tr> +<tr class="altColor"> <td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></td> <td class="colLast"> <div class="block"><strong>Table of methods</strong><br> @@ -98,20 +104,20 @@ This class creates and shows the GUI needed for running ServerPackCreator in....well...GUI mode.</div> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></td> <td class="colLast"> <div class="block">This class creates the tab which displays the labels, textfields, buttons and functions in order to create a new server pack.</div> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a></td> <td class="colLast"> <div class="block">This class creates the tab which display the latest modloader_installer.log tailer.</div> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></td> <td class="colLast"> <div class="block">This class creates the tab which display the latest serverpackcreator.log tailer.</div> diff --git a/docs/de/griefed/serverpackcreator/gui/package-tree.html b/docs/de/griefed/serverpackcreator/gui/package-tree.html index 1dfc101db..708275b0c 100644 --- a/docs/de/griefed/serverpackcreator/gui/package-tree.html +++ b/docs/de/griefed/serverpackcreator/gui/package-tree.html @@ -86,18 +86,19 @@ <ul> <li type="circle">javax.swing.JComponent (implements java.io.Serializable) <ul> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateServerPackTab</span></a></li> <li type="circle">javax.swing.JPanel (implements javax.accessibility.Accessible) <ul> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">BackgroundPanel</span></a></li> <li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateGui</span></a></li> </ul> </li> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ModloaderInstallerLogTab</span></a></li> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ServerPackCreatorLogTab</span></a></li> </ul> </li> </ul> </li> -<li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateServerPackTab</span></a></li> -<li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ModloaderInstallerLogTab</span></a></li> -<li type="circle">de.griefed.serverpackcreator.gui.<a href="../../../../de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ServerPackCreatorLogTab</span></a></li> </ul> </li> </ul> diff --git a/docs/index-all.html b/docs/index-all.html index a54654d17..57bd307f6 100644 --- a/docs/index-all.html +++ b/docs/index-all.html @@ -89,6 +89,22 @@ <dd> <div class="block">Create the tab for the About-page of ServerpackCreator.</div> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#aboutTab">aboutTab</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#ACTUAL">ACTUAL</a></span> - Static variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#add-javax.swing.JComponent-">add(JComponent)</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block">Override method so we can make the component transparent.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#add-javax.swing.JComponent-java.lang.Object-">add(JComponent, Object)</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block">Override method so we can make the component transparent.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#alignmentX">alignmentX</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#alignmentY">alignmentY</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/CreateServerPack.html#appLogger">appLogger</a></span> - Static variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a></dt> @@ -115,8 +131,36 @@ </a> <h2 class="title">B</h2> <dl> +<dt><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">BackgroundPanel</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> +<dd> +<div class="block">Hey, Griefed here.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#BackgroundPanel-java.awt.Image-">BackgroundPanel(Image)</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block"><strong>Constructor</strong><br> + Set image as the background with the SCALED style.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#BackgroundPanel-java.awt.Image-int-">BackgroundPanel(Image, int)</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block"><strong>Constructor</strong><br> + Set image as the background with the specified style.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#BackgroundPanel-java.awt.Image-int-float-float-">BackgroundPanel(Image, int, float, float)</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block"><strong>Constructor</strong><br> + Set image as the background with the specified style and alignment.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#BackgroundPanel-java.awt.Paint-">BackgroundPanel(Paint)</a></span> - Constructor for class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block"><strong>Constructor</strong><br> + Use the Paint interface to paint a background.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#backgroundPanel">backgroundPanel</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#bannerIcon">bannerIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#bufferedImage">bufferedImage</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#buildString-java.lang.String...-">buildString(String...)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Converts a sequence of Strings, for example from a list, into a concatenated String.</div> @@ -245,6 +289,8 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#clientModsChooser">clientModsChooser</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#clipboard">clipboard</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#config">config</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#configChooser">configChooser</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> @@ -269,6 +315,8 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#configuration">configuration</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#configURL">configURL</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#constraints">constraints</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#constraints">constraints</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> @@ -334,6 +382,10 @@ <div class="block"><strong>Constructor</strong> Used for Dependency Injection.</div> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#createHasteBinFromFile-java.io.File-">createHasteBinFromFile(File)</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> +<div class="block">Create a HasteBin post from a given text file.</div> +</dd> <dt><a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">CreateServerPack</span></a> - Class in <a href="de/griefed/serverpackcreator/package-summary.html">de.griefed.serverpackcreator</a></dt> <dd> <div class="block"><strong>Table of methods</strong> @@ -350,6 +402,8 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#createServerPackPanel">createServerPackPanel</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#createServerPackTab">createServerPackTab</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> +<dd> </dd> <dt><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateServerPackTab</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> <dd> <div class="block">This class creates the tab which displays the labels, textfields, buttons and functions in order to create a new @@ -496,6 +550,18 @@ <dd> <div class="block">Downloads all mods specified in the modpack's manifest.json file.</div> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#drawActual-java.awt.Graphics-">drawActual(Graphics)</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block">Custom painting code for drawing the ACTUAL image as the background.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#drawScaled-java.awt.Graphics-">drawScaled(Graphics)</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block">Custom painting code for drawing a SCALED image as the background.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#drawTiled-java.awt.Graphics-">drawTiled(Graphics)</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block">Custom painting code for drawing TILED images as the background.</div> +</dd> </dl> <a name="I:E"> <!-- --> @@ -756,6 +822,10 @@ <dd> <div class="block">Getter for creator.conf.</div> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#getPreferredSize--">getPreferredSize()</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block">Override to provide a preferred size equal to the image size.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#getProjectFileID--">getProjectFileID()</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Getter for the CurseForge file of a modpack, which will be created by <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a>.</div> @@ -802,6 +872,8 @@ </a> <h2 class="title">H</h2> <dl> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#hastebinIcon">hastebinIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#helpIcon">helpIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#helpScrollPane">helpScrollPane</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> @@ -824,6 +896,8 @@ <dd> <div class="block">Ignore unknown values/object.</div> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#image">image</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#includeServerIcon">includeServerIcon</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#includeServerInstallation">includeServerInstallation</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> @@ -903,6 +977,8 @@ </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#issueIcon">issueIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#isTransparentAdd">isTransparentAdd</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> </dd> </dl> <a name="I:J"> <!-- --> @@ -1020,6 +1096,10 @@ <dd> <div class="block">Shows the GUI from the EDT by using SwingUtilities and it's invokeLater method by calling <a href="de/griefed/serverpackcreator/gui/CreateGui.html#createAndShowGUI--"><code>CreateGui.createAndShowGUI()</code></a>.</div> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#makeComponentTransparent-javax.swing.JComponent-">makeComponentTransparent(JComponent)</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block">Try to make the component transparent.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html#minecraft">minecraft</a></span> - Variable in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseModpack</a></dt> <dd> <div class="block">Ignore unknown values/object.</div> @@ -1034,6 +1114,8 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#modloaderInstallerLogPanel">modloaderInstallerLogPanel</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#modloaderInstallerLogTab">modloaderInstallerLogTab</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> +<dd> </dd> <dt><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ModloaderInstallerLogTab</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> <dd> <div class="block">This class creates the tab which display the latest modloader_installer.log tailer.</div> @@ -1080,13 +1162,19 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/FilesSetup.html#oldConfigFile">oldConfigFile</a></span> - Variable in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/FilesSetup.html" title="class in de.griefed.serverpackcreator">FilesSetup</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#options">options</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> </dl> <a name="I:P"> <!-- --> </a> <h2 class="title">P</h2> <dl> -<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#pastebinIcon">pastebinIcon</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#paintComponent-java.awt.Graphics-">paintComponent(Graphics)</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block">Add custom painting.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#painter">painter</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#printConfig-java.lang.String-java.util.List-java.util.List-boolean-java.lang.String-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-boolean-boolean-">printConfig(String, List<String>, List<String>, boolean, String, String, String, String, boolean, boolean, boolean, boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> @@ -1140,6 +1228,8 @@ </a> <h2 class="title">S</h2> <dl> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#SCALED">SCALED</a></span> - Static variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#scrollPane">scrollPane</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#scrollPane">scrollPane</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></dt> @@ -1150,10 +1240,16 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#serverPackCreatorBanner">serverPackCreatorBanner</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#serverPackCreatorConf">serverPackCreatorConf</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#serverPackCreatorFrame">serverPackCreatorFrame</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#serverPackCreatorLog">serverPackCreatorLog</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#serverPackCreatorLogPanel">serverPackCreatorLogPanel</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#serverPackCreatorLogTab">serverPackCreatorLogTab</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> +<dd> </dd> <dt><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ServerPackCreatorLogTab</span></a> - Class in <a href="de/griefed/serverpackcreator/gui/package-summary.html">de.griefed.serverpackcreator.gui</a></dt> <dd> <div class="block">This class creates the tab which display the latest serverpackcreator.log tailer.</div> @@ -1196,6 +1292,18 @@ <dd> <div class="block">Setter for the modloader and modloader version used by the CurseForge modpack.</div> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#setImage-java.awt.Image-">setImage(Image)</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block">Setter for the image used as the background.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#setImageAlignmentX-float-">setImageAlignmentX(float)</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block">Setter for the horizontal alignment of the image when using ACTUAL style.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#setImageAlignmentY-float-">setImageAlignmentY(float)</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block">Setter for the horizontal alignment of the image when using ACTUAL style.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setIncludeServerIcon-boolean-">setIncludeServerIcon(boolean)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Setter for whether the server-icon.png should be included in the server pack.</div> @@ -1256,6 +1364,10 @@ <dd> <div class="block">Setter for the name of the CurseForge modpack.</div> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#setPaint-java.awt.Paint-">setPaint(Paint)</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block">Setter for the Paint object used to paint the background.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#setProjectFileID-int-">setProjectFileID(int)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Setter for the CurseForge file of a modpack, which will be created by <a href="de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.html#curseForgeModpack-java.lang.String-java.lang.Integer-java.lang.Integer-"><code>CurseCreateModpack.curseForgeModpack(String, Integer, Integer)</code></a>.</div> @@ -1268,6 +1380,15 @@ <dd> <div class="block">Setter for a projectID of a dependency in the CurseForge modpack.</div> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#setStyle-int-">setStyle(int)</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block">Setter the style used to paint the background image.</div> +</dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#setTransparentAdd-boolean-">setTransparentAdd(boolean)</a></span> - Method in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> +<div class="block">Controls whether components added to this panel should automatically + be made transparent.</div> +</dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html#setVersion-java.lang.String-">setVersion(String)</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseMinecraft</a></dt> <dd> <div class="block">Setter for the Minecraft version used by the CurseForge modpack.</div> @@ -1276,8 +1397,16 @@ <dd> <div class="block">Setter for the version of the CurseForge modpack.</div> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#spclogURL">spclogURL</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#startDimension">startDimension</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#startGeneration">startGeneration</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#stringSelection">stringSelection</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#style">style</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/Configuration.html#suggestCopyDirs-java.lang.String-">suggestCopyDirs(String)</a></span> - Method in class de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator">Configuration</a></dt> <dd> <div class="block">Creates a list of suggested directories to include in server pack which is later on written to a new configuration file.</div> @@ -1292,10 +1421,14 @@ </a> <h2 class="title">T</h2> <dl> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#textArea">textArea</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html#textArea">textArea</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html#textArea">textArea</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#textAreaContent">textAreaContent</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textClientMods">textClientMods</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html#textCopyDirs">textCopyDirs</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a></dt> @@ -1312,6 +1445,10 @@ <dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#textPane">textPane</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> <dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/CreateGui.html#tile">tile</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui">CreateGui</a></dt> +<dd> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html#TILED">TILED</a></span> - Static variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a></dt> +<dd> </dd> <dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html#toString--">toString()</a></span> - Method in class de.griefed.serverpackcreator.curseforgemodpack.<a href="de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.html" title="class in de.griefed.serverpackcreator.curseforgemodpack">CurseFiles</a></dt> <dd> <div class="block">A comma separated combination of a dependency projectID and fileID of a CurseForge modpack.</div> @@ -1339,6 +1476,8 @@ <dd> <div class="block">With help from <a href=https://www.baeldung.com/java-compress-and-uncompress>Baeldung Java Tutorials</a>.</div> </dd> +<dt><span class="memberNameLink"><a href="de/griefed/serverpackcreator/gui/AboutTab.html#userResponse">userResponse</a></span> - Variable in class de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a></dt> +<dd> </dd> </dl> <a name="I:V"> <!-- --> diff --git a/docs/overview-tree.html b/docs/overview-tree.html index d9ca2afb7..6fb29b414 100644 --- a/docs/overview-tree.html +++ b/docs/overview-tree.html @@ -89,18 +89,19 @@ <ul> <li type="circle">javax.swing.JComponent (implements java.io.Serializable) <ul> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateServerPackTab</span></a></li> <li type="circle">javax.swing.JPanel (implements javax.accessibility.Accessible) <ul> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">BackgroundPanel</span></a></li> <li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateGui.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateGui</span></a></li> </ul> </li> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ModloaderInstallerLogTab</span></a></li> +<li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ServerPackCreatorLogTab</span></a></li> </ul> </li> </ul> </li> -<li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">CreateServerPackTab</span></a></li> -<li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ModloaderInstallerLogTab</span></a></li> -<li type="circle">de.griefed.serverpackcreator.gui.<a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui"><span class="typeNameLink">ServerPackCreatorLogTab</span></a></li> </ul> </li> <li type="circle">de.griefed.serverpackcreator.<a href="de/griefed/serverpackcreator/Configuration.html" title="class in de.griefed.serverpackcreator"><span class="typeNameLink">Configuration</span></a></li> diff --git a/docs/serialized-form.html b/docs/serialized-form.html index 1ea730567..cdf9a1d48 100644 --- a/docs/serialized-form.html +++ b/docs/serialized-form.html @@ -96,8 +96,8 @@ <pre>javax.swing.ImageIcon issueIcon</pre> </li> <li class="blockList"> -<h4>pastebinIcon</h4> -<pre>javax.swing.ImageIcon pastebinIcon</pre> +<h4>hastebinIcon</h4> +<pre>javax.swing.ImageIcon hastebinIcon</pre> </li> <li class="blockList"> <h4>prosperIcon</h4> @@ -131,10 +131,86 @@ <h4>buttonOpenIssue</h4> <pre>javax.swing.JButton buttonOpenIssue</pre> </li> -<li class="blockListLast"> +<li class="blockList"> <h4>buttonDiscord</h4> <pre>javax.swing.JButton buttonDiscord</pre> </li> +<li class="blockList"> +<h4>textArea</h4> +<pre>javax.swing.JTextArea textArea</pre> +</li> +<li class="blockList"> +<h4>configURL</h4> +<pre>java.lang.String configURL</pre> +</li> +<li class="blockList"> +<h4>spclogURL</h4> +<pre>java.lang.String spclogURL</pre> +</li> +<li class="blockList"> +<h4>textAreaContent</h4> +<pre>java.lang.String textAreaContent</pre> +</li> +<li class="blockList"> +<h4>stringSelection</h4> +<pre>java.awt.datatransfer.StringSelection stringSelection</pre> +</li> +<li class="blockList"> +<h4>clipboard</h4> +<pre>java.awt.datatransfer.Clipboard clipboard</pre> +</li> +<li class="blockList"> +<h4>serverPackCreatorConf</h4> +<pre>java.io.File serverPackCreatorConf</pre> +</li> +<li class="blockList"> +<h4>serverPackCreatorLog</h4> +<pre>java.io.File serverPackCreatorLog</pre> +</li> +<li class="blockList"> +<h4>options</h4> +<pre>java.lang.String[] options</pre> +</li> +<li class="blockListLast"> +<h4>userResponse</h4> +<pre>int userResponse</pre> +</li> +</ul> +</li> +</ul> +</li> +<li class="blockList"><a name="de.griefed.serverpackcreator.gui.BackgroundPanel"> +<!-- --> +</a> +<h3>Class <a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">de.griefed.serverpackcreator.gui.BackgroundPanel</a> extends javax.swing.JPanel implements Serializable</h3> +<ul class="blockList"> +<li class="blockList"> +<h3>Serialized Fields</h3> +<ul class="blockList"> +<li class="blockList"> +<h4>painter</h4> +<pre>java.awt.Paint painter</pre> +</li> +<li class="blockList"> +<h4>image</h4> +<pre>java.awt.Image image</pre> +</li> +<li class="blockList"> +<h4>style</h4> +<pre>int style</pre> +</li> +<li class="blockList"> +<h4>alignmentX</h4> +<pre>float alignmentX</pre> +</li> +<li class="blockList"> +<h4>alignmentY</h4> +<pre>float alignmentY</pre> +</li> +<li class="blockListLast"> +<h4>isTransparentAdd</h4> +<pre>boolean isTransparentAdd</pre> +</li> </ul> </li> </ul> @@ -160,6 +236,14 @@ <pre>java.awt.Dimension windowDimension</pre> </li> <li class="blockList"> +<h4>tile</h4> +<pre>java.awt.Image tile</pre> +</li> +<li class="blockList"> +<h4>bufferedImage</h4> +<pre>java.awt.image.BufferedImage bufferedImage</pre> +</li> +<li class="blockList"> <h4>localizationManager</h4> <pre><a href="de/griefed/serverpackcreator/i18n/LocalizationManager.html" title="class in de.griefed.serverpackcreator.i18n">LocalizationManager</a> localizationManager</pre> </li> @@ -176,6 +260,26 @@ <pre><a href="de/griefed/serverpackcreator/CreateServerPack.html" title="class in de.griefed.serverpackcreator">CreateServerPack</a> createServerPack</pre> </li> <li class="blockList"> +<h4>createServerPackTab</h4> +<pre><a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">CreateServerPackTab</a> createServerPackTab</pre> +</li> +<li class="blockList"> +<h4>serverPackCreatorLogTab</h4> +<pre><a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">ServerPackCreatorLogTab</a> serverPackCreatorLogTab</pre> +</li> +<li class="blockList"> +<h4>modloaderInstallerLogTab</h4> +<pre><a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">ModloaderInstallerLogTab</a> modloaderInstallerLogTab</pre> +</li> +<li class="blockList"> +<h4>aboutTab</h4> +<pre><a href="de/griefed/serverpackcreator/gui/AboutTab.html" title="class in de.griefed.serverpackcreator.gui">AboutTab</a> aboutTab</pre> +</li> +<li class="blockList"> +<h4>backgroundPanel</h4> +<pre><a href="de/griefed/serverpackcreator/gui/BackgroundPanel.html" title="class in de.griefed.serverpackcreator.gui">BackgroundPanel</a> backgroundPanel</pre> +</li> +<li class="blockList"> <h4>serverPackCreatorFrame</h4> <pre>javax.swing.JFrame serverPackCreatorFrame</pre> </li> @@ -198,7 +302,7 @@ <li class="blockList"><a name="de.griefed.serverpackcreator.gui.CreateServerPackTab"> <!-- --> </a> -<h3>Class <a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">de.griefed.serverpackcreator.gui.CreateServerPackTab</a> extends java.awt.Component implements Serializable</h3> +<h3>Class <a href="de/griefed/serverpackcreator/gui/CreateServerPackTab.html" title="class in de.griefed.serverpackcreator.gui">de.griefed.serverpackcreator.gui.CreateServerPackTab</a> extends javax.swing.JComponent implements Serializable</h3> <ul class="blockList"> <li class="blockList"> <h3>Serialized Fields</h3> @@ -244,6 +348,10 @@ <pre>java.awt.Dimension miscButtonDimension</pre> </li> <li class="blockList"> +<h4>startDimension</h4> +<pre>java.awt.Dimension startDimension</pre> +</li> +<li class="blockList"> <h4>chooserDimension</h4> <pre>java.awt.Dimension chooserDimension</pre> </li> @@ -398,7 +506,7 @@ <li class="blockList"><a name="de.griefed.serverpackcreator.gui.ModloaderInstallerLogTab"> <!-- --> </a> -<h3>Class <a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">de.griefed.serverpackcreator.gui.ModloaderInstallerLogTab</a> extends java.awt.Component implements Serializable</h3> +<h3>Class <a href="de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.html" title="class in de.griefed.serverpackcreator.gui">de.griefed.serverpackcreator.gui.ModloaderInstallerLogTab</a> extends javax.swing.JComponent implements Serializable</h3> <ul class="blockList"> <li class="blockList"> <h3>Serialized Fields</h3> @@ -430,7 +538,7 @@ <li class="blockList"><a name="de.griefed.serverpackcreator.gui.ServerPackCreatorLogTab"> <!-- --> </a> -<h3>Class <a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">de.griefed.serverpackcreator.gui.ServerPackCreatorLogTab</a> extends java.awt.Component implements Serializable</h3> +<h3>Class <a href="de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.html" title="class in de.griefed.serverpackcreator.gui">de.griefed.serverpackcreator.gui.ServerPackCreatorLogTab</a> extends javax.swing.JComponent implements Serializable</h3> <ul class="blockList"> <li class="blockList"> <h3>Serialized Fields</h3> -- GitLab From a9fb5b8ce327a2f08a792d3776157195134862f1 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Mon, 3 May 2021 21:55:40 +0200 Subject: [PATCH 56/91] refactor(DI): Whoops --- .../gui/BackgroundPanel.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java b/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java index 25edcc61f..474df55d3 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java @@ -1,3 +1,22 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + */ package de.griefed.serverpackcreator.gui; import javax.swing.*; @@ -11,7 +30,7 @@ import java.awt.*; * for Swing.<br> * Links:<br> * <a href="https://tips4java.wordpress.com/2008/10/12/background-panel/">Background Panel by Rob Camick from October 12, 2008</a><br> - * <a href="http://www.camick.com/java/source/BackgroundPanel.java">BackgroundPanel.java</a><br> + * <a href="https://www.camick.com/java/source/BackgroundPanel.java">BackgroundPanel.java</a><br> * Seriously, give this man an award, because this class is a <strong>BEAST</strong>.<p> * Rob, if you somehow ever get wind of your class being used here: Thank you, thank you, thank you, thank you, thank you * so very much! You seriously made my day here.<br> -- GitLab From b70a0a7e0690f52c898871af29a79ccd9d5ac2a9 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Tue, 4 May 2021 04:05:28 -0700 Subject: [PATCH 57/91] refactor(DI): Small fixes in javadoc --- .../griefed/serverpackcreator/curseforgemodpack/CurseFiles.java | 2 +- .../serverpackcreator/curseforgemodpack/CurseMinecraft.java | 2 +- .../serverpackcreator/curseforgemodpack/CurseModLoaders.java | 2 +- .../serverpackcreator/curseforgemodpack/CurseModpack.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java index ec7645b7a..e1649720e 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseFiles.java @@ -27,7 +27,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; * {@link #getFileID()}<br> * {@link #setFileID(String)}<br> * {@link #toString()}<p> - * Retrieves information about a CurseForge Minecraft modpack by using {@link com.fasterxml.jackson.databind} JSON parsing. + * Retrieves information about a CurseForge Minecraft modpack by using {@linkplain com.fasterxml.jackson.databind} JSON parsing. * This class retrieves the projectIDs and fileIDs a modpack acquired from CurseForge depends on. These can be mods, * resource packs, worlds etc. etc. */ diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java index 18519df5f..31a3fb8d8 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java @@ -30,7 +30,7 @@ import java.util.List; * {@link #getModLoaders()}<br> * {@link #setModLoaders(List)}<br> * {@link #toString()}<p> - * Retrieves information about a CurseForge Minecraft modpack by using {@link com.fasterxml.jackson.databind} JSON parsing. + * Retrieves information about a CurseForge Minecraft modpack by using {@linkplain com.fasterxml.jackson.databind} JSON parsing. * This class retrieves the Minecraft version of a modpack. */ public class CurseMinecraft { diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java index d64bbcf68..12f08aa83 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModLoaders.java @@ -26,7 +26,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; * {@link #getId()}<br> * {@link #setId(String)}<br> * {@link #toString()}<p> - * Retrieves information about a CurseForge Minecraft modpack by using {@link com.fasterxml.jackson.databind} JSON parsing. + * Retrieves information about a CurseForge Minecraft modpack by using {@linkplain com.fasterxml.jackson.databind} JSON parsing. * This class retrieves the modloader and modloader version of a modpack. */ public class CurseModLoaders { diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java index 8ec7af1cc..c998ae781 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseModpack.java @@ -36,7 +36,7 @@ import java.util.List; * {@link #getFiles()}<br> * {@link #setFiles(List)}<br> * {@link #toString()}<p> - * Retrieve information about a CurseForge Minecraft modpack by using {@link com.fasterxml.jackson.databind} JSON parsing. + * Retrieve information about a CurseForge Minecraft modpack by using {@linkplain com.fasterxml.jackson.databind} JSON parsing. * This class retrieves the name, version and author of a modpack. */ public class CurseModpack { -- GitLab From 0eaeacabcf97ffeae06a5413e7f190b0e8b6c4f5 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Tue, 4 May 2021 06:06:23 -0700 Subject: [PATCH 58/91] refactor(DI): Paint the background image into the background of the tabbed pane as well. --- .../serverpackcreator/gui/CreateGui.java | 41 +++++++++++++++---- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java index 7d05cdc9f..3a4ee2c4f 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java @@ -31,6 +31,8 @@ import org.apache.logging.log4j.Logger; import javax.imageio.ImageIO; import javax.swing.*; +import javax.swing.border.Border; +import javax.swing.plaf.basic.BasicTabbedPaneUI; import java.awt.*; import java.awt.event.KeyEvent; import java.awt.image.BufferedImage; @@ -65,7 +67,6 @@ public class CreateGui extends JPanel { } } - private LocalizationManager localizationManager; private Configuration configuration; private CurseCreateModpack curseCreateModpack; @@ -76,6 +77,7 @@ public class CreateGui extends JPanel { private ModloaderInstallerLogTab modloaderInstallerLogTab; private AboutTab aboutTab; private BackgroundPanel backgroundPanel; + private JTabbedPane tabbedPane; /** * <strong>Constructor</strong><p> @@ -123,12 +125,22 @@ public class CreateGui extends JPanel { serverPackCreatorLogTab = new ServerPackCreatorLogTab(localizationManager); modloaderInstallerLogTab = new ModloaderInstallerLogTab(localizationManager); aboutTab = new AboutTab(localizationManager); - + serverPackCreatorFrame = new JFrame(localizationManager.getLocalizedString("createserverpack.gui.createandshowgui")); backgroundPanel = new BackgroundPanel(bufferedImage, BackgroundPanel.TILED, 0.0f, 0.0f); - - JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); - - setOpaque(false); + tabbedPane = new JTabbedPane(JTabbedPane.TOP); + + tabbedPane.setUI(new BasicTabbedPaneUI() { + private final Insets borderInsets = new Insets(0, 0, 0, 0); + + /* + * Remove the border insets so the panes fully fill out the area available to them. Prevents the image painted + * by BackgroundPanel from being displayed along the border of the pane. + */ + @Override + protected Insets getContentBorderInsets(int tabPlacement) { + return borderInsets; + } + }); tabbedPane.addTab( localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.title"), @@ -162,8 +174,15 @@ public class CreateGui extends JPanel { tabbedPane.setMnemonicAt(3, KeyEvent.VK_4); + tabbedPane.setOpaque(true); + add(tabbedPane); + + // We need both in order to have a transparent TabbedPane + // behind which we can see the image painted by BackgroundPanel + setOpaque(false); tabbedPane.setOpaque(false); + tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); } @@ -179,9 +198,15 @@ public class CreateGui extends JPanel { */ public void mainGUI() { SwingUtilities.invokeLater(() -> { - //Bold fonts = true, else false + //Bold fonts = true UIManager.put("swing.boldMetal", true); + /* + * A little secret setting which allows the user to temporarily overwrite the Look and Feel of ServerPackCreator. + * Note: This setting is not carried over to new configuration files written by ServerPackCreator when, + * for example, the configuration file for a modpack acquired from CurseForge is written. + * It was just something I wanted to play around with. So I did. + */ try { if (new File("serverpackcreator.conf").exists()) { @@ -213,6 +238,7 @@ public class CreateGui extends JPanel { appLogger.error(localizationManager.getLocalizedString("tabbedpane.log.error"), ex); } } + createAndShowGUI(); }); } @@ -222,7 +248,6 @@ public class CreateGui extends JPanel { */ private void createAndShowGUI() { - serverPackCreatorFrame = new JFrame(localizationManager.getLocalizedString("createserverpack.gui.createandshowgui")); serverPackCreatorFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); serverPackCreatorFrame.setContentPane(backgroundPanel); -- GitLab From e96fc918441531063aec0f60f71650bbfb75eb1e Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Tue, 4 May 2021 06:08:01 -0700 Subject: [PATCH 59/91] refactor(DI): Paint the background image into the background of the tabbed pane as well. --- .../griefed/serverpackcreator/gui/CreateGui.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java index 3a4ee2c4f..58e28af10 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java @@ -129,13 +129,13 @@ public class CreateGui extends JPanel { backgroundPanel = new BackgroundPanel(bufferedImage, BackgroundPanel.TILED, 0.0f, 0.0f); tabbedPane = new JTabbedPane(JTabbedPane.TOP); + /* + * Remove the border insets so the panes fully fill out the area available to them. Prevents the image + * painted by BackgroundPanel from being displayed along the border of the pane. + */ tabbedPane.setUI(new BasicTabbedPaneUI() { private final Insets borderInsets = new Insets(0, 0, 0, 0); - /* - * Remove the border insets so the panes fully fill out the area available to them. Prevents the image painted - * by BackgroundPanel from being displayed along the border of the pane. - */ @Override protected Insets getContentBorderInsets(int tabPlacement) { return borderInsets; @@ -178,8 +178,10 @@ public class CreateGui extends JPanel { add(tabbedPane); - // We need both in order to have a transparent TabbedPane - // behind which we can see the image painted by BackgroundPanel + /* + * We need both in order to have a transparent TabbedPane + * behind which we can see the image painted by BackgroundPanel + */ setOpaque(false); tabbedPane.setOpaque(false); -- GitLab From a632c6d4380feacbcc34033f16c18d435a16502c Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Tue, 4 May 2021 06:08:20 -0700 Subject: [PATCH 60/91] refactor(DI): Paint the background image into the background of the tabbed pane as well. --- src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java index 58e28af10..be79e14fe 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java @@ -31,7 +31,6 @@ import org.apache.logging.log4j.Logger; import javax.imageio.ImageIO; import javax.swing.*; -import javax.swing.border.Border; import javax.swing.plaf.basic.BasicTabbedPaneUI; import java.awt.*; import java.awt.event.KeyEvent; -- GitLab From d84ce14944d465a948c1e7ca1f08dc3b07e36a65 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Tue, 4 May 2021 21:33:08 +0200 Subject: [PATCH 61/91] refactor(DI): Smartscroll logging tabs --- .../gui/ModloaderInstallerLogTab.java | 3 + .../gui/ServerPackCreatorLogTab.java | 3 + .../serverpackcreator/gui/SmartScroller.java | 231 ++++++++++++++++++ 3 files changed, 237 insertions(+) create mode 100644 src/main/java/de/griefed/serverpackcreator/gui/SmartScroller.java diff --git a/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java b/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java index d1d2e2f6f..f05543b7c 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java @@ -53,6 +53,7 @@ public class ModloaderInstallerLogTab extends JComponent { private GridBagConstraints constraints; private JTextArea textArea; private JScrollPane scrollPane; + private SmartScroller smartScroller; /** * Create the tab for the modloader_installer.log tailer in a JScrollPane with an always available vertical scrollbar @@ -95,6 +96,8 @@ public class ModloaderInstallerLogTab extends JComponent { JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + smartScroller = new SmartScroller(scrollPane); + modloaderInstallerLogPanel.add(scrollPane, constraints); return modloaderInstallerLogPanel; diff --git a/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java b/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java index 0e6dbf1b0..6ad2e2564 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java @@ -53,6 +53,7 @@ public class ServerPackCreatorLogTab extends JComponent { private GridBagConstraints constraints; private JTextArea textArea; private JScrollPane scrollPane; + private SmartScroller smartScroller; /** * Create the tab for the serverpackcreator.log tailer in a JScrollPane with an always available vertical scrollbar @@ -94,6 +95,8 @@ public class ServerPackCreatorLogTab extends JComponent { JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + smartScroller = new SmartScroller(scrollPane); + serverPackCreatorLogPanel.add(scrollPane, constraints); return serverPackCreatorLogPanel; diff --git a/src/main/java/de/griefed/serverpackcreator/gui/SmartScroller.java b/src/main/java/de/griefed/serverpackcreator/gui/SmartScroller.java new file mode 100644 index 000000000..71f4faa98 --- /dev/null +++ b/src/main/java/de/griefed/serverpackcreator/gui/SmartScroller.java @@ -0,0 +1,231 @@ +/* Copyright (C) 2021 Griefed + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + * + * ##################################################################################################################### + * + * Addendum from the Java Tips Weblog's About page: + * + * It should be noted that none of the code presented here is used in any real application, (I only do this for a hobby) + * and therefore you use it at your own risk. Although I must admit I took about 5-10 minutes to do extensive testing so + * I doubt you will find many bugs :-). + * + * We assume no responsibility for the code. You are free to use and/or modify and/or distribute any or all code posted + * on the Java Tips Weblog without restriction. A credit in the code comments would be nice, but not in any way mandatory. + * + * “Give somebody a fish and they eat for a day. + * Teach somebody to fish they eat for life!†+ * + * In following the philosophy of the above quote, whenever possible, I will also attempt to provide links for related + * reading to help you better understand the suggested solution. These readings may include tips to help solve your next + * problem. I may include links to: + * + * technical articles + * tutorials + * the Java API + * The Java API is huge and we don’t have time to read it from start to finish. If the examples don’t solve your problem, + * hopefully they can at least give you some ideas and introduce you to new API’s and concepts. + * + * Rob + * + * ##################################################################################################################### + * + */ +package de.griefed.serverpackcreator.gui; + +import javax.swing.*; +import javax.swing.text.DefaultCaret; +import javax.swing.text.JTextComponent; +import java.awt.*; +import java.awt.event.AdjustmentEvent; +import java.awt.event.AdjustmentListener; + +/** + * Hey, Griefed here. I was playing around with scrolling in Swing and was getting fed up with the ways I came up with + * which would allow me to set the scrollbar to the bottom at all times....I mean, it worked, sorta? The problem was + * that you couldn't scroll up...making any previous log messages unreadable..I couldn't figure out how to make it so + * it would stop scrolling to the end if the user scrolled up, and when I was about to give an just not deal with any + * of that scrolling business, I came across this beauty here. Add your scrollpane to this SmartScroller and BAM! + * You've got yourself a smartscrolling scroll pane which stops going to the end of the pane after you've scrolled up, + * and resumes autoscrolling when you've scrolled to the bottom again. It's beautiful!<br> + * Rob, you absolute madlad. You did it again.<br> + * Links:<br> + * See <a href="https://tips4java.wordpress.com/2013/03/03/smart-scrolling/">Smart Scrolling</a><br> + * And <a href="https://www.camick.com/java/source/SmartScroller.java">SmartScroller.java</a> + * Seriously, give this man an award, because this class is a <strong>BEAST</strong>.<p> + * Rob, if you somehow ever get wind of your class being used here: Thank you, thank you, thank you, thank you, thank you + * so very much! You seriously made my day here.<br> + * Rob, you rule.<br> + * <br> + * The SmartScroller will attempt to keep the viewport positioned based on<br> + * the users interaction with the scrollbar. The normal behaviour is to keep<br> + * the viewport positioned to see new data as it is dynamically added.<br> + *<br> + * Assuming vertical scrolling and data is added to the bottom:<br> + *<br> + * - when the viewport is at the bottom and new data is added,<br> + * then automatically scroll the viewport to the bottom<br> + * - when the viewport is not at the bottom and new data is added,<br> + * then do nothing with the viewport<br> + *<br> + * Assuming vertical scrolling and data is added to the top:<br> + *<br> + * - when the viewport is at the top and new data is added,<br> + * then do nothing with the viewport<br> + * - when the viewport is not at the top and new data is added, then adjust<br> + * the viewport to the relative position it was at before the data was added<br> + *<br> + * Similar logic would apply for horizontal scrolling. + */ +public class SmartScroller implements AdjustmentListener { + public final static int HORIZONTAL = 0; + public final static int VERTICAL = 1; + + public final static int START = 0; + public final static int END = 1; + + private int viewportPosition; + + private JScrollBar scrollBar; + private boolean adjustScrollBar = true; + + private int previousValue = -1; + private int previousMaximum = -1; + + /** + * Convenience constructor.<br> + * Scroll direction is VERTICAL and viewport position is at the END. + * + * @param scrollPane the scroll pane to monitor + */ + public SmartScroller(JScrollPane scrollPane) { + this(scrollPane, VERTICAL, END); + } + + /** + * Convenience constructor.<br> + * Scroll direction is VERTICAL. + * + * @param scrollPane the scroll pane to monitor + * @param viewportPosition valid values are START and END + */ + public SmartScroller(JScrollPane scrollPane, int viewportPosition) { + this(scrollPane, VERTICAL, viewportPosition); + } + + /** + * Specify how the SmartScroller will function. + * + * @param scrollPane the scroll pane to monitor + * @param scrollDirection indicates which JScrollBar to monitor. + * Valid values are HORIZONTAL and VERTICAL. + * @param viewportPosition indicates where the viewport will normally be + * positioned as data is added. + * Valid values are START and END + */ + public SmartScroller(JScrollPane scrollPane, int scrollDirection, int viewportPosition) { + if (scrollDirection != HORIZONTAL + && scrollDirection != VERTICAL) { + throw new IllegalArgumentException("invalid scroll direction specified"); + } + if (viewportPosition != START + && viewportPosition != END) { + throw new IllegalArgumentException("invalid viewport position specified"); + } + + this.viewportPosition = viewportPosition; + + if (scrollDirection == HORIZONTAL) { + scrollBar = scrollPane.getHorizontalScrollBar(); + } else { + scrollBar = scrollPane.getVerticalScrollBar(); + } + + scrollBar.addAdjustmentListener( this ); + + // Turn off automatic scrolling for text components + + Component view = scrollPane.getViewport().getView(); + + if (view instanceof JTextComponent) { + + JTextComponent textComponent = (JTextComponent)view; + DefaultCaret caret = (DefaultCaret)textComponent.getCaret(); + caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE); + } + } + + @Override + public void adjustmentValueChanged(final AdjustmentEvent e) { + SwingUtilities.invokeLater(() -> checkScrollBar(e)); + } + + /** + * Analyze every adjustment event to determine when the viewport needs to be repositioned. + * @param e Adjustment event to analyse + */ + private void checkScrollBar(AdjustmentEvent e) { + /* + * The scroll bar listModel contains information needed to determine + * whether the viewport should be repositioned or not. + */ + + JScrollBar scrollBar = (JScrollBar)e.getSource(); + BoundedRangeModel listModel = scrollBar.getModel(); + int value = listModel.getValue(); + int extent = listModel.getExtent(); + int maximum = listModel.getMaximum(); + + boolean valueChanged = previousValue != value; + boolean maximumChanged = previousMaximum != maximum; + + // Check if the user has manually repositioned the scrollbar + + if (valueChanged && !maximumChanged) { + if (viewportPosition == START) + adjustScrollBar = value != 0; + else + adjustScrollBar = value + extent >= maximum; + } + + /* + * Reset the "value" so we can reposition the viewport and + * distinguish between a user scroll and a program scroll. + * (ie. valueChanged will be false on a program scroll) + */ + + if (adjustScrollBar && viewportPosition == END) { + // Scroll the viewport to the end. + scrollBar.removeAdjustmentListener( this ); + value = maximum - extent; + scrollBar.setValue( value ); + scrollBar.addAdjustmentListener( this ); + } + + if (adjustScrollBar && viewportPosition == START) { + // Keep the viewport at the same relative viewportPosition + scrollBar.removeAdjustmentListener( this ); + value = value + maximum - previousMaximum; + scrollBar.setValue( value ); + scrollBar.addAdjustmentListener( this ); + } + + previousValue = value; + previousMaximum = maximum; + } +} \ No newline at end of file -- GitLab From 85bede99f27ae8abb824dfb24777c50087c6b469 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Tue, 4 May 2021 21:33:25 +0200 Subject: [PATCH 62/91] refactor(DI): Addendum to license block --- .../gui/BackgroundPanel.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java b/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java index 474df55d3..f3310516e 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java @@ -16,6 +16,35 @@ * USA * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE + * + * ##################################################################################################################### + * + * Addendum from the Java Tips Weblog's About page: + * + * It should be noted that none of the code presented here is used in any real application, (I only do this for a hobby) + * and therefore you use it at your own risk. Although I must admit I took about 5-10 minutes to do extensive testing so + * I doubt you will find many bugs :-). + * + * We assume no responsibility for the code. You are free to use and/or modify and/or distribute any or all code posted + * on the Java Tips Weblog without restriction. A credit in the code comments would be nice, but not in any way mandatory. + * + * “Give somebody a fish and they eat for a day. + * Teach somebody to fish they eat for life!†+ * + * In following the philosophy of the above quote, whenever possible, I will also attempt to provide links for related + * reading to help you better understand the suggested solution. These readings may include tips to help solve your next + * problem. I may include links to: + * + * technical articles + * tutorials + * the Java API + * The Java API is huge and we don’t have time to read it from start to finish. If the examples don’t solve your problem, + * hopefully they can at least give you some ideas and introduce you to new API’s and concepts. + * + * Rob + * + * ##################################################################################################################### + * */ package de.griefed.serverpackcreator.gui; -- GitLab From 02393dd4e765effbf394a86c20486a70f6a130b6 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Wed, 5 May 2021 18:08:47 +0200 Subject: [PATCH 63/91] refactor(DI): Write more tests and move tests to correct class --- .../serverpackcreator/ConfigurationTest.java | 131 +++++++++ .../serverpackcreator/FilesSetupTest.java | 250 +++++++----------- 2 files changed, 224 insertions(+), 157 deletions(-) diff --git a/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java b/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java index d528b365f..ca42ba612 100644 --- a/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java +++ b/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java @@ -365,4 +365,135 @@ class ConfigurationTest { Assertions.assertFalse(result); new File("forge-manifest.json").delete(); } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void writeConfigToFileTestFabric() { + String modpackDir = "./src/test/resources/fabric_tests"; + List<String> clientMods = Arrays.asList( + "AmbientSounds", + "BackTools", + "BetterAdvancement", + "BetterPing", + "cherished", + "ClientTweaks", + "Controlling", + "DefaultOptions", + "durability", + "DynamicSurroundings", + "itemzoom", + "jei-professions", + "jeiintegration", + "JustEnoughResources", + "MouseTweaks", + "Neat", + "OldJavaWarning", + "PackMenu", + "preciseblockplacing", + "SimpleDiscordRichPresence", + "SpawnerFix", + "TipTheScales", + "WorldNameRandomizer" + ); + List<String> copyDirs = Arrays.asList( + "config", + "mods", + "scripts", + "seeds", + "defaultconfigs" + ); + String javaPath; + String autoJavaPath = System.getProperty("java.home").replace("\\", "/") + "/bin/java"; + if (autoJavaPath.startsWith("C:")) { + autoJavaPath = String.format("%s.exe", autoJavaPath); + } + if (new File("/usr/bin/java").exists()) { + javaPath = "/usr/bin/java"; + } else { + javaPath = autoJavaPath; + } + String minecraftVersion = "1.16.5"; + String modLoader = "Fabric"; + String modLoaderVersion = "0.11.3"; + boolean result = configuration.writeConfigToFile( + modpackDir, + configuration.buildString(clientMods.toString()), + configuration.buildString(copyDirs.toString()), + true, + javaPath, + minecraftVersion, + modLoader, + modLoaderVersion, + true, + true, + true, + true, + configuration.getConfigFile(), + false + ); + Assertions.assertTrue(result); + Assertions.assertTrue(new File("./serverpackcreator.conf").exists()); + new File("./serverpackcreator.conf").delete(); + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void testWriteConfigToFileForge() { + String modpackDir = "./src/test/resources/forge_tests"; + List<String> clientMods = Arrays.asList( + "AmbientSounds", + "BackTools", + "BetterAdvancement", + "BetterPing", + "cherished", + "ClientTweaks", + "Controlling", + "DefaultOptions", + "durability", + "DynamicSurroundings", + "itemzoom", + "jei-professions", + "jeiintegration", + "JustEnoughResources", + "MouseTweaks", + "Neat", + "OldJavaWarning", + "PackMenu", + "preciseblockplacing", + "SimpleDiscordRichPresence", + "SpawnerFix", + "TipTheScales", + "WorldNameRandomizer" + ); + List<String> copyDirs = Arrays.asList( + "config", + "mods", + "scripts", + "seeds", + "defaultconfigs" + ); + String javaPath = "/use/bin/java"; + String minecraftVersion = "1.16.5"; + String modLoader = "Forge"; + String modLoaderVersion = "36.1.2"; + boolean result = configuration.writeConfigToFile( + modpackDir, + configuration.buildString(clientMods.toString()), + configuration.buildString(copyDirs.toString()), + true, + javaPath, + minecraftVersion, + modLoader, + modLoaderVersion, + true, + true, + true, + true, + configuration.getConfigFile(), + false + ); + Assertions.assertTrue(result); + Assertions.assertTrue(new File("./serverpackcreator.conf").exists()); + new File("./serverpackcreator.conf").delete(); + } } diff --git a/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java b/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java index ec381a0d2..bef5f7628 100644 --- a/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java +++ b/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java @@ -22,11 +22,9 @@ package de.griefed.serverpackcreator; import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; import de.griefed.serverpackcreator.i18n.LocalizationManager; -import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.io.File; @@ -34,24 +32,45 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.Arrays; import java.util.Comparator; -import java.util.List; +/** + * <strong>Table of tests</strong> + * <p> + * 1. {@link #FilesSetupTest()} tests {@link FilesSetup#FilesSetup(LocalizationManager)}<br> + * 2. {@link #getConfigFileTest()} tests {@link FilesSetup#getConfigFile()}<br> + * 3. {@link #getOldConfigFileTest()} tests {@link FilesSetup#getOldConfigFile()}<br> + * 4. {@link #getPropertiesFileTest()} tests {@link FilesSetup#getPropertiesFile()}<br> + * 5. {@link #getIconFileTest()} tests {@link FilesSetup#getIconFile()}<br> + * 6. {@link #getForgeWindowsFileTest()} tests {@link FilesSetup#getForgeWindowsFile()}<br> + * 7. {@link #getForgeLinuxFileTest()} tests {@link FilesSetup#getForgeLinuxFile()}<br> + * 8. {@link #getFabricWindowsFileTest()} tests {@link FilesSetup#getFabricWindowsFile()}<br> + * 9. {@link #getFabricLinuxFileTest()} tests {@link FilesSetup#getFabricLinuxFile()}<br> + * 10.{@link #checkForConfigTestOld} tests {@link FilesSetup#checkForConfig()}<br> + * 11.{@link #checkForConfigTest} tests {@link FilesSetup#checkForConfig()}<br> + * 12.{@link #checkForConfigTestNew} tests {@link FilesSetup#checkForConfig()}<br> + * 13.{@link #checkForFabricLinuxTest} tests {@link FilesSetup#checkForFabricLinux()}<br> + * 14.{@link #checkForFabricLinuxTestNew} tests {@link FilesSetup#checkForForgeLinux()}<br> + * 15.{@link #checkForFabricWindowsTest} tests {@link FilesSetup#checkForFabricWindows()}<br> + * 16.{@link #checkForFabricWindowsTestNew} tests {@link FilesSetup#checkForFabricWindows()}<br> + * 17.{@link #checkForForgeLinuxTest} tests {@link FilesSetup#checkForForgeLinux()}<br> + * 18.{@link #checkForForgeLinuxTestNew} tests {@link FilesSetup#checkForForgeLinux()}<br> + * 19.{@link #checkForForgeWindowsTest} tests {@link FilesSetup#checkForForgeWindows()}<br> + * 20.{@link #checkForForgeWindowsTestNew} tests {@link FilesSetup#checkForForgeWindows()}<br> + * 21.{@link #checkForPropertiesTest} tests {@link FilesSetup#checkForProperties()}<br> + * 22.{@link #checkForPropertiesTestNew} tests {@link FilesSetup#checkForProperties()}<br> + * 23.{@link #checkForIconTest} tests {@link FilesSetup#checkForIcon()}<br> + * 24.{@link #checkForIconTestNew} tests {@link FilesSetup#checkForIcon()}<br> + * 25.{@link #filesSetupTest} tests {@link FilesSetup#filesSetup()} + */ class FilesSetupTest { - @Mock - Logger appLogger; private FilesSetup filesSetup; - private Configuration configCheck; - private CurseCreateModpack curseCreateModpack; private LocalizationManager localizationManager; FilesSetupTest() { localizationManager = new LocalizationManager(); filesSetup = new FilesSetup(localizationManager); - curseCreateModpack = new CurseCreateModpack(localizationManager); - configCheck = new Configuration(localizationManager, curseCreateModpack); } @BeforeEach @@ -60,9 +79,57 @@ class FilesSetupTest { MockitoAnnotations.openMocks(this); } + @Test + void getConfigFileTest() { + File file = filesSetup.getConfigFile(); + Assertions.assertNotNull(file); + } + + @Test + void getOldConfigFileTest() { + File file = filesSetup.getOldConfigFile(); + Assertions.assertNotNull(file); + } + + @Test + void getPropertiesFileTest() { + File file = filesSetup.getPropertiesFile(); + Assertions.assertNotNull(file); + } + + @Test + void getIconFileTest() { + File file = filesSetup.getIconFile(); + Assertions.assertNotNull(file); + } + + @Test + void getForgeWindowsFileTest() { + File file = filesSetup.getForgeWindowsFile(); + Assertions.assertNotNull(file); + } + + @Test + void getForgeLinuxFileTest() { + File file = filesSetup.getForgeLinuxFile(); + Assertions.assertNotNull(file); + } + + @Test + void getFabricWindowsFileTest() { + File file = filesSetup.getFabricWindowsFile(); + Assertions.assertNotNull(file); + } + + @Test + void getFabricLinuxFileTest() { + File file = filesSetup.getFabricLinuxFile(); + Assertions.assertNotNull(file); + } + @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testRenameOldConfig() throws IOException { + void checkForConfigTestOld() throws IOException { File oldConfigFile = new File("creator.conf"); oldConfigFile.createNewFile(); Assertions.assertFalse(filesSetup.checkForConfig()); @@ -73,7 +140,7 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCheckForConfig() throws IOException { + void checkForConfigTest() throws IOException { File configFile = new File("serverpackcreator.conf"); configFile.createNewFile(); Assertions.assertFalse(filesSetup.checkForConfig()); @@ -82,7 +149,7 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCheckForConfigNew() { + void checkForConfigTestNew() { File configFile = new File("serverpackcreator.conf"); Assertions.assertTrue(filesSetup.checkForConfig()); configFile.delete(); @@ -90,7 +157,7 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCheckForFabricLinux() throws IOException { + void checkForFabricLinuxTest() throws IOException { File fabricLinux = new File("start-fabric.sh"); fabricLinux.createNewFile(); Assertions.assertFalse(filesSetup.checkForFabricLinux()); @@ -99,7 +166,7 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCheckForFabricLinuxNew() { + void checkForFabricLinuxTestNew() { File fabricLinux = new File("start-fabric.sh"); Assertions.assertTrue(filesSetup.checkForFabricLinux()); fabricLinux.delete(); @@ -107,7 +174,7 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCheckForFabricWindows() throws IOException { + void checkForFabricWindowsTest() throws IOException { File fabricWindows = new File("start-fabric.bat"); fabricWindows.createNewFile(); Assertions.assertFalse(filesSetup.checkForFabricWindows()); @@ -116,7 +183,7 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCheckForFabricWindowsNew() { + void checkForFabricWindowsTestNew() { File fabricWindows = new File("start-fabric.bat"); Assertions.assertTrue(filesSetup.checkForFabricWindows()); fabricWindows.delete(); @@ -124,7 +191,7 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCheckForForgeLinux() throws IOException { + void checkForForgeLinuxTest() throws IOException { File forgeLinux = new File("start-forge.sh"); forgeLinux.createNewFile(); Assertions.assertFalse(filesSetup.checkForForgeLinux()); @@ -133,7 +200,7 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCheckForForgeLinuxNew() { + void checkForForgeLinuxTestNew() { File forgeLinux = new File("start-forge.sh"); Assertions.assertTrue(filesSetup.checkForForgeLinux()); forgeLinux.delete(); @@ -141,7 +208,7 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCheckForForgeWindows() throws IOException { + void checkForForgeWindowsTest() throws IOException { File forgeWindows = new File("start-forge.bat"); forgeWindows.createNewFile(); Assertions.assertFalse(filesSetup.checkForForgeWindows()); @@ -150,7 +217,7 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCheckForForgeWindowsNew() { + void checkForForgeWindowsTestNew() { File forgeWindows = new File("start-forge.bat"); Assertions.assertTrue(filesSetup.checkForForgeWindows()); forgeWindows.delete(); @@ -158,7 +225,7 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCheckForProperties() throws IOException { + void checkForPropertiesTest() throws IOException { File properties = new File("server.properties"); properties.createNewFile(); Assertions.assertFalse(filesSetup.checkForProperties()); @@ -167,7 +234,7 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCheckForPropertiesNew() { + void checkForPropertiesTestNew() { File properties = new File("server.properties"); Assertions.assertTrue(filesSetup.checkForProperties()); properties.delete(); @@ -175,7 +242,7 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCheckForIcon() throws IOException { + void checkForIconTest() throws IOException { File icon = new File("server-icon.png"); icon.createNewFile(); Assertions.assertFalse(filesSetup.checkForIcon()); @@ -184,7 +251,7 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCheckForIconNew() { + void checkForIconTestNew() { File icon = new File("server-icon.png"); Assertions.assertTrue(filesSetup.checkForIcon()); icon.delete(); @@ -192,7 +259,7 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testFilesSetup() throws IOException { + void filesSetupTest() throws IOException { filesSetup.filesSetup(); Assertions.assertTrue(new File("./server_files").isDirectory()); Assertions.assertTrue(new File("./server_files/server.properties").exists()); @@ -212,135 +279,4 @@ class FilesSetupTest { } new File("./serverpackcreator.conf").delete(); } - - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testWriteConfigToFileFabric() { - String modpackDir = "./src/test/resources/fabric_tests"; - List<String> clientMods = Arrays.asList( - "AmbientSounds", - "BackTools", - "BetterAdvancement", - "BetterPing", - "cherished", - "ClientTweaks", - "Controlling", - "DefaultOptions", - "durability", - "DynamicSurroundings", - "itemzoom", - "jei-professions", - "jeiintegration", - "JustEnoughResources", - "MouseTweaks", - "Neat", - "OldJavaWarning", - "PackMenu", - "preciseblockplacing", - "SimpleDiscordRichPresence", - "SpawnerFix", - "TipTheScales", - "WorldNameRandomizer" - ); - List<String> copyDirs = Arrays.asList( - "config", - "mods", - "scripts", - "seeds", - "defaultconfigs" - ); - String javaPath; - String autoJavaPath = System.getProperty("java.home").replace("\\", "/") + "/bin/java"; - if (autoJavaPath.startsWith("C:")) { - autoJavaPath = String.format("%s.exe", autoJavaPath); - } - if (new File("/usr/bin/java").exists()) { - javaPath = "/usr/bin/java"; - } else { - javaPath = autoJavaPath; - } - String minecraftVersion = "1.16.5"; - String modLoader = "Fabric"; - String modLoaderVersion = "0.11.3"; - boolean result = configCheck.writeConfigToFile( - modpackDir, - configCheck.buildString(clientMods.toString()), - configCheck.buildString(copyDirs.toString()), - true, - javaPath, - minecraftVersion, - modLoader, - modLoaderVersion, - true, - true, - true, - true, - configCheck.getConfigFile(), - false - ); - Assertions.assertTrue(result); - Assertions.assertTrue(new File("./serverpackcreator.conf").exists()); - new File("./serverpackcreator.conf").delete(); - } - - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testWriteConfigToFileForge() { - String modpackDir = "./src/test/resources/forge_tests"; - List<String> clientMods = Arrays.asList( - "AmbientSounds", - "BackTools", - "BetterAdvancement", - "BetterPing", - "cherished", - "ClientTweaks", - "Controlling", - "DefaultOptions", - "durability", - "DynamicSurroundings", - "itemzoom", - "jei-professions", - "jeiintegration", - "JustEnoughResources", - "MouseTweaks", - "Neat", - "OldJavaWarning", - "PackMenu", - "preciseblockplacing", - "SimpleDiscordRichPresence", - "SpawnerFix", - "TipTheScales", - "WorldNameRandomizer" - ); - List<String> copyDirs = Arrays.asList( - "config", - "mods", - "scripts", - "seeds", - "defaultconfigs" - ); - String javaPath = "/use/bin/java"; - String minecraftVersion = "1.16.5"; - String modLoader = "Forge"; - String modLoaderVersion = "36.1.2"; - boolean result = configCheck.writeConfigToFile( - modpackDir, - configCheck.buildString(clientMods.toString()), - configCheck.buildString(copyDirs.toString()), - true, - javaPath, - minecraftVersion, - modLoader, - modLoaderVersion, - true, - true, - true, - true, - configCheck.getConfigFile(), - false - ); - Assertions.assertTrue(result); - Assertions.assertTrue(new File("./serverpackcreator.conf").exists()); - new File("./serverpackcreator.conf").delete(); - } } -- GitLab From 73d9d3b113e37304119d71ba54c67f013210969b Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Wed, 5 May 2021 18:09:01 +0200 Subject: [PATCH 64/91] refactor(DI): Fix minor issue in docs --- .../de/griefed/serverpackcreator/gui/BackgroundPanel.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java b/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java index f3310516e..93b06ba02 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java @@ -28,8 +28,8 @@ * We assume no responsibility for the code. You are free to use and/or modify and/or distribute any or all code posted * on the Java Tips Weblog without restriction. A credit in the code comments would be nice, but not in any way mandatory. * - * “Give somebody a fish and they eat for a day. - * Teach somebody to fish they eat for life!†+ * "Give somebody a fish and they eat for a day. + * Teach somebody to fish they eat for life!" * * In following the philosophy of the above quote, whenever possible, I will also attempt to provide links for related * reading to help you better understand the suggested solution. These readings may include tips to help solve your next @@ -44,7 +44,6 @@ * Rob * * ##################################################################################################################### - * */ package de.griefed.serverpackcreator.gui; -- GitLab From fd761bf0c802d9057dd7a7552b4ec06c4a386886 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Wed, 5 May 2021 19:32:31 +0200 Subject: [PATCH 65/91] refactor(DI): Fix minor issue in docs --- .../java/de/griefed/serverpackcreator/gui/SmartScroller.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/SmartScroller.java b/src/main/java/de/griefed/serverpackcreator/gui/SmartScroller.java index 71f4faa98..f3f6f1ad8 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/SmartScroller.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/SmartScroller.java @@ -28,8 +28,8 @@ * We assume no responsibility for the code. You are free to use and/or modify and/or distribute any or all code posted * on the Java Tips Weblog without restriction. A credit in the code comments would be nice, but not in any way mandatory. * - * “Give somebody a fish and they eat for a day. - * Teach somebody to fish they eat for life!†+ * "Give somebody a fish and they eat for a day. + * Teach somebody to fish they eat for life!" * * In following the philosophy of the above quote, whenever possible, I will also attempt to provide links for related * reading to help you better understand the suggested solution. These readings may include tips to help solve your next -- GitLab From 0d2a1baa4d2e1021ed9e97cb3c18048fa03934a8 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Wed, 5 May 2021 22:09:41 +0200 Subject: [PATCH 66/91] refactor(DI): Write more tests and, improve some docs, add some getters --- .../serverpackcreator/Configuration.java | 37 ++- .../serverpackcreator/CreateServerPack.java | 56 ++-- .../CreateServerPackTest.java | 250 ++++++++++++++++-- .../testresources/serverpackcreator.conf | 2 +- 4 files changed, 284 insertions(+), 61 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/Configuration.java b/src/main/java/de/griefed/serverpackcreator/Configuration.java index eb5421cc9..d3e3b0b53 100644 --- a/src/main/java/de/griefed/serverpackcreator/Configuration.java +++ b/src/main/java/de/griefed/serverpackcreator/Configuration.java @@ -151,6 +151,10 @@ public class Configuration { private final File oldConfigFile = new File("creator.conf"); private final File configFile = new File("serverpackcreator.conf"); + private final String minecraftManifest = "https://launchermeta.mojang.com/mc/game/version_manifest.json"; + private final String forgeManifest = "https://files.minecraftforge.net/net/minecraftforge/forge/maven-metadata.json"; + private final String fabricManifest = "https://maven.fabricmc.net/net/fabricmc/fabric-loader/maven-metadata.xml"; + //-- If you wish to expand this list, fork this repository, make your changes, and submit a PR ------------------------- private final List<String> fallbackModsList = Arrays.asList( "AmbientSounds", @@ -234,24 +238,33 @@ public class Configuration { * Getter for Mojang's Minecraft version-manifest. * @return String. Returns the URL to the JSON-file for use in {@link #isMinecraftVersionCorrect(String)} */ - String getMinecraftManifestUrl() { - return "https://launchermeta.mojang.com/mc/game/version_manifest.json"; + URL getMinecraftManifestUrl() { + URL minecraftURL = null; + try { minecraftURL = new URL(minecraftManifest); } + catch (IOException ex) { appLogger.error(ex); } + return minecraftURL; } /** * Getter for Forge's version-manifest. * @return String. Returns the URL to the JSON-file for use in {@link #isForgeVersionCorrect(String)} */ - String getForgeManifestUrl() { - return "https://files.minecraftforge.net/net/minecraftforge/forge/maven-metadata.json"; + URL getForgeManifestUrl() { + URL forgeURL = null; + try { forgeURL = new URL(forgeManifest); } + catch (IOException ex) { appLogger.error(ex); } + return forgeURL; } /** * Getter for Fabric's version-manifest. * @return String. Returns the URL to the JSON-file for use in {@link #isFabricVersionCorrect(String)} */ - String getFabricManifestUrl() { - return "https://maven.fabricmc.net/net/fabricmc/fabric-loader/maven-metadata.xml"; + URL getFabricManifestUrl() { + URL fabricURL = null; + try { fabricURL = new URL(fabricManifest); } + catch (IOException ex) { appLogger.error(ex); } + return fabricURL; } /** @@ -1230,9 +1243,10 @@ public class Configuration { * @return Boolean. Returns true if the specified Minecraft version could be found in Mojang's manifest. */ boolean isMinecraftVersionCorrect(String minecraftVersion) { + //TODO: Download file during startup of ServerPackCreator. Replace existing file during every restart. Store in same dir as ServerPacKCreator. if (!minecraftVersion.equals("")) { try { - URL manifestJsonURL = new URL(getMinecraftManifestUrl()); + URL manifestJsonURL = getMinecraftManifestUrl(); ReadableByteChannel readableByteChannel = Channels.newChannel(manifestJsonURL.openStream()); FileOutputStream downloadManifestOutputStream; @@ -1299,9 +1313,10 @@ public class Configuration { * @return Boolean. Returns true if the specified fabric version could be found in Fabric's manifest. */ boolean isFabricVersionCorrect(String fabricVersion) { + //TODO: Download file during startup of ServerPackCreator. Replace existing file during every restart. Store in same dir as ServerPacKCreator. if (!fabricVersion.equals("")) { try { - URL manifestJsonURL = new URL(getFabricManifestUrl()); + URL manifestJsonURL = getFabricManifestUrl(); ReadableByteChannel readableByteChannel = Channels.newChannel(manifestJsonURL.openStream()); @@ -1385,9 +1400,10 @@ public class Configuration { * @return Boolean. Returns true if the specified Forge version could be found in Forge's manifest. */ boolean isForgeVersionCorrect(String forgeVersion) { + //TODO: Download file during startup of ServerPackCreator. Replace existing file during every restart. Store in same dir as ServerPacKCreator. if (!forgeVersion.equals("")) { try { - URL manifestJsonURL = new URL(getForgeManifestUrl()); + URL manifestJsonURL = getForgeManifestUrl(); ReadableByteChannel readableByteChannel = Channels.newChannel(manifestJsonURL.openStream()); FileOutputStream downloadManifestOutputStream; @@ -1472,9 +1488,10 @@ public class Configuration { */ @SuppressWarnings({"ReturnInsideFinallyBlock", "finally"}) private String latestFabricLoader(String modpackDir) { + //TODO: Download file during startup of ServerPackCreator. Replace existing file during every restart. Store in same dir as ServerPacKCreator. String result = "0.11.3"; try { - URL downloadFabricXml = new URL(getFabricManifestUrl()); + URL downloadFabricXml = getFabricManifestUrl(); ReadableByteChannel downloadFabricXmlReadableByteChannel = Channels.newChannel(downloadFabricXml.openStream()); FileOutputStream downloadFabricXmlFileOutputStream = new FileOutputStream(String.format("%s/server_pack/fabric-loader.xml", modpackDir)); diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index aada39a61..d9d8f70f0 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -59,25 +59,26 @@ import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; * 5. {@link #getForgeLinuxFile()}<br> * 6. {@link #getFabricWindowsFile()}<br> * 7. {@link #getFabricLinuxFile()}<br> - * 8. {@link #run()}<br> - * 9. {@link #cleanupEnvironment(String)}<br> - * 10.{@link #copyStartScripts(String, String, boolean)}<br> - * 11.{@link #copyFiles(String, List, List)}<br> - * 12.{@link #excludeClientMods(String, List)}<br> - * 13.{@link #copyIcon(String)}<br> - * 14.{@link #copyProperties(String)}<br> - * 15.{@link #installServer(String, String, String, String, String)}<br> - * 16.{@link #zipBuilder(String, String, Boolean, String)}<br> - * 17.{@link #generateDownloadScripts(String, String, String)}<br> - * 18.{@link #fabricShell(String, String)}<br> - * 19.{@link #fabricBatch(String, String)}<br> - * 20.{@link #forgeShell(String, String)}<br> - * 21.{@link #forgeBatch(String, String)}<br> - * 22.{@link #downloadFabricJar(String)}<br> - * 23.{@link #latestFabricInstaller(String)}<br> - * 24.{@link #downloadForgeJar(String, String, String)}<br> - * 25.{@link #deleteMinecraftJar(String, String, String)}<br> - * 26.{@link #cleanUpServerPack(File, File, String, String, String, String)} + * 8. {@link #getFabricInstallerManifest()}<br> + * 9. {@link #run()}<br> + * 10.{@link #cleanupEnvironment(String)}<br> + * 11.{@link #copyStartScripts(String, String, boolean)}<br> + * 12.{@link #copyFiles(String, List, List)}<br> + * 13.{@link #excludeClientMods(String, List)}<br> + * 14.{@link #copyIcon(String)}<br> + * 15.{@link #copyProperties(String)}<br> + * 16.{@link #installServer(String, String, String, String, String)}<br> + * 17.{@link #zipBuilder(String, String, Boolean, String)}<br> + * 18.{@link #generateDownloadScripts(String, String, String)}<br> + * 19.{@link #fabricShell(String, String)}<br> + * 20.{@link #fabricBatch(String, String)}<br> + * 21.{@link #forgeShell(String, String)}<br> + * 22.{@link #forgeBatch(String, String)}<br> + * 23.{@link #downloadFabricJar(String)}<br> + * 24.{@link #latestFabricInstaller(String)}<br> + * 25.{@link #downloadForgeJar(String, String, String)}<br> + * 26.{@link #deleteMinecraftJar(String, String, String)}<br> + * 27.{@link #cleanUpServerPack(File, File, String, String, String, String)} * <p> * Requires an instance of {@link Configuration} from which to get all required information about the modpack and the * then to be generated server pack. @@ -137,6 +138,7 @@ public class CreateServerPack { private final File fabricWindowsFile = new File("start-fabric.bat"); private final File fabricLinuxFile = new File("start-fabric.sh"); + private final String fabricInstallerManifest = "https://maven.fabricmc.net/net/fabricmc/fabric-installer/maven-metadata.xml"; /** * Getter for server.properties. * @return Returns the server.properties-file for use in {@link #copyProperties(String)} @@ -185,6 +187,17 @@ public class CreateServerPack { return fabricLinuxFile; } + /** + * Getter for the URL to the Fabric Installer Manifest. Gets the string containing the URL and returns it as a URL. + * @return Returns the URL to the Fabric Installer Manifest. + */ + public URL getFabricInstallerManifest() { + URL downloadURL = null; + try { downloadURL = new URL(fabricInstallerManifest); } + catch (IOException ex) { appLogger.error(ex); } + return downloadURL; + } + /** * Create a server pack if the check of the configuration file was successfull.<p> * Calls<p> @@ -818,7 +831,8 @@ public class CreateServerPack { String latestFabricInstaller(String modpackDir) { String result; try { - URL downloadFabricXml = new URL("https://maven.fabricmc.net/net/fabricmc/fabric-installer/maven-metadata.xml"); + //TODO: Download file during startup of ServerPackCreator. Replace existing file during every restart. Store in same dir as ServerPacKCreator. + URL downloadFabricXml = getFabricInstallerManifest(); ReadableByteChannel downloadFabricXmlReadableByteChannel = Channels.newChannel(downloadFabricXml.openStream()); FileOutputStream downloadFabricXmlFileOutputStream = new FileOutputStream(String.format("%s/server_pack/fabric-installer.xml", modpackDir)); @@ -840,7 +854,7 @@ public class CreateServerPack { appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.latestfabricinstaller")); } catch (IOException | ParserConfigurationException | SAXException | XPathExpressionException ex) { appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.latestfabricinstaller"), ex); - result = "0.7.2"; + result = "0.7.3"; } return result; } diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java index 1373bf901..919b3379e 100644 --- a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -17,16 +17,13 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ - package de.griefed.serverpackcreator; import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; import de.griefed.serverpackcreator.i18n.LocalizationManager; -import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.io.File; @@ -41,21 +38,55 @@ import java.util.List; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; +/** + * <strong>Table of tests</strong><p> + * 1. {@link #CreateServerPackTest()}<br> + * 2. {@link #getPropertiesFileTest()}<br> + * 3. {@link #getIconFileTest()}<br> + * 4. {@link #getForgeWindowsFileTest()}<br> + * 5. {@link #getForgeLinuxFileTest()}<br> + * 6. {@link #getFabricWindowsFileTest()}<br> + * 7. {@link #getFabricLinuxFileTest()}<br> + * 8. {@link #runTest()}<br> + * 9. {@link #cleanupEnvironmentTest()}<br> + * 10.{@link #copyStartScriptsFabricTest()}<br> + * 11.{@link #copyStartScriptsForgeTest()}<br> + * 12.{@link #copyFilesTest()}<br> + * 13.{@link #copyFilesEmptyClientsTest()}<br> + * 14.{@link #excludeClientModsTest()}<br> + * 15.{@link #copyIconTest()}<br> + * 16.{@link #copyPropertiesTest()}<br + * 17.{@link #installServerFabricTest()}<br> + * 18.{@link #installServerForgeTest()}<br> + * 19.{@link #zipBuilderFabricTest()}<br> + * 20.{@link #zipBuilderForgeTest()}<br> + * 21.{@link #generateDownloadScriptsFabricTest()}<br> + * 22.{@link #generateDownloadScriptsForgeTest()}<br> + * 23.{@link #fabricShellTest()}<br> + * 24.{@link #fabricBatchTest()}<br> + * 25.{@link #forgeShellTest()}<br> + * 26.{@link #forgeBatchTest()}<br> + * 27.{@link #downloadFabricJarTest()}<br> + * 28.{@link #latestFabricInstallerTest()}<br> + * 29.{@link #downloadForgeJarTest()}<br> + * 30.{@link #deleteMinecraftJarFabricTest()}<br> + * 31.{@link #deleteMinecraftJarForgeTest()}<br> + * 32.{@link #cleanUpServerPackForgeTest()} + * 33.{@link #cleanUpServerPackFabricTest()} + */ class CreateServerPackTest { - @Mock - Logger appLogger; private CreateServerPack createServerPack; private FilesSetup filesSetup; private CurseCreateModpack curseCreateModpack; private LocalizationManager localizationManager; - private Configuration configCheck; + private Configuration configuration; CreateServerPackTest() { localizationManager = new LocalizationManager(); curseCreateModpack = new CurseCreateModpack(localizationManager); - configCheck = new Configuration(localizationManager, curseCreateModpack); - createServerPack = new CreateServerPack(localizationManager, configCheck, curseCreateModpack); + configuration = new Configuration(localizationManager, curseCreateModpack); + createServerPack = new CreateServerPack(localizationManager, configuration, curseCreateModpack); filesSetup = new FilesSetup(localizationManager); } @@ -65,12 +96,107 @@ class CreateServerPackTest { MockitoAnnotations.openMocks(this); } - @Mock - Logger installerLogger; + @Test + void getPropertiesFileTest() { + File file = createServerPack.getPropertiesFile(); + Assertions.assertNotNull(file); + } + @Test + void getIconFileTest() { + File file = createServerPack.getIconFile(); + Assertions.assertNotNull(file); + } + + @Test + void getForgeWindowsFileTest() { + File file = createServerPack.getForgeWindowsFile(); + Assertions.assertNotNull(file); + } + + @Test + void getForgeLinuxFileTest() { + File file = createServerPack.getForgeLinuxFile(); + Assertions.assertNotNull(file); + } + + @Test + void getFabricWindowsFileTest() { + File file = createServerPack.getFabricWindowsFile(); + Assertions.assertNotNull(file); + } + + @Test + void getFabricLinuxFileTest() { + File file = createServerPack.getFabricLinuxFile(); + Assertions.assertNotNull(file); + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void runTest() throws IOException { + filesSetup.filesSetup(); + Files.copy(Paths.get("./src/test/resources/testresources/serverpackcreator.conf"), Paths.get("./serverpackcreator.conf"), REPLACE_EXISTING); + createServerPack.run(); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/libraries").isDirectory()); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/config").isDirectory()); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/defaultconfigs").isDirectory()); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/mods").isDirectory()); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/scripts").isDirectory()); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/seeds").isDirectory()); + + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/1.16.5.json").exists()); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/minecraft_server.1.16.5.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/download_minecraft-server.jar_forge.bat").exists()); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/download_minecraft-server.jar_forge.sh").exists()); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/forge.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/server.properties").exists()); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/server-icon.png").exists()); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/start-forge.bat").exists()); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/start-forge.sh").exists()); + + if (new File("./src/test/resources/forge_tests/server_pack/libraries").isDirectory()) { + Path pathToBeDeleted = Paths.get("./src/test/resources/forge_tests/server_pack/libraries"); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); + } + if (new File("./src/test/resources/forge_tests/server_pack/config").isDirectory()) { + Path pathToBeDeleted = Paths.get("./src/test/resources/forge_tests/server_pack/config"); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); + } + if (new File("./src/test/resources/forge_tests/server_pack/defaultconfigs").isDirectory()) { + Path pathToBeDeleted = Paths.get("./src/test/resources/forge_tests/server_pack/defaultconfigs"); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); + } + if (new File("./src/test/resources/forge_tests/server_pack/mods").isDirectory()) { + Path pathToBeDeleted = Paths.get("./src/test/resources/forge_tests/server_pack/mods"); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); + } + if (new File("./src/test/resources/forge_tests/server_pack/scripts").isDirectory()) { + Path pathToBeDeleted = Paths.get("./src/test/resources/forge_tests/server_pack/scripts"); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); + } + if (new File("./src/test/resources/forge_tests/server_pack/seeds").isDirectory()) { + Path pathToBeDeleted = Paths.get("./src/test/resources/forge_tests/server_pack/seeds"); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); + } + if (new File("./server_files").isDirectory()) { + Path pathToBeDeleted = Paths.get("./server_files"); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); + } + new File("./src/test/resources/forge_tests/server_pack/1.16.5.json").delete(); + new File("./src/test/resources/forge_tests/server_pack/minecraft_server.1.16.5.jar").delete(); + new File("./src/test/resources/forge_tests/server_pack/download_minecraft-server.jar_forge.bat").delete(); + new File("./src/test/resources/forge_tests/server_pack/download_minecraft-server.jar_forge.sh").delete(); + new File("./src/test/resources/forge_tests/server_pack/forge.jar").delete(); + new File("./src/test/resources/forge_tests/server_pack/server.properties").delete(); + new File("./src/test/resources/forge_tests/server_pack/server-icon.png").delete(); + new File("./src/test/resources/forge_tests/server_pack/start-forge.bat").delete(); + new File("./src/test/resources/forge_tests/server_pack/start-forge.sh").delete(); + new File("./serverpackcreator.conf").delete(); + } @Test - void testCleanupEnvironment() throws IOException { + void cleanupEnvironmentTest() throws IOException { //TODO: Figure out how to run this test on GitHub Runners if (!new File("/home/runner").isDirectory()) { String modpackDir = "./src/test/resources/cleanup_tests"; @@ -82,7 +208,7 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCopyStartScriptsFabric() throws IOException { + void copyStartScriptsFabricTest() throws IOException { //TODO: Figure out how to run this test on GitHub Runners if (!new File("/home/runner").isDirectory()) { String modpackDir = "./src/test/resources/fabric_tests"; @@ -104,7 +230,7 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCopyStartScriptsForge() throws IOException { + void copyStartScriptsForgeTest() throws IOException { String modpackDir = "./src/test/resources/forge_tests"; String modLoader = "Forge"; filesSetup.filesSetup(); @@ -126,7 +252,7 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCopyFiles() throws IOException { + void copyFilesTest() throws IOException { String modpackDir = "./src/test/resources/forge_tests"; List<String> clientMods = Arrays.asList( "AmbientSounds", @@ -185,7 +311,7 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCopyFilesEmptyClients() throws IOException { + void copyFilesEmptyClientsTest() throws IOException { String modpackDir = "./src/test/resources/forge_tests"; List<String> clientMods = new ArrayList<>(); List<String> copyDirs = Arrays.asList( @@ -218,9 +344,28 @@ class CreateServerPackTest { } } + @Test + void excludeClientModsTest() { + List<String> clientMods = Arrays.asList( + "aaaaa","bbbbb","ccccc","fffff","ggggg","hhhhh","iiiii","jjjjj","kkkkk","lllll", + "nnnnn","ppppp","qqqqq","rrrrr","uuuuu","vvvvv","wwwww","xxxxx","yyyyy","zzzzz" + ); + List<String> result = createServerPack.excludeClientMods("./src/test/resources/forge_tests/mods", clientMods); + Assertions.assertFalse(result.contains("aaaaa")); Assertions.assertFalse(result.contains("bbbbb")); + Assertions.assertFalse(result.contains("ccccc")); Assertions.assertFalse(result.contains("fffff")); + Assertions.assertFalse(result.contains("ggggg")); Assertions.assertFalse(result.contains("hhhhh")); + Assertions.assertFalse(result.contains("iiiii")); Assertions.assertFalse(result.contains("jjjjj")); + Assertions.assertFalse(result.contains("kkkkk")); Assertions.assertFalse(result.contains("lllll")); + Assertions.assertFalse(result.contains("nnnnn")); Assertions.assertFalse(result.contains("ppppp")); + Assertions.assertFalse(result.contains("qqqqq")); Assertions.assertFalse(result.contains("rrrrr")); + Assertions.assertFalse(result.contains("uuuuu")); Assertions.assertFalse(result.contains("vvvvv")); + Assertions.assertFalse(result.contains("wwwww")); Assertions.assertFalse(result.contains("xxxxx")); + Assertions.assertFalse(result.contains("yyyyy")); Assertions.assertFalse(result.contains("zzzzz")); + } + @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCopyIcon() throws IOException { + void copyIconTest() throws IOException { filesSetup.filesSetup(); String modpackDir = "./src/test/resources/forge_tests"; createServerPack.copyIcon(modpackDir); @@ -239,7 +384,7 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCopyProperties() throws IOException { + void copyPropertiesTest() throws IOException { filesSetup.filesSetup(); String modpackDir = "./src/test/resources/forge_tests"; createServerPack.copyProperties(modpackDir); @@ -258,7 +403,7 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testInstallServerFabric() { + void installServerFabricTest() { //TODO: Figure out how to run this test on GitHub Runners if (!new File("/home/runner").isDirectory()) { String modLoader = "Fabric"; @@ -286,7 +431,7 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testInstallServerForge() throws IOException { + void installServerForgeTest() throws IOException { //TODO: Figure out how to run this test on GitHub Runners if (!new File("/home/runner").isDirectory()) { String modLoader = "Forge"; @@ -326,7 +471,7 @@ class CreateServerPackTest { } @Test - void testZipBuilderFabric() throws IOException { + void zipBuilderFabricTest() throws IOException { //TODO: Figure out how to run this test on GitHub Runners if (!new File("/home/runner").isDirectory()) { Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/fabric_tests/server_pack.zip"), REPLACE_EXISTING); @@ -338,7 +483,7 @@ class CreateServerPackTest { } @Test - void testZipBuilderForge() throws IOException { + void zipBuilderForgeTest() throws IOException { //TODO: Figure out how to run this test on GitHub Runners if (!new File("/home/runner").isDirectory()) { Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/forge_tests/server_pack.zip"), REPLACE_EXISTING); @@ -351,7 +496,7 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testGenerateDownloadScriptsFabric() { + void generateDownloadScriptsFabricTest() { //TODO: Figure out how to run this test on GitHub Runners if (!new File("/home/runner").isDirectory()) { String modLoader = "Fabric"; @@ -367,7 +512,7 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testGenerateDownloadScriptsForge() { + void generateDownloadScriptsForgeTest() { //TODO: Figure out how to run this test on GitHub Runners if (!new File("/home/runner").isDirectory()) { String modLoader = "Forge"; @@ -383,7 +528,47 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testDownloadFabricJar() { + void fabricShellTest() { + String modpackDir = "./src/test/resources/forge_tests"; + String minecraftVersion = "1.16.5"; + createServerPack.fabricShell(modpackDir, minecraftVersion); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/download_minecraft-server.jar_fabric.sh").exists()); + new File("./src/test/resources/forge_tests/server_pack/download_minecraft-server.jar_fabric.sh").delete(); + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void fabricBatchTest() { + String modpackDir = "./src/test/resources/forge_tests"; + String minecraftVersion = "1.16.5"; + createServerPack.fabricBatch(modpackDir, minecraftVersion); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/download_minecraft-server.jar_fabric.bat").exists()); + new File("./src/test/resources/forge_tests/server_pack/download_minecraft-server.jar_fabric.bat").delete(); + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void forgeShellTest() { + String modpackDir = "./src/test/resources/forge_tests"; + String minecraftVersion = "1.16.5"; + createServerPack.forgeShell(modpackDir, minecraftVersion); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/download_minecraft-server.jar_forge.sh").exists()); + new File("./src/test/resources/forge_tests/server_pack/download_minecraft-server.jar_forge.sh").delete(); + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void forgeBatchTest() { + String modpackDir = "./src/test/resources/forge_tests"; + String minecraftVersion = "1.16.5"; + createServerPack.forgeBatch(modpackDir, minecraftVersion); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/download_minecraft-server.jar_forge.bat").exists()); + new File("./src/test/resources/forge_tests/server_pack/download_minecraft-server.jar_forge.bat").delete(); + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + @Test + void downloadFabricJarTest() { //TODO: Figure out how to run this test on GitHub Runners if (!new File("/home/runner").isDirectory()) { String modpackDir = "./src/test/resources/fabric_tests"; @@ -395,9 +580,16 @@ class CreateServerPackTest { } } + @Test + void latestFabricInstallerTest() { + String modpackDir = "./src/test/resources/forge_tests"; + String result = createServerPack.latestFabricInstaller(modpackDir); + Assertions.assertNotNull(result); + } + @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testDownloadForgeJar() { + void downloadForgeJarTest() { //TODO: Figure out how to run this test on GitHub Runners if (!new File("/home/runner").isDirectory()) { String modLoaderVersion = "36.1.2"; @@ -411,7 +603,7 @@ class CreateServerPackTest { } @Test - void testDeleteMinecraftJarFabric() throws IOException { + void deleteMinecraftJarFabricTest() throws IOException { Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/fabric_tests/server_pack.zip"), REPLACE_EXISTING); String minecraftVersion = "1.16.5"; String modLoader = "Fabric"; @@ -420,7 +612,7 @@ class CreateServerPackTest { } @Test - void testDeleteMinecraftJarForge() throws IOException { + void deleteMinecraftJarForgeTest() throws IOException { Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/forge_tests/server_pack.zip"), REPLACE_EXISTING); String minecraftVersion = "1.16.5"; String modLoader = "Forge"; @@ -429,7 +621,7 @@ class CreateServerPackTest { } @Test - void testCleanUpServerPackForge() { + void cleanUpServerPackForgeTest() { String modLoader = "Forge"; String modpackDir = "./src/test/resources/forge_tests"; String minecraftVersion = "1.16.5"; @@ -444,7 +636,7 @@ class CreateServerPackTest { } @Test - void testCleanUpServerPackFabric() { + void cleanUpServerPackFabricTest() { String modLoader = "Fabric"; String modpackDir = "./src/test/resources/fabric_tests"; String minecraftVersion = "1.16.5"; diff --git a/src/test/resources/testresources/serverpackcreator.conf b/src/test/resources/testresources/serverpackcreator.conf index b0d99ac0e..ff9f2f664 100644 --- a/src/test/resources/testresources/serverpackcreator.conf +++ b/src/test/resources/testresources/serverpackcreator.conf @@ -1,7 +1,7 @@ # Path to your modpack. Can be either relative or absolute. # Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" # Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7 "390331,3215793" -modpackDir = "src/test/resources/forge_tests" +modpackDir = "./src/test/resources/forge_tests" # List of client-only mods to delete from serverpack. # No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge! -- GitLab From ac4559b7f6b0aa105a6e22734954fc637983e264 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 6 May 2021 08:13:45 +0200 Subject: [PATCH 67/91] refactor(DI): Try and fix tests which only fail on GitHub --- .../de/griefed/serverpackcreator/CreateServerPackTest.java | 1 + .../server_pack/download_minecraft-server.jar_fabric.bat | 1 + .../server_pack/download_minecraft-server.jar_fabric.sh | 4 ++++ src/test/resources/forge_tests/mods/aaaaa.jar | 0 src/test/resources/forge_tests/mods/bbbbb.jar | 0 src/test/resources/forge_tests/mods/ccccc.jar | 0 src/test/resources/forge_tests/mods/fffff.jar | 0 src/test/resources/forge_tests/mods/ggggg.jar | 0 src/test/resources/forge_tests/mods/hhhhh.jar | 0 src/test/resources/forge_tests/mods/iiiii.jar | 0 src/test/resources/forge_tests/mods/jjjjj.jar | 0 src/test/resources/forge_tests/mods/kkkkk.jar | 0 src/test/resources/forge_tests/mods/lllll.jar | 0 src/test/resources/forge_tests/mods/nnnnn.jar | 0 src/test/resources/forge_tests/mods/ppppp.jar | 0 src/test/resources/forge_tests/mods/qqqqq.jar | 0 src/test/resources/forge_tests/mods/rrrrr.jar | 0 src/test/resources/forge_tests/mods/uuuuu.jar | 0 src/test/resources/forge_tests/mods/vvvvv.jar | 0 src/test/resources/forge_tests/mods/wwwww.jar | 0 src/test/resources/forge_tests/mods/xxxxx.jar | 0 src/test/resources/forge_tests/mods/yyyyy.jar | 0 src/test/resources/forge_tests/mods/zzzzz.jar | 0 23 files changed, 6 insertions(+) create mode 100644 src/test/resources/fabric_tests/server_pack/download_minecraft-server.jar_fabric.bat create mode 100644 src/test/resources/fabric_tests/server_pack/download_minecraft-server.jar_fabric.sh create mode 100644 src/test/resources/forge_tests/mods/aaaaa.jar create mode 100644 src/test/resources/forge_tests/mods/bbbbb.jar create mode 100644 src/test/resources/forge_tests/mods/ccccc.jar create mode 100644 src/test/resources/forge_tests/mods/fffff.jar create mode 100644 src/test/resources/forge_tests/mods/ggggg.jar create mode 100644 src/test/resources/forge_tests/mods/hhhhh.jar create mode 100644 src/test/resources/forge_tests/mods/iiiii.jar create mode 100644 src/test/resources/forge_tests/mods/jjjjj.jar create mode 100644 src/test/resources/forge_tests/mods/kkkkk.jar create mode 100644 src/test/resources/forge_tests/mods/lllll.jar create mode 100644 src/test/resources/forge_tests/mods/nnnnn.jar create mode 100644 src/test/resources/forge_tests/mods/ppppp.jar create mode 100644 src/test/resources/forge_tests/mods/qqqqq.jar create mode 100644 src/test/resources/forge_tests/mods/rrrrr.jar create mode 100644 src/test/resources/forge_tests/mods/uuuuu.jar create mode 100644 src/test/resources/forge_tests/mods/vvvvv.jar create mode 100644 src/test/resources/forge_tests/mods/wwwww.jar create mode 100644 src/test/resources/forge_tests/mods/xxxxx.jar create mode 100644 src/test/resources/forge_tests/mods/yyyyy.jar create mode 100644 src/test/resources/forge_tests/mods/zzzzz.jar diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java index 919b3379e..a55e378ac 100644 --- a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -92,6 +92,7 @@ class CreateServerPackTest { @BeforeEach void setUp() { + filesSetup.filesSetup(); localizationManager.checkLocaleFile(); MockitoAnnotations.openMocks(this); } diff --git a/src/test/resources/fabric_tests/server_pack/download_minecraft-server.jar_fabric.bat b/src/test/resources/fabric_tests/server_pack/download_minecraft-server.jar_fabric.bat new file mode 100644 index 000000000..a3159f696 --- /dev/null +++ b/src/test/resources/fabric_tests/server_pack/download_minecraft-server.jar_fabric.bat @@ -0,0 +1 @@ +powershell -Command "(New-Object Net.WebClient).DownloadFile('https://launcher.mojang.com/v1/objects/1b557e7b033b583cd9f66746b7a9ab1ec1673ced/server.jar', 'server.jar')" \ No newline at end of file diff --git a/src/test/resources/fabric_tests/server_pack/download_minecraft-server.jar_fabric.sh b/src/test/resources/fabric_tests/server_pack/download_minecraft-server.jar_fabric.sh new file mode 100644 index 000000000..e4d5dffcb --- /dev/null +++ b/src/test/resources/fabric_tests/server_pack/download_minecraft-server.jar_fabric.sh @@ -0,0 +1,4 @@ +#!/bin/bash +#Download the Minecraft_server.jar for your modpack + +wget -O server.jar https://launcher.mojang.com/v1/objects/1b557e7b033b583cd9f66746b7a9ab1ec1673ced/server.jar \ No newline at end of file diff --git a/src/test/resources/forge_tests/mods/aaaaa.jar b/src/test/resources/forge_tests/mods/aaaaa.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/bbbbb.jar b/src/test/resources/forge_tests/mods/bbbbb.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/ccccc.jar b/src/test/resources/forge_tests/mods/ccccc.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/fffff.jar b/src/test/resources/forge_tests/mods/fffff.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/ggggg.jar b/src/test/resources/forge_tests/mods/ggggg.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/hhhhh.jar b/src/test/resources/forge_tests/mods/hhhhh.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/iiiii.jar b/src/test/resources/forge_tests/mods/iiiii.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/jjjjj.jar b/src/test/resources/forge_tests/mods/jjjjj.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/kkkkk.jar b/src/test/resources/forge_tests/mods/kkkkk.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/lllll.jar b/src/test/resources/forge_tests/mods/lllll.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/nnnnn.jar b/src/test/resources/forge_tests/mods/nnnnn.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/ppppp.jar b/src/test/resources/forge_tests/mods/ppppp.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/qqqqq.jar b/src/test/resources/forge_tests/mods/qqqqq.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/rrrrr.jar b/src/test/resources/forge_tests/mods/rrrrr.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/uuuuu.jar b/src/test/resources/forge_tests/mods/uuuuu.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/vvvvv.jar b/src/test/resources/forge_tests/mods/vvvvv.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/wwwww.jar b/src/test/resources/forge_tests/mods/wwwww.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/xxxxx.jar b/src/test/resources/forge_tests/mods/xxxxx.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/yyyyy.jar b/src/test/resources/forge_tests/mods/yyyyy.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/forge_tests/mods/zzzzz.jar b/src/test/resources/forge_tests/mods/zzzzz.jar new file mode 100644 index 000000000..e69de29bb -- GitLab From 598e45d582b2da01dbc822b73931f8a40a39b033 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 6 May 2021 08:16:59 +0200 Subject: [PATCH 68/91] refactor(DI): Try and fix tests which only fail on GitHub --- .../java/de/griefed/serverpackcreator/CreateServerPackTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java index a55e378ac..8c69f1a69 100644 --- a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -92,8 +92,8 @@ class CreateServerPackTest { @BeforeEach void setUp() { - filesSetup.filesSetup(); localizationManager.checkLocaleFile(); + filesSetup.filesSetup(); MockitoAnnotations.openMocks(this); } -- GitLab From 2c006b7b27d892e07b8d2dcbd9142229ce928031 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 6 May 2021 08:39:40 +0200 Subject: [PATCH 69/91] refactor(DI): Try and fix tests which only fail on GitHub --- .../CreateServerPackTest.java | 36 ++++++++++------ .../serverpackcreator/FilesSetupTest.java | 41 ++++++++++++------- 2 files changed, 50 insertions(+), 27 deletions(-) diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java index 8c69f1a69..fdbde201f 100644 --- a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -210,8 +210,9 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test void copyStartScriptsFabricTest() throws IOException { + filesSetup.filesSetup(); //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { + //if (!new File("/home/runner").isDirectory()) { String modpackDir = "./src/test/resources/fabric_tests"; String modLoader = "Fabric"; filesSetup.filesSetup(); @@ -226,12 +227,13 @@ class CreateServerPackTest { Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); } new File("./serverpackcreator.conf").delete(); - } + //} } @SuppressWarnings("ResultOfMethodCallIgnored") @Test void copyStartScriptsForgeTest() throws IOException { + filesSetup.filesSetup(); String modpackDir = "./src/test/resources/forge_tests"; String modLoader = "Forge"; filesSetup.filesSetup(); @@ -529,8 +531,10 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void fabricShellTest() { + void fabricShellTest() throws IOException { + filesSetup.filesSetup(); String modpackDir = "./src/test/resources/forge_tests"; + Files.createDirectories(Paths.get("./src/test/resources/forge_tests/server_pack")); String minecraftVersion = "1.16.5"; createServerPack.fabricShell(modpackDir, minecraftVersion); Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/download_minecraft-server.jar_fabric.sh").exists()); @@ -539,8 +543,10 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void fabricBatchTest() { + void fabricBatchTest() throws IOException { + filesSetup.filesSetup(); String modpackDir = "./src/test/resources/forge_tests"; + Files.createDirectories(Paths.get("./src/test/resources/forge_tests/server_pack")); String minecraftVersion = "1.16.5"; createServerPack.fabricBatch(modpackDir, minecraftVersion); Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/download_minecraft-server.jar_fabric.bat").exists()); @@ -549,8 +555,10 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void forgeShellTest() { + void forgeShellTest() throws IOException { + filesSetup.filesSetup(); String modpackDir = "./src/test/resources/forge_tests"; + Files.createDirectories(Paths.get("./src/test/resources/forge_tests/server_pack")); String minecraftVersion = "1.16.5"; createServerPack.forgeShell(modpackDir, minecraftVersion); Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/download_minecraft-server.jar_forge.sh").exists()); @@ -559,8 +567,10 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void forgeBatchTest() { + void forgeBatchTest() throws IOException { + filesSetup.filesSetup(); String modpackDir = "./src/test/resources/forge_tests"; + Files.createDirectories(Paths.get("./src/test/resources/forge_tests/server_pack")); String minecraftVersion = "1.16.5"; createServerPack.forgeBatch(modpackDir, minecraftVersion); Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack/download_minecraft-server.jar_forge.bat").exists()); @@ -569,16 +579,17 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void downloadFabricJarTest() { + void downloadFabricJarTest() throws IOException { //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { + //if (!new File("/home/runner").isDirectory()) { String modpackDir = "./src/test/resources/fabric_tests"; + Files.createDirectories(Paths.get("./src/test/resources/fabric_tests/server_pack")); boolean result = createServerPack.downloadFabricJar(modpackDir); Assertions.assertTrue(result); Assertions.assertTrue(new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)).exists()); new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)).delete(); new File(String.format("%s/server_pack/fabric-installer.xml", modpackDir)).delete(); - } + //} } @Test @@ -590,17 +601,18 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void downloadForgeJarTest() { + void downloadForgeJarTest() throws IOException { //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { + //if (!new File("/home/runner").isDirectory()) { String modLoaderVersion = "36.1.2"; String modpackDir = "./src/test/resources/forge_tests"; + Files.createDirectories(Paths.get("./src/test/resources/forge_tests/server_pack")); String minecraftVersion = "1.16.5"; boolean result = createServerPack.downloadForgeJar(minecraftVersion, modLoaderVersion, modpackDir); Assertions.assertTrue(result); Assertions.assertTrue(new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).exists()); new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).delete(); - } + //} } @Test diff --git a/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java b/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java index bef5f7628..902049e9f 100644 --- a/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java +++ b/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java @@ -17,10 +17,8 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ - package de.griefed.serverpackcreator; -import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -150,7 +148,8 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test void checkForConfigTestNew() { - File configFile = new File("serverpackcreator.conf"); + File configFile = new File("./serverpackcreator.conf"); + configFile.delete(); Assertions.assertTrue(filesSetup.checkForConfig()); configFile.delete(); } @@ -166,8 +165,10 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void checkForFabricLinuxTestNew() { - File fabricLinux = new File("start-fabric.sh"); + void checkForFabricLinuxTestNew() throws IOException { + Files.createDirectories(Paths.get("./server_files")); + File fabricLinux = new File("./server_files/start-fabric.sh"); + fabricLinux.delete(); Assertions.assertTrue(filesSetup.checkForFabricLinux()); fabricLinux.delete(); } @@ -183,8 +184,10 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void checkForFabricWindowsTestNew() { - File fabricWindows = new File("start-fabric.bat"); + void checkForFabricWindowsTestNew() throws IOException { + Files.createDirectories(Paths.get("./server_files")); + File fabricWindows = new File("./server_files/start-fabric.bat"); + fabricWindows.delete(); Assertions.assertTrue(filesSetup.checkForFabricWindows()); fabricWindows.delete(); } @@ -200,8 +203,10 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void checkForForgeLinuxTestNew() { - File forgeLinux = new File("start-forge.sh"); + void checkForForgeLinuxTestNew() throws IOException { + Files.createDirectories(Paths.get("./server_files")); + File forgeLinux = new File("./server_files/start-forge.sh"); + forgeLinux.delete(); Assertions.assertTrue(filesSetup.checkForForgeLinux()); forgeLinux.delete(); } @@ -217,8 +222,10 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void checkForForgeWindowsTestNew() { - File forgeWindows = new File("start-forge.bat"); + void checkForForgeWindowsTestNew() throws IOException { + Files.createDirectories(Paths.get("./server_files")); + File forgeWindows = new File("./server_files/start-forge.bat"); + forgeWindows.delete(); Assertions.assertTrue(filesSetup.checkForForgeWindows()); forgeWindows.delete(); } @@ -234,8 +241,10 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void checkForPropertiesTestNew() { - File properties = new File("server.properties"); + void checkForPropertiesTestNew() throws IOException { + Files.createDirectories(Paths.get("./server_files")); + File properties = new File("./server_files/server.properties"); + properties.delete(); Assertions.assertTrue(filesSetup.checkForProperties()); properties.delete(); } @@ -251,8 +260,10 @@ class FilesSetupTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void checkForIconTestNew() { - File icon = new File("server-icon.png"); + void checkForIconTestNew() throws IOException { + Files.createDirectories(Paths.get("./server_files")); + File icon = new File("./server_files/server-icon.png"); + icon.delete(); Assertions.assertTrue(filesSetup.checkForIcon()); icon.delete(); } -- GitLab From 3ffce75529c07689216cdcdc9de98438740618ff Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 6 May 2021 09:01:05 +0200 Subject: [PATCH 70/91] refactor(DI): Try and fix tests which only fail on GitHub --- .../CreateServerPackTest.java | 79 +++++++++---------- 1 file changed, 38 insertions(+), 41 deletions(-) diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java index fdbde201f..b75e8fbca 100644 --- a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -199,35 +199,32 @@ class CreateServerPackTest { @Test void cleanupEnvironmentTest() throws IOException { //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { + Files.createDirectories(Paths.get("./src/test/resources/cleanup_tests/server_pack")); + //if (!new File("/home/runner").isDirectory()) { String modpackDir = "./src/test/resources/cleanup_tests"; Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/cleanup_tests/server_pack.zip"), REPLACE_EXISTING); - Files.createDirectories(Paths.get(String.format("%s/server_pack", modpackDir))); createServerPack.cleanupEnvironment(modpackDir); - } + //} } @SuppressWarnings("ResultOfMethodCallIgnored") @Test void copyStartScriptsFabricTest() throws IOException { filesSetup.filesSetup(); - //TODO: Figure out how to run this test on GitHub Runners - //if (!new File("/home/runner").isDirectory()) { - String modpackDir = "./src/test/resources/fabric_tests"; - String modLoader = "Fabric"; - filesSetup.filesSetup(); - createServerPack.copyStartScripts(modpackDir, modLoader, true); - Assertions.assertTrue(new File(String.format("%s/server_pack/start-fabric.bat", modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/start-fabric.sh", modpackDir)).exists()); - new File(String.format("%s/server_pack/start-fabric.bat", modpackDir)).delete(); - new File(String.format("%s/server_pack/start-fabric.sh", modpackDir)).delete(); - String delete = "./server_files"; - if (new File(delete).isDirectory()) { - Path pathToBeDeleted = Paths.get(delete); - Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); - } - new File("./serverpackcreator.conf").delete(); - //} + String modpackDir = "./src/test/resources/fabric_tests"; + String modLoader = "Fabric"; + filesSetup.filesSetup(); + createServerPack.copyStartScripts(modpackDir, modLoader, true); + Assertions.assertTrue(new File(String.format("%s/server_pack/start-fabric.bat", modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/start-fabric.sh", modpackDir)).exists()); + new File(String.format("%s/server_pack/start-fabric.bat", modpackDir)).delete(); + new File(String.format("%s/server_pack/start-fabric.sh", modpackDir)).delete(); + String delete = "./server_files"; + if (new File(delete).isDirectory()) { + Path pathToBeDeleted = Paths.get(delete); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); + } + new File("./serverpackcreator.conf").delete(); } @SuppressWarnings("ResultOfMethodCallIgnored") @@ -406,9 +403,10 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void installServerFabricTest() { + void installServerFabricTest() throws IOException { //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { + Files.createDirectories(Paths.get("./src/test/resources/fabric_tests/server_pack")); + //if (!new File("/home/runner").isDirectory()) { String modLoader = "Fabric"; String modpackDir = "./src/test/resources/fabric_tests"; String minecraftVersion = "1.16.5"; @@ -429,14 +427,15 @@ class CreateServerPackTest { Assertions.assertTrue(new File(String.format("%s/server_pack/server.jar", modpackDir)).exists()); new File(String.format("%s/server_pack/fabric-server-launch.jar", modpackDir)).delete(); new File(String.format("%s/server_pack/server.jar", modpackDir)).delete(); - } + //} } @SuppressWarnings("ResultOfMethodCallIgnored") @Test void installServerForgeTest() throws IOException { //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { + Files.createDirectories(Paths.get("./src/test/resources/forge_tests/server_pack")); + //if (!new File("/home/runner").isDirectory()) { String modLoader = "Forge"; String modpackDir = "./src/test/resources/forge_tests"; String minecraftVersion = "1.16.5"; @@ -470,38 +469,41 @@ class CreateServerPackTest { Path pathToBeDeleted = Paths.get(delete); Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); } - } + //} } @Test void zipBuilderFabricTest() throws IOException { //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { + Files.createDirectories(Paths.get("./src/test/resources/fabric_tests/server_pack")); + //if (!new File("/home/runner").isDirectory()) { Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/fabric_tests/server_pack.zip"), REPLACE_EXISTING); String minecraftVersion = "1.16.5"; String modLoader = "Fabric"; String modpackDir = "src/test/resources/fabric_tests"; createServerPack.zipBuilder(modpackDir, modLoader, Boolean.TRUE, minecraftVersion); - } + //} } @Test void zipBuilderForgeTest() throws IOException { //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { + Files.createDirectories(Paths.get("./src/test/resources/forge_tests/server_pack")); + //if (!new File("/home/runner").isDirectory()) { Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/forge_tests/server_pack.zip"), REPLACE_EXISTING); String minecraftVersion = "1.16.5"; String modLoader = "Forge"; String modpackDir = "./src/test/resources/forge_tests"; createServerPack.zipBuilder(modpackDir, modLoader, Boolean.TRUE, minecraftVersion); - } + //} } @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void generateDownloadScriptsFabricTest() { + void generateDownloadScriptsFabricTest() throws IOException { //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { + Files.createDirectories(Paths.get("./src/test/resources/fabric_tests/server_pack")); + //if (!new File("/home/runner").isDirectory()) { String modLoader = "Fabric"; String modpackDir = "./src/test/resources/fabric_tests"; String minecraftVersion = "1.16.5"; @@ -510,14 +512,15 @@ class CreateServerPackTest { Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.sh", modpackDir)).exists()); new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.bat", modpackDir)).delete(); new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.sh", modpackDir)).delete(); - } + //} } @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void generateDownloadScriptsForgeTest() { + void generateDownloadScriptsForgeTest() throws IOException { //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { + Files.createDirectories(Paths.get("./src/test/resources/forge_tests/server_pack")); + //if (!new File("/home/runner").isDirectory()) { String modLoader = "Forge"; String modpackDir = "./src/test/resources/forge_tests"; String minecraftVersion = "1.16.5"; @@ -526,7 +529,7 @@ class CreateServerPackTest { Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).exists()); new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)).delete(); new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).delete(); - } + //} } @SuppressWarnings("ResultOfMethodCallIgnored") @@ -580,8 +583,6 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test void downloadFabricJarTest() throws IOException { - //TODO: Figure out how to run this test on GitHub Runners - //if (!new File("/home/runner").isDirectory()) { String modpackDir = "./src/test/resources/fabric_tests"; Files.createDirectories(Paths.get("./src/test/resources/fabric_tests/server_pack")); boolean result = createServerPack.downloadFabricJar(modpackDir); @@ -589,7 +590,6 @@ class CreateServerPackTest { Assertions.assertTrue(new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)).exists()); new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)).delete(); new File(String.format("%s/server_pack/fabric-installer.xml", modpackDir)).delete(); - //} } @Test @@ -602,8 +602,6 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test void downloadForgeJarTest() throws IOException { - //TODO: Figure out how to run this test on GitHub Runners - //if (!new File("/home/runner").isDirectory()) { String modLoaderVersion = "36.1.2"; String modpackDir = "./src/test/resources/forge_tests"; Files.createDirectories(Paths.get("./src/test/resources/forge_tests/server_pack")); @@ -612,7 +610,6 @@ class CreateServerPackTest { Assertions.assertTrue(result); Assertions.assertTrue(new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).exists()); new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).delete(); - //} } @Test -- GitLab From 495526e6652f4e416c8dfe071288e3c6b9307fcd Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 6 May 2021 09:27:42 +0200 Subject: [PATCH 71/91] refactor(DI): Add some assertions --- .../CreateServerPackTest.java | 225 +++++++++--------- 1 file changed, 106 insertions(+), 119 deletions(-) diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java index b75e8fbca..d5ab4b469 100644 --- a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -198,13 +198,12 @@ class CreateServerPackTest { @Test void cleanupEnvironmentTest() throws IOException { - //TODO: Figure out how to run this test on GitHub Runners Files.createDirectories(Paths.get("./src/test/resources/cleanup_tests/server_pack")); - //if (!new File("/home/runner").isDirectory()) { - String modpackDir = "./src/test/resources/cleanup_tests"; - Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/cleanup_tests/server_pack.zip"), REPLACE_EXISTING); - createServerPack.cleanupEnvironment(modpackDir); - //} + String modpackDir = "./src/test/resources/cleanup_tests"; + Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/cleanup_tests/server_pack.zip"), REPLACE_EXISTING); + createServerPack.cleanupEnvironment(modpackDir); + Assertions.assertFalse(new File("\"./src/test/resources/cleanup_tests/server_pack.zip\"").exists()); + Assertions.assertFalse(new File("./src/test/resources/cleanup_tests/server_pack").isDirectory()); } @SuppressWarnings("ResultOfMethodCallIgnored") @@ -404,132 +403,116 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test void installServerFabricTest() throws IOException { - //TODO: Figure out how to run this test on GitHub Runners Files.createDirectories(Paths.get("./src/test/resources/fabric_tests/server_pack")); - //if (!new File("/home/runner").isDirectory()) { - String modLoader = "Fabric"; - String modpackDir = "./src/test/resources/fabric_tests"; - String minecraftVersion = "1.16.5"; - String modLoaderVersion = "0.7.3"; - String javaPath; - String autoJavaPath = System.getProperty("java.home").replace("\\", "/") + "/bin/java"; - if (autoJavaPath.startsWith("C:")) { - autoJavaPath = String.format("%s.exe", autoJavaPath); - } - if (new File("/usr/bin/java").exists()) { - javaPath = "/usr/bin/java"; - } else { - javaPath = autoJavaPath; - } - createServerPack.downloadFabricJar(modpackDir); - createServerPack.installServer(modLoader, modpackDir, minecraftVersion, modLoaderVersion, javaPath); - Assertions.assertTrue(new File(String.format("%s/server_pack/fabric-server-launch.jar", modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/server.jar", modpackDir)).exists()); - new File(String.format("%s/server_pack/fabric-server-launch.jar", modpackDir)).delete(); - new File(String.format("%s/server_pack/server.jar", modpackDir)).delete(); - //} + String modLoader = "Fabric"; + String modpackDir = "./src/test/resources/fabric_tests"; + String minecraftVersion = "1.16.5"; + String modLoaderVersion = "0.7.3"; + String javaPath; + String autoJavaPath = System.getProperty("java.home").replace("\\", "/") + "/bin/java"; + if (autoJavaPath.startsWith("C:")) { + autoJavaPath = String.format("%s.exe", autoJavaPath); + } + if (new File("/usr/bin/java").exists()) { + javaPath = "/usr/bin/java"; + } else { + javaPath = autoJavaPath; + } + createServerPack.downloadFabricJar(modpackDir); + createServerPack.installServer(modLoader, modpackDir, minecraftVersion, modLoaderVersion, javaPath); + Assertions.assertTrue(new File(String.format("%s/server_pack/fabric-server-launch.jar", modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/server.jar", modpackDir)).exists()); + new File(String.format("%s/server_pack/fabric-server-launch.jar", modpackDir)).delete(); + new File(String.format("%s/server_pack/server.jar", modpackDir)).delete(); } @SuppressWarnings("ResultOfMethodCallIgnored") @Test void installServerForgeTest() throws IOException { - //TODO: Figure out how to run this test on GitHub Runners Files.createDirectories(Paths.get("./src/test/resources/forge_tests/server_pack")); - //if (!new File("/home/runner").isDirectory()) { - String modLoader = "Forge"; - String modpackDir = "./src/test/resources/forge_tests"; - String minecraftVersion = "1.16.5"; - String modLoaderVersion = "36.1.2"; - String javaPath; - String autoJavaPath = System.getProperty("java.home").replace("\\", "/") + "/bin/java"; - if (autoJavaPath.startsWith("C:")) { - autoJavaPath = String.format("%s.exe", autoJavaPath); - } - if (new File("/usr/bin/java").exists()) { - javaPath = "/usr/bin/java"; - } else { - javaPath = autoJavaPath; - } - createServerPack.downloadForgeJar(minecraftVersion, modLoaderVersion, modpackDir); - createServerPack.installServer(modLoader, modpackDir, minecraftVersion, modLoaderVersion, javaPath); - Assertions.assertTrue(new File(String.format("%s/server_pack/1.16.5.json", modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/forge.jar", modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/minecraft_server.1.16.5.jar", modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).exists()); - new File(String.format("%s/server_pack/1.16.5.json", modpackDir)).delete(); - new File(String.format("%s/server_pack/forge.jar", modpackDir)).delete(); - new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).delete(); - new File(String.format("%s/server_pack/forge-installer.jar.log", modpackDir)).delete(); - new File(String.format("%s/server_pack/minecraft_server.1.16.5.jar", modpackDir)).delete(); - new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)).delete(); - new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).delete(); - String delete = String.format("%s/server_pack/libraries", modpackDir); - if (new File(delete).isDirectory()) { - Path pathToBeDeleted = Paths.get(delete); - Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); - } - //} + String modLoader = "Forge"; + String modpackDir = "./src/test/resources/forge_tests"; + String minecraftVersion = "1.16.5"; + String modLoaderVersion = "36.1.2"; + String javaPath; + String autoJavaPath = System.getProperty("java.home").replace("\\", "/") + "/bin/java"; + if (autoJavaPath.startsWith("C:")) { + autoJavaPath = String.format("%s.exe", autoJavaPath); + } + if (new File("/usr/bin/java").exists()) { + javaPath = "/usr/bin/java"; + } else { + javaPath = autoJavaPath; + } + createServerPack.downloadForgeJar(minecraftVersion, modLoaderVersion, modpackDir); + createServerPack.installServer(modLoader, modpackDir, minecraftVersion, modLoaderVersion, javaPath); + Assertions.assertTrue(new File(String.format("%s/server_pack/1.16.5.json", modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/forge.jar", modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/minecraft_server.1.16.5.jar", modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).exists()); + new File(String.format("%s/server_pack/1.16.5.json", modpackDir)).delete(); + new File(String.format("%s/server_pack/forge.jar", modpackDir)).delete(); + new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).delete(); + new File(String.format("%s/server_pack/forge-installer.jar.log", modpackDir)).delete(); + new File(String.format("%s/server_pack/minecraft_server.1.16.5.jar", modpackDir)).delete(); + new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)).delete(); + new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).delete(); + String delete = String.format("%s/server_pack/libraries", modpackDir); + if (new File(delete).isDirectory()) { + Path pathToBeDeleted = Paths.get(delete); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); + } } @Test void zipBuilderFabricTest() throws IOException { - //TODO: Figure out how to run this test on GitHub Runners Files.createDirectories(Paths.get("./src/test/resources/fabric_tests/server_pack")); - //if (!new File("/home/runner").isDirectory()) { - Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/fabric_tests/server_pack.zip"), REPLACE_EXISTING); - String minecraftVersion = "1.16.5"; - String modLoader = "Fabric"; - String modpackDir = "src/test/resources/fabric_tests"; - createServerPack.zipBuilder(modpackDir, modLoader, Boolean.TRUE, minecraftVersion); - //} + //Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/fabric_tests/server_pack.zip"), REPLACE_EXISTING); + String minecraftVersion = "1.16.5"; + String modLoader = "Fabric"; + String modpackDir = "src/test/resources/fabric_tests"; + createServerPack.zipBuilder(modpackDir, modLoader, Boolean.FALSE, minecraftVersion); + Assertions.assertTrue(new File("src/test/resources/fabric_tests/server_pack.zip").exists()); } @Test void zipBuilderForgeTest() throws IOException { - //TODO: Figure out how to run this test on GitHub Runners Files.createDirectories(Paths.get("./src/test/resources/forge_tests/server_pack")); - //if (!new File("/home/runner").isDirectory()) { - Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/forge_tests/server_pack.zip"), REPLACE_EXISTING); - String minecraftVersion = "1.16.5"; - String modLoader = "Forge"; - String modpackDir = "./src/test/resources/forge_tests"; - createServerPack.zipBuilder(modpackDir, modLoader, Boolean.TRUE, minecraftVersion); - //} + //Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/forge_tests/server_pack.zip"), REPLACE_EXISTING); + String minecraftVersion = "1.16.5"; + String modLoader = "Forge"; + String modpackDir = "./src/test/resources/forge_tests"; + createServerPack.zipBuilder(modpackDir, modLoader, Boolean.FALSE, minecraftVersion); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack.zip").exists()); } @SuppressWarnings("ResultOfMethodCallIgnored") @Test void generateDownloadScriptsFabricTest() throws IOException { - //TODO: Figure out how to run this test on GitHub Runners Files.createDirectories(Paths.get("./src/test/resources/fabric_tests/server_pack")); - //if (!new File("/home/runner").isDirectory()) { - String modLoader = "Fabric"; - String modpackDir = "./src/test/resources/fabric_tests"; - String minecraftVersion = "1.16.5"; - createServerPack.generateDownloadScripts(modLoader, modpackDir, minecraftVersion); - Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.bat", modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.sh", modpackDir)).exists()); - new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.bat", modpackDir)).delete(); - new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.sh", modpackDir)).delete(); - //} + String modLoader = "Fabric"; + String modpackDir = "./src/test/resources/fabric_tests"; + String minecraftVersion = "1.16.5"; + createServerPack.generateDownloadScripts(modLoader, modpackDir, minecraftVersion); + Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.bat", modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.sh", modpackDir)).exists()); + new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.bat", modpackDir)).delete(); + new File(String.format("%s/server_pack/download_minecraft-server.jar_fabric.sh", modpackDir)).delete(); } @SuppressWarnings("ResultOfMethodCallIgnored") @Test void generateDownloadScriptsForgeTest() throws IOException { - //TODO: Figure out how to run this test on GitHub Runners Files.createDirectories(Paths.get("./src/test/resources/forge_tests/server_pack")); - //if (!new File("/home/runner").isDirectory()) { - String modLoader = "Forge"; - String modpackDir = "./src/test/resources/forge_tests"; - String minecraftVersion = "1.16.5"; - createServerPack.generateDownloadScripts(modLoader, modpackDir, minecraftVersion); - Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)).exists()); - Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).exists()); - new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)).delete(); - new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).delete(); - //} + String modLoader = "Forge"; + String modpackDir = "./src/test/resources/forge_tests"; + String minecraftVersion = "1.16.5"; + createServerPack.generateDownloadScripts(modLoader, modpackDir, minecraftVersion); + Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)).exists()); + Assertions.assertTrue(new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).exists()); + new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.bat", modpackDir)).delete(); + new File(String.format("%s/server_pack/download_minecraft-server.jar_forge.sh", modpackDir)).delete(); } @SuppressWarnings("ResultOfMethodCallIgnored") @@ -583,13 +566,13 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test void downloadFabricJarTest() throws IOException { - String modpackDir = "./src/test/resources/fabric_tests"; - Files.createDirectories(Paths.get("./src/test/resources/fabric_tests/server_pack")); - boolean result = createServerPack.downloadFabricJar(modpackDir); - Assertions.assertTrue(result); - Assertions.assertTrue(new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)).exists()); - new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)).delete(); - new File(String.format("%s/server_pack/fabric-installer.xml", modpackDir)).delete(); + String modpackDir = "./src/test/resources/fabric_tests"; + Files.createDirectories(Paths.get("./src/test/resources/fabric_tests/server_pack")); + boolean result = createServerPack.downloadFabricJar(modpackDir); + Assertions.assertTrue(result); + Assertions.assertTrue(new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)).exists()); + new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)).delete(); + new File(String.format("%s/server_pack/fabric-installer.xml", modpackDir)).delete(); } @Test @@ -602,14 +585,14 @@ class CreateServerPackTest { @SuppressWarnings("ResultOfMethodCallIgnored") @Test void downloadForgeJarTest() throws IOException { - String modLoaderVersion = "36.1.2"; - String modpackDir = "./src/test/resources/forge_tests"; - Files.createDirectories(Paths.get("./src/test/resources/forge_tests/server_pack")); - String minecraftVersion = "1.16.5"; - boolean result = createServerPack.downloadForgeJar(minecraftVersion, modLoaderVersion, modpackDir); - Assertions.assertTrue(result); - Assertions.assertTrue(new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).exists()); - new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).delete(); + String modLoaderVersion = "36.1.2"; + String modpackDir = "./src/test/resources/forge_tests"; + Files.createDirectories(Paths.get("./src/test/resources/forge_tests/server_pack")); + String minecraftVersion = "1.16.5"; + boolean result = createServerPack.downloadForgeJar(minecraftVersion, modLoaderVersion, modpackDir); + Assertions.assertTrue(result); + Assertions.assertTrue(new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).exists()); + new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).delete(); } @Test @@ -637,12 +620,14 @@ class CreateServerPackTest { String minecraftVersion = "1.16.5"; String modLoaderVersion = "36.1.2"; createServerPack.cleanUpServerPack( - new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)), + new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)), new File(String.format("%s/server_pack/forge-%s-%s.jar", modpackDir, minecraftVersion, modLoaderVersion)), modLoader, modpackDir, minecraftVersion, modLoaderVersion); + Assertions.assertFalse(new File("./src/test/resources/forge_tests/forge-1.16.5-36.1.2.jar").exists()); + Assertions.assertFalse(new File("./src/test/resources/forge_tests/forge-installer.jar").exists()); } @Test @@ -658,5 +643,7 @@ class CreateServerPackTest { modpackDir, minecraftVersion, modLoaderVersion); + Assertions.assertFalse(new File("./src/test/resources/forge_tests/fabric-installer.xml").exists()); + Assertions.assertFalse(new File("./src/test/resources/forge_tests/fabric-installer.jar").exists()); } } -- GitLab From cb288ca3b1504e15fdb32d3b472569c31207e18b Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 6 May 2021 09:27:56 +0200 Subject: [PATCH 72/91] refactor(DI): Some more whitespace --- .../de/griefed/serverpackcreator/CreateServerPack.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index d9d8f70f0..2cdd3a472 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -954,8 +954,10 @@ public class CreateServerPack { appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.enter")); if (modLoader.equalsIgnoreCase("Fabric")) { File fabricXML = new File(String.format("%s/server_pack/fabric-installer.xml", modpackDir)); + boolean isXmlDeleted = fabricXML.delete(); boolean isInstallerDeleted = fabricInstaller.delete(); + if (isXmlDeleted) { appLogger.info(String.format(localizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.deleted"), fabricXML.getName())); } else @@ -972,8 +974,13 @@ public class CreateServerPack { Paths.get(String.format("%s/server_pack/forge-%s-%s.jar", modpackDir, minecraftVersion, modLoaderVersion)), Paths.get(String.format("%s/server_pack/forge.jar", modpackDir)), REPLACE_EXISTING); + boolean isOldJarDeleted = (new File( - String.format("%s/server_pack/forge-%s-%s.jar", modpackDir, minecraftVersion, modLoaderVersion))).delete(); + String.format("%s/server_pack/forge-%s-%s.jar", + modpackDir, + minecraftVersion, + modLoaderVersion))).delete(); + boolean isInstallerDeleted = forgeInstaller.delete(); if ((isOldJarDeleted) && (new File(String.format("%s/server_pack/forge.jar", modpackDir)).exists())) -- GitLab From 7e96512296ecedc6d97bf98825904b63b18a799f Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 6 May 2021 15:09:13 +0200 Subject: [PATCH 73/91] refactor(DI): More tests and some other improvements here and there --- .../serverpackcreator/CreateServerPack.java | 22 ++ .../CreateServerPackTest.java | 4 +- .../CurseCreateModpackTest.java | 235 +++++++++++++++++- .../resources/curseforge_tests/modpack.zip | Bin 0 -> 62601 bytes .../overrides/config/testfile.txt | 0 .../overrides/defaultconfigs/testfile.txt | 0 .../overridestest/overrides/mods/aaaaa.jar | 0 .../overridestest/overrides/mods/bbbbb.jar | 0 .../overridestest/overrides/mods/ccccc.jar | 0 .../overridestest/overrides/mods/fffff.jar | 0 .../overridestest/overrides/mods/ggggg.jar | 0 .../overridestest/overrides/mods/hhhhh.jar | 0 .../overridestest/overrides/mods/iiiii.jar | 0 .../overridestest/overrides/mods/jjjjj.jar | 0 .../overridestest/overrides/mods/kkkkk.jar | 0 .../overridestest/overrides/mods/lllll.jar | 0 .../overridestest/overrides/mods/nnnnn.jar | 0 .../overridestest/overrides/mods/ppppp.jar | 0 .../overridestest/overrides/mods/qqqqq.jar | 0 .../overridestest/overrides/mods/rrrrr.jar | 0 .../overridestest/overrides/mods/testmod.jar | 0 .../overridestest/overrides/mods/uuuuu.jar | 0 .../overridestest/overrides/mods/vvvvv.jar | 0 .../overridestest/overrides/mods/wwwww.jar | 0 .../overridestest/overrides/mods/xxxxx.jar | 0 .../overridestest/overrides/mods/yyyyy.jar | 0 .../overridestest/overrides/mods/zzzzz.jar | 0 .../overrides/scripts/testscript.zs | 0 .../overridestest/overrides/seeds/seed,json | 43 ++++ .../overrides/seeds/testjson.json | 43 ++++ .../resources/testresources/manifest.json | 44 ++++ 31 files changed, 376 insertions(+), 15 deletions(-) create mode 100644 src/test/resources/curseforge_tests/modpack.zip create mode 100644 src/test/resources/overridestest/overrides/config/testfile.txt create mode 100644 src/test/resources/overridestest/overrides/defaultconfigs/testfile.txt create mode 100644 src/test/resources/overridestest/overrides/mods/aaaaa.jar create mode 100644 src/test/resources/overridestest/overrides/mods/bbbbb.jar create mode 100644 src/test/resources/overridestest/overrides/mods/ccccc.jar create mode 100644 src/test/resources/overridestest/overrides/mods/fffff.jar create mode 100644 src/test/resources/overridestest/overrides/mods/ggggg.jar create mode 100644 src/test/resources/overridestest/overrides/mods/hhhhh.jar create mode 100644 src/test/resources/overridestest/overrides/mods/iiiii.jar create mode 100644 src/test/resources/overridestest/overrides/mods/jjjjj.jar create mode 100644 src/test/resources/overridestest/overrides/mods/kkkkk.jar create mode 100644 src/test/resources/overridestest/overrides/mods/lllll.jar create mode 100644 src/test/resources/overridestest/overrides/mods/nnnnn.jar create mode 100644 src/test/resources/overridestest/overrides/mods/ppppp.jar create mode 100644 src/test/resources/overridestest/overrides/mods/qqqqq.jar create mode 100644 src/test/resources/overridestest/overrides/mods/rrrrr.jar create mode 100644 src/test/resources/overridestest/overrides/mods/testmod.jar create mode 100644 src/test/resources/overridestest/overrides/mods/uuuuu.jar create mode 100644 src/test/resources/overridestest/overrides/mods/vvvvv.jar create mode 100644 src/test/resources/overridestest/overrides/mods/wwwww.jar create mode 100644 src/test/resources/overridestest/overrides/mods/xxxxx.jar create mode 100644 src/test/resources/overridestest/overrides/mods/yyyyy.jar create mode 100644 src/test/resources/overridestest/overrides/mods/zzzzz.jar create mode 100644 src/test/resources/overridestest/overrides/scripts/testscript.zs create mode 100644 src/test/resources/overridestest/overrides/seeds/seed,json create mode 100644 src/test/resources/overridestest/overrides/seeds/testjson.json create mode 100644 src/test/resources/testresources/manifest.json diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index 2cdd3a472..4f850ea34 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -354,19 +354,27 @@ public class CreateServerPack { */ void copyFiles(String modpackDir, List<String> copyDirs, List<String> clientMods) { String serverPath = String.format("%s/server_pack", modpackDir); + try { Files.createDirectories(Paths.get(serverPath)); } catch (IOException ex) { appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.unziparchive.createdir"), serverPath)); } + for (int i = 0; i < copyDirs.size(); i++) { + String clientDir = String.format("%s/%s", modpackDir,copyDirs.get(i)); String serverDir = String.format("%s/%s", serverPath,copyDirs.get(i)); + appLogger.info(String.format(localizationManager.getLocalizedString("copyfiles.log.info.copyfiles.setup"), serverDir)); + if (copyDirs.get(i).startsWith("saves/")) { + String savesDir = String.format("%s/%s", serverPath, copyDirs.get(i).substring(6)); try { + Stream<Path> files = Files.walk(Paths.get(clientDir)); + files.forEach(file -> { try { @@ -384,16 +392,22 @@ public class CreateServerPack { } } }); + } catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyfiles.saves.world"), ex); } + + } else if (copyDirs.get(i).startsWith("mods") && clientMods.size() > 0) { + List<String> listOfFiles = excludeClientMods(clientDir, clientMods); + try { Files.createDirectories(Paths.get(serverDir)); } catch (IOException ex) { appLogger.info(String.format(localizationManager.getLocalizedString("copyfiles.log.info.copyfiles.setup"), serverDir)); } + for (int in = 0; in < listOfFiles.size(); in++) { try { @@ -411,9 +425,13 @@ public class CreateServerPack { } } } + + } else { try { + Stream<Path> files = Files.walk(Paths.get(clientDir)); + files.forEach(file -> { try { @@ -430,11 +448,15 @@ public class CreateServerPack { } } }); + files.close(); + } catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyfiles"), ex); } } + + } } diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java index d5ab4b469..4a4637532 100644 --- a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -468,23 +468,23 @@ class CreateServerPackTest { @Test void zipBuilderFabricTest() throws IOException { Files.createDirectories(Paths.get("./src/test/resources/fabric_tests/server_pack")); - //Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/fabric_tests/server_pack.zip"), REPLACE_EXISTING); String minecraftVersion = "1.16.5"; String modLoader = "Fabric"; String modpackDir = "src/test/resources/fabric_tests"; createServerPack.zipBuilder(modpackDir, modLoader, Boolean.FALSE, minecraftVersion); Assertions.assertTrue(new File("src/test/resources/fabric_tests/server_pack.zip").exists()); + Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/fabric_tests/server_pack.zip"), REPLACE_EXISTING); } @Test void zipBuilderForgeTest() throws IOException { Files.createDirectories(Paths.get("./src/test/resources/forge_tests/server_pack")); - //Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/forge_tests/server_pack.zip"), REPLACE_EXISTING); String minecraftVersion = "1.16.5"; String modLoader = "Forge"; String modpackDir = "./src/test/resources/forge_tests"; createServerPack.zipBuilder(modpackDir, modLoader, Boolean.FALSE, minecraftVersion); Assertions.assertTrue(new File("./src/test/resources/forge_tests/server_pack.zip").exists()); + Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/forge_tests/server_pack.zip"), REPLACE_EXISTING); } @SuppressWarnings("ResultOfMethodCallIgnored") diff --git a/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java b/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java index fb8f9450c..6479056c6 100644 --- a/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java @@ -17,7 +17,6 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ - package de.griefed.serverpackcreator.curseforgemodpack; import com.therandomlabs.curseapi.CurseAPI; @@ -32,13 +31,29 @@ import org.mockito.MockitoAnnotations; import java.io.File; import java.io.IOException; - import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Comparator; import java.util.Objects; +import java.util.stream.Stream; + +import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; +/** + * <strong>Table of methods</strong><br> + * {@link #CurseCreateModpackTest()}<br> + * {@link #getsetProjectNameTest}<br> + * {@link #getsetFileNameAndDiskNameTest}<br> + * {@link #setModloaderCaseTest()}<br> + * {@link #curseForgeModpackTest()}<br> + * {@link #initializeModpackTest()}<br> + * {@link #downloadModsTest()}<br> + * {@link #copyOverrideTest()}<br> + * {@link #checkCurseForgeDirTest()}<br> + * {@link #unzipArchiveTest()}<br> + * {@link #cleanupEnvironmentTest()}<p> + */ class CurseCreateModpackTest { @Mock Logger appLogger; @@ -57,12 +72,37 @@ class CurseCreateModpackTest { MockitoAnnotations.openMocks(this); } + @Test + void getsetProjectNameTest() { + curseCreateModpack.setProjectName(238298); + Assertions.assertEquals("Vanilla Forge", curseCreateModpack.getProjectName()); + curseCreateModpack.setProjectName(999999); + Assertions.assertEquals("999999", curseCreateModpack.getProjectName()); + } + + @Test + void getsetFileNameAndDiskNameTest() { + curseCreateModpack.setFileNameAndDiskName(238298,3174854); + Assertions.assertEquals("Vanilla Forge 1.16.5", curseCreateModpack.getFileName()); + Assertions.assertEquals("Vanilla Forge 1.16.5-1.0.zip", curseCreateModpack.getFileDiskName()); + curseCreateModpack.setFileNameAndDiskName(999999,9999999); + Assertions.assertEquals("9999999", curseCreateModpack.getFileName()); + Assertions.assertEquals("9999999", curseCreateModpack.getFileDiskName()); + } + + @Test + void setModloaderCaseTest() { + String forge = "fOrGe"; + String fabric = "fAbRiC"; + Assertions.assertEquals("Forge", curseCreateModpack.setModloaderCase(forge)); + Assertions.assertEquals("Fabric", curseCreateModpack.setModloaderCase(fabric)); + } @SuppressWarnings({"OptionalGetWithoutIsPresent", "ResultOfMethodCallIgnored"}) @Test - void testCurseForgeModpack() throws CurseException, IOException { + void curseForgeModpackTest() throws CurseException, IOException { //TODO: Figure out how to run this test on GitHub Runners - if (!new File("/home/runner").isDirectory()) { + //if (!new File("/home/runner").isDirectory()) { int projectID = 238298; int fileID = 3174854; String projectName = CurseAPI.project(projectID).get().name(); @@ -72,8 +112,7 @@ class CurseCreateModpackTest { .fileWithID(fileID)) .displayName(); String modpackDir = String.format("./src/test/resources/forge_tests/%s/%s", projectName, displayName); - boolean result = curseCreateModpack.curseForgeModpack(modpackDir, projectID, fileID); - Assertions.assertTrue(result); + Assertions.assertTrue(curseCreateModpack.curseForgeModpack(modpackDir, projectID, fileID)); String deleteFile = String.format("./src/test/resources/forge_tests/%s/%s", projectName, displayName); if (new File(deleteFile).isDirectory()) { Path pathToBeDeleted = Paths.get(deleteFile); @@ -90,18 +129,188 @@ class CurseCreateModpackTest { .map(Path::toFile) .forEach(File::delete); } - } + //} + } + + @SuppressWarnings("OptionalGetWithoutIsPresent") + @Test + void initializeModpackTest() throws CurseException { + int projectID = 238298; + int fileID = 3174854; + String projectName = CurseAPI.project(projectID).get().name(); + String displayName = Objects.requireNonNull(CurseAPI.project(projectID) + .get() + .files() + .fileWithID(fileID)) + .displayName(); + String modpackDir = String.format("./src/test/resources/forge_tests/%s/%s", projectName, displayName); + curseCreateModpack.initializeModpack(modpackDir, projectID, fileID); + Assertions.assertTrue(new File(String.format("./src/test/resources/forge_tests/%s", projectName)).isDirectory()); + Assertions.assertTrue(new File(String.format("./src/test/resources/forge_tests/%s/%s", projectName, displayName)).isDirectory()); } + @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testSetModloaderFabric() { - String result = curseCreateModpack.setModloaderCase("fAbRiC"); - Assertions.assertEquals("Fabric", result); + void downloadModsTest() throws IOException { + String modpackDir = "./src/test/resources/forge_tests"; + Files.copy(Paths.get("./src/test/resources/testresources/manifest.json"), Paths.get("./src/test/resources/forge_tests/manifest.json"), REPLACE_EXISTING); + curseCreateModpack.downloadMods(modpackDir); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/mods/BetterTitleScreen-1.16.4-1.10.2.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/mods/jei-professions-1.0.0-1.16.4.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/mods/ftb-backups-2.1.1.6.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/mods/ftb-gui-library-1604.2.0.29-forge.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/forge_tests/mods/JEIEnchantmentInfo-1.16.4-1.2.1.jar").exists()); + new File("./src/test/resources/forge_tests/mods/BetterTitleScreen-1.16.4-1.10.2.jar").delete(); + new File("./src/test/resources/forge_tests/mods/jei-professions-1.0.0-1.16.4.jar").delete(); + new File("./src/test/resources/forge_tests/mods/ftb-backups-2.1.1.6.jar").delete(); + new File("./src/test/resources/forge_tests/mods/ftb-gui-library-1604.2.0.29-forge.jar").delete(); + new File("./src/test/resources/forge_tests/mods/JEIEnchantmentInfo-1.16.4-1.2.1.jar").delete(); + new File("./src/test/resources/forge_tests/manifest.json").delete(); } + @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testSetModloaderForge() { - String result = curseCreateModpack.setModloaderCase("fOrGe"); - Assertions.assertEquals("Forge", result); + void copyOverrideTest() throws IOException { + String modpackDir = "./src/test/resources/overridestest"; + curseCreateModpack.copyOverride(modpackDir); + Assertions.assertTrue(new File("./src/test/resources/overridestest/config").isDirectory()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/defaultconfigs").isDirectory()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods").isDirectory()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/scripts").isDirectory()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/seeds").isDirectory()); + + Assertions.assertTrue(new File("./src/test/resources/overridestest/config/testfile.txt").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/defaultconfigs/testfile.txt").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/aaaaa.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/bbbbb.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/ccccc.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/fffff.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/ggggg.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/hhhhh.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/iiiii.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/jjjjj.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/kkkkk.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/lllll.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/nnnnn.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/ppppp.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/qqqqq.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/rrrrr.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/testmod.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/uuuuu.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/vvvvv.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/wwwww.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/xxxxx.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/yyyyy.jar").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/zzzzz.jar").exists()); + + Assertions.assertTrue(new File("./src/test/resources/overridestest/scripts/testscript.zs").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/seeds/seed.json").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/seeds/testjson.json").exists()); + + if (new File("./src/test/resources/overridestest/config").isDirectory()) { + Path pathToBeDeleted = Paths.get("./src/test/resources/overridestest/config"); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete);} + + if (new File("./src/test/resources/overridestest/defaultconfigs").isDirectory()) { + Path pathToBeDeleted = Paths.get("./src/test/resources/overridestest/defaultconfigs"); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete);} + + if (new File("./src/test/resources/overridestest/mods").isDirectory()) { + Path pathToBeDeleted = Paths.get("./src/test/resources/overridestest/mods"); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete);} + + if (new File("./src/test/resources/overridestest/scripts").isDirectory()) { + Path pathToBeDeleted = Paths.get("./src/test/resources/overridestest/scripts"); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete);} + + if (new File("./src/test/resources/overridestest/seeds").isDirectory()) { + Path pathToBeDeleted = Paths.get("./src/test/resources/overridestest/seeds"); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete);} + + new File("./src/test/resources/overridestest/config/testfile.txt").delete(); + new File("./src/test/resources/overridestest/defaultconfigs/testfile.txt").delete(); + new File("./src/test/resources/overridestest/mods/aaaaa.jar").delete(); + new File("./src/test/resources/overridestest/mods/bbbbb.jar").delete(); + new File("./src/test/resources/overridestest/mods/ccccc.jar").delete(); + new File("./src/test/resources/overridestest/mods/fffff.jar").delete(); + new File("./src/test/resources/overridestest/mods/ggggg.jar").delete(); + new File("./src/test/resources/overridestest/mods/hhhhh.jar").delete(); + new File("./src/test/resources/overridestest/mods/iiiii.jar").delete(); + new File("./src/test/resources/overridestest/mods/jjjjj.jar").delete(); + new File("./src/test/resources/overridestest/mods/kkkkk.jar").delete(); + new File("./src/test/resources/overridestest/mods/lllll.jar").delete(); + new File("./src/test/resources/overridestest/mods/nnnnn.jar").delete(); + new File("./src/test/resources/overridestest/mods/ppppp.jar").delete(); + new File("./src/test/resources/overridestest/mods/qqqqq.jar").delete(); + new File("./src/test/resources/overridestest/mods/rrrrr.jar").delete(); + new File("./src/test/resources/overridestest/mods/testmod.jar").delete(); + new File("./src/test/resources/overridestest/mods/uuuuu.jar").delete(); + new File("./src/test/resources/overridestest/mods/vvvvv.jar").delete(); + new File("./src/test/resources/overridestest/mods/wwwww.jar").delete(); + new File("./src/test/resources/overridestest/mods/xxxxx.jar").delete(); + new File("./src/test/resources/overridestest/mods/yyyyy.jar").delete(); + new File("./src/test/resources/overridestest/mods/zzzzz.jar").delete(); + + new File("./src/test/resources/overridestest/scripts/testscript.zs").delete(); + new File("./src/test/resources/overridestest/seeds/seed.json").delete(); + new File("./src/test/resources/overridestest/seeds/testjson.json").delete(); + } + + @Test + void checkCurseForgeDirTest() { + String modpackdir = "./src/test/resources/forge_tests/overrides"; + Assertions.assertFalse(curseCreateModpack.checkCurseForgeDir(modpackdir)); + } + + @Test + void unzipArchiveTest() throws IOException { + String modpackDir = "src/test/resources/curseforge_tests"; + String zipFile = "src/test/resources/curseforge_tests/modpack.zip"; + curseCreateModpack.unzipArchive(zipFile, modpackDir); + Assertions.assertTrue(new File("./src/test/resources/curseforge_tests/manifest.json").exists()); + Assertions.assertTrue(new File("./src/test/resources/curseforge_tests/modlist.html").exists()); + Assertions.assertTrue(new File("./src/test/resources/curseforge_tests/overrides").isDirectory()); + new File("./src/test/resources/curseforge_tests/manifest.json").delete(); + new File("./src/test/resources/curseforge_tests/modlist.html").delete(); + if (new File("./src/test/resources/curseforge_tests/overrides").isDirectory()) { + Path pathToBeDeleted = Paths.get("./src/test/resources/curseforge_tests/overrides"); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete);} + } + + @Test + void cleanupEnvironmentTest() throws IOException { + String clientDir = "./src/test/resources/forge_tests"; + String serverDir = "./src/test/resources/cleanup_tests/modpack"; + + Files.createDirectories(Paths.get(serverDir)); + + try { + Stream<Path> files = Files.walk(Paths.get(clientDir)); + files.forEach(file -> { + try { + + Files.copy( + file, + Paths.get(serverDir).resolve(Paths.get(clientDir).relativize(file)), + REPLACE_EXISTING + ); + + appLogger.debug(String.format(localizationManager.getLocalizedString("copyfiles.log.debug.copyfiles"), file.toAbsolutePath().toString())); + } catch (IOException ex) { + if (!ex.toString().startsWith("java.nio.file.DirectoryNotEmptyException")) { + appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyfiles.mods"), ex); + } + } + }); + + files.close(); + + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyfiles"), ex); + } + + curseCreateModpack.cleanupEnvironment(serverDir); + + Assertions.assertFalse(new File("./src/test/resources/cleanup_tests/modpack").isDirectory()); } } diff --git a/src/test/resources/curseforge_tests/modpack.zip b/src/test/resources/curseforge_tests/modpack.zip new file mode 100644 index 0000000000000000000000000000000000000000..edea067d015a126db7f693ef8a009a9739a7d68d GIT binary patch literal 62601 zcma&OV{|0i7Bw2%wr$%^I<`Bu&5mt59j9a4wr!_lJL%-*^!d&>_nz<E_g;;vT7PQn z8nx$|d(DMi@?U^KPyhe`AOO_uSrl#Mwu$Tj0RUjZK3@PN0M`08<|f9DPIMNIwl+`z z1fL%S000EQ0KnMKETg?#1pKEhRF?VDCxFm_{(>(w$$B>a%@a*<I^&LrH_#-1hOA^w znS%6VLuPgmtP$$Moc(fwXOoA_Gjl4Bf-YjT+&Z28+S=(1A;cTAjrwGikdcG{36EY@ zTEjHPIh}Jejvg2z>-8m^=ydgFwKE-?3Msz3rKPy3kwVGSjx}l{gLwunMa8u~qDM^= zwPl5MDx~5VMf|&*bEC`>{&l?-r)IF<kJ;KwtycdDvZxDg@tFgTImQu4>Bk8zYwk0U z{eeMkY3|7rv68KcR`+H{5+dP(y&P{PIe7qi0v`-ZzQ-We6%s#}>kJO!MDuf0bmbf< zq~dNCeLj1kBp?W<$<%G#pYcSH5kVG-((VJC@?nCz!->kX_|V@OJ`jtc5PwY;BGJ&G z6><1~&CG{FHq9AmP)VfdWhx#{>qLTHVqtKU#k}PrCkTRz0F4W{8}h$+B+}pYx4fz( zYNnm_G1<f|+o3JnNHC2k_nD&OJFI)amj5sKLZq6WD?Z^{1qA?r`2#*%BP;Vy^vs;B zt^N}|O6%U==>5|+B=*?MGav|DO1uRm%{^=vf!_PiO0=mofiyS`(5>UTBEg?7_u#oo z`c#1Pg?;U|SEkLBluL8Bf8#-3>-z44Dwtxsg@QFE#Bh+)GLE8f$-n=+W5<!y<8D@N zxud*FcRB6rl$YC{&|U}6SLFwRLrwy_{smmG)**>tEh^R;*(kz8j~%0HAb|+oI8OZF zBeV<nW^)CsUEI=3^;>J@@*zZgHTurmnHQeEFl$xNdI;a>VjHTKj3m;47vC4`Sj+M( zyFR1VXU&>5$Z<>T3<xnQ{U5->I5LLCvby+`WkfQYQCRiXJutV+qFa_%o{`)poWW}t zWHBFz01xP<mnLOQXsA2`rB-IBWe}}TTLxL=BTGGVb39Zfw3Kue=G6!0daAlnkvgP< z$r<6ai+d50=cqgo0Xe1?B?(ZFB%ti=Pboe%OHP(nsP?ZAvJuVpwnK><a+F$LJsd0} zw+%mVN7Xa}xL`Dm4u-Dd4!8VXaLlqt@XzI@vySR+)-X20_$V(#LIRq}cY3{wkzfT+ zK?cgKxMCL&Nlq7+`&2bre0;8BSmi$X^%wL2znS}+ng8bv>Jxff7h?wpb0cF%`u_wz zRITqf@c*>`do9HOTFcPZ#>Cw8zn0|o8UMZHU-qx1|5_3PVAqaCF-Q4psLZElN&^D` zkp0_|`gV3!#*UWeHnfIT=EgQobWXPa?X#6VX=Hz#IDW$ezrXJ<TM^H1+slA3@RR5o zSM~%5N$V$ElBP%zT&_+j9C&AcvNrw={;bz4o~!^JXpK`u=Fi7(k6v>lLyK4r*N$8* zZB<yId^14)hjaq-AY3iUJmb@p5EuzVX3Ku&wMBec<?$XH2~EoZkSoS?kBmY?BUH-> zZcuT&Bd+kUb^h7NIpoV^mqFbRIV)6qnu46E^rCmsYzh?P_;rt<>h`w*^xl@zgoXwH zfmuIQdx5Q{p+ni2q!`mPgNd#WoU|0TGF!1Cq;S_O>{+BW?O+xo@)&2@zM3UJ81*zq z)_MVmX3PV@8=~<z_hV2!dOdm91sassfv^1}^2^929${6u8)r+$by`*DT7<tZ)vWyB z5jt4Rf7#k&6n#h9L94LpDQ8x24BrlAlG~4Dvzw?2;9Y@xwKEhQw5Hw(F2*QJ0X24Q z#5dd@u;wq4A?N=aG{(<pU`btr0`mzPIuHN=-M@imVC>{%?BHbX^a-7zgR$}d1TS<X z#^(?4QZD}l?=PDb+am?ch!8wQcg78KT8OHxE&}gg>`$Oh0ntH&C*-mUYm#70X1_sx z;(0fcSyUkkMZ^oz%kR_q@qJ%I=V-Xc72%2+<<i~7`PVK6rGOb?G&3>{kfo5*2t<Ai z0|k1Hs8FiinWvmzZUkGZ?)W0de#v(HFUS*vww{*I^m(doMNY#Ce^WWj!1F_!u>Qd| z@gJinx$RvQdJYcc=O(RXDW>;7H%Cj(v`)d7vt(NkxwaT6%#AuMswoG0m@*^Y(oxKj zD0ZjDa#>r0fDzxIWOH9Fj?v2nH5M4;ohF;_<1%PM4uy0n$3BFnyaGU=3;B)4Rt#QT zN3|c(jo!pgBuLb_v-_r&-5+58-g`Z_R(YS?DGB$_z4!ZHgc16^_sW0lz0&W!r!zD$ z{ZFnt?W4WvFfRfYqYeHh%wIN3QO2_OGem>m;0L?SL~N_U&pznMBS<4A>Gt=<OOMY^ zRG!&b6y81V`|PJU$D1`2F7Ni%;@g^Rwl}Q-d>u)(WuBl>Lo%S7cGez(W;RrTLfa|_ zzpMmi!D2`PYXHsA3+fg$t~Q+&^2f?GuicO}w<MSdJmB^tXcn2X=;P{5ojE{Q6y3x} zecosuwpZELN#|X4MU&qL=DI5enGI(K8gg3ELOMZiCb07w_gb|&$xiN5SsC{BrUK6e ztO-sZK+8_s7h*`I=olDF-DI{94iA|&cg=O5JgVmoaA|Um^mfXMnT20k$rG9AUx_fz zd#ILkOYOGQfmYT=7R(_^r9{gOJ|szPpc)eDi7Vd)b0Q;6S^J`8Kn8=y8WpUolF1}j z*a2QvcVb)__g!V)dVNr{@Y}U2;RpG<ET)O(oGQ*YVtUkH+i-7Mps%GYo|C=k9@0MF z^7j(mb=*0X$lzm3hXL~C=toVX-=|eXm*U9vhiva5{|5NRl3$jdJt>#ylUQ&d002b) zMlNA9XB$gF8*^)YCtHVqg1f@7e5BVh4>)Y}C%E;ze_C&)5t}sum=5eKeuR+$K(FdO zHfvA}Kf|_AXmqoTcYwlNlHPnw{bUZC86Wrtw`2d4Jj4*M7%#8Z;6heT^cj6UO9E4w zz8<@6N)Wc7kneqf!;Y{qF7T`AKwjqgst8g*EZWY_Sl-PcGlK#HnsvqFSO>PPyE3&L zWR)Iy&rVEfEF!p1WZ+Dx7K*V+GiUAHh5$|=!MZ>oYc~s6@cVl7D0)^$&n3d{5~^p| zkwJAcKj^J5c*M_-rSEj)Z_H{NkCXH9$w@<XkAfsM;U`a$Yig&I;~@2J4Na}|YBqGo zbu~oa4dMf$s>MqL-AwQmpbb>=4YwTPVFq;RSTk^)2#51-6SdTaW7Ve-t>e3sVRNzj zSp2FGRfxZ`1+Rf5Gg`~mv0bblWgLzd@pj4R{Zd?GTqnKiH-Wh<2-GPuhq**{>$YMK zhIc@yVG5H8vfL<-tJ_;#JQ@JT_iQ<IHO0hc)_%%SBje@rpZ~>JhpE4!lfStqsOwA% zEO=o>in@9sS2FieXh2oQQMj3{^brU=nNb8+;kmB`LmY8o^sPSHCv@Lz9`wW(l@$Ge zUrKho4*51|sk~rW+gUw+0uJXnU4+4JVw#ez)@LA^Yb>fWZt$VD$;oss1G&BY3X&Re zwhv|&gUkB^42j>M*wc_q)K8mKR)IhU)p#0wWWw<}{mJf*(gV-|T*8`yP$TPoY|3Dx z<t?NueE|-<>TfU1^>3ArPzzok|2$@_K93pdfAc~^2YnMKa~o49S7Uuk$Nv?aiBKbV z%|6eXxrjgA@Gq;QIA*iPfWWil`=K9;<7NK~5Y*$UtYWR6Q(aOXgjb%(7}2CT*hQts z=PMm;kA2Mk<mcne$)U?ehL#Uc{%#Tn^K@GWrJQo{eY!!6XW)3hVRXx<C;|S_lRS2i zIgr5m=eA{LNkAb7@*SDQieMtVF}YBjDWtUE8>Oqg@Gl|-*3DKGFciakW((xy<4hsb zX-QB5Ic^;PI*O^ZZ>sz3s(ZfqbN-0RWO+{2l@E+N-s4a8vGphzXCjXWT7c{cUvZ@3 z!G<JwJ8fOL-Yd$|MW}aIK{vlB!41}h@qsWKD(B~t&NTZV_3TE1F1Y1)Y2GtIVQ3B! zbh;d0cBB_Jl#F<cnQ5QW;T*@MsO))8MXg%!W-w{o_!O*X$<9MrSU4X7)P+6PKAy6w z_FC2bs`c`qU}0=dg{;FAj%S$3Bb0Qx1u~pFDWSmgIk!y*;~B8)1nS~N<8SP;^#xu5 zO+|<Edr4fcgUs5K!$6r}luk3$OEaunqgR7pld-_|?xOjXP#fkde3^A~VFByIv&O0E zW43SDdUo=|<~XT7x{Y94ATPwQ(p+kBwYY%Jr$p8DxW}M0e{|Byl636-Ru@{*e==RR zD8c8y9p`>>%=q|IZ|Z(J&;KvSv9-3gwfVnP-J?LlZ^zlJ{nK&&vNExP7JULRqD!n# zaJ?%e@*chdXy$0Sr;TOu;qf#5y@r&L`&e6@hAD|wg;kIErDY3*hEB=UUXg)WJ%Xe+ z&cjFLifY9X4;`awI=mH|BRyJdcA!(hfa0l6zKF)U2<5=mQt!zlFhsfVX@^%oT7Yra zIS|YO$2xAGo=vJ%CFkO6(uNJ9DHQ-v8AkaN*$aP7Zj7-sDmQb7rbe37@RG27AL#&t z)9T6g?Ppesv!2o4PZXHnk@h(U^~pv%_SuOpN(sqZ3QV!tx!9h+qp8QSfhA2XlfQ+5 zH=Lx}%DzTZc2s&-QS179SN{kKx0KNZiJw8?@iYG>{{N=qKcm7i+S>1^00=nrJLEsF z{JE<g$}*PNj0hdrZ}?yic0kd&YI7(C2}N}Ki3PlY2>T1=YUSmOv*k@icU`UpzeY{@ z>1NCunA0CwE~BFLB<a{QMyc8M3E0tw@~@AMHj?%HX4AD}tL9uaA@89*0)bUxDZw#0 zAB=M8VxjL4N;jf;gk|witR#gge$-+uLLAMn=4JP`8ldgM@1N;If!c?Kn1DM-XT;u^ zTxqy$B{DBkH8a66S2<)034j0suNH2~HR_l#1yIidCL*w4;byGo2;dvEUWY}`=s$FF zMTtkrUODmrX^4NUK{U^$mW|%DbGvUTw`M=8@mmt_%~XYQ;8{=Ss<{Akh$XY70!Vjv z#={**4rp@9p7Sia#m~6>WCR&juqU-n+)wv{RJM;z20Dnnid^eHIH&5iH^6ojDmT;C zGbT1yAj{dx=XdYtS7Xx~`^I=VJ-H$Hws%bvMEn|j!>NwUVG!;hHkGw1hF-%?u|$C) zOuGpnj&q*mcJCnUgL-^?h8WZqfq%9@i*2cXGR|s(QtTE3{YB$>=Npu(x7JTVPFxXU zua`A92Y5x3;;=Vwdhw8!YAR~v#~2xk%C2p=u&SIcG_T%VnI{&OOWKZsaAZ8?pI9m@ znD#^?Mk{Btlxgc84@GW4%ldKA8}+8yW3I?EYlJd9Y}njK%q^0h>Q2*nO2igkY9ewy zNo}M3t%+S$y6FU!yJlTi^z*uQFVWRxbU9ASeM=E4B#jldLI7zqQ`xc6&O(nsGQHbx ztO`qY`)<mu_Q!l;upeofT6Qa{ZRPu0j@e~An{{(GP@7gzd=up(qY#MLL}JJQ5UOYN zyo$iQ(Q<;!*vH@dZ=~3m(lwq_waPb?z95W+#-;|Hrh20(y@(&M|LyoIpZQ@rW3qPP z=W%lL`NI4+$2YOI`o9hjCxbiOKe7s9xj)_gFRK#62p7NrBl;-O5&-HLQkj%0@2Y$c zM1~P+fn-GfW5`x<Cik@N{dJ3W9XMK=L0kg@Et;4KhvdW%pef$-xmw*Zz7yz(K$6T- zGnI(4AW6VgOlJX70bryjo&V;GG>hTk{1C&dad&<47e}GTpjG9|;LAMJUddCYWrf%@ z431r8upU@CwPDRwd`^-sg$Qtu$|@Kn+!8Sb%kZD>7OnBsgX!>p|NdStEIBnVccnlm z0Dvtl005kS{r$H3)+Xj||784oq=h%K_5vV()}LFz;PR)9($KM86GQWckNsc}#E%C{ zrXekvgVjT6%q-AV4_m6mrU~bZ9M0un<?M3^PHu?!b?JGLl`G;sZH{N4g){k!?{U2h zzrR0Snm%3A!#Zl%DL0$n^PPsWo=NxZ@tN7rhd)#@*XUe?C_$UkFW`$7dWo5|zA;rn zswF+saeHadR3T!Nr4b{_QiDe~udJJjYGd-fRAOoUli%ybhP<?OMc^n?lH0GGK(^iS zVXhH1;cL%QrWKU;fGg+xcZl>%9|?&B$kXcuFJjsY^)Mwa(NbH=Ge^?H8{NXZ`Vy*4 zb&7mFYCc~YkM!eJcLm9x{iiLXIa8K^Nh%c+{_q@0>IpYt#O)y1`ZW{%mT5clr@2qb zedZjcSrQcvhlS`3QW+u*jcl@X!;L*c$xyCtd`oz}-v>RiC^+d=iLBKbGy=cNdG6$u zKxK8OQm(k<qpd!BH0*^!ON0$&HfMs-yIF?pqJ6Uu)hSAzkpQP(n6}$=+i`dn$em;& z%>5cYtQf2RG_g{zR^>z-C7LBHcAh5{64Q(uWV>^#$ahjp8AM}ksBY#bLM4IQOlxj2 zG-6>HJ$)$lQeSGFhvQ(WI-2LZ3SVocH=>9x`twI`Qm8vs2Mkz>d{R{edT1*nV{zNz z`<}%7EX_PPBVIdZm*>aD&nEKAO>uDT3oZ7f81{<6V)CqJvk+fuswnZT9H@dBQmyUQ zT_%m@XwSYcO*=_-_t?c=<-AGeNF~(Hmbvc*$#h%S*M&2>V?rO~>Q-e0OZ*-`;^Ga_ zEmDo32Z0^3rgmHtf=hoWM<Exogkc%6`VtlP!(wsgGLM?NDR9m!*cO@nxMCgNP_P+w ze+KYD2||&qATbO`aV((p1BQ|c^ZC~9bu3T*&{>j+0Wow;buF1u@IyYK6AfAhUbWGW zUZyq=J?<tR=ScU?{IPg8fx>N&$<?V{&{(*55JR*@s9P+Jq;{3aQq;KNI`OL=jG+k? z2X>|W;;@7e;*D;V<LHDw5YwD8_e~dJE8vEZBsir%VHiM6F9^@*wlVlIMKJFp4y5Eg z+?Az*A9bJsyILrlAVSAV{w@;MXCZJvq2nVi_y|t`F}2zppV=0%Kx9D|$R&z3pd|RG z#SynJ$>5&Q)C>Vjy%G5&>WUp(hEO?6G*Wc^GyCq5!x{?Z4h@P9KdhTIuF9+h<tz7a zd+dleV0pViSlQbBFK&qezN`bTTV&<CUxD*MiNMEHo4WEdi7@h56O*9$iUZyCPR2%% z(iE|9%3m2tlUw|mS3ypO=C2+|D|sPOl|@OVFt4JCnc+`^SG{SdyO3^^a^!hp9Z3i( z!%>;72m!E+yO$GXvyVMBBGi_UK)>-|eek^3s1^H0n6{F|sd*hFpZ4B{(Qcb2KDBr& zUv&G$3|e-z3LHom3MQ1hN@u7@<x;bvHW+0_t|rv7smlb*K;0dF2|z1sDKDB<lQU-3 zrts<9E#6`zIjS)p>V#6ZZmHPLOz95{FQ9z5e(65wy5a5+%s^*r0mpN@;NgH|Uig|L z7wt$2?jeWZ5({bM`ogQfbR8Z>ORb!+)_vN_zHTjW%6u|_uP68Y&M*+Y_yk-4Dz}#_ z4(L=E$WdOtW+)p&{#ES=fM^8UaSFVrkA#)u&}|!+AoQ_cPz1V0sS;19j77QTLfizS zyPQ7ojDf4tlln%hUN4cAEY~jg{8_~(B8Vs~9KGJU;foAgB1k5zN%vYF)qeOlyD{KG zVQ2D3D@F5}da4$XV-m4Eo;2Q~4+CoWNMR2r)^L}Ru7(cVN`c;b>qdxSw|QfN{F!tQ zfkm3o^jI(1^||XGtTbqmQd5*WbTTHMO7U{qTJ<4=3GqX%kzIcLo^pUep#3pc1T%2` zXqrpu8{a@I4!rlL0{6|_K(F|Wk-azVEC^}%4D#6K4>sVMjwbG`zvTQ>4PJuUkw76I zkxo&`?G$M1c%KN--jAUnP36s(;(32Mf^46g5cjX5irddU0;UuiN@1-#lz0HgFmdYb zLw?<Z1lte&-gqAlrvVJm^lDamIFUCe+Hx5tr<zP5Pr^n@)RLIK@{o!=6iRF2)!z~h z+;vCB|J6NcEwrh)X04wnl&eI1J#PhGv<ypkJgIzoF0A3}vFJq;Hl?5-`?br7MS{D& z?w8aq`KCOqRZApsk%uRd)GDB<4DGF4k}vl_xM}L>aU$p1!q2H|g+v(GIm&TnKe!J3 zPh)8tA82kx`N{5B%B&YBLcR$zED*Qp!Qa|C8gUBw3k;{5BoGBsBQ<`LwuosWUI-3! zVhS_fl{_8)g&g8ov2Zb|91jr1z`T!?j&PqbCZ81w7iWQIvez$y1ZdlhxnniLT&*Er zb;e$(PnoIvk#`DjoU*l#>MLG|b+DxAs#eG{a?y@f^kSeyg%6v*@L)9DX9!hG4B7qD zr!;U76?yLHa=iZ4I^G5Uhr)WVr0lPF@G=6#5i~BWRl+EJsEaqv(;zn7!vSP;ESqh; z+C~!|tQg5P4P(FCj&S?6)YxSWwG*~rnjZsG*t!!|i=6WW%?h`8A!z99yKCNXF^KU( z8AsB{cCM{>=L{02tC~h!XtbpjMXz3TyfS!q8vX^xTY9ljU&~t}jQp=XdM%5EvHh$; z7cnrz0BaKKeQFCF)unrO9HICDxDVX(4`_6}Wx2APSlm2kj|;&Y+JcPMp5_u1OcBcb z6mfu+mjb|6(ijaL6oRJrXcf3UM!#`h43g9sW18CZxOL?O?jU1B-S<lg*cW}Rw~gmp z083v?3t!XvUQvisT(4Y%>euoky|p$v#d84pZusn}-<zoO&i!V=PWF5>iq=vV#X}Y( z<<Tz`a>|WcRjBZ5_V~S{b{(kY+p($gqRpsCi{~a>;~qN6BvKu^yfNGo3!usi_8wC+ z>Jr^X%G07g1r>>#3Eq^gFOBu6gEQ<Aut%Qv5ezH@@#s!N@4_OkiW~GVhW5dz>jkDI zz3?9_m0Cml;e(s+X;IH@FO_gxDBUX}xCUJM+i6wpFTdacegNZ>Mvp;*8?jwZ$bXZ} z*+n(wiH-F7a2Lu5DaQv*ra2?i_0UW5?Fof8I3F(k_ULjq=YqDK|CoRNxT`v0&2Y&C z&B$v}!aku^*4?pI2uyDed4w*<8Yu7325oBTWgX$`WslmadmNYOMIlB&pzsvu7QpYe zjIh&5JPulw*NuNo<0S=yZCn~w792aLi`Ec`pa7TQ%PeLb=xY?PX^^?c+8+gGyLg2* z^r+e~cm23nr2z{k19!TdxJ|Dbob%-s!cD)4k;HXwG77$YNw({Hb3`9zR6%$xVu77M z%gK4;YlTo*!{B%I&$Chjvwf}P7lW~+e!7F~R|%`&im02KUGs`d;W;X2)W&gPMvMSt ziM?IQJQ3k*YD*k?9e#ro{N%Y*tMBn7(6)@c2mN2eGHlSQX8d$aVc6`kBf&4>Ui3=K zsFA$5Fl=YDp-L0(uAwn@c_+2<g~Aay4{b41yBnZfTt%_QDR`pjo+rg#$TsntKV*@c zA@+gRQTy9NMQmsnkr?5>GCZjaeC4d4dKq|^(S7=lg2CRW!q5FtZ(Q=3+RA<QCjYhG zX=3YOYW%+nOnD0*zq>#3{eSA)zifrFf-N#5%(tT1_kh9<xNiVR@Jec8g)YjL#e{@` z>;10itSRfeMmo>;%g5HZKt0fMt}X^X-_NHwGcx5m@?#0Xd;p3vb<CcDUWPSrT9lBH z+{cXw#h+o5<K3pnzRJM<a$$3K{C0rRl--STd4OO5oK=?$#9|goIIXm3H+h5v3<iB> zKX$1X9(3TJNzP;3<!e1My$6W(2!i7o&m2vP=?^#&9fV~PhUMj?;m*WkV7EzpXT<f) zdKs9?d!tExrU_6?+y&n|#!PuHW2L2!mmvoE&`f-UTeo?VPYSQm(ndf4Vr}0mA>)!< z8sR+-bx%C_4KI0Ux=_r9#15~LbRTt{W?sxYvV;`Wi$WP<+LJ*ClA9tRNw*Hq{K4FL zQ>B;#DOaWXwy=H>l$h;H?E=<vLl5huUTja+DtR?x<O9aTemrjj22UgFg3S0XYt7~T zun;nGC~KlLQ)$PTPNLBh7NF2^Q=-#2*{B`>{){`VG;`k8p5Id9SaojVbkLMcUCFx7 zaevCfnM-Hph7}$9rT$sOqSx8PqIjLBsH+|D$Qi_DDOtU+!$Mo*SpK&34$kY|w7PpJ z7m0G|=#k}Q(57ybd$jKZeBJYRob;~kLuINnZ*or|@yCJCc63T$S9|(42VdSIdG?x8 zJ}f20c$7vQaLk!ewH+1%!oy#V-H^sKl`wnG418$Nv?C4&PHt%H_a~K9IfBX0-z|J7 zO-l9Os;Hb|Fx&|8<7d!C<Ozw#P8=9<2_gW5wdBJWyseXFh3!qqf4od5%0m;$k+q4p z;x2tOn!MoZ?yG)5Q0k&`Q^vF{JV2{7DVr$1Je@c*;ra@27+IvGe?(-uP&iI^dElJ~ zm{6$+qx_THy~r@08q1++5+(9Br5J|(g)`#~<nMIv4>FXH*P-`+rn+pO)wBOMGW>hd zOu4U${ExiX==8tIU>*HgG-E&zT|zyA`);%&GXe;;f$HHWfSwDofTaa|Gi+8+)ahL~ zFHf-n>$CaO+cLU}BvGe7)o8cHM2!P7QA$5;A${x(xLxbk&MP-82n8;iOwF)|_TWgN zF-ab&bQbcbz>`xi<9kF6(OkNuB$T_C6^4rihqHJU{mARXt2L`}(PD<imrVj2^BLMJ zj2yxRv6{%5mqwzu16B4};(E44O0XA)F{~2G?1x*ANA0$seEQ#S7v~(mzeV<C<CfPP z{>MPWAN4T#Jk$Zo&srEY8~^~;zo*5YhsHmX;?01q-(@g+q~YIXu)p?cLv77wj}757 zDfYq8!(Rm|i8G?7@GtT;9Mc63JAbL|;X_Rn8L^^JL@jY{k9hZlmy}d(UmJ70MUvVb z&*aSH#Ocb5Q%xH_4cEv;H5R(Lt-GxgfvTkO=Hw@S>&T0mbR3a1#ng}i_1sm4Fbo_m znWjuJdafhQ9lqc=Xz(R|G!q&9MNQm*3u5ZZ{=I?D<b-gUpW_y`+|)udVl7f~4>7Pg z&VX@uv2dQoc?PNEG|{0F+NLZ3cyC=UMQhYa6q7kwP1!!_25PM>_9^u?u8y_G*u%1{ z72S*`GA40ev6X`>KTARhPD;HOmNErD4|7b!IJ5+Xvt}8_tluI4_DQ$Ka34C{5;_k~ zZ#NBQdpBdoImwPn<HpE0LqnaAS>D*ScbdE?FfkG;`>a};>&_gY$)#o~lnaXBBberU zS>KEJgr%&sl$1+@2T%lMo$qQa+YNowJE^X6W+AW#fI%)24~A^QL3-qH(y&NxVp52q zYG^s7eaT#Q1QoA|Z2SRmx@Ck~7#-9j-+ggFaqZwU#wv8%+*SX}h2(;0<Q(vQ7??&s zA0wfT6fUCl#Y#_kOT`#$6&2Y$(HI-v3nk_cOD*$b=8Du&o$GjaE`&GAuTp^VA{3bi z2?7H1wlsFiMUWhA*D<HXeOb(!?(F;_wilN#&0db$o!oRjTy#}*o~PM6DpNP5rXCA* z9TzLQk5*NljZ3_1r`hNK=ehWhQUx`vfEG@X%;kQ9YfUK?J-T<7Pi?6twM-@2Stm0^ z(ooY1k*=rfvemKHXob^m)yt0?cw3iAt;^`HjEhrGuWIG+k-?S|=J<&F0$R8)LcL<2 zW7P&md(7T^Q?*`_Hw?7|(v=~$4e>D(X5<En-U+9vCbUy>rFpbLkPxmkI^#auO%S{H z%f~GLi;34UM+zrYTeKW@(+ZaZhn!O}<y^PX96%-dgzQ*i4#I1egiC#(k=^S<I03Tp z05b}IsVeu=MDZzf_qaN31$wa%g~B{&ho__8H}8kjvav=z6ZWw32&9lkbHj~JPe&1F zAs+rk(UK@+7k$u#UB_mY$ja8+D)qyqBX69B+|@0_^RSkzb|@<3e&U0}93)#<DtmOv zxI0|EOP7vZmHJH>HEfU6iToK0j+JREq5Q|bXBMnEqXxH}iPuoEh-V|V!ef`kEZ>M` zhe~-!^7&VitcwSx3O7K-o^8Mhy&ztYw85~W4kd4(>mN{=jnzen%F1}31X#)nLU6|_ zcyNC$qgPJjP7F_hRT*bAb|GP{zoE+;+Ode1X1g@CG^**qpYx~>$1`s$I1;XZ35CC< zv|d82Na;gee8fLy%-f;Ld+wd9(;i={YkLhPi$IMEf$uY~zfgxT7lq@_dmYEYCy#%o z544)*`uM8YdiGAtDCne3hmk0P`o01jj^i4RqKjpq6H-RDIHhYs(kG#i#z);H%-E5U z)1bcN5X7C^IwNFGjdY>KfQsqyy^LgCHR~|9uJz$k28nU2MouVyZ*XT1mbHYnH&Sr7 z641T)`z3Ju+}-6m&6NgvO?S_NXl~NjNTStceG1^XZ?IykfnAKd=WvZ`!}IEuQ9I^V zATHhLsx6lL_okG9vTWHG*W4@h(_2q@i<4#QD|k9vqw(ForkQ#UoHL(5M0_rQ6x$ex z3)UhzlXw%j`#z=Snsx|-^a^_l^K*JB>>}i0V~sJptoqFSR`H4qah(yTRZdRCACP22 z4<y)+d><xf4vheIAgno2)U($_nj!P<rkmDcS&`_Syh2<0Ib*Pk0AbLe&gZV3<#jYD zKEXYcaqDBC!rdVVxnGX!-Pm$A!~I|J!HHlxbv`cjr98>jS;6gK>>24_HdmOD!PH|) zRWHB=5(t7tmDwuMqF-Q>QK?0#;OF0^?Rt@{)|GxPXzOYA*rM|RXy|sWo9eskzZqs- z0tgAV0!+>Xm<K8hJ`x7Sx8(vhDX+qYW}Q~VJd_FZfMtZNjU^Y@dCC?>r@?eJYDTBG z6l3yzyN%xk@O~Z?So{G)R;H>S0F(w?P+*oi1BFvvn@AM-yu6{?v#~y_S$_poy@uYp z&7Pg}2K{%i{v!yPU_cJed@9#`$p10B^jo?9Zr4lO>KlDFOaB>=%oulm2PA*aKLgTV zc0g6ea_w^z<Bz_KmpLJ;Ibn(bM9G)jSOLQ0!lnk68#>){s@EN5%3qgRD+{AiLh%ps zY9s`f;+GxnxBB#Y#xnVAGhsR9eq!dCQ-^g^i`EF=CQSvFQsz|O<gKmLn9?gg!Y{;B zv|vo}W${4we^O(^;^N^?nRa1V@oC|l5z+mqK~w;jd%T2mBHffrLoW?U)*SjUG97sE zYs^zM=~L*@@K$#`tTT|Mya1xZ5wf(b=5~@@I0B4Pw=AD>>>rxjxz(^^bQb@1DP~ZE z75owqc8-O+Oh$exNOB}af=|Wc9~~`hkw8o#VWj}qt|YjM;kz4=Ns34be}^7=1xh4W zX@S%Im^j97wwt0z<+eVrRH&$eWbwrX6I&o0S5^gG#8`sO{AZ6x>PSA!V5glM_DqNY zt|)ZHIqo6?P1q`*<k85qOx;S|J`YCYTwby1*>t*yXBAuUcG5MV=tNDJ2mR8Q9SQ;E z$rqB4nB&3eFMhxVL%WLJPreuV;#}B;CZi>@2_>_(!FA-}xv3>?qtD$yP0OGU3bAXI zsKJ(6h^R}uY)l2z90Pqhns;BCFRB$~z6ZKH$6N*LF%7I4g`t2-=k*b}<VZ%<?#@|y zJX#Sw#+wax-gcA})D4PNy^>IopT_)1bS_tiKLxU^MR4NI20R`<GxpOyFqj`LRxpGn zwWwWKk$`WnpErWX7Il}4s-+Q54<wmL;nc%e`l$7v>*c<C??AIIzNNb@xhbX6O4hD& z!=~r7F>d3NJGf$TuFa=iGN3}V&7GYnm1V`{6SO79^&A1kVn+$k?Up?XT~~cPqG6{& zf>FVe6og-9k!}>Wh|eA65%i`zc`78}s!`Ph4f=M)=t^mi|B{iH_70}ry-*Dw(z$hc zUBd5EXH}K0RSgQ=Sr?bDF@<%1B7`HB19|#%Vw?Urbo@DI5SiK?EI7*V`|%$$On<0c zB@>g{@K53_e~!42|Eqd)GBD6Lv~;%n94z>Esk{BH<G0jJ()*J+e_3lK8QafERo=SU z_Yj3g0cybv7k-gA4>Q1AJb6UBve<(t@+g&|=(ieks(xG3K}i?tZIh{?jGydN5pt?F zuwcuhH;fH{dBERkhEa5g^XUp1e;s=bx;FbCAy1k{tU&>ZRUUL>SHoe!2=XDw7f1Qg z`p@RF){29!3TceFq2)z}k-G!ItmZ_4Xh<Ss+=@r(Db<O>S7IFt6sBQMxQkeoSY8jf zuRC`52Uq1LkqSZm_>tq=WM@fj?QAq}JIlB2NwLjNLm!@(IyGp5n58EV#M!ld-I_Zh z(lEm&3d3V1qdrHoo_nd!TS(bP`7XIc=RQjFk+8Z?@|abnN<TM=^qea;@-Fb4Nl}%2 z37053j*@1}$aj|y*Uk$%L^r@@%$cQd)CUQl7mf`R2hv+UK?>T*UatUGTaR#e`;|&( z(zMW0Q|@$r5=wX+W~!j{)Y>i>556LjmEPE+mmvWK8&3I~lgRzojz-3A`?U6-I=2i@ zqEQOzUYvfFV%+DN;PR71J&}uu(hB>P9k-Q9KwjaxvWo<U=d|K72ir}Eiu;Q8E_xgw z!JE|0A0x@}a;=gR(7M1>*Mue7k4W|(s?B5cS$Upw`8^V_B(ewgwI&BV>SxO<Y}{pW zazrs1x~}zf+qbY0E~YZ@h2og-d{a~hQ~SX44&s;vp><-W9Y@p9I$<>;Fkt~^_+T8I zBk|WjFSy)%0-=@G3J1TQkxFy|xkL}RJfFU6yk^zY*ooSW$en;QH7Yzf8v!2WCnTYe ze1QT#((xBR<-(Fo@=CbV{~USt8{8N}j9a|2uumurhcFgZubDiRaPG^KYcZ%l9`Fzr z+bCZegB5LRu|{%G(Y8rF!~gGCK{S)3e)H+_?ce|a*#E=jt;`Mn86aTec7F$m^2$Hm zd?4gc+o2+3yT$<10Y2<Q5G%}1AaeogA+hL05ewUwZX+&OW2Tis0~Vi2gYmE>F4>r1 z(i43@f;KV~^GG4L4ZNbLR*@i>5TuBW6Em1UlEIq^jbgJ_I@`D#v&QbBxC>s(4#)!* z`vBo-u6c(5;csaVRl$11i&Fx6e5Fhph?Pso>bb@lC0-2mEk?Y13M88mt+9*LGJ2cU zQv!UA4W#xPSO!*1wPSsf7F*eTMc%U24@{F}g=E)Af>ym5(5;l&r-C4*ycl{pyXn$h zck7ad(Y{=<3^3&cg=!ptGS!GP%G#f#>*-V!@pk}8a6bnyN=4YhCY@;2v4ES!u~Vxx z!MeW!R`{#%XiCLYZP)IxVpv04?23?rD`8WG<D>QYt;?CE`e@|(fG%QI<(^0K<OTSG zx$eIom-2VP{MxODEvG=k<PyI~v_+>S(iCZYBUfIFuLK>u9ji_<7Oh_V1qV$lv&e=# z%fb_)^fF1~Aq;;@P821Ms_BHo`{UX(5%|m4(EWBekDgRP(N(iX<vm)#qjdnTDc(l* zkP1eY+xScQ0Uo$*+2Ovg+m3eN-FgAMG;e9{APz3ON`FC0);FOckcaUrx_;_OIZOzs zWJy~+4=UyByBy&Oq3tE#=$2@v2KD|^`$-e3FZr~GV2;3bd`n7c7f77~c&afGDfhv1 zAYeu%MZc^JXx~O7EU1%(WG4)m`o_txWUwk)+m0&v*S)+o?k{5^?r*PVNJqa<xl#rk zSxDa^a7J`ZApq-<P^ugn;DYw9=Mt7Ee%QZvXFWg3<;1sP3~sbUoNZ9=@olCC&;gAO zepjwB17>~mp-gQiMu9Wd6C)8}r%2nfLC7pKmzjQcgwi?`A5bd#%5CPps>+tC%Bn)y zbIr{v9Y@HXNWuAak|=$n5U&#bHoEMor|fd;(OIXO<tshk&jLAkJ4c(AmgJ?&)-V_z zb9{6_8e_LFf+^Y}FQ>KNSf_3|2o}81BaX-?f6+Bw(*HM|mQ320uRf`Sj}8Dp_&@06 z>|}0b?qqK4_)k(z^X>m8Rp-K=WcrI-9qL-P*e$5vK6~Tc4fwUt!?l^#K;_j`dR1A2 zX6s<5My{_cIVK!PWta|94m4#YAD&&plXi6RNFcO%=o$Mh*V=s9%*AKu6%H+>u&#>K z$zwu1J`Zo0Q|xDRx27;%N-p_NwFt>GMG1urb9N4_=<g(297>*z#COtECWV@)c~nm} z-}#U6=^S*Iv+K8v6{<%i4kV;YlNN&X)*5`Jb)YIhw9NIVlxS$QZk+lY^1rw|A66;I z<*GrJV@7n2<3?(o(o&x~om(5v*3g=d7m#|U&dMG#!Cu&>+t&_aTVP*5-tx)p+P1r? z@cBH5q;HR{9`{#TrW{vrZL8pXZy55-#?|nOH9ymBTqqhoQ*(dTO$FaAC`-6PN|Cf* z!X>61FWcGF@#)rgZhxbE70~s}hvhgtJ70U=*ht(s9IpVa<31I^d<)-ml1Z)u*PS=$ zwURTOM=acA)2FBx<7v=0&#kDYvtxemHWqC1$BXW-Mj<DASGo1~Ph1>?Ab~NDR>%u7 z<_{tLW#W@QWwLRz>)iC_7>P%!tg}LAgTESy*ScfCWoTMnh}OJ1sZ{^73O=(7j!83q z<!%9QB!*d4N`)J-<f0%w!0Ca?=4y!3lebTGxg{GMQHHFu;FlRsUfzjA81_-S!a>Al z{2H5(^0kobYN*+`e^PxtsvKxp#c<w4^%ELIUIDT&H2C4KCx^wChepOJG79L~=4Q7Q zOo^My!h6WE&ZUO3SWIXmfw<h=Z=suDE2xD56(XkNa?2g`aScvFO+p%PuZ||a=F>s0 zeneI$LpA&Uj2I9#RWgh*eh<`m_Z0#Hiu0GkFfx_I-qEZ%sqIGXC-pN2NxXzypn2_- zQL9b<1s-Q7VW|0rU{@K2T+0Kze$Oh;NbWQjI2^NWw|7aO^I)9Jczpz8d+P@^wzRE? zuv-Wb8reva&BAF*gd9O*1rEvYI)IWy<F`3%qH5n%lxT@;MM6e{j!WE2I@WsjOs2}W zThZjbm&fwp`hx7bHfEHE00$%g9ec)v)h`lBs}zQm%ZmQla5o7IzAL?^OWWB5@TlC5 zBrKB?5Q@<^@_>3q3B4DEMq2-_#d&=JCFO#&{wmdhmWq8@xF7clXLu_@<Eg=XoY}~r zHhIy!?hBNLR8unq$X7yR(nN;ls}HInNL@UHSsl3)QZ<eKMd}zB8O`7*C!Mk=T&sft zn`&KXT^ROh2pF~k4~%klrj1Amwoud?vuZVn=rauqo7$dEO(J)@l%8xHOq-`=8>1Cf zSQqU9@zY$uA0%zEihTR44oa-pQTWU?<!aRaIjPim8dr;KBg>bWy=}W&Mw9J6C84pu zl(&EQX$E~1pQ#BVB2hs%_$x2E^Yv^c?m_0%Qi9_qqpO-_BhJDyV-D3Wy{?C(U$flF z1tb|^kL%vR+%xMNw5HcK<+cwrvr6$;BbkZIyGXy4PJhV}-_{R&1_2qc@sBT-9dacx z)k+IXE~?mBwvDWSAcD`B*|o(6!EMcpyc|@NI*)Gj0D#`3Xm-;dV+<ufH{X>TV!C)> z%?FJQsUG2Hk@<L%qfLUv&2*In53a7;63l8x4VCSC*cjp4+=^F0@lWzXsBo)->UA`~ zlEqhW!SWnM|8B&_-_pUC_LgUPaOfjl=^m!FgFmEpD<>yMulX9hd8Bn>41gnQF+J#y zK=56iWmJRuArI9Pv7fCn&F2N1e&B7tD4w#7oXzEOB|AI&Azk$Ay-xb;3~3?N#UW}_ zkvbQ#@K{hb1~7DMsN%~-9}()z>F6|^kxpkJAk3Sj5V>T`vHAswr*BQ9Y1)(<(E9P7 zKrVj~k>&9SO-1GmXi(vs(AJfw*_^wWGzRIEV^et+O+g<jGQIr?p1E5e0|3>&K`x^v z%+VyV4!nX}@-#^bNQ>kga-=DT52FW#l8zZNNmeecv^hy1L>`V$q!268c<gPcVQAhr zvl9bXSYPEH!BAX}Er2BRp2EwA0u_4gHBV_n%ZM^-28#wG$;B|vX}AV^tkDYt*)@el zL?_60*t3@z%VDu28&6*jLR-oYZ4P+Qbh>!`S{3f^nZ)<BIq(gxQB(I58DlY*e9{zZ z41{|VAu`&zV^WY3HPo<e?&S<!GZ3(JOO%|(UDrY;`lWTZ97S(0*JQoj2W_v-W{Cqf zb?#7_$1aGFoknKNeU}+8?@f<1EM^~S*kvIWi0aYz(Hpd0l9dh4Ec%Ha=Dz~vegW@^ zUGaImhG+J#1?tTP9GDt{EO5RM5xKRRV4<@JE9iWTIBw_KD!>^?e*INb#hFb)7!RWJ zqvD~H(G9VNXgWI|OL&FW6+&q8w0A%eYL@8UfDO$kHU$FdHKbBQV~&PGo8h*cX*F!# zr<TyLugzbk8!uNT6?P|U#Z}l^(CF)exaf0?`8tO64-+BrQKL<rf*v3u7+RDauRUvu zphu~qx%yX4JJza><$|Pi7VnE`{jIYlT{Io69icj&SFx@i?^(L~y-DtLZ!BlnJl|iy zH=)0?DPf!$a{hY2gT}&+X_ykb#Cs>z`-0L}6wrp?<&#JgwF$xMyTI$h??ODb4*1Rx zkH2k;A1tpC6$A_j&QHgdQ!tx1d8FZYP-(g9g%kZH(T~==B|iAHj>@6)S?ap~nsa8; zdHz)aI?3kk6nr|~gaQ^MjJ*2`Y(cNPZST#wz#Q@$`hQD`=B1X&p-+V_j`Jxi{!LOy z+KB608%x@l*wVTE_Z74-{lnjaVvBg>cVA)Q?N4EGp0;7L%78L-Nq&x79turn4ZD>? zC2yYY!g_A92AsMLVi^{N)I=rJ{<<4T=4=I?5zLByR}^;c813`(&6}a(@d`(L8<Lc= z$mkg65)4kDzZhG(xA6Ao<0CyZcmYg2Y$S!?mk{}%`uEoXKb4TS89aejV$k*d6#-Ue z^_|djeL0KM93B=t`I2jm?qM%_^no9TrnV7YVTO(%Ub4rEEz0cWu}8$e>(!2qx8(l3 zK_9@nC=aQXpz2x(ACSYbNn>iH2Az@tfM0{=Td?M73N9P?2se+s5QN8Fd^=u-rdgSz zSQA<eg?r(BqE@_A);8<5iGBz$z12Nu4xZx5`9a|y9KthL_PjCg_#DtUKjHkakb0Ay z{;0(9MF9VNCMY${cu9g)i>rr?y2DNKAh^0Ha%TAl`PDRIzfnd5b|x#vxyd|cF}Dtr zkawjEpAyWMwUus+;83NbaI!R`G`jM7W0!@V+Z#FX)sx#Dh1<JocTIlFyz&*$-m)Tc znYqdWwUQq);A8EYqF9qSH34Vzmb2Xlv|6P%3S;*krXZ#KWhdZs?F&+-J%{RKZ_D3# zQ(!T-6q0pt*kT~}yD%R<iUOJrwC^}L{O2HSA%MN(lXhE3ie0Mv*z`ky&Z-@&^V#&p zfzEz7e%`0i9|AgScC1cd(<cWyD{!oyW797NI;(fAu4B_T1v)EttiEN_{|R)~?pPhc zrjHJEw#(n0-PL9$Q)NH1l}8~qzMK9P!|5*mLw3n+?6lQ<asou>QB`-rGRY&Mam?<d zDhD;`<n{EmWNj-i@tkNlHmH|6KVwu>ojPf4e^dIHDyDE1Ri&+Qw=8x;(L1mgA%US` z`YmEa=9;KHX?Nn*rpR^WYl%yV?$YARmu?$MZyCzEIQP!?B74L|sl8xKc4W5+jS`z0 z>7`^Byz}zPvMve_n`gQ1|LE8MQT1fU-<Li8Y)^9kuYUdCJW-dC{-^flgFpIBm20U# zsqz<PyyJVKR|Q~#FD2Ro3VCTHK&_k3L0Nfes@Ejs5hnB>IY?wNoSBd(IOH|&H%=u9 zx}_xPKCi!+esp<*E9EPtC8@@;U@4YVZ=F5{#-~jxAiteI`gU=v7nTS+#9~3ql~HKY z7T@B}cmW42RaGJ|e)GhRKHdMGP(jG#J`Pad102ccb3M;CZSaoctcOyB!qa<H6Hx>C zwbNCweB1>ka+Pt+j!kQvo8^E>5``@tua%)9++tW#fjmz~e!>i-K|XJxRTw5MPhr*o z0$9`7?padU)4mO$(x&L=ix1w+rSXp$DCd^Xxl4jyk)Gc+h;R{3p+O^vN?s9uuD>>U z62$cgSlD4;XEi&v+3oi2gduC==KUOE|0%~Uxb0G;49N~+EaDGo*Bw`_j1~nHGfy-` zFi-ym?QAjF<>;($TP<JSnoi$io#wZaud)jf@Ka8hLt<5>=F6{B2m49R2KV&kbf#Nh z0@Tr+^E=Z+L8?oHW_1cYH&3HRCjtj03ya{&yq=-!g`V*OY98N8JuCfjJ{I9>{1AD$ zXG#Js16O-vB7YxoXsK4MNvW!`VSiv;7Rl7F#H3Y_V31Yj)JX+<;9ap#=p4`BAx*F+ zd9i?m=q=G?p1CV*fI%fLADge#tF5CPb+SMIzMl*M@W(|Xoiz?6wog~$gZ&>xbaNY* z|Mxpaq38a;uZq0e|LIbHxmJ?ege<W*0v|on<uqeR_3U!FV4MMXY@|MWnaDNNFrgsz ze0Iro{n2r@)1z;eFr0fLj>D)DiETW&q>4<;hf7^VoWR9NRp(0;+p8xy`y!~Z2~mZ2 zb>WK&nDNB>W|r;#<>R9+j`k8(`)~!af>bYc8X6EwqMpCJ?y`0u5QIwjoNGdcqdgbi zhHgii_J@<~lfq-XUZDMh<o;wb(K3|Jz&u#JOwKpgX@AAC(^(b{Sa*UPr8*)6xMxwY zK`^s!!B$L=od($Ktc=%eg6Xto9z;@!y@9YX41sJkHt9m*f}HPQ?udRvWW?wR@Dr7O z;D|gBqE4(~_OW1KjY0VLZF{OA8zPcST(a-ads|x{FRxQZEE04tV{-!pm{qcSJ!~sE z+!wa-u<<iX)U|w!G$Sv=)kLR`tff#4<Khm<97|<O&Ee>U-XOWskyCr(_yQ&%gKtl) zc#n+P(0;gmB5-&;?xDx7n06;?4`$SrK#4?2fF_Hy612coCSagm8z5L`!6#`PFW;En zFHRJdjrs%G2-n#$0Pfj>s~4M3TdS(b`M>@mfLd__aEGI0ml&gxNsjFtXA({D3rVYi z!(#SQ0$+2ErLJgNA#d8!)iHdaa3gFO<VjS-bb&M!)xhh9j3~;o<1w1eMZXo=Wf2PY zin^0tcc#<&&J}jVLTUlyWGA-5Bv*ZfK%q!aMdE$Cr`4KH+}Ez9F~unF#UMT=W+5Ay zy13j7wlT-?uI@O_YjNW?3xhBKMA=Rws8_n5hy{E|sqD7|bYN4nPySS(EI3Z-?f<1j zFmH4=V6`BKg&FSJSG&0gIW1Jwq{}Vdvo2d*+^JJa*Exop#xf!*ui!h55~mR1lBSh# z4KdTfK_U{?8X;E<RtYQMmpL<;lj#O`R}0GoQE26qqMH?_cGPDk0clyVmU7nTZ%cGD zoAKWM727Be_nw;N^vO3h$=RdplGZEGElwTt`i}Crz_$CF9ND(%x6KP@2va7hHMr@5 zT-rF4SM*Iy?7y&Re#Tmge_x%k2Co)<hML_0hwjqpM0%ab1)P15r_x4UbmCQ>C6psm zjH-ZXr`mKF!xo@CN5hPb4ki)`1%&o<zf%_gt|&>ODwAIj;Hs!@BPNoSK{0@*8RHM% z$F@AC7+$$T`B>+d(&=;W8>`8QRYK?G$_pZwfnvkYK5STwc>QWoqEboFR-BnN7tAeH z;`RY9aCj&9qkY9DoOxz8UaMT1g(1a!I$}`eM541>Cg8a^cV0UVo2SG}P$M>&vx{U} z`q`Izt{!-GaANUS>4c=;mK=C}6EUo8Z8GU2Dp?<|Jg(c`Zr$jb-AFME8v~iP^}Xv^ zT2a{ww3Wz5V364ha>pTQW3~ctu9^X~WAWo~-6pKLe9fNhYbGdXNY<0M<Fa3e;&ERk z+9oR(xB4|Gol=KZy1H=+Phowj`F%&DOH+JoFZ*spq0`aT7r4|{oF%gw`yFa+s|!4| zYQoC$o5khTEj2XPl#TZC>jCGMn*nBG$i>0|69DSQ!y9)I4$RutX|y3jYW#XUJ3SKy z>GMQgXfG^3yp4to>6R;L;klTVC#T7k3Ke&Fo9_aA+lS52Z+=|~T|#+JnFBx9B7_$L zvfX?Kly~}!qjcN%=@%fZ3F{%LXwj>^U@^q2_h^>~)dHQjA%V>8oAem=Makgy=7z+c zIkCdkcG>Oye}Xw8vQDbI*bVen*vdP#9s>9Jm+5n_HmF4sy^64WkIG5n=LdRmEwT6U zx#a(EQGB7v(f`LEhg^ONW4wPC#V*RfZ-D+Y(7z@f{|@xfX@8!|e_0(x8QTm2ly>6( zhpu~!vLy-<L|wLR+cs~xZuypN+qP}nwr$(CZR6E+&&=xSnfD|2KAC5oUm1~kR^+!M z@9>q!i<A@?qBj(iIdm_}t;K77OHWvN`1XzPx8OBCKj@;Zgy9HS9*nmyX<RhCL8|2* zNw@)d#gT~UGbEwQu@0M^UP%4I!}Ir0<5;1REJ*Poj3RMz$upY?BxE?(fGOo4{N<WR zniRI?ozmity9Q)#P#xqHueo{WfgD_3`3kHDxT`izPG3x$IhxGZR2o>9GCvt-JOw-7 z?4KJodE#voj1Bo7yw}le+f8ogQ9uJ?S>O6p{sdU11(wu;l_{%J9^M1_M3#_saf(j5 zh~{$l6iRK63Q$YsT4HpVp2DgMh5;$}FFGtm9;P=p`d6Y6Twtl~`QWdlvGI|%qHzd@ zEM@q#p8?I~rw&UB;s{!zHlBq!Bd?8!h=@Z|XbVW1*=r6(wJGH>4gT$(m>Wr+W|X=B zGze&WEMV}SisxvLncvyaSp$}+7O)2+E040fQR3w&?jYEd8ciM0b#uU}A~V43cESxs zx!)6e*m2HTg^(rgi2mu8d2Q;Qj`25zFyC%ALK@SXckrg^Mz!rk@AZ|m<*_-wL?@lf z!Lz#fZ^4k?s{z*h8wg0hx9k7sB18%6{}~JlPQQ&G=p0=g|7+iYc=L<@hzOkC|BQ(L zHCH9d+ib9*1noRf!)=B%3+>C;&9i|%6NIVjl0<-SSjc0z<rZ0FM9^T7Sd9pHf5MS+ zUrl7Q0fNVl-e||4XrCXo{JeK&cIm#}Ho2xo5AQI3DHpmRf9g?d>Z0}!`@G%uv2dID zJB38lqJJHJ$T*@ZE3D1GRA~?$r>de$H3V)f@8@Me{WTjr!z!{uGj4O@!r0i|!8?A% zpSEA_(hZhi%!0$WCU+HPcXlqe<sZL+a>`e~Za!d0D?TvG)4s#F1xuJ~&BFb0(vf=A zI<*g4XYmi%BEn$<8d%7W^WrIim&qV&OlU8!t%dtGg&D!ouDWDaYlql3T>?CkWdF-K zvZH}tYq!sPdSh{#fP+Ajxu~qN6&c8J@bTzH8*9?FJ^MmG`3~()<+r1u@>IJ9wo^Up z?cm1I5yEw1d~ww-=<lKp^4ElFGR^y^dm{D^6?4szi$$7|-g*0m{QB^XwCbH@^Z72w z@Y=ELKfW`Qw=@}<iAKP7Gfqpc+g3UII2}Fhjr*}5oby7M$HL@)mwOPnvaU2n@a`tk zM|%F1ylB(a8@EZY4p;eR79Gf|R=!#Y{obTgV=Jn=_*FjKcvNtM<au;ufKDP>|M1IX z7fsH|(BK<b+%k(&7Jb|EtIJ{*$<LXc9>f_2Xoyo0Cn1bMnEf&PB6UR>Ec$R7GIeDb z$WxIgA&)^E{5ktNK?Nx%QS?Mq5tRc`|L3&VI#+Xc%Qtlmy@|Th6E#frd}k_zoiA?_ zGG)EKeO`uq7IJdSrYyL=ykzOL!&Tz4zL*Y+=)u^G#BI}R`d9KGEw)A1sxxNmT|JN^ zsJGD-y#Y5P5w)z{zKh?6UUH14pJ=2*Zm7(a@1E3$S+F(i^>5#&Z{B$UhZC2_E>=np zocoDqhoC)YYkRjiSeFmL|9PDpbbeJ>A_V|=efs}#oBumC6o1>H{P)aAj=K7f%;10< z|Bw0s?a6;;NSBsX!bWS{cX!X9JEg7dkS3>&wiQ}y1!nJ_$g42cFzOt|SP+RxIg$Z% zi>8#1o0Tm9aXC|8f~%+rC1QXt7GKc<Ko$Xlx38HJ%R4n?C-p;q-nZ|y9zL~EPmRm@ z&)bEB<~9DW8uEyppX-c6cG(>7hnJl0$DN&?w~zg+5B?s{pWD3y9W?kH?d?y!CRde9 zG+FeKV#*8rlnIs}nup?2I@yc{l$fUm$#5-)#14H8e(Lf8AU7UG1-fRDZdrIMQY?xO z{rR3ApQLur2iXYz@7CAH<72%$=O$Oz2j?e`(DpaGJ6oxXA-<_Ypzr3UP1<yQd7+}i zKZa{S<_)fiDGu^i=R-xN=o)dvm<m>T?XbI8Zt99wWEVGR8O?yITDtc#*9)3R;3Q?} zy+X<}1RFi3d?ou0n$|Hy{Hc?|LTQ;I+Z4uT4^~~Jhs_*WhTQ@4M<NBOCP?>aZ=er| zR?Bi^GmauVUq*MIvK1llH)u86+g+NT?P|1q-JLxhZr}Gq`z1c|tU5(+XdE>5ZrYiH zIuYZi%lWJH+k$f~NvlFm;|k%D*WDVOT8jiFonv$n&6|QtE{bhnSg&ghzh;1+_Y;hx z2h=SIK*MtIxsEmtQ?bk>`#7+CNP^CpQV|yQbWLALamlDIM1dk(q+{&RC88^FO+SVT zBuPfrNS-x33rWLjRgbh5H3|T4yHimqWV!q6bq}6?hu(U-$G5-h_4a!sWC(xT=e4kL zZx2}5iRmq;**ek^yWqE$0Vg`Cx;4ZZbi6KZnpTOhNONx@E}18@>dlJQKqrIbdKj{! zo0je4`L=&G0OidqFoypNc(O``yOEdnbI@I^=)RYsh<zLT=@t|zPXQpRyq~8QO3F>> zx6z|M?e46$8b7{TW^JdQA@pMjwxN%nalfaV#^Xe<!ap?@q9Y1GrpSy3{mLIswu?P~ z1{(0QKd-SbUBf;#GLmzhqoDrbJU-Nqen5m*)_K4jQ1DfSdj^?BIKC_(!&HSmj>Qvh z7wsz^c4TXdfe_3}JFEdyU=Z-5qz&N-F)8Lc$g3V=+{cms6$O&;k}@j(E6R_%S~m61 zQk(2S+K!Cm(+HZpT=L&6y*3Z2W3{9qJ8o5&+J~StlzaUJAr%h5qMO}z?o&RDV{cNd z#)_d^m6XIklr_{^sg{_1lQWf64-p1AOxSyKzo<EP1pnOQb%gmt1YedpQHmuPLAf5w zz-4xL6194Jz^nj5(uXrXQn<t%egCbx5y!7N_<Xn>V#S!3go^Ktg$uY#aJiJrGwB>d zz*$O6J(5nkJRa*{s67h`+TaZ8B<Qp0s48~BtTxQkzv3#^!S4O%p%wTe{VE^qL%Gia z80B4gY)vn522rq8<q0wI3b2%r<6>c~Y=Q01FlP0R=TKe1qP^-GhM#A?&t_2urz3yX ztZ+3|f-E{)Op!9+-=@m_s>Khf%%h?@s~MNUNGI}~fRVka$}gVdFr~17>`NZ=PAS8a zP$uK%H~r;aN#<!l^2sh3%PBt(3%PmQ<nj3l0wkEF{?J55-}&YeV&;)>T$qi+80UGL z@!pt%AzkEomuU%lj79m%YpSTm??S)~IfE|5;{ckkY3W4?i}f;f^ji8NoR?60<fIZF z3;?!^UZs3z6=RHU_kPCX_qw-%`%&xzMjPS<=DLC-(B2S;PdNE9*FOU$kkV77?xRWz zc($bS#Nq;e`d<KcEq)>-%Eb`4y@koM@zy0L=4eI~ieX^Z#TvSiLSnSKFQn4cBomI2 zQ8&k+Inkw~9XGZNm`dgg1|=|(w%#QwhdqqvRPK^f+{L9n3T-3|$z%=+em@@SaF#vx z2a4#d*Y@57^lGUq;_cc52&fv4uLpd(;4`TOgT^I_fDIIEMnO)@c0I3rgy`PE2B3ex z|7f5DWccEI5739ih4%|DB-GNfWk@}n>j$lQJ5ZgwFUcF6*5eI~Y9>X@-3zwY-*b4q z)Dhi3ARZz^`c|LK@K9DX@`X{sJ~ezq2iso|B6^LD?>76lDPI}wT`7&pD8?Wf=`JBZ z63Gn|T2jBtib~uS-KIyPHz?{ArlKSnMq-g#LC1N`j;S~4D!~IZ7bb1WgW-3=gjG&8 zG`_it{N02F)`0_g@gwx+9R`S;GQ~`gN;LB#_cm*AOa&bF;Jlb~@MRz_hbNXr5=|r& z9kEL_9Aig4)N%`c9hcg#Fcw~^tEy1%-X*NGK0x@lqRV<NQCh$HrC<otR`4?xUxrCL ziP0S7`l)yds-%oFT;3s3aTN!CJ5)VUz9os*_p;g3{6_dduo}mLs8J^!6!ofCiD#<8 z2UGDqpsFP2Pd{(f0N~Z%b2B7?gw)m=wF|{lrdMe~&Vx`B%=>ybXd=&?%3ckYi0F*r zUJX8=Vjm`)O%!}=v;mXIwN(wHmZEogNxi15kX(;-w2RNMIB1jT=fY<YxKu!>&s&8w z(wLmK=@og%qMWA6mn}HEV9vEig><QK;#ZhctwM^7ZlM?uD-{1%UDFjTOh`GijE6Uc zF1*T5Uj<Tn6Wq<<U!z*h6#{{LU7?SK$kHbhhL9o(f1qncQs$8;XUE}il1d#U=>UZa zd+uEk$4UMC!uV9XvR;TMu}czV#rM_hqEQ^aYRO+GHTm>y^WGc-(R-Q<fMI#9St>FY z)=kW+@-0xZq3r>r#uBv@1jiw#wQ(9NSxGsrUdxTek#Y)|nhwjZLJ!q3V^J-sUQ{#d zXA^su1X78X^_WJdCSx7c+3t>(bYbun95YC&t$*bRe^ZNUcaLEn)mYR+o@WbY=_MIG z2b>$d)1^GofSoZAiw`N{NmceiTEc_sS<g!Xkj<QSkoOeC5UXEMBRk+Y5o!-{_AE*t z)ik-r1E4<Ky8CGk#sP<vv3<%m{9eq8SP6|RrRvK5rM@2v>j7y$J*%x6c=)2K*iG-4 z{V}3rFt)1w<SGdmNM!~%h(!+G2g`3!)pZ}t8`Z&sGryP2YvRGdp&M~*NqD20;+ufV z`dBB5k23^pLUADqQ6y!7@K07)P0HZNOiZ4y$-BvMQP>N-aSsSr-euUiXl||dMGRsk z!V9>K?RZ8$co20x-E#9z#*3b^T7I{;HJ%s~F`mufJ&eu}HM+$*HfjUke=Py9zegP* zrCa!%6S{Quw9RaF4gFbAv8Uhf*{pjf@@)FFY1y?>GTsh$Le)F4DZJ6*&D}mHc3Ij* zFwMQu!tE`REtSTEPzAuRt6<515v9j}>w)Lqt_=|cAKmC${bQ2IJsocd1S4EDg7tZp zu9{}kb{4Z9?m1L~1WFS~sfKC#d6bjBkltLPyyt`=OnrhU)Q1?V4*7zCiU)X>WEImN z%DQL`Qi3+eD;4xb(A4`ht~j&l;Z4=Koy*S9t0dbPXU>$YpxuxWooJo@+O!r%3;_GX zXtmXM`3zU^A$rrRJP=Z+eBq+20o-q@0n7C&huRNA<8^x5EaN&iHopMJwYPp9UT(;~ zWLD}WQ)b>K!9TK0V?GMo>)H~6=MK!_9kd182S{?$s32qqFnpb^Dr65ZZjC)R%Yzvx z<OncmJvl3f3&1(hq}4z$kJ$_vCgcKe2(weJ&k`7dGIRh4%iheLNsR(`Mu<_P9TFGp zJYw$eB=qS>5!p$IP?N}V7@~W<XfyWY(e&^kVYo@iX;E{Pz&U3+)Mw8QEj=6tezne< zGZ^aNa9bpG{+NqS6g7Ic`-5eG^Qj}Kiht<@echLMRpu$BwNFduqubiIkk-wbgB5zC zcXqJB1C${<X5JUobB<wCjCJ}c-t!VK%E>=_<F7=ViGQ~BcLg~4cM4)ND8fJA32qU- zv4%y!ws!E%ozQI{Wm&ts!v2@9y>^f}+L3!x=D}|QBg|<AEJ9G;St>)M;nb-9Mkww! znBA7EjoC-)31FZRw?gAD`zkPirpTUvXxTr)H7V1J&djv&y3EJro|owDifzle?*FXF zy*kR9#*7J%h7%nBqN3_ZI<(6j(oteNHow9fUr?H>(npbO2A>nA>hOUI0_c!s9$1r6 z5rB@HR(Fq~4bL3PP+=a;6_>TMeBO2;?Cp)bIb}v}|CnLSx{@_IZBz5Xc`Kak%^mG< zP%{j3GKrk_2G6ml=}yG#>}~benn}!gTN=minl}!U8(+o0fb(rJdhf<G<4kgLW(So$ zb3oSU<i<Dz6KYa+Jxq)J<j0-Hj@y%n*{7t4wO`TsGu;uBWtGEdTY3HhRKXimx`6zL z3c;pBY`37<9Ry!5LyRMGZ6DD!@(NcEvAL<C?=S`;V4&F%1V@isj3dzM2*P!eEt*n$ z6)ieX%yI|Ab8tDTkJxg<6YX>b12AT_nz406`K?Ocr1U!CK}MPJSW+HNvX+k0y8SAA z57lZ^KUKQcobgg$S`(&*@|iAJC-d%uNv4@Jau3A>&45F?HjeRfAI2D_MD+r*=-sZE zC0wacD{3Fr%&@>!y0%qkbcU%%K9k7G4y6Wh;Ig56j1akJbPG6(ohDs05a#iMTD|Ed ziqc}pc+1gjue>gk!U%{Qfqeq}i~deiJWrJ`k*UbI^w@Li)NmdJv#GO|Q4a{;2tieb z$_$8}<sS{XRBCTYae^!jc@j(6)!@*A<35v!48!=Xf`1^Sr|qV}n{Gb{pSh(8XIY_y z(Qg9E_7OPo%2z!$h8mSFklFr2W=l?!3_nPs8Ii_R?^r*fEN1x_Wpjvj5%;8jbaR5L z`n&fbK9x{)H`Wc8I8Js3ZK4TP9t-%=c(nj~AG$e&;p%jN5zNjK?7hViy;l`wF=LH0 zbNf8l+k!p9@X1?xuoY!+o<(6%Tw<04*U-SzX?NL~V54vH=6bN|X0qE1LVo`!GZ0pC zbP{E7k`+M>xSqW|I*oMgol$0fm6Js6o!r76uh;s3OIFe7!zT?>!`rPBWOnlqWr%(~ z*}U@m-EM}<$i7%4%$7LIsBDz@KhY3`oHb%$l!dVZVU!h2ViA;`vH}s51x{j7lmoMZ zVHI6BUVGuXOg8u5fze<1E{iSv_Y+tApi{Y7fdtM>7_lVILRi7?fJr>DqU*`pK3JE@ z(Lcx-g<}+}rVBpbz$5?ilDaXu_{2LIWGoz>NwtF{hKr~HDjq83Ggx!FcrV9Oje3%M z`(E=vTgkVL2Y6!*TswR2=>gLEGrjZY0{9y7_Pf9bx*EPzthWjpfX35BfbX|b!*;#K zufNOvA@+LYda!PyeFdh#&IlHfdQ0H+Yy%=G?3^&{yXZ#?&H8Fe4CU#Obb|u7m2&Nz zB)y5D>h)$t_*Ak>%;01Z3A(T{`l>f>Yde*-n6?_33dkQME%FCIK|_fEgZqKGdC-<& z#T8C95L|Ym9HcE0CMC-bk_mEUn2AY{ZclF_o_}G1kgL1^9IF-2s<D^wO6Ebx^#?7{ z%HR*qX9oAUc3|!IRpxi9d90sLYqPXiXn@bhzn5=>)t-YgD_=ltXkXKtZLF>A=vetA zkGVK7u5J<8tRC<(#wh=bv1H#>bBo@FOlz!A6B|6TTG(|c{f)H<NX-$@S?pLy%YkJ> z&O9rnpHQ1Q!~shw5uSlK=9jLkP!r5#ILriB<Gmq48?AlL;FX)?wlEV+?H=k6<Qdvd z$CVTUX^Z&V@~?C4BG=}<q>l0zp>%2aky?N12ah3{4Z{Ie!}Juw4VVP>?gp@HphCmW z@0)X`-rE)SM$bzC^DhjLS=8FEZ=66;fa5>>$7p>Fv+c(>@6kOBvznO~nh)r~XAxhU z8Q=X3MH<svGT#xhJSiXw>++h`BE^|dx7@u&*6%l-JUJ~CSk`^1)?fG$l(^lp4N{8D z3MnW9e-ew{L7uLMa#a*fLSYv5ndKs*R47kjq)#sf4T<kFc{Kvyb2k<8#{<0IKZze{ zi$tvQf18(k51I)woD#|=Yf>sfdZBxUvu(h>mxk>fsY!GSngtCt^A8lPvMvqNq9pj# z!)V6FWs-EaCoGpx%Or_2JNKn!k4t$EDjEUoqStr~sr~WhE$Y@^hh7~E#)CUYBpZ(L zlPt;^0$3EOqv!-&D@(Q43{XtN@tsrFq7?2~RWRIFgsUPPt}P7Sr^B1K!`E!b${C=5 zq2Jg)&+&BwL-0UkC^|*veO<6=pnKu13ReXupgM~};f{EFhtO+Tw7iRl$&pq-9npcS ztTfaTl5HJ<zJ2=}P3wPMF8kmdA*1<Wvx~p`VUhCWz<BW5Ft{As@e$|$9(Kbp%@t)B zN@V}S9K`lk$saYS^DlM3Lg2uue<B6AETj33q98q9uKuc_5JJ0uF&XU-I~_dW-x(uV z=zD*su{5XkCm{k{z{+UGrD;sJw=CSo`zwO=IlREx@@6556L*AMv`XAR+=~GSN31sl z>tT3-rY~+GXE-N(iaqB?g%Zr$(U{V%U6JXMiQGOJrIvUsarG};2$?qU2#Wp)G-~%l zy{Lf&Qdy)whI9azm9J?Xkh6t+j>KqM-&-5r&Hx6walSG2iCa;zNpOSmEp5LGhfDTE z<vSYbjI=H8=?-U)L=2{s7zbsQ?xIAQzxLnTv#L|fP!LneD(VMxKR&TGiYiCiO2Mr% zHyPO?hu2zKWLz@}D<@ygfT|ORg20kdAzCiRsLZX7Ew{m<w7AJe@@bqT7G+y-lw|XL zJQ_gNlJfiA^32F_BSjv$xN))lD(@CUohBgz;O0aXmDXv!Pg^EJm6fZ!MC{Oy;v7@H zPl&d(2>FB(VSSedZHE8`40;Ly02f6xtghy`Ig2>Edyb0bsOX@<(5Vve{X1mViXBz@ z5nQzx;F-#qZv`{kxfcbE87^S<uUpM1;eZ0(XG?pRMv4vJdW@2Tb?xP50$NWzRR9){ z0(lwGA@e468l4V+oDr}QTJce0oAC$3-GT4lMBW8k5~q8GwL;`Jy%t!OZuM7_f!sb2 zGi#L=-Wju<MOJiAh+#OM>}E@O2Cu!8R`0!h0^u}UXIkT&IYda;W6f_vW3_)bh1<|v z(N_XKr&AAhdRzs}>@pP{*L&akTY#8i)046*aVOKplEvqA_mH+ehHLYXwgP-s^|JUd zwF0gVrT!40U>C(Y7D*rG$1?ky`RfK2mA5&1mwU16N&a}775fM6DEn?fYR+aiWQ>`@ z?z;32H+KWW=Dour9mR!i==Up0ZA&(@2eK`*wSTr=feh^BLX1<kaQs?=YM9r&n0Th! z27D=(e?C8pe3(<aXY@6|b9id5i%Q$MSB#p5O)9nKVZD6}x33BTKFm+{D0;Icul9>) z+vBQzGPn*uo^5M$`X(tS)!8BvEptN}x%(B@rtjPJpk{mMo;uqBM4Z2Rm)t83M)H_r zsXG~tuv82RH!?@qJOb5mi_GLv0T1KN7QvL|O5i{Ek2)geIK$P^Kb$IvLbfJ$!cM({ z1b(=R((2(~4Z6%)Vx%%MV{)g*`}}(}(;ynGb9JP|XeZf3`zBL10!p(Zroa6F9UUmf zPe$_1FI1E=(o57CJGTu6+l8UMSR0;Kc-FM4ZF)tJ?`6z+eGg|Tm7cWvBO*G}|7jkQ zOWATuezziNq%gaPwE3=)47{=#WNS#2=MRSfr7}4fz>K^U9A;kyHAzZ~#b`}uXUuSJ z5Bg!6>XkcEi)eRDZvCA(Yh|NGkg~P%?qNK)H>qB}8FR~PnLGp|DhOL@bB+GYR?s}t z1ku<!K|jU}zXk?`vok?T13N&ZVf3czOUB<%1Ik(*-?po`!R>BKD-!uef5!=u*H?*H zN}<+73x}l7*N{!vN)rYz?m5{LxKWG;mfu0O3x!W)YLw0b>^J!Wdk%Z%p`CA*XlQI} z*SE05hb;j$E*$ZoYO~8Wc3^j{DO!Y=k)Kqb4M>jna4Sdhz%j-f6tx-5NOcO3w??x{ zf_BL0dA}-X3*tAf6k@N4$<)>`_6kYO1qVBu4vtcM6q;Q&9Fwi)<NrteWOdho2XMy) z$?Rzpo}*Uyj;9~0xFQxwcy|y<7>$RGEm#IG7tG<rJ7_9#=8;+vKktNa;AB}7B(!rD zv-jBYN2sv-S`X%L4jpWqW7hzNOjTk{>^oP8-CB4AvAQZv)G~6&SB3h%6RZKp`?ghR z!PyUnjL#Cg@c9MC@B@numbS^JRu98)zb6o<p>DMXhR{U~Q;4ot*B^ii9UT`o_M%nu z5dZhHUEyy|CD9mf&NCk?{3B6xp&w@xAot@Yy<@o~6mFKV7KXi}N>rJ^zUS{c=_mhP z%_2jgl}(g10`WO<&$!PzA(rzvJ7WzZIRJ)$Q+w;f>Vu`B+fA%10MpbX{>q@gn*tsN zu4$o9aRyD4(`njJnQ4fkIlJ<_8xEN!wuxfcm9vz1TAZHvUHEN|g+7<@47N8q$HryV z!%(4zD!cUb_JLCT6sFp{`2-)?$#FXZsn<-H#^~^W?)rD+pi`1Y7ZOIVC+}h+9d7%m z%9Gi@Ebaq@H5Yo$Al{Am{FWcVcx{;V{Ct8IPLhUW*JGSP*+x)+O;tfW%;R~Eht!Na z0xlnM4VWMqqr1ufn)D}?D%BmVQfExi7E$0n(q!2gED;sd+GIu9yr?x|7>eJ44AlzM z_7BpME!vLstnj0puf@?$AxFKlAM^*NcOw_EonHHuB*<(8Fb<fUV<06x(ut?iw3(CS z95HSgU%P90klco7<g=t`^!3nK%{Q(HfxaSYUNLt!0J>|p!vR^OCJywn1I!Dc2K%|; z3J~Ccl}2p>ii!m3JtsfaMm{UIq=36QaNdzMtzI!b9MXT|u+=QYkI7gID!AG@^{=Xj zC&IKibCmg7*mSrEw4U(SZWORv@3a-oBDa{JNt6P=1ljo-m}=Q~AlI5-=#&n|o>+~0 z!OYF2UcT2EeFl^?%e2tXyHAw0NPK*^xW54qZCCNqPdP5mIJwLpYP9@=JzH`E$NnQZ z;A6XXVlP!;9}6!U$XFw6MEsncu#Ee~eZacni+sS=^JkajEfr3HiYihAv!@PhY4Tsm zN~k2eC3x8;qg&{kVdo^4y)n+D(BR7sy!!UTYI3pnC&|3=DF0DAPmR47_?gQoa2Lqa zI+u7K6?@e6*JiZ;cG}jo^G-pD(8pCxCv9Y!#PjvSt$j+r;%!obE{JGNMKxAgrqY%} zCF|hrUqedlTvKHc4ReQLqGi@WS4)RG3KvgA8vl=c_f7w*6=UpzTM5nZgV*)Wse)>( z;F!)~&;9aI6(a7mH_j0F&Z2GcJ5yjmjOf0uao9`HNk_0XE2TvARz#9)QI;U2Ho5w~ z(74U*CoxqgWAd9a73k+UXIQJ$b+N~OMf(yl_m#N{k%?HDU43!K3W6Bgxf}JZl6NBu zRLvAhpKgpuowypNhjKPhHzQcfF%a&-T;|(K5hc{gh(P6hZIXT2n$o5612@^46hdzd z-tb}LtkC+->=3wxNo^R=PNV$A6-BrXac#N!M?<OilyR8{o+-63hu&;~^WM}*bwooG zDe=lHfJh?_eOfRYwduF)nF$|Y=0hjw<e}2kok4)T-tI_@<oXs$;$;vFjbg*WV1PO! zfzM=M{wBS3Mzwb^S_)fr^tKgS-)MFwpCk!d9aQZbMt_~9#ImC^Il}2B#?jC1WGqos zU4qa1zg+oaz0N%?+BEp)5gm1{kAKO{9(ILwp^3wrd1E|}%)~S#Abs3mHVd4};|!8$ z-uy`>_7+L|$giu>zs-?`4=a!sjo*7s|M6%jCK*~SnAO+=%v)WH%vX@q=4?-^B&S$& z3p0l^@JMGA6){fWB>Mbyz@&(wvuJTUHM(*OL?OVZVqp7bx)Ts7YQgVP{f7Lf3RHAu zMl@PZZVme(+Msi4>qw1F@9|Say2#^b+7Eq<-=Y<bCWEeH)$QK)urhxkBAw3f?)Ul7 zrkGPx9<D=DjK?De!|NVQl8h&R8liIACtbwwE(%bum)#-Imwim7f{v&MT+hN>VxwB< z19YEJB8$#XGw+_~D;x8;wFR`CvIaO)=iTy3TWp*Uw03<*x>h3VHQ*^fv7rnv<H`AX zr87>{0}`7(f=VN=6GO9kJ6mN79HGPIT%dy8Dq*?rMF%F?n6wQ}01uqtp%B4z&_hZ$ zcpyn?9z*<vHwW?crh{<GxcR!KgD{dI|8%E=F#2)4NbW00!0&!`0~8>xZN!r10n=Vq zSmwWBZ;8D3wlP!BhAn%WaJID?>;k8y2o0v|_Y9r;rwZLSXnor6i$R%v%aM>khg)Qr zJ#+uKIip|mg?&uM{dD(4@;qBA&uI#GiNyR$@ANckq%TH}4_rt#55Va}RVbW#2Ft_S z@l1K5Jwxa!|9Qo}wWI2;kg-I~;P+{2+cLoCk@e;rp>&sXZw{OYDR;xf9XX;#|8bAe z0;~x;QA0>8?O+$5l_(&*1pD!WFh^x~^`x~S`zV(qH>Goh!P2=$I6<S?7AbYy6LED6 z)Kk7ruv;{{g_ZT8S?Lr)-$WDfQurhy6?;M#$RLBuBj!pcZx$5u*BXg%Y=7dZea%*I zBXJa>HKdu5DQkv0W%<}hZ=ZJ)ko2<|>5NDbd#IFYl#Y~ER$w4edxuX46j`P#)j_rd zX}D&yG%1r#`_Mb-wKley00yiXvG@D459+g66KLcKhEHMCHTlnrRWC3|sO<8~0x^t4 zBVh2kt-u_M`@&-cCKVX_$%w;?SwF_#yil<;KAZ*Zihdew5?rI#>M56Dkm!0IO8sm~ zK1Do5@X<P%jK>C*oY2zv+Qww_913C6rM&{su!_*EFdgA+8treK6v)-gf%gb|_YXF@ z5-hN-)6QE(^~}(O_snZ-41kN#U{%cbQGM)tiay6l@-ZJ{JY-V*IA|$v{Xz-RkAlj7 zn-*JO9pOsXD!_7@bBx4tn84xjGYmNru!vc>G!X?Nz8Y(-r(q}y*dn+p=2Kjfbm@1( zRhUzRYNCtqJz<G&d7Q(}3etF5iuutOeCe+0@L351i{G5-;M!t*bi*WKD+@UbT;8_s zJH-3pQfig_$V8H4%5VuF_$i1m7j{lE^Ehr+r<=xww%h8lt??Ua!V)9X`th#&_WcL( zc1xls0+==x*C<YgeyDbd0xSm-^{IV6`tZ0@emJBC_X`ehlHmrOh5VRO4v}cBd;*pN z^8T2|%o5*oYorsVkR)myUXe<}Y|cx5QUOsIqbMx_1Jod@c6fuQNPn!T#FVeHLl3A* zFvM7!^|{O9$Q^Q4hlXD>wq9+)6ZY-;!*>(NVlI`^xvII%_RVn3Sin11>^j3GqDu71 zDkE9k3<J#0TPfqnvf0kCrT}YR@oMz#6?0xjWO`AZ4nZ^#N2GgEuNEO+RpA%_;aA|Z z@Vp}uX#)5f3+b5UJ;*bMyPBaCI3wLvGQzcDBn>7Hj2&*itm`&MI*r0-N~p;<SB|P} zo5kpoe_9Qur}JE9hVJnn=GQi@bhK!GI8wA!hqy+x0?F39i|p)6!lS9_o3oKWExSJ( z0i&ku$~|UMs+!g6*1Y{{=!au5@RuT+vE6^$RU)6|8aSjc80sYMbq=Q=<3*Yl=Y?2` zYB0hLta3>|V81gPZA?#4eBP+o^NKbGI?qm-0&QSoQh#vdkR(j-bVa$y4X2`A>0}tF zS*9EXat*$sws{(-CB3apu}~p<rXx-nxV;%S&NihmH`5_!W@TR<H!i`<m;{1YiS5E5 za&^zHQc2r}z29dL4|0CbK~S30@4x`A<1L(~3v;riX&#GPIvYR02zUNv%~u1n9>R<o z;7}u{z03Ei`j+~!Lym5{UQfNAv&KJpjB?&@XBm#+t~b{lrp4yYu@=5c3a}UbqNTT~ z1j*m5v&M6P8JMg*P76|Hw~dsa&7S9c?sbL{)9~l`VMv+DG)~*6iB1Es@Hx+fti9rk zw!Yz@XG)o=guDewv7hXh<kUW)siYxyc<iSdUzt2)a?nG)a>Z+?I~YbTyp|nk%BcJU zXMIK3iA{XC`c!>Nw>Qx>r{eYqcLwPe=@!MUykdQ(Lkthvl(m3tkNG02bF|P=N`A<6 zT+}^2;H)S+N;<8=TOO9x!6jp21#gDpUr~3^k}Y=y$#*DFP49F3kj2^e<?ekWkk)kf z`84qfD)YcWdY;+Rz-oHRo0H2|_id@;%{TNWY3-=f+}->$KK<BwjNR^K(n5Hk^z-E8 zk<QPjx?f`@<jp$bsaavZ^Z0uzcps4;S*9gsPFOos20PA)Vbh;+W?D>|XS~(D^gmCt zH;=Iz=*JzqDKmEaV=UMv40t<^s=eNj&sqDjZe|{-HS%h@Q4v;<nm0V0|8aN#A+PKA zHwzG~_*^#HPiOx*99MK}H)#p%YGW8`7jFA}>oi`krysL#CXLv!2(_s8)9`dIV9bE) z=_ZohsD?;>#plJ(=&(Ut1Kqef`21dxc~Kv{)Qj{$PM*6Cv?eE(!5g3A(;!+-9tKGh zwqmX2oMI7sV9vCP)OX<^l8$@6ooV^=tUQ7OuD@v=Lf(=##cDJ|Y)_i!_5GlN^n5&m zVimgab9>0<LdvLzPGXN*!3K0(qhECuOIfj6ii^ls^H#BX>J<mkfol|{hXO%nGy3wg zXY?Wmxg_<i2_$^1;n@xZnObqh=ne%_HD3$xTl06ay5f^d4M=w1_AWi7bK1#SRoa(3 zY)V%t%}}Kfg@4kqpPR0EG`}9*%DS5=7}icnzcdPx)gIk4_dU&D0i@wQaNp^nsK|DD z;-T_D3Q2H<^IvgU(6#LvVjymAv=(RIae4t+D%#|m@4(#*ntfNkcu#8ER@1TQGO>1D zZZs$qrLSp%R@QqI#cQWn|N3^>`TTFDvSWlu5dRmBAzuFfEPwdF;2530p2dG<m7?4? z|AEJN*#8rc{VzoJ|H5ONN6oDgQ?FKDm>b9zNGg0~1d#EmdE&wJ%jPyWJvuJH1cG^h z{*CN(Dp3HB3jkPAV6y;zhcWzF^+V)pOJ;Gur)R_D=i89*!K&`>!vMVOy7ABBi!7SY z=YYzXO*Y@xc?v$?%MQKHSH0`Qbq)OvZ|Bc#%h13`3cHUw?KWD+(85ri+4%d%5z`d^ zSSMxq#KJMnkil1Fy#5N#QT6KbO!#@N03Li&VuV%P&4Q3d7}$7s>f=ocy+TUOx6$3n z4LZJ0r<-c08ZDl;XTv+O@RnzfD@XB@evYv{pwEW-HJWr?X`X^TVZ9|_lN!(XL|duz z)4oDuMAc{<Oj)zs7MN`m4{bSH!V`Oh^aemB9fKSBiy2)QaQq_lE@6d9?9~oS&c8be zx)!lGd@1AnJgI3S8<bx~(XOp%uaPOkv?F+SpD#bj4Cxl}>HikWW<il)(w=Yg)9m`4 zvNZ6~5}{&qtxd<bU5SRTy}h%=<MXC}H_%g-UNi3rjf2+4Loc&`BVy!eA%BT(lXtoy zd6~y$L@7e*vO}{?V;=i&+b~5$<2v`8yId0(_VaSBVdzQ+&l@;%$G20`mzGWcV>Njc zrhJiE*5S|6J_&jUN_jBUqh%dc`FZ`S5GBe?{+8i=#*p^7Wt|wRzhp^CeJR$EOjs4$ zWi8TbxF`TTfA@d#vD<H1`W;&9?XF)w=K6De5i*ps-St!Y%g1>C4?ZUMfAcZ&{}&%~ zecPY<zxbHWfAF!n|Hj9b{*#ZPMtyqUIsFelw(?*380`P%V;29FkFEUju@BtTB!15z zT>7{l(*>l(YI(iz0B>zHH+;c3R_7Q!oS_n>xEcnlxNC1$|2)<>J~gJn4#muH&y|IX zPymp2Gdd3dP~gK5qJ~ui@n9%NI;aR7A-;RVF>!*jn6gR7vC|S@?k2bJsR_ew%IUzs z9?LypB{Qh^p@@>eX{E5s;sRDi3;t3GL0M;B;UHjNF8XQgM(spDxK<?li*%ZrBucYz zq7I<svuF8Fk}oKS8VE3|0zqxsT1IvFKM0GO*niS-fMUtkA&SxoA<k2xX5WwfNd79* z<vK7F8uD$G4Eo*wld9!@POavD7hK%)2t2>@wqNq`aNqL#0yvN7?K(@K0pKDfjtpEO zO&pn$BlLtV8nSgLvM1bXt9v3VWo8HVf;=0al9N@%wR<{HeKr3vU@YZD2sXDVmA>*i zR5cK)I6o{XR1}i*zn9mKg3YVu6-uYcYX5WNi&(pihUvqV>!p5x@t!B=tO35Fw1;&= zn?88#<=tSOOO4bPu5LhFV-eXTIA(9U)f<=-e%|h72$m4+yGiLq;U2C}3hGeE(n5g3 z7sdkZS32e%X%5BDc_t%ky*L6tsyh#pfB;=!z(ZgvE=mD8?VipQpjN7*KEs{vH|Sof zW3Do*ZBML=vVxjS!T}^yr`6X;BIc{^tfERhhgdsF$AC=`_<lCNO>R8;YU^7q|54;q zLJ3yS&d_rRUaNgAND%JoOPmHyNU;qlJi!eyZ;!hhS?SelI2Hj_>?(qcutQ4*Zzu-P zv+FKE&&m%%x=1Xp?X90EEn7)?M7~0FhA1jZL!zcF0R&dP%|bR&VI*EZ7JgMAk`+-L z#CdhakRER;w`V8?Y0XolwBLD8PW=ig=}AKNHT!H>hfHo4%g^)XB16^1pf{JoMsvGC zV4H%L1pc}~fPj`(|4iU>B1AS(OAuc_s_UBA!KjDXzVhwvgHF?}ciXS?^AoCXiyS-P z^M1sjAfIaLj?_G4oG_*>UCFRvBO{_!!(|SmwQPWqR$<Sm&L^&-j8}5Qr!4Hv=kG}b zILrE#MsAd}OfFxP=k2^RCuhw|l25OOxv9*sQr<<=*+sP$cFvd&Q|a!n4Pu^}Xa)K+ zMnTz)qMdN3pG*~rl8_%CDPK@%Mfm%iMXds@@*J=?xiOx5e77rwFs{ihnGL_%G^|5! zcfxO%k72N81jDxulhz<UjH&8oaK<Vbj=9&B-h|g34#8OXN$*giKa^?klmjk-=B?Pj zlX?b0Cr!e0De{!7*-2>vohNX~3P=AOt5TE~QVFdiCnA#2<&j^FiM1dIbD$X^1|PaB zcRYMR)rsA#iT56$d(}y;Nn?!oHT&a*jo%Otggc&0pSroM7I7zP3D|1lLvN`Ey8=q` zR;1kuEm!vSC5uDi4-t9`qNX1?Yvj{qAo%`LEjWMnD~&nW!|;+XQ$L*0%#-e`BwgI- zzroo~%M3q-l8q$73#P~{FVYRkaRuc9oKN83^w%h++i8=?T6Y%V$`Ymh)MciG4*0mt zVJhT_5oQQ?b!l=<5r3_7p4i8Qr*gx6{U~z;dvSY-2<RCCyU}pwq>__)kvdknORBuE z4+0y@aJGvkTp$vv<VXCf()1i~gV6B(5Cog1_=Zgila$TYdn&d(LyV(yFqUqV6HR4z z^)|H?s>@iL!)hj@r5@b$cA9(O3&%1#YRLr+*jI;1@oXdHUXF5T^`XP+VD18?rjFji zRS#AFXO;^j|LRscjkKaG2}nusRI7}4Rn(y~r<AG`M|kSB$<heOR-&n?Z>ekRdXh8c zkGSUQ<;x17b(a^>gwx%0Vp_o>4@p#g$OaU&%}hVO2+@mKJa?3L5z1hj)#zo}gfLnC zUO3|ZL>!U&L&?lt<vO`$(Jx0^qN-~TBF%G({-<t#yA?ukpyW(qPuL{Bh`(ZPa(etT zDyc@AoVly!2lP(dw|rHNWQCDYlx$8=|8_Ddq<Sm1`Jg>4;cNG)rr$KAOD92xD`As$ zP8@A99KdvO?EB?51s>6$rD8Zx-X;bFrL`#=lS2Xqj#96knRJTQ$kp;3bTovS;%Rb| z_hk-a%LBm#XBD72?2$tf<`v#qAHN=Cs4{Q0Y~+61Iv#s$p{bxT<kyN08X(}=uXyWw zZbQI#anH=m57f0ysq4T^TXMFI!niktY}zf9!e|e4(!2=Z{GbTPbnmwg8vWLmLUCi@ zqmj|!?|j}QuSGt8U%O1-uQKuD485&vbZn)ng2?tQ`o6pbd|t(8uL29_2ll%IsQDha zp6KTbdW+a0*)XR2cpvv;y?PhS3&SO_eLaN6Rj_H7OoFUSK*hVfE4wl{?l~dtv#5MX z&6h->ODHuqE^t8qvzWQu$lC-}GeDru`GNrzEwCurI#PNIAzowYfg)O&=S<Ae6nd>k zbqQVuTCGy-e!TtgZ|@1L%MbAP<%>~@33ZA0>06G4jthe|Q!+S!rmrz(7jVWcE*M+v z?%>T>e34D+J-{1S2%;P2vwb1u2*$c+LLn_q{Sh+B+0L_&E6ys4q#b24LRSuwN)yuW zoXy7aLe>Do9lVdT*u8hum(~z)1a2isSmD47&MSjh@xXG<8==9+V+1()zy!_)!NKPM zqnOoK>7a4bwbJ4^?Z5;kuga(eggk{5c<`pJbz6IydA8#4eXdVjkt~he%E*=2`z1np zhp>LGMTLa?APyzof2(&YvUXyK4&cVrJgo4i!bGXzk~`E)nPhlOSFYbkL^Cr2=#3Og zz`GF4grmWKRxl2Bf8hGvZE7@Z;fpP0j||R{Z0z2E2Vk?OAFJLL1w7&Z;_n<Iu6jx; zLtB3;jkq!|37m+%ccrk5zxjEiS7Pmbir;9r<JJC7bd8wQUvfWeouuwA7QU;t8NeV~ zU>US|W6?G{sYp-bcqhW!pkA_DADjjR;}X~uK=MZ-PDpFz1xw@bg5$)`lb}!I5OjOM z7#rc8#)zK%;8@MM?P-y^$b8Fs&Om$_acjdZ&vSFoMUMj;z7un3jV0@SqSs@YW3IKk z42hi`{rS|CU^|?fyg`4HyRYMLL_oWsMC+tHUZn=pH);qVQZE#VJ-0M*J5NU=lSXdc zQw0OnlpGerE<c-<XSB%gA2N2WWw_%Cc33Lfu7#bwJ+@~2$m<_B>@u-^7>zkhvPUO< zdLd8dk<;oPEHvyBIO`v*_d^|S!X{VWT9I(3#!8%Fe8e`SRP?>St6TSQys5Z-*tsX= zbiL<gF55YOQVha2_I?E#H*FPSas9zc;Y4oVFy%vY{IO*#+%2?Nma9%?l+K)R)!*;~ z6{ECQwQD?6;&xLkL@X9<ojIx!isDMt45x*nAfplc{6xsiTnRNk4u%m2!X=|Ox$(qw zy_|guQ4QsPhKu+8!@t5R5mx_KRzY^oa@1!s=mF)VHxK>~o29T37Ey9GXcV5Q8+%X$ z0*U;(J34XS_xpoIoPeXkc(Npk8DAdIfW;@_ruhVx<UE;-Ug;?UHDfBuXq9>#b|cd( z^BpAr`O5~LNx&GwyRKRAG>S&Lpqs~fat&rRA6$wg>3Q_&NY?ULKc@)ZHTe5b&26~i z4?CCv>aD#%{%8Z&DG%PGm;+4h7C5r6-^2J&91GtZ#oKP}#_s9LXAImH=lCPj+;`;8 z%ZL2YSuW=`e{G3mZw_-@)uDYkoVU+<kaD{~LN96du3OT|m%mAU_f2Sli7<n?cl7Ed zKTa+OZ`~<xMN*$5{KTF2rY-5gi7>(Vg6(O%2S;b4gabYoLs^U*A@0(6{|GZ?@kk2W zWicxJS}QK~-(6;XVa9AWb5FqJ6=E@z3A2LV0h3r9Wyh>Q9A%=6SVFTToh^OvE|VjF zkTHv+{C8li_k<i)Dfo*s5k@S9voI<TmIkW%FZ(F$y>>&>A+P(w*t(rS;ZX4{nZx|X z7L|aI>B}i4|KEhrU8{0tK>r2*Mt$x3=0A|m52?vN6#=q{yWhYJ&{eX0BE26qeKf6n zZ76^(-7pQeTVrJqaLya88U4S8jZ*4ABvuIFC76QBBgp@dSWT2XK%_(+5(Wb1<THO@ zWgbNQY-;Ya`tv?O#;fbYuz@RN{b>rnMNL79`N*4f-#_&Er7+>D+Y-2tGZ2|~OKQu+ zAq31Tpg;^vyoZx9;EugZ03&X9&D4?zQsVaNndt<{_SRKJ$wo<eEY<E!+_{9soE`;$ zR|=xgIJy?hydiFOZtAV1e$5rI#99Qxa*xhpjt&IVE&NLJ8HC-fP1pH0KF~*tdJ`;z zt^pvz)mDFj1uG&`xjjACyue7yY1zXI0c)|mE$<o<f`%2WYx06L@ZIIq07$c-hM*<4 z2czFbD}XyNlb_XUIt_Va)j9qhEth_3R9UDAhdo9`3+^4wz&xP=(hN-}$7$7Ho{`)4 zEhhHggBLDFKKpG!DcA28uV&In+D$rMw)it_o%SkE-r^0E=NQViM&326W*L^P!BP)Q zh8cSI!!FCcq>PD?Fa4TZNXUH25)&hExyvzv09&xjH#35!AiCD>deteAz*QeQzr`&` z;HfC{=`VV{)b6{XE+8_Pf9*$}k2gO=%MKneMYuyp%7)`*06oB(=f(U0=bSI4rmdg` z?N2#G%3Pi~#%ZONMRb(GK@@+V5YM+F1ZzsC5im=KjB_!tYZOQ(;tVdvL=W34Q)zCE zFEu0;-DYKTetF57#v++HuJ7KNH?+SXyxZ?Tjxx#9jyH+MHS1Y1X&Cw$$^DWiYMN#* zz6|{pMeG(isqZnS+ap8!cvoBx^_*%BC8DWSP!o45<~P89Nr1jOo!6))kZ(_k@7IF# zy5!jH^4(&o82n&VN#01na_B?(x8^)0`r~%63P$z-q8d+CoL~BX<HG)NHU?u1#AAhb zxQdT>*<!1B!WA%d2KiO^03BlrT*BHV=F2|r%JxjPZ@x5A>ErsA7UCDJs!gtlL39)u zN2D0K=5&{HeB0|9kzQcA_w#N?j_-JzAUe7Tr2Xx3+F$o!y#UzR87a9z#2?8aZ4Tbt zia}YF^$f9FHX{*2iR;LrY#bx^GRE_f)(c-5idliQIf5><ULP)qG?)A{);tqW<O=yu zLmgtPl?Q}|H-(jE6ndG|WZ7(mUDySrmTOp%+vM=b#d&tTCBRh71L04_I$U1ng`lr` ztuw@x9Q>cemCgWDa(9IMtrOg0hs+PTukw@xvME<?W0t)qCUYwJ>rbovdbe5O@$Cx% z+iqR~Imkb?hGXc!DhSa`PRXAIZJ5Ok`zF`n7zyvQQL2vAhBhB-fRTP8KzySL&MKfv zTnJ)Y$L`Lx*}>Q%SM%+OZdGF)u|g^6QLHLM2>ePzBOa5F5f>NE?b^li!n)~|<8T32 z4;Gdw^>`=w)?6<3BdZKpCOg|)d#pnBOa~>9tqN%9SgOhdo7LnMrA=uKZrCi&SE)D= z^^2tP{9E>lykXy0Q)q@t;ZP?*#aWIFXmb~rj+P+x!~ckv8OdR|gt6t7%vxUacIb%J z)ta8SoU{_f=C$5+A{<?UUP0v90F;pjP=R4$zT$yE<j}2}n#67n6OUgR0y6%TwbEd0 zHi~&eTxauU%xggk?K<^!E*4Dpg4>-dP=crRRWgTm926IEK){>}6#%K=XT%@<1gl~B zj|uX^?`J<~0ZRQvc<%Moi)QkfTaJQW6|@xC^_CM@_eP*ThaEjJIRoEP-~vW=!u?~1 zjySJ45TU05b$BIa+pjErG2*(8suhqG!?3$JB3N*b(1DJrJMr>`$Ys0NeIvNOhmvF} zRNhDY$NhJc>?8Ka+6#DH%)8m@bQCvoE!Oth8v`Ei2j)r7&njsqUdo%xR@ksO$2|rc zXsy6KzE@r}Es`WNjyk_ohO~*r)z<Evr}&zhEg9!kZJwFeJQC~K9K&y8{*mg|nwaun z9e)F>I$S-L*5yffrxLoB?2n3D3r<M!HW&J!J8hwMt6M9aiaC>+$o9V=4s4Uh4L1vR zcs+v}AGf_3yA^oAdjK><-#?-MGO&O2LfhbaMKgAy7g^F8rmSG?wmFTrzWpG6$VCQS zJ;{U<1AJCAM`sUOj&l6kSR~wO3JLh)Q;^YHu2(BG1m-Q=LM$G4PF{ii=li|pcd`UZ zQGbyFzpR1F50~YqxtG$o(uzgAb<ESeM!a}VAstZ;L69O<z*g(e)wT0Ox}z02Ex*{l zTBCu=d8z#^BaD6n_P#<nmFU%re<9uBWw?Im3F4#-hxU0iE}ZHF{H4!juGh>6W!$}q zC;X)8_zVw|n;|66$B(9@(Nn&@*tr+9_k>5hOsalbk=E36Ja%pG#fp_4+oEs*NCHl; zn16$$t$DbVxlhEe@4q2`Ka#ZCp4rwx4LV7NIoyKj0PmuJ%DPQ3k(h>Uz|oCQ@{)~R zsbtROerf-#88&uD1~(}H{jW%a@_yaudOKKRq)E+B*WcpdBT7Dn+u_7qb{e|Nh>RTp zQ@V0`$l>rMabNO;X!V@0hv5a;1s}pTlsjRR1tUf`?Cu|A^C!X#%ITo;bF_xn%`Iaw z4efo;+zCY_QipnFx8`2GoRll#mV5f;Gzk~O7cV@xdqq4>=zDdjP-jVEp4B-FLiY<( zt!(3oSzNPpdePL<7PP^KDF-bBF|W4nVAR9^$Jtj$)s-yo1_<u%?(XjH5G1&}LvV-S z?t$R$?he7-A-KD{+dDJ!a_`)^GruQitzPxt>F(;TuWHx+b`?u%YZr8Mo_DCP!B0OO zuDF%>j}I_xYO~<gQ`nbeCaZc0siK;@-CEZr-p^(>o6(rZlVeB3g{BW`>x5(nUj<ug z^@&kmg|b-Hui{H5CT1nPG+*+-1={4gVb)W($kB>Bf-#8ZZV?S7UN{Uxa#bnBJ{^H1 z5Xx!8GioS4;q8^=IpX%Z;x1cmPP#l9a=eyLA{1A8VDwBEN(+-{pECq0QSVacb&Tt4 zHEeB#prJ|U-uCLhmn6Ds_h3YIxL|LYJ@E(4=-$G{K5+$I@{A<~&11UE(??V@WD3Ax zem_R*pL{AEB~;U`MEG%J%9%bUOWClLo#oBN5$hxMZ7Nq+?rD8lym_i`vU4@rH^a^P zJEt;fADrwKt&A(DWgxPCRlARkQab^MD&^uNE4wHegdz)4W{KwsLZrJ_++rdG%7;;c zmNe|<V^=3eo<=e54_GFT@RplM?33OsZ8E)2gVjqY`!e*P<D(F{@)t!Jr<~)=9K*S= zDhDXh6*zopi_uzK)BMho7)|%|4z<dvhM*!>)E7zUoI(Y<DU9;WpJKesx(00tWL%PA zYQw>^T{mru0!O5F4ke9T_8!FhIUn>;KaXJFgPKSwSE^w9c_+(fvGU3dFUz=#d-xt_ z%)k-1n%0AFyg6CZV`Vn)S^mEfv7%el{)32B@MgY1r*GL#u=^VmYnk_dGqF(r%*48v z{*8&n_P?1}JAY+j@pGE}iHTMJ|HH&W!}*_>SkO7m9@*9Z6B8?wt~+LbD(4@VSa-je zSgJ8D|JO_`&3|NKVXOU_iDmXLCRXD*9Ds=h<qu$DQT#tMu~M^tXJVngyO+8-Th2-B zmL07fmJkN%5=k$95Ur(JQcPt=t*#*KH%tu|Z{7~qLtH_h+eWi$XIsVyw9Qw*8JOR* z)_I<0@O-7-Lsk{-Kw2Cco#6D`h#eCP6UT<=wu3qQY@<i7SHL`IQ<~HEBa+~fC5JL$ zFfa~QEMn)bfxo+incGdiU84%V&eE)BmM;grAP!Klr8P>2RwKv}7+p9=6V%Nr)cazC zZ%!VsWTQofx3Y4iY*01X%_i2btp=>Y$Pd?G64Ui(P6^arF&4D~J<?^N>a4}wWn1C= z2m*hE4&bvdIT3Z83E^OK6Z#<FH7124OR8XP5_$@CcP6q|Y2!k-jJ>j6PCfaHOSk2J zU}8~UR8?`T`x!G*?Xfcoa8%I~2j!nw4~MV<^(RtdRuc+XVIp+y{*br+?ktnoAqWkX z_EYqX6(?&ua#Yt?aYQw6-Xmf|mDSk7jY~Pi!3l<`voSwN0TctG^Cd3IjHzn%yu6Sm zcxlUqhVFG*a*2lnaiKdT$9jTT*KKJ^MX_5K59Hn~-C{?LRJwy;$ezQgYkoLAurnoq z@v-D%eKH@z63PVHXHxZL$E8vnU&mCB*c&RylfuU9Z@c-+a8nUPF!D1d=H{bJ;Jf(h z8eqe@BTLqJ?&=;og}{T)P!W-xGCZFY4o}7D6MdGU5(V}c_g!N?%dcSFMVj!>Y#ykv z>D;|ZOBcBvOa`EjcDgs<(5BIKEP3AA@6)%>ho`Xk+yFni%oXwJDx>mC%ka8JVYuJG zNYe1;OrlqANXtm+-$Z^e>fv$u>c>0wxq^<U8_dYuL~gxG;{D@qbtvdMH1lqSfHLt8 zTU$ZP=$YNQUsL;R8Cj802c4tkBY3@zu=m0>)*9UHwnjE>-xbjwNquj4R`o)k+>JJa zf^7n^)n2BnvD=rbGMn$3F({@~-0`z~elA^7CStzRej&tDrBd*~IlNz}bv*LuB$za8 zx~%Oah+@w@+U_KXxgRT*|KKm+eKWld3KrWoY{qnt;ix331lqW}K-PWTm}z9qma#!T z(^?ICj?+?v2J-{>6kQ-tgZ=|_eLBdqO_@#0p^!j_b6A8eN8gw=dtfu5$Xfc%WY@&E zS>9x!;}q@^$=Riz$tmn;fBbAuxS$Lnpri5XAQaUM*1MO3>GDJ;_TVMa)5={t7tL)+ zL%G`iNlz(<a-fHi)uvqG6!%kKe%vrAXOpCDd7_4ZF`tnF>~R|r6ZkKhAs${!5x{tH zHlzEYc4}VQ$*Y4lF-`~0iYF=qC3E*Ef@U)<(kev9;#&BqN1~lD*EqI6msSR6KBW@+ zC0UA>pe7S5+mLxchUlLiFju&FaG{z!)k=mC1X51z>a@a|i(?V5AWaWXTCmkCD#u5E z^?$VhO*xs7$_SUTMM$2+>ipiq1qmtY=<@E2D#LN9+|L^?h0<)5DrMB+7=A0g(#|&R z%YZd4_HuFiPIYo`0gW-i=q-=ED*twV><bQofM0%ID2@?l1_Cp;>6>GIQ*da?tPEo_ z9=(4y6Tp}#gc!}_#Zl0%5~$85!8Lqgoq8StiDT@h*vq5j*~L@@7h{;tc1T{yhp0fR zZ%#YMrw}q((gO~Sq>9Lm+!?~74yapBhg`)Od~3RUvnQ)1#|qOj<+fQ|$AL(G%el(V z@Zo1HY&FwOY#-Z>g5TkH`MCE{9x^FDBJ}Ssy%O;eci`%UP4g|V&Zwm;m0(#-Ifi0c zOkgOanfiS3SVUahYG~r&9~x`EOd(Si;G;Te6|){wG@JD!*PE~e8(}K&zmO^J1@B=j zOR~B-Dui-XJezHq^E%4GDLwC-;kn{IHetl$Xv_P^9zS#)YDb4qGZ|OEiG)xjt8vO8 zd1{F<lnu;rN;>S+XFH_EcDor0Zb{jgB9Y>9hf8jSjzC6B_kYGt2Qh9dZ&8|!1y$)) z0G^5<A2I-Y59M`a0k=<x7?PjZrKXI!jC(U<7-Q7fc=}KcBnoNreS+js+%$<Mmo&!c z^o~&lb9v!2I1?<J0fEvA99$)WUY{F6t~5k_F^+n@2T@dMngPz-LfC1ZSjMQA0Xp`! zt@Cydu1wefB(-033QvtHfNOP@7h33)H-&SdGjK^o#+nh9T*WlK6AN2Vyj>uY;<}V) z37}|gd9;NMDR`~na|5Z)#v<E^;;;j$)+v#17;^sj$fL#Y=>9;fSOfDk8P_r@a++?3 zb-zR<vCD9zZB6COOBKl&ojTTj-`Z!7f1OClhhLdyr<>T?y@=PW_O>0x$sN4Li$3Br zDsAe}=;c)XvaRK;k9v&bf|z3VoY+5<PQ_Kxw%{&zQTuo`1IEHOP<+O#+puKPXY!2M z(Sads;Hk{KWOMKuULl|7A2nt!7w@GKbd6=1;=z!U9E4YcY2C*GV|dImW_vJ^V9iaR zd(o*obc->Cv?R!$3u$F)RCcoM87D(`eZ#gUh-s)%=VKjZT&<mme1x#Ax^tCmtg>gy zK2s!fVJ^lJy}O$_B{Z)yzR)6L=j>jSI-|nOlZl8_hx?UT<lsTbu#}~X^k~F33Ss|2 zoH(zj-IMvFnTJfSCDQJKk$p08^<wfEGr}d^T!;x~6RIf-+_q7AU2phZ{S))+zAVRH zi=|<Uc&k_14Es{(@iYei*<i^R%tosd&lbdbRk&fy+s3xGYNQbRfflz>Mi}PW6jL;V z)gO#vf*w-)3n0skIM$F`FFjg(4k^ZAwHzkEWv|5!WIr07Ia=Dc+Xl7xYRP^eYYj6( zQ}4Q_*H+b}jZQ(AQs^?rkBkO>uG@AS?T^Bik7?nDowuoh;%ur9zOadiF`RGBX$_dT z7t`IH;?5)AVccUqQ`2tE_le{|nRS+vA2eR!_xdJ(o|6$X@;&K^3VvCEmoSM#_qK@4 z`Rs@zy`DEu0ivQmYTaF^p8O#Oq`BiIbi!rt<Ne5EJBabm{_A=AYg3M~?SvwSweg=> z+4r7)PrXmIUXPC``_Ro(UW-plZ_wN`+bOmOcj>D^5vs5A^QY!-4|<`Ub+C_fIM-jw zOT1=kQ)lib<tJx2$ayp8PjnE^OQKoKmK=E2GZy)t&2K|5b3N=+El2sNXC4cz{Gj<O z7HOhyPZC@2cIAuaKe}}A&(K>1c08yEXh|>FoG;35o<Pc&g+nd_f7N<#o*Cx!fQqG7 z+C9uz1u&qxQI3&zulBD~%t!dhM-~%lyekPSn!#)?7bE+vxL%&Zc&uBA)V6%?Jgv?; zM2*m`8l$hDb-7n95o?1P&t%oaT9I4QBRJeB*q^OJ)ikk?jgac+e(bT#;EYY!H86&) zZicXkF7@!QLoI6JD&d5DX~oT0F=3le;Ef*q7I61Cp)0wNimy~hX!G6^zr6CTH$XdP z@N?M`#P`my`Uc^GGJ{-ak%u+_DJ%D0l<34cfi*~h;Cmb4`ulUzsxYZC^P>_ZLbC1U zAry&TMZ>@WB}1K54=_ov%xr!Avw%LF#*y1|c3kVMmydyJsBrAOg-*7OK{f{Otk1Y8 zcjt6zGqH<HKYuiqhqgsc5-Oh?p-U-HPPh(u)lI~)*LzNx`_H-Sq7z9Rxh+lzopo9N zu3NO8h=u7E!d1`ZRb=HP`)7%BXFGJEW6kno)jfApukzcB=1ujPs93D_wx4urfm7IS z2RUZ<&-|XZ@Bgmf1^$Iau|9qs#}&|x>J`w+jo|O<99kHg|5FR%Y5$l{w1BRw8d`r4 zuztyO6$M)&b_8#myq93a`BFM6-mWtty?kZTDoHbtY=LR9Db^YnST!0;i}UWw>Gd^C zkIg|!ddTpY`)hXQ^@VN5LUMVU#VQ)Kp`@93e7=<;+Ci-{nD2p9(;u6BK}V2c1uFCk zp@^KOm8}uo^vnrmAYM0xS<==b@k<$+S~Eo^a=q`PpAi)+cg0|oi8g?#29!|kXOP>z z_k<OQ_PbIciO{O0jH+1#7)#a4Ey6|Uap`<8#WDhW6cV7R(K6d{Jk{HRK#w`@)__}> zpU4uWnFrnr3<!+57L{W*OdJ!1=oETw`+9CT(oDA#X`BV!sX)9Yvg3RBR)a*H?;>|r zh^h%yn^cP!g1w{s6`d0WtWZ%OCW70a+3`zh1BfM$V3ZO@vuCt}NPY||H62S4W-k@3 zO7d!;wKEC3?|YUGvHswBVjeVjdInE+@^t^1QBqJ<wWf%NYFIiYpqO*F;^0g1)jY5Z zZ^TKVV&E_>Z8zys(7xbuxM6n-cVb}uQig#k?+Zz2y`H5x&QFLVTDb+~Dim6chsopI ztZqm{v}>_&U(0V~MAVxUN9pr4=YX%3<L}&N;2|)EtT6A6%AH%qE7_?U2R}Ck=?Z~a zMLkaloq?t;Pv#0$Dj_x;b!=Dzdz-5Dl43n{ppQaCvN6#L%Fm_>F6Y-Es$FrlS*3}$ z(+R%P#5$mY(T?^L>-hx}$+&JYQ|pCE_qe69zuJ}-emU-zE8lcesrML&XtI^$El7g9 zPEMMY?)ldAQ^<%S)}!Myvn0IUNc3YfX^V@7Mx)WrsD1`INya|MC<Zv&r=}5Wnz*V+ zqL-8zl5JAKwx4C7&YMBN6W<z;vj>hM-D_Exn}<a(pmiT)8{c6lZ_yO78hFsul)~~c zoYBE#-A{(izo`!r2~t|2H^3P)#!}*CS83)JUiG2XC~ze$uBcq~Mhcp*AXDjiTp>;o z#WtPBNX7dU*pMJIa3%uZ<rQ{mpSvw!ihQ<`pWiN;A3(e1@xmdTY{p%6q{}t$Ty8EG za=~#bcnv;qLx4S})O+7ZCXz1`_K>)vv(}(bUjpTDuAAt=V@V3)_HFq3329+RZ&2mn zc}62V`30-n*0i#I-fW?{Ez<onhPcn#{lJ3oz|`mWbE=ysWNzVA0n(k3z6F<+q?ch! zq5`Y8_7MDaTHy3{bpciA#BJKIQV;i1d>xuYYt&p`#by(3+Tq8+!4L0k{CsZi!bY?a zRE`lt_a5TF-tLXQUk<A>+XVZRi&>J6iGlFfbfL%RM-K8gzg)a_!nftzb+J!NwBhPg zUxR8r@~@}i+LXx+@lo(<Wx4)jh=ze4#A~3=SEXsR_Gjv$%xd;R$yvb`jO<-lx!=iO zNRBb#bZVp`Sy0X7EYODApOqV7d~Vd+MR*qF)L0(LgK}tFx<Kb%?TQN;|9sfTS=B(f ziUGcz-i}yWm9LpROTkAiGisk>f4sP(L0A3R^7APAXNrRkDdV7irU5YwpJPZHO0!2w zS5ED0)MxyEBinDi_8O+Iu*m=wT$w-s-ID(S+01PmjZN+K9nEcR{t4vzPKkc+x7X?a z2gv=B>2VWsJq$4Y6Us;2YTIE?AL2PK&RMEQoP{AcrBg)5PAI>C?jC+=NbCZFYhTn& zJAdwz($?+)QNs4j#2H)z!Y5@gW}v&`h5(5VJ3TDhEixeJ{D{qza&Q96fdySK##g5p zCT{8upGI~Xbs||(imo4p6lH5TZmF&PD#U?rsSG?r4h#uCfAGn?LBn<eWWow}rQ2Xj z?PWVY4PJfvL%<QJe5CCL!r&=VL(OOo{p|A0ES70t*?FU$LRD2<EGArBjD2qn+QABg zU&>%>#bduU*$Vy)HT!4?_XfC8mo_-3XNF4IZ~+AN>HbCT1aV!%8trXvm3Qz+Ni<^d z2&j&@Dais~HYDTVCp-F8m{KqKHBy0^7=_tlnwqAD(L3ADmM7qUAIWbe&tGD*9by1Y zz6St<;_r{d-q^v`$==ZTANwDM)5rZ@^xVDVkMsB?ts|?Ux*1SJ?*-ln^Ge}B$-DCJ zK=PU-gH5k3{ORc@lhm|coRu6Aan3oDJWAmnf;^N`lNQZ)k-<1OJtGo8QhSC=-oMe& z;h(?M27V;X<IGiI>dWsNNQx9tB)DP#A~%N!;&zi1)jpBni}=`O6Y=ePacFY-X?;qY z!=P!?@Y3;oye|#k)p>VAMfmK|pBg_Rxwd=~5&JpyYv+I4w#&l!UpuFBwEfR68@TyU z1=`F%fr6+0*zzyw6!q^d_kIrci{DUu22yPK>z2RRwcoGwqyv_TtJQ}ymOpPX1H68r zM|I8QQSRAIV4Akvgp&1fu;*i19vQ~j4rw_zcN{#iV3npJsY!{UiD|f8K@-b^8G#^> zIDue!8vNiE@w<le=ef$=Yw1GH?RDWo3C@fCcop0KJZwjwW*ZuS{UHJh=l*T4OAEk3 z+Zel9>)ZWPuS?JOh~LjT<Kd5u|B~Ng_$>i#-TU^jUT}3*vuVEz#8+SfAI2z}Wf?)? zR{X?-z8N?$YJI!=b_!$N0Eb1g`rPh9KQW$H=6scG%I+dAObq_jIV2JdgBB6?7N&#> zP4MQ>|MIAH!?kX94VsVR2B#{Ofg{e4Ionw(J09|mwL8}M!FT4civA0X*0ntlX>Ev+ zv6mi%s`kdR<h#&k{|uR=0Jx6>!eQGOfJY`Azs{kCAcbc=${g5^`LH=C_``1j*$Z|% zZYp17(?g*@;l+O)E#9B>qa6>#B|VY?#S25~n{mJ9$sB9>Ub;vhfMf)-rrBJvD-T`R zqexgdRODqJL&eZKC&D#rKEYvb!PITMG!c<hL01xZ#a7RMuya3h4238>AWfFZ6sz<O z{OH_BQ<X00mT3A{*8NQwJviV{90240a45R6wno4Ad;wg6Khy5(QZ9a{-524H{9d#5 zmlTZ}vj7}Qz<E$x&z2H&{VvCs)F+i`6#Kz^TLRHiHPI`m*QS7Jm&#ofd-a8MTa!da zj#!?kFg=SSG^&M}q8m~-Jl4ppI>Apno8fWzmln;Ms3$hlKpY>fS0nO^BBN9v@NV3E zfg+(1z(;8$(k5es;R!j#`AkGTsz{DWFZ{2z5N~jfPp8*<5OSe;4bgFfNsgG+otNHS zY8O-W$zUK&+(Hf(_cu>p9gE7fQ29XxIGM%O?>?=)(`VNB5~G8el0F5DklG<LH=nV! zIy{#pD6_MO;3*AG>oZEanu$<r61GY?8>m{Rloz>P*No?Oty;F88r{1($RB_PuH-dA zs=d4c{o4pO0ZvF6!Bn6SfOf0^eg7@uS(%%fIodiK+gs_o(b?JC+8Nvb*17M`3TI;a zPWoGz-7NN>3fGRVhVx@U2)gG34Xq8um?{p3p%Xzy-(SM38(NgEpbcnD3dv$vyMJHb zwTb^+QO(#||D))sj6}CpjDf;>_mY4`2?Djw_lgAA>`Lqlzn?YT%_oPB*!u1dL~2JB zhqoUyeuPsj4ZA@w*#pP60i7wQVRIP4o929LJ^+esiHmuF6FUpv!q>+5QMrkUJh*CC zp>8(A!`1nsnfd-bpEb3Y^!1?Ujs4#W`K^h{NsP&XK0qOkfI;+kF2KskM&Hri+{wYv z*53H9wbi2~u71CJYYBg-V%Yi*sia~zJ|R6KLr*J31IW88NsNq2?(S~wQc2TNfnCKj zE5_HNmbf*e_zI{Kau9d2kc(!M5Pv3Q=NAPcN=?+w`=k*QrxvGS1+Q>m1e*9|gdQp| zWH}M#8*pSfX!7U?=wFH+r<thF4Fh1U5BeXPFv<efF8{}&{#O&mmYqNLaMb$8+JEf@ z(E8dIixHt6P#<0_R2h*{7Q{j#ObR~lbC`&OZwWrRk#n#%bS3Vh4n*<O`f+uVaZ&&k z`2|q*cJluIWootjrpgefy!{xBD$<^oUhR}s8lF{CJ%N-%^Y>z{{(i3x-pLDT`AH2r zWDtk^t^$lE0Rj+<P>rfv{p%?!<trec6j-|+M%lSx=22H1=#Q-Mo(|;-8cnxtnwBWt zkC1eiG$L^Bgju#uXA^8cBGpG7KxpZNi#S0_e^{Y)aR{=PGFBMCdMpLsE|2x=c5~G! zHua4X%qX}!W+R|NXz4|b?qR`~$6K>CFk!~Qs!&?ou$+UhOH#=^VGe$;FN%DQI;?U) z^jAhRvEdI@K5GIQ&)dhzP4MFfgN_`fB%HRg@u0{}kPN?cESSx?cyJ_9fXK*m)+`zL z7Dx_qPN2km{X^wSjW;hPp`5E<hRpc5sJV`W><mtg=!GtvSB1KmGH3lvg?m6JqEhOb zoRk*X&gX5{)BdftS1J<(wtdUjgXD=g9W5IKBs&MR=|uFv11bL!Sc8}a?4z`&@3FD5 z5A-l@HS5t^8l=*p{d&`m`q@zeExS0eU1$ykLL*K(vPcEb3lnz34nNVr+gK^vTNcc^ zq|O_H^UIsW=S`cyh0pHU6S+S@R|&w@1o8r=ML@k7Vsj6>cDG$UUDz==4mY+Jvn}&7 za%8{3cp$ENXOztxJGHL1H`5d%jcqf`wI9WJ<wj{To$(Mu6h@GYB+$%gAG`}rx;sJC z$mr%V*t-RxMq3{VQpsZ$aHeeBHTz}@C%f-^KW|y!hi+9PW>MsglTsHqt!laOJJOGc zih#C446zlLaw|2rr&%lcI!gJkfC5Ui4R@~4*Pa#3K!cDYQ(3yKhoWj?+c{Z0$ZSYL zO3chKwBBnuUtv9QB{4?7lr~3w9<toOy`hm<PrpOBiJxH7zWL_!pB5jU#LpfDu=Y;C z_}dJFtgVxS@!$7S&=9%#-QHie{;-u_QVEW3Oz8sHfEXE6n3x&_np#*I)O3CW0hAa- z7+R;|B4TznZDS|rB@HKOG-q}vZuEsm6Qsyh!p*{<p`4IDDY_E*J8p)0T&%9fmU>(Y zG*Xb6oGgvh_yxU`B(0DtloI+!RFLY|YayoiS}&!qVEF<p&AaINg+~+*Mu~Y(JLJHk zuFYDC@lrE_;~)M64!;GtL3!od#sF}*1Y}f5{|@170L|3w^v(bAiGwUP;P<Ep9BTA; z2m5Q&?Fn5rO9BW%6JlGqVw;mH7PRcBNfI~&$`oN)ArznUsY<|j^w>u#T6MPV4r^V0 z%0)o3W%;@b7?`?rJi5H$vSXK9lJ0L3fz5tQ2@uNklmLmVQh_94>Lwxkgr(feh>SqP zm{3KM+%zU;8L_0whQ~zYCF2GO%sJP@fEJKu31JFE{-HY|f)JLnqKhKr8(Rcxb{u1^ zca)u^VGutHw%o{Dgxmp?O(;=}6urU^8OVI$<_{H^6A1;yHK=np>|-)bIp3urzWEs? z7;}|#hJ7bor9iT*Lj94r;9C}zE8vx4NHmJ7_8F(?A&LnFc(Xzxnm+5gM!Q8ocgO`$ zE!wMtyHU(^Rw66gkkrN$=sd_?bef_aEP>B+>a8%uanxEpFaZxi#z3dMu41mC240$# zx23R>35r(TLVYwQT8(i6yX|uu$o!kzpn;qv(}9zIAd$Z1-V2WS>gGJRgfQ}t3lm4? zHhdug3fIRDiUOjS_yyBbpQ;G!D(+F;6eUHMMVtLt$YId+N&ik!tM2>5ol>iIX$PO( zHl#@pIOU79uVfiTQM~csB_W^==o+$4?khP=^<b?)+_V$7HT%9yQ4ib%W8x2KfmdK? z`%s{5njdvVnpDKhbE$JaB*zBAX)L@}&v&yxz<y2%k>6)Q%%qZ`ac`aPhpmg#Fy85} zYgb7eWIcGd*%Rwu@QyhOs+(``z?JD(jeZIitItC(05*-T933B4jx2NeVQD*X2<+71 zMoT!sRi(KSFLSptayLb{9~|viXJa4j=;-3Teqy$Jk+EmCx|4BqfZ2a18}$bAZ`<7m zgfA7E2E0-LyLAJMzrD*2=0?T_`u4g8PL7VYHV$+a4z@Obj$Nwc-DrM`T`(E{xXZs} z>E4#I6t$!j{n+S`43!j3iE@o%(cadMGS!g0{DkD3wEU>-*qFQ|C{z;4w}K-ANmNpk zJ$*zu$+BLel%(Vg1z^<ut+L&czk23QDPRv6K&+Ju7=IgHIM`X~JDB}Lr1jJD_IJ3U zRQqGKzohl2E{gyLgm&;N`0h1TRcqCc@Y=^{Qqt&J3)1xJE)fkWv64oOKI<aK*>#Zm zgQ@J%ZnmG{(kCMesewPO32=N!Mq@E8wO3xN_0m7F?q*piP&nBYb-U@-i?{ok-AlYO zDiM?1Y@r)fZmTi#b$vVdlRYoR(4x9>W}KaJ5>3--VUIdI@AN!!4oIV9N4UYbg>t_) z2)l6Wdp}N;BT$VRUQ???`^KDsD9)Mi2r)~yfJ(SrPd5joVwAlu$t8$sOV{!7>>x}e zgE{w{_6^4B7ci+b?xvTUGH#q=KY#5b0-1PP-;7+>QcGB8m;J9KG()pq_Ze?trWTdP zniDqfA_oGx2PM|~7af0!Z?OUCW6t%Y52pZK`v6kNB!35X&bF?`R)9ymf6(}nLx|~b z_k-K#4~_qlPD--TO8|`nf}t01HmK57Jo}GQ>Q4Hl`HK1Nuy-ugc09Ar6pOm+Umyq- z4hR+Z+Szqe_Th6B+qNKO?>N%S>V>MORFdpQz5Opa(odkCsL@2^%%Oq2(6st4RG~fm z4S>kU2?A-`%4icb!c^1I1((|b=P?YcH*3)KOb<fZU2UjbP9MUTIWA|u-iq6q8Lx&) z;GH3*4BOO@A=r{Tf*sMM%b|%H!*8X|lq?UKC9*V~SMj6HTZvi3x<DbYEH<2_Di}!9 zp)_(H6PsiA;t0mw5_=Xpc%)l|B7}k6EtVB7{!pi>hu0%Dsb!IUeq50qJr;`=>#t`! z;N5Yx?wh%?P7_5JWn4OxkC681?eQMq;?_&QXe76zdQ6j3`NpWjCBj`Wp#@^iN;dq~ z>w?;BNKQgPx-^L#?U<-J=^b%Bfv5~DB}-0!M+mNS_x@R<zVfc?>rT*l)(`E7hXwbB zuNBVWKT<p=3$7*oU-hE1umv>Bnu-p`o2SX180B84)0*prQ6m~Sx;>2huw+B^e~3Kd zHpwn@j}1_Vp~dJepi5$@)`dwe!C$EmcvQ+z_nEGWz^?nIDZIpp)(PFANIQPI?k~L( z${%vb^t+Bs@xsib6+m;XUT|=<U=|wCnPA1R>xFZE0sn<LA3mr7t`q=j{`LFYcBF<@ zwvJ|il!1+jxhWI<pV21SyXSY0`B(XC0*DXk00(_uAEs{)nBq53WB9u}`=1m1G0{KV zU$_j^4KqM$rZoRQXI6rvl>K}mTc*swq{P5d%fwX0RR77&85T}~fr)`>W0y*fZg^q{ zl1`GAp^mj~)<3){0gW`#Xm1~LDFyQbs1kBG^Yyfsk~Gtm5{$JM&#M-$ziV^cmGpI- zQaTbKCXsfKVuH43QVNf-g1w25ac%xr5c1zj{M(>Q*vSEqW|9SjA+p9cPXD3Bw$VTK z@=N~O+rPE=+k@QLSF)mfK$xQn|KS7e-)ZqLGgt$rvIb1`UoIk=>i&1o{WaY$IhG{r z0Dyp?i6NOc|KsGfFkA^Us7CM6o9PUDbNL8{ZWSWwk~)hXqlfcvM%)-a`lB+y=of7o z>gT!I)$ScFH=_gOlws9Z`-|HSce^MA0$&J~d$o(s$9Vatp<Gjlx)n!na4wL|LO)|z zA{7K|O60J9^y_;I9>(!2)pZV=df2NFe73GnJubP5E+eR(cH}9xfF%0@OiPqQ(qQS> z0<T3wbnTnpiQPEnZF4<|GouJ%_j6DZ5lxAPV(GgZmz_G*S$(2H75bdqZp&VKmi=?_ zx8Xdz`dp@Ba|+<@<hi@Ru&<-NVn&+dpeF0A#dNE%Ov`8eCvGeFjkG}YvI^ZP7En8C zCA(RKpUy2X9h^UnphcSutCpaTI!XD%6h&eP+238hNNU)&BRok#cah#0xMW7-3R!D4 zz8@`kBixyx`{?uW)x)bue(2?)N#Bc2gsN<g_=0fBf)dBS0ipbW&L~8Q#aRq}-X{vl zfbLxX8aG2~g2)hZRmaO|T5otOYhPRCViov4m8YA?6=LIv-L<6PO7^gl6TK^h7+!C! z`c!o&Q8ILjK;^V=8>b8!ustKSRe!i2r*tT*`&DPn6YoU&I;x_Y8n+GvG}pNyGM!XZ zS_T_?B!T}s>~Y@<H9EF=vMaxK%>ASEhSxUU_C|RKuw;bxONF7ON%?6br(~&OFJ)5l z&sBZ;=C5gVE7LFj>Lx8wGfZW-gIKcicLJAKa5~5wB(2U)=W%*mY~Lc%0^z~~W7R!^ zm-LMk>2rQU%PTDwmE9AgOz6JtYflw1X!5H7@!T#*e8otj5Cyl5Uc|oFy;ICS1ID6L zxWSOFSfrvU&~A%P8A(i*?D|YB5t(YNv~Ul+{f*nHL^x4-q~Ss>2X#nNqdfy!HEH=@ zFH`^9>QMjACZt3q|HIToX!?E!tY32Y`VZ6lx2ZJ&qA<jcIan9~SU~{>`#=4yxs9p4 zv5~p4jU%m<xq~CEwXG4YgRQ+It*yP0u|1u+jrpIEQkdJ~kp|#*e@*yHUXP7R%hE~7 zP;UbN3sE3G{I&>~g{Ms>zygE-gX8~p5sq$l#{a`AzEu6OiY2Vx-_`I-j!4r^jr>~4 z)Ci5_*xdC;q%P9Xp+zmX!8r3r(ZgbQbI$x^%071+0;n8_KdtpQY@*)yA^-u1N>Tv$ zMD~wsbu_jXveGxS{7qedO*DPa`~#GZ1pipsFWDX|DBa6|5O^N=77Wg-`O^|naK1v> z5nby-F>I7<#+qS_#=1pO#HZC<^<8M4(#Yg$%tNvYO*M6UGM0Vo6ZXg#6mkCJRc9q0 zK#AMRXM@JEDyhnuIb}&SCB3gV$!P|-<Eqf+duy*>viDpG3Mn)2bh5DQ#e-}yGFi4L z=|92CjomsfdTt%?<9qfY`XTY8t_fRUOjs{85=M8#c3E&-axl~#$|v?S7_OWc90kA{ zQnF3g?=aWpKx>;sY0%Xs@_zmtriC4iKGoG&jmF{%IVKicZ}>m~dpP-p+7yg?9rJ9; zZh&$ayu!R{bG4>~&f}~$)ZG@)X2@totKti`_<DRL#}nwkFX(Uj-r}b=U<SNq`v}N~ z;rx@n0YrkoY8l+{;dki2H~T}&zhrx&g6#|g!oWK9Eq5A=K&o;M;ia-UlIFaiZ~3GR z@-zz-xigZ|09{nOBH`U4=YU)a;~j&nrOwfU>H7IwJGUvgn3M@mV+uwEiIG;7cjbC3 zuI#wn*8TO!r6ZdBcu*C7d*t2f@c2)>8_<9?gk+|$?Riaii_YLK`n-CctVFpCs0hD0 z0wz;EC@|`ppy+K3Ch8e?-lYn@SDjq=m$Um1nYbLE+407|evUY(^9?W)KQlo#j-Vnm zo@RihDkU#fW+o$U%Ap}v`A%pgqI|NH>Be&Nv-YWqIA<V^#BT~Dm)25-LfXo^gu)W- z7#SyL01H*>GmPtAGn6rCU>Y%XQnN`yZa5UhJPj)>brL&A=?#|i@+KYytaJulnkb|* zB(+W0Qkyaw@5xVo2UCM24~6abqbA7mR_|3hU8Jr<gbEFD|JI-`dp5^Wx^e%Rp*|~~ zccf@OZO_GCw=;o3dYvVtA&MN(NOpa{jc<b0^&`22ZGoDuwVnLFDxRLuXIq3Btcu-< zHC#UqBQxPGQ2h!BB!{phk-?IuNg2W7{YIAhDM(>-TLLv+SFWi1CL*$)LJ90QKNhyx z`)JK7P$8l<!&1fT*rIgf9s-+(>Wrp~V(ifcc7K1VBY|PuW6;oOM=?vM{;JeWcI;e; z{gm5H`R40hx#6b2G-gQ_paHA*+0MU`YRKvv(l$)|)5@?}hhD+t@Lu1CvOF1Rx+%7g z({HgwE0|C&ilt7Iq4n#}+m36_rPuW>r(*1ok+RHR*?mV-mzEu)%J1toT29S6&YNT^ z9k6X_vK>KNrN@}wEFsqK&(PflP24+wB%jOEwR&q<u{-#T>ec3t#msVEtsRH)N0|nT zXATUcQndvaV3vd!JINv0EzWg$K3aY6qI^2}!R8F#le5?vasJlhioPM4m%YQ4FmpK{ z?iyz8$i)}h$vet51rz1wHH6d#|JLPwsWnYCmNqXwRHB|=CKnq$1GineZ(#M(ccW13 zenuY%w>j<u0WuK(q33oc8#@!UY0}KAkA0n~fY6fL_Z=eKn*q;lX79QTl1N6pm`d8E zhwp}Pdo0B^e&dz?KMiuQd5bg*0Dx_P@s9v#Wov8cWG4YYKU;e@I(KusKRXED?#JIv z6F24$)BGi&FHB4j^*1&)^cFNOM#6z0A%MQfd3!sXe-$_RBI&J=ucPwCTjxB_Up*N1 zqt;t%0kp3D^!q%H%ZRysm7t=9_wemWyk+7jlZU-->#BaDDDiRk9_F56`#M_MgY`VO z?x#>%<+I`A<$)2j%$DN;?)!@}5w~;FYk8UjF0a^Qx#s7Rkc-K{`-TY>Sh?tl$18*V zC$r}|{FS(|H^w2vVrDps^nGrP%34vjqK9{?(_m(r8|#VYIhuMOZWm@3Dd8-QNP)Rv zmOe#)P%p?wY0vQ9J3vWa-lBIJGfd56q5VhP!dYBVoyxW%^hMn7iPTwIw7ME(7G!Nj zo}dnf`D;$O<oNt2&B)WuQ@1I0Uk4k8-LNhDY(cr@llW#o8F=4G(1c$@t=B1ggK?(L z1B1&(Vtv$*Tf}>ccfNRR+jb!@vt9lEN^~(Wydvtnccnnpx<_9h_dJ2HF*dHyycL^{ zMGWH41`QH3F-X$w3t?)+NeJfXi+KdJR%S(jDMsM<VcI-`0PjyO4_kvuQLjxl!wle> z_W^_XpCH)Y*w7r{kPY<#tOvlE{|}xSDcPinbN?q0XX78o|4V8|b;0#8KnR~d=Dm%I z5SuLmD+@HP>(=!o>=-P{CmQSb9SJnQCfrh7iD%i`2(MxHDlX#kGZzz}S8w|s^s|Yo z78w!-T&I}|oz%zF*_><P-Gsx!-3;uCVRRKJWDH_cCqo;7??V6OI<NJVCj)%>F!(>D zp?-_29E|nt4b6mYt!(Z8>zxZv$Mf&EnPlyc?fjDMpS3NQ8Bo07claTmjzBfvLTLN- zoTkeREv1#%#3+Sp5_-d_Q3oU`4WCb2Yi5qP4s|@fp{G+H<E?tYaS}F9h1)lmyD4GG zq8aB0`EPF6db@pb=6im$cIV~qY}4z-2PIxNkz1q5LR+NJK`-rAE?E2Vwu&vP*=okk z{FFbeAWm#+9s%XxQ|Wl!P>um-M?HAH=_~M(xnmhIbSgso&|rbl{Mtc<-B)1kx+C4J z#acM0QvD@iD(6Dtt(W!sm2TC9A|Syokv}07E;N?_6|Y&L&99b{Ci>;mXJb6|E@;F; zyyRpls&??gnW2SX<|Nj6={_Six$Z$?)qI^=$rzKxUgAudnX?Idd~dwR;Us}{W<g@Y ztcAG-?;;dw|4*T##F@>?_R*sH61jom1+6tp!pfkM3F_0_`S~S_<~$j4_R(pU>U6N- ziW{=LO#2#4ltzQuJFq<3Au=SJ4yG2@MT_G61t=KK+<J6E91NScEy6-_#*^Oml_vFy zSP+m{Lbq<W!1?-w{dPsmiv^283({Nx(-Mjn*PgY9Sr`&a>{`@AOcdBpiNfk-v;;4` z(OI<UCF;d3ftb63I3%awsr_bsP^cvg)ebu`aEcNG3|puYy%$hYyww!d&`*lktH7sx z7NI=Vj{GZb>Ze(u&9?Ka+T`7wJqE<*+_PY4$-?k`drT6Ja3Wj6E;u2R#xWSU3&{EY zx`>6+cOpl6Br4!{qQ@5<u2ZCHy>NVJwIjHpSnRpvHc1DeD_s&NMYi-g{Anmi{3%dO zUxnevd@GMqfvY)Lz*FFvBs(G4p!t0Cu#)Wex@-@U2T7yGW?Larp^j&hp(URdjLi7F zYH#tbthi<=tU7pK^f?|3-*JNc|MCi@R@Z!~7vaN)3BdT<H0*Ep-_h3A%F*0TSl`gh z_^)Ul$o%sA{pSJw<9Xwkv{u_yMG4EzOYGQLa{|q86($kIIyCv3zlf^RB1n=H2PW9E zGhHuDrA@a=NVzHvF%5D4#@D{?wm+7}d96SG0>s>c_3%*u$H2e<=cAP}?tbToCsmz_ z3OOAJc2R6@@FvuizTsu1A0rdTt&fV`d(tTaV#nZaf=pv13n{r#<8<#YnUkHL{K}28 zDd85)*fLNGMV89vO!!&q{7l0-Q6V9eM&wTYH9je(B&MD!PrRd*eZOVH=3>gw=30wL z`I+&oCOlGa`>6M$SwouJeC2Atr7B;TU!^_Ii|;@u<Q%ozK)@n_sOoNVH6%oPM}oK6 zi$vyR#eKG?&AS0(^HWQn_Vgwu72M(YmDs6WYFf{jIy}D}o|+#5DLVXesLHu&5F3Ui zmSUUg^7%Q^gbY`S1_taGe0&=f-A*`rhG!*CBs~_93t!wZbPY}niOF`*1GnRNEo7(f zrWnTd-kb_&ljaJTHLO#SDlSXTRiBUoQas-X9>^KrAJpIN{Z<*l%3XHECrcgFzp6n$ zY<X7erh&2IvW*|WOAWo1p3biCC|;gGxw#B_69+~=&weL<FV}kwtUM1qe>+`GoV|*j zo|ai9lx3{y5a(iW!fwH~+kWRcPulx5U<I8URg^S-a#$u2%4{3xK&KkPC!MXN+kDqj zq(|?E4My9TU~Pej8oai_b|Gg{i|M+(*R5M8|2-|<en5{rilI*z!6tgm!9Ph$db%8( zAk)?c&DZGF7SMQ%!L^}7)v_n=a(;Owo4S9VS@8_&`omp;a8dE`YFN!8)R^J7`{>?_ z@Gkb?<zvm6`->!(fl6#z7*X7XZFzpj{`OGH_{=J<(j<_%!YWfMr2y3#;fg8mKDs_a z_gZPJlJU;|nOk(iNlyoA*hSSv;Dq!F>Z=Z=@!2QDZ7wqTYxj#ssCS(MxAcm(LOhC` zv&M5chE^i!S4~wg5Bp9A72Gy6q$ggh6N<|hgE=i6&y3_(-0(F5({;UPJeEvOPlH^G zmEM$$dRAP+>OKfT>BPQA=>o9X9-E|&5))uj`Wfy_YFgeXZFCi&B2FWvK*(3O&B5>< zF5vP0SHTvTdQ(WC=S^vW@s|l}hOS0pwe$$mp|bo`{pd*JutvKh9KkGekdZ3=4*6D? zA5t0WbG0<3t9R#IAkKE_=qx7n+!Q-r#8kH31_eeU9j;QmPGfggcRE*M3$Ltr;_639 zg<47V$W5q*r1W6hG7}7UR(zBjk8s~Wnv)%{OI07cI<V+dlU0b^1-2dCex|4f2lDfW zmj&b%|GY8hZ?-DpW@*ZOZyz{mHD&YzvdpnRkQF)UjchZE0ETr4h8eM)*kn<#qu(p) z?^5*5f69=Bt^oQHX?<|_6;p92ST?*z1f=DY&b0_caz%PGqE+!%Gv~0@mVCoNLi*Fz zYcb{-fl{ag;uFq~maAVwxo;j7hC^KmwtP6N9V7fdN|4tuRmP+w2-fD+q=0NOnF!A* z532VT+oxvy&_oy=<CV=vjMm;GspVUZ6U=kKm)I-m?u9EC7qvvNH~6x!nh0h2!*LE~ z0708{UguSbGn`|s3I5914EM3M?}&rX4-=xJQ20}~mZ~~Z&X0~8s*FP9zUwB@RAJ(7 z!EpbTjZsiIDV6}{!M@FkD6=L*trQjKeAO}!*tg_k9WkeL6jfz~bIo{9v%^R>yDopP zo14CXN3id3ybC{D;>6$mVA*<hB5{6-DNPh%9ty$bmzE*%49auP5M?SRL@CGF&Fi+0 zeysNL{bI#NjLJiEXPFmE#h`R1Q@!EdoU(6IxM1{>gMdV&=L&fCbTe%_k`fjr1=2ke zH{4Z|v7msSU|t1o6kUiH@{=m@(`L3Z@%Iq@?)!m~a^$!<+myfWI-WP?eKPN)Ue1y+ zE(*a}G;k$irI}x|R=1Gt1I<Uz&aT*38m(^5qmKzJ(x<F8-{k<`Q|DdIo)gAlX$I&- z=DRn{N_(7s<G#L%^}vflyEHQztRk64EJ3Fb%mZG-@pL|E)1}Tu0U2WHn?~tu44BS6 zD%yUpbCRqVv+d+VC1_lfs#*#C7G+UQiVtEM+Zh6fea=MC6ue(M2)PO*?1d(^zt@+= z&N_|^2Q|R|@WlU)33h0nJ<SIeuw~&yOY!sd%a5{S6>*l<vY3zuFMFJ-T~x9BAxo^p zaWp#C6hSao`ved-aC=GU^<X#(PUsPTbzPeCK=q{UDWhqQ>1<<pBAVjxh8pEUIf<#D zbu1l3cuRMMh28fvCKzYkRnv-6j9v|}#7LsT$GH_tiq)U02{Bvc0|*X#;Dn>O)uE*| zx73sL*r|7=40PK)q$TG|I-$FriJ<y-%5T<?bup2{)X7J>UTJI}vyMW-Z9!Q!3{MDA zL3MVC6zvq~^7_u!REfG2xmyMeMzg;H0U=-LnLbEVjmW?zAs0s9`i<hJr{iOjgImce z^bJ2E+s@wlEUnwMT!A!`*q`Yx)P;4_l8vnoM4ZcvZjSA!4fQD>inysln-R6Ey6IMr zyp4;7W~f6T$>3aP;C{R{cS^5=$+uXO@SHx0;h1)VTz^P7&j8n|T0vOl`RIieaVy`_ ziM>HU{!<?o;loT_sUxv}J6Ptdj;(}7eR*FC|FK$ZAR@+lf}7+{usD9V;=See6}j$U zePO58T7*}av^7M=K*LYwI%0%GCA!?N<}*M0jTfnLc4F0P;;@>H(N;Da^$H5(WEByN zb0x<VJiw#fgum)<!9<9LXPgIoeL#$7%(Cbuq4hs`87IAC&;6N}0l!#d$k(Ef4fr}U z?SYH7L%f$HtDKn~*4T=f^MqHr>^REHj*%PsQXEr(KAUY&vth{5wi|K@MfkJ{3Tum~ zt8lv8@Cp)rNODC+H@x>Iotw=|krQrh=S6_7#%T;gu`fai#pwjwrBAfYvUhNv__XMK zY3x+y;OUVOQb4-fcdrv|O7nxNNUZVx7X#v2;_DGwn_#p|xI#3#+3l;av?I3E=+jHM zyd5@(1pGZDs$z{`t8wTPZMhX5Q!h7@b%wpu0?`&J`V+U_d(_$=uujo2F`PXv*<}PJ zXt(HWBg!w*q#4Er&&8a`3U95b!@St;NcZMs=d8)(qln5?1k?2`v@4Ex0a#N%GI;LG zgrHc4LJxYHn;=gx^Cjgw)9E0K+e&`c_f@cFI?en%6nk;^NRZiW#uK(A5&VXi7pKz~ zU(o`(<%%OhyQ&ZO^Gk&lG??&eUf|o*L{v>Wa4#7pc!iCd8+@V)Qiw4w3$zJ5>S*xD z?W`o36su+tJ;G?(CNtKch#xS4u%ok70Mmt?g^$~+AM!A9s@+KpL$oh_U}2R{|4K}k z*DlibCn$^Y<m6lnNqy*RxY0$=aY6Eu^?2n>dQ}5?sjad-;T*6#(aA;PRD>XpLpSni zz6#upOANt?1D!J5s+Y5Pfi=o<G3d<E4?J=>@<C>fMRdE-x!6ZD=msBRyS|A$SB%1# z+~>7i@M5de&(!;)aq=ISZ!Z}!VT9cd_;W4tQ5kU8?$^X#GAXYIfQ)12VEKhMc)!NF z<y4}rIt9P8l`BHQBb~)Z67KKg8Sr((<~*M1(xiU*fsmgex7k;R7)5@gxho=*MoWGX z!!6QQ3e*@!g`#kpdn6sJikAGK)89{}hj46W$ANV^6V7!ofqA2?Wx}3m^HxaBtEC3S zzvdvTsWDizc#=f9?wp{4W8PxLx7p38sMy|?OwbO*_k)iebWaZ7fw-9^wCGbEfy(R( z%D#WK@U4KHk<d7joY|bIRvpALVvK~tdoe;&T!Vr^!IZ3id2*E$xP#2g9o4?EsDcit z*j^*Yp5#^R&LxC;j+t3zbRW@W$oKgQe(?(Cn`bp8&%+XI89OD8?@Un9tTXtI%2fS> zEOM3?FPnTnZiNQy+7yEOs<bOF^*rrO+S4If>MOIS#qA_-mtt1?2Rp{UA`0Lo%21Lv zzk?|*=W=;}>khqdEl5=n8YqxO*GsOZqaH1ySfNZ@SivmgXWM??^_=}Kjoa2rYp{)x z!TGX99h8leqoKPH%t|%uIY~FAqgjBTQQh1Q@`MrYp!0h35}Q<CZsdM0eEUU5^_X@w zI4W>ULl^(!?Hn#Cw=&1>e%lnDb)|cuc&Go+p36JzO|QV3C^vrD{(`l98{`TQ$#e-2 z(U+2SbBCP?m)cv9Q_&y1gv;+A4thGs`r;||eTIYXNGN&Orc=w%PqmPD=nuQuo6S3m z#r%m8SIyev3~`UxGXx~zS$*~xlQxb>P?3;=ykjqg1J5ax()W);o9yzD;k|FsB9Nn^ zSl$o=q_0#_KAx~iLXD|?x=l91jLjEC&5Dtd>KLFIu{~YyWTvxFB-&x+Lc6KQC|bZ@ zFD2yu*><*V=wfz!zL-4t{Hdi0*}=&=|M14>Hel^T4BW?ucJ~hrlW4>gq?}(vBc4nT zYOU#IKN^>xRgetGorcE8``Fs8KE0_1h?6g(q88^l-+sMX?zQ7xs&?)-BZJwcu8LcR zFRj0rO{eu2;c+RL7jB{1kx4>M=m6xR_~k)}to8jgNOnOu&)u^jMbU-2GvT{WbFyw^ zDwxWr3|9}awSf8j?=Oj!qAIu({Jlmhq{ySl@Wq+5o^(7MMRQzwzds&{*rclEYrp0u z4YcY628TYu^&$@IYc_|BpQ@xNVj!G0jcWL&OjG_4!*S<b^@w`r%^QFhf3fTYs<C3S zWf3lRWrQa!xveAND5d+bG4Z3Hyq6feYaJ+cT~Dcoe+u4O@9wT9U>8Ov119=N?_09C z)DVr_f-Pe~W;~QiH<U;y`W0e4LhZU#wPc61F`WWG8Q-#&n7we|#wN;IcQ{xQ&&vt{ zNO}=`w{7Se?nlP9ddSQ&jh@eSIY}I=4mdnl6inF7GID+T#Fu0+b;kwqHn3T6j&lX) zm)ViYmLYO2&BGkzg)}Tq`#HV*t#@d1;Zc=!tDHziLq*W{Qtvr_=mk&ceSCXg-eqs5 z;mn7AMoUe8IeZEs(MRw2wrDL#9_Q&PeJSQEze7^hGmp0ALl!C@>Apn-6!l5-mCeFH z(1NIx&6&KN=9sy?|0rR!;*$7#<X9p}fqLH&rv<i^<nt?aa{q)umiELv*Mskp+z3X3 zh!=B<wYNKBT%!Utu|}(kQPsVRoHE+ZDZPXa*vCNSVkc$@ZueWf7<mTVhRm)yH@G%| z$->@oahuQFLDgByXFsygSCo`&wG4bRBR30cD?*2W^s^C?$1G!-3#Vr?)~qD5BFHGO zyL(hiOEV43u6Ph3+y??JNusbStP{?;Y964j&Jkexn|RU|jT-v{DafTQ_7{}dXPoAL z4nG%A-6Wq!Rjr^`I%J0GHbvv7_^cg$&1hx1t*7FLM|fS(wEwmO_mHR6)+Vs`6q_r} zOFPZvKZjiM>1D;WZoX*ET4lJcx-ZKkigO#~B`Qy1G9Nu0?n1d~*eL9M(oMB?ODI^m zqGvJf(nFnHA}Q-ht?|aYzH{P3Q+~|KF`#guFH*Wu|I0%Alo}mx&UvQlE8^i#e^T*Y zMGfch(T}sILiaIE`x+O$i<{%0Qd6AVA<gmkRa%{_-lLEkht2X5>%kn9mQv4#qIpbN zxMvcAk-gzXTChZV!_osL0*meJ?8?5_IkMVa`f|K`aKE^Kbw74Kyvsvq!+zNGQC#sU zzNz$hFO0ta%LfimQGpo&fUGwf#Q%`_cCod$GEy>jbOgLK{jXdhM*QpVxe{Nc|9m&w zmmn>F40!c-|LqB1%s`f<VOy1yjR0@eR|HWLCC=Ou5htNZAh4<Pl}lhm7-9)_oN77( z@L4uV1}=x$%j_7MHKNwG{*eV193Z^|Zdxe5y<Ix;zgj!{xR|m(j!#ruTUycssjZ~l zEfsccrM85&=s~IWH>jbf89h%AQ!82}N!l&;M~JMZut+48Bugr(tV9nIN)JNvEIo)l z_uk)i?wq+3W`E<A^U5FReLm-W@444K-_Li-UsMk~;z{m0AwOKR;CfS|QRgkSoC4#g zv(>F)`fa;2l4mOLS~Z3`N)85amp5qS*0`O1>ge@t@@1<&DT~CjKXD_Rf>{R4K0d4B zanG0Mj6F?HUi;k0b#k7WZMvMc;^g*2&e@(xhvoA;^sV{Zbgx#`ZOyTcF^uHi?J<A4 zCM4pA##%%5No@Ihy^N^#8@DGG-(i@xN$KnR9lZMYp3iz#jlU;pnD#g|f8|7Xy+4YR zGoLCOyeW-MF$-2th`HasMwZ=Iv&W>bb!m)O!!fy*|G3(Y<g=ol+*njl+VpVMz@=Bu z<P)TKn?IlFUToBA`rXC-shSF>9bYuhOz)B2Sox}BDC@=HWqM^&CI-JV*}v=9RZe`C zvfa+FcAdxb);oDA&ypi_l~gyY996NIb-BB(^WFRGMB(Fh4Z3&U6jPPJu{*i6Xe;>E z*+kDrWf};jMc~b|!H2r1pwLs!ozLIm0mWWJ1Qbb4Sz_)43^R9hy60vzNJ%H!IViLJ z?mJJLCYdy%w$f!opWM3H^ON3PnWJqTudsT~U`$(YX<RZZyR~apK-5*g1?(j%hI5|# zwPzbxT^VC6-OJ2gAbG&>v{t!<TAfPA`u3<Z8?KzpEDY3cxNmbS<a?(&d1j}NrD|>W z>u$5!)a6bWik)tLb5$XrNW(@iIkWj<T&GOp5(zV@8QQ~>hSsXx+~0ory8E?1#@zZz zOE+svkItZt{Mk0oipZCnIn^!dr-$N<-hO^+Z%N(mp$RXGciT9975H0G$~^O*$9#SA zZdXHFMcUJX4wG7bTDr`wxK!V<ye{3di<-J49TMFX<6@Ssi0`&guVn7pVaa$>%^Vx_ z%V4Z_-H2XVr_;mqH|vKlze%sI?Rb9<AiUtJbSv_+mw%9#z*2|tiAg70auMKCdoI&= z*>G@QTM<}l6OhJ8YtJJ(#{U*dVA^G{zS|U>m7s`?+vahzv0Q;c<q0m_CEeo}F61^A zJvi2IJH=Q%s<D4&+1RDCqI?~09;u0K3mfChZ+$6Q`lRJMF8Gq&a{f;K{IS>0sQp#{ zwXDZ>ciH17nyw`qK4@|?HOv22^)SmXVuMP8f$Tx8+Qg>m=K@o$O9y&x-yX?jmV1PH zOkx>SufMlqd(oN5a&9P#J#u7da8G4cPF8$j#iW%%N15&w)1DN9*Ro7W|A>GARsGaN zd5K<UpV|YxHm6goj!yB_o?h0vHK9Ls?V3%A_x-&K^BTIjiY;u@hrO{1Los)xawNO> zkJ+xK^)7p&d=#xhBDA!RXiRHSm*cT48fx+iHH+Ir2I_d0p_OGprS<1{<Ep><uEgby zJuC3hrr#V_X)rl)a&A#<|M^|%4%u3s^|2PGYLs7AD@wC$kE8|X<XzooGa+zr-OK1< zbLaVX1G6RMvO*v4a~wZZ=KF(eo$juo&ODP%FJvE{`m^6p>xB2F6Xuz(wWa^w-Dzl7 zsCRxjKmYoV`m^6jR26R7qU_UrGJ2#zmHk2|_rPLf3->h_4xcH|^huunsJH5tr_H&8 z56n4VsCIArHBa-=JBnkK1p;G^Lj3U~;7DyP2o62b5r+rH%Fv+5RsJ+d(4Wa_bzuRr z{*quUMsAs>5N{>_<Liw0yne|Q9GAOef67>VbE;zbZ4Jfj_^{y>v9ZJ7)Z~|hTjw^c zi8Roh?CX}Zf2*6>#$^|e=_t(5ZML>ED(SW`kx_Twwe4gD>!_Fg*uVK2-@BwZ+w-j3 z9QRhqEe>zHAYt;T#-Lt_U)Gb5yJYq~#aO>FgKO;*YXgpKUY%Lj+ElBgq_L+rBg}ro z+3C!kGdTMe?2GC-8Zt7a-=s3{c)xcvm=uXIh72Vz5i)p=CfBKbYABeJanj%iObhYR z(jwYmuMmF@8zj}B+2E79GVnYfv_-q$WOr&X7j%D9iouW<=>8n|SCH9+r|kIg1Z}c< z!58q}(H8bDyo-GPzW4E9@FgIJ1@q#CgRJ%lfo&v-NhD^W?Pz^Z5a?SPY%Q>FBB@jW zL8d;FEs25%8Ab<4#L9GAndAtj!2t{wJKHBd*xWCpLwJRT2C*XoMcYk|m8E}$rC^iM zNw!q(ERdHQIQ@hYmRhe0Zihw!Tm=vXLejj!;}zy*<N>-*IGZif?vhl!B^KlFd_r6u zWJ~3H0t<C4ziweP;I9|boeYkJh4}Mvz8l7O#rf!Mnb)QA26I*asd5ny8?vQxvE-&1 zCTaYsK(hjvUCdGd=Q|KMe1y0Q{31gF=Y{wOdx5kHl-V-#2L32;$(LXjSP(6hiFt^A zWhUOb473ITtyt{>$b1G;tb~|8;a(i<S(f)R+ba+_=Yy~`Kp`9XRAs_Vef?JgO13Ec z)s<TI13+8>1|SI6SNI4xH#nFZA_RYJwGB5l-N`55WJ`r(v;9IZb^mrS+pj@P=?Ex~ z1Bu2TP>xRb1C>^Mx+Ns4@FgB>5uWZAa7pc+wZr28Q2ZSHOcsDfE7CwY!9ha$c-}8H zuqf7XB2Z*Y)psFA&50Qk?V11*Ios5TR5`e^(G%%VT(4k`|7uj&+us6ynds3dF?TOP zn;Av4R2o(TgMX-ieHhH96WB-vW7qvlT3YxjkRC!GK3R?L@O{F$;(si%rQ91Z=HahT zs#XA5#vptInSR=$ne<WPR(>2WzTw*|nu$e?bCz<Y9*CIfAVAdw7I5oSQA~7B?`&wp zgC$Jy5*{q?nG}5(i!({~Vm+ACY;g4p?!U@<qFDH*;K23r1s5sG^_z7U=f=+=xMYj2 zr7MS%pA5J+z&?ao_hIBLHlXA3yuCqkYh<X%N*e9!&f=4s=1G9bmI}rMPpwZ|`W%2u z!8SWZ06cF7JvhkU8&x^(_YPd;(PIRxaud;_ux3u_ji&&lsY*PFLzP=W_Oa0Q&*1^* znSYQ!=9x#4S1r46<X?>hibSKx;^xy=s(?OQb$}Jn*J(zBTohsp44imngw=u%Ae+7J z;lMVXYCM7(-_UC`(d=5>3$6}xp{r8Pa#Y|_M+a1-<rnvH<}*8jNwTRTu{#Q@)zsA( z@GQrnQM=rVhUp&?HTumYsV^Si&)<d-T#`@aV!`uxxoHLVDE9<R@RtIUJMbe7_x+bX zqB@7u9^g9V(g_~fqP(p0?$Skor3kbN-an)kj>dC|1kWi(ywyBv66AjadU2@wc>+qd zD6}GKz@<@_!5DajZh2bvqe0!ka}mnik<y1V$#1hX>>=1F6aD^7c%du{`xxfOew!wh zOII)sa@%*%aK$JeM<vn~a)QK?J@mwXQPznHrz=?m;f{N0;qS}%h$?C$s(=xdOjj}p zl5PJOoh<ZlBC3E86^V&OOZGsd**-d?*adv3U~HE-gOsI#;JVCF!Jk^Bh6<*u&jP`7 zvuMEoqFM`;j7dfdp+K^8HXT`<vM4AMty=<_%KK@U;#4s~k!bY?h@Af?E%K9VK~RZU z5To@MAo1HnG(>T$F;KB|R(Xhh3tk`zJ-CQ#oTp;3FhULQ5PLj_4l9oRoyw#$eM6>Z zE)7#m3pk_-zqWyoY1nI<@Z&U8K@%_au8z8c$=@N6-X{!YUjHyqEY~m`fv{xE#Y=oJ z$*1yYBqNSns%FwuOSaI{3t#ME;e@(+q2|daK1}>%kMC%LF#{zOY*;{p|9CqkR7q#3 zgent6Vg5h%N~o9KR0#(nTPQ*=IuJ1}mei483y)eR;YbQajzk;-CCWvugOICxO2iC& zf{_rVp}r_cD=HB|6U!w<<<hxxAoozI2=2f4>QD!PE%7D9MFR)1@vMkJh~ue2v8Z{0 zf;}$+D~^=`#iEG-5Sv#o0xMQp0OShq+1Q~p@xk`&jO#R9%DJ(?X#jahjJ6Ob!@w35 zJ*0**hd+d)pwa(ri#oD~bYZdBfh-i8(nurrQ;uihj!kz!3uWFD4f?d>TBuEiL3i{A gk?)#CY7_4u(Ai!Jyu4&EegJ<~PGK;VTCm^#0dV+*tN;K2 literal 0 HcmV?d00001 diff --git a/src/test/resources/overridestest/overrides/config/testfile.txt b/src/test/resources/overridestest/overrides/config/testfile.txt new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/defaultconfigs/testfile.txt b/src/test/resources/overridestest/overrides/defaultconfigs/testfile.txt new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/aaaaa.jar b/src/test/resources/overridestest/overrides/mods/aaaaa.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/bbbbb.jar b/src/test/resources/overridestest/overrides/mods/bbbbb.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/ccccc.jar b/src/test/resources/overridestest/overrides/mods/ccccc.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/fffff.jar b/src/test/resources/overridestest/overrides/mods/fffff.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/ggggg.jar b/src/test/resources/overridestest/overrides/mods/ggggg.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/hhhhh.jar b/src/test/resources/overridestest/overrides/mods/hhhhh.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/iiiii.jar b/src/test/resources/overridestest/overrides/mods/iiiii.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/jjjjj.jar b/src/test/resources/overridestest/overrides/mods/jjjjj.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/kkkkk.jar b/src/test/resources/overridestest/overrides/mods/kkkkk.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/lllll.jar b/src/test/resources/overridestest/overrides/mods/lllll.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/nnnnn.jar b/src/test/resources/overridestest/overrides/mods/nnnnn.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/ppppp.jar b/src/test/resources/overridestest/overrides/mods/ppppp.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/qqqqq.jar b/src/test/resources/overridestest/overrides/mods/qqqqq.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/rrrrr.jar b/src/test/resources/overridestest/overrides/mods/rrrrr.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/testmod.jar b/src/test/resources/overridestest/overrides/mods/testmod.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/uuuuu.jar b/src/test/resources/overridestest/overrides/mods/uuuuu.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/vvvvv.jar b/src/test/resources/overridestest/overrides/mods/vvvvv.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/wwwww.jar b/src/test/resources/overridestest/overrides/mods/wwwww.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/xxxxx.jar b/src/test/resources/overridestest/overrides/mods/xxxxx.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/yyyyy.jar b/src/test/resources/overridestest/overrides/mods/yyyyy.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/mods/zzzzz.jar b/src/test/resources/overridestest/overrides/mods/zzzzz.jar new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/scripts/testscript.zs b/src/test/resources/overridestest/overrides/scripts/testscript.zs new file mode 100644 index 000000000..e69de29bb diff --git a/src/test/resources/overridestest/overrides/seeds/seed,json b/src/test/resources/overridestest/overrides/seeds/seed,json new file mode 100644 index 000000000..8d630d4df --- /dev/null +++ b/src/test/resources/overridestest/overrides/seeds/seed,json @@ -0,0 +1,43 @@ +{ + "bonus_chest": false, + "dimensions": { + "minecraft:overworld": { + "type": "minecraft:overworld", + "generator": { + "biome_source": { + "seed": -8634566777844830259, + "type": "minecraft:biomesoplenty_overworld" + }, + "seed": -8634566777844830259, + "settings": "minecraft:overworld", + "type": "minecraft:noise" + } + }, + "minecraft:the_nether": { + "type": "minecraft:the_nether", + "generator": { + "biome_source": { + "seed": -8634566777844830259, + "type": "byg:bygnether" + }, + "seed": -8634566777844830259, + "settings": "minecraft:nether", + "type": "minecraft:noise" + } + }, + "minecraft:the_end": { + "type": "minecraft:the_end", + "generator": { + "biome_source": { + "seed": -8634566777844830259, + "type": "byg:bygend" + }, + "seed": -8634566777844830259, + "settings": "minecraft:end", + "type": "minecraft:noise" + } + } + }, + "seed": -8634566777844830259, + "generate_features": true +} \ No newline at end of file diff --git a/src/test/resources/overridestest/overrides/seeds/testjson.json b/src/test/resources/overridestest/overrides/seeds/testjson.json new file mode 100644 index 000000000..8d630d4df --- /dev/null +++ b/src/test/resources/overridestest/overrides/seeds/testjson.json @@ -0,0 +1,43 @@ +{ + "bonus_chest": false, + "dimensions": { + "minecraft:overworld": { + "type": "minecraft:overworld", + "generator": { + "biome_source": { + "seed": -8634566777844830259, + "type": "minecraft:biomesoplenty_overworld" + }, + "seed": -8634566777844830259, + "settings": "minecraft:overworld", + "type": "minecraft:noise" + } + }, + "minecraft:the_nether": { + "type": "minecraft:the_nether", + "generator": { + "biome_source": { + "seed": -8634566777844830259, + "type": "byg:bygnether" + }, + "seed": -8634566777844830259, + "settings": "minecraft:nether", + "type": "minecraft:noise" + } + }, + "minecraft:the_end": { + "type": "minecraft:the_end", + "generator": { + "biome_source": { + "seed": -8634566777844830259, + "type": "byg:bygend" + }, + "seed": -8634566777844830259, + "settings": "minecraft:end", + "type": "minecraft:noise" + } + } + }, + "seed": -8634566777844830259, + "generate_features": true +} \ No newline at end of file diff --git a/src/test/resources/testresources/manifest.json b/src/test/resources/testresources/manifest.json new file mode 100644 index 000000000..612482ef0 --- /dev/null +++ b/src/test/resources/testresources/manifest.json @@ -0,0 +1,44 @@ +{ + "minecraft": { + "version": "1.16.5", + "modLoaders": [ + { + "id": "forge-36.0.1", + "primary": true + } + ] + }, + "manifestType": "minecraftModpack", + "manifestVersion": 1, + "name": "Vanilla Forge 1.16.5", + "version": "1.0", + "author": "", + "files": [ + { + "projectID": 224223, + "fileID": 3111817, + "required": true + }, + { + "projectID": 403499, + "fileID": 3163628, + "required": true + }, + { + "projectID": 314904, + "fileID": 3038811, + "required": true + }, + { + "projectID": 404465, + "fileID": 3173207, + "required": true + }, + { + "projectID": 392748, + "fileID": 3151372, + "required": true + } + ], + "overrides": "overrides" +} \ No newline at end of file -- GitLab From 166aff201d7bd8077ec27320cf1f718ef2b7b399 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Thu, 6 May 2021 15:09:32 +0200 Subject: [PATCH 74/91] refactor(DI): Getters and setters for project related things --- .../curseforgemodpack/CurseCreateModpack.java | 124 ++++++++++++++---- 1 file changed, 98 insertions(+), 26 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java index 1a8303bcc..a7089dcd2 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java @@ -23,7 +23,6 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.therandomlabs.curseapi.CurseAPI; import com.therandomlabs.curseapi.CurseException; -import com.therandomlabs.curseapi.project.CurseProject; import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -93,6 +92,85 @@ public class CurseCreateModpack { } } + /** + * Getter for the CurseForge project name. + * @return String. Returns the name of the CurseForge project name. + */ + String getProjectName() { + return projectName; + } + + /** + * Setter for the name of the CurseForge project name. + * @param newProjectID The ID of the new CurseForge project. + */ + void setProjectName(int newProjectID) { + String newProjectName = null; + try { + if (CurseAPI.project(newProjectID).isPresent()) { + newProjectName = CurseAPI.project(newProjectID).get().name(); + } else { + newProjectName = String.valueOf(newProjectID); + } + } catch (CurseException cex) { + appLogger.error(cex); + newProjectName = String.valueOf(newProjectID); + } + this.projectName = newProjectName; + } + + /** + * Getter for the CurseForge file name. + * @return String. Returns the file name of the CurseForge project. + */ + String getFileName() { + return fileName; + } + + /** + * Setter for the CurseForge file name and file disk name. + * @param newProjectID The ID of the CurseForge project. + * @param newFileID The ID of the CurseForge file. + */ + @SuppressWarnings("ConstantConditions") + void setFileNameAndDiskName(int newProjectID, int newFileID) { + String newFileName = null; + String newFileDiskName = null; + + try { + if (CurseAPI.project(newProjectID).isPresent()) { + try { + newFileName = CurseAPI.project(newProjectID).get().files().fileWithID(newFileID).displayName(); + } + catch (NullPointerException npe) { + newFileName = CurseAPI.project(newProjectID).get().files().fileWithID(newFileID).nameOnDisk(); + } + + newFileDiskName = CurseAPI.project(newProjectID).get().files().fileWithID(newFileID).nameOnDisk(); + + } else { + newFileName = String.valueOf(newFileID); + newFileDiskName = String.valueOf(newFileID); + } + + } catch (CurseException cex) { + appLogger.error(cex); + newFileName = String.valueOf(newFileID); + newFileDiskName = String.valueOf(newFileID); + } + + this.fileDiskName = newFileDiskName; + this.fileName = newFileName; + } + + /** + * Getter for the CurseForge file disk name. + * @return String. Returns the file disk name of the CurseForge file. + */ + String getFileDiskName() { + return fileDiskName; + } + /** * Ensures the modloader is normalized to first letter upper case and rest lower case. Basically allows the user to * input Forge or Fabric in any combination of upper- and lowercase and ServerPackCreator will still be able to @@ -125,31 +203,25 @@ public class CurseCreateModpack { * the modpack. * @return Boolean. Returns true if the modpack was successfully created. */ - @SuppressWarnings({"OptionalGetWithoutIsPresent", "ConstantConditions"}) public boolean curseForgeModpack(String modpackDir, Integer projectID, Integer fileID) { boolean modpackCreated = false; try { if (CurseAPI.project(projectID).isPresent()) { - Optional<CurseProject> curseProject = CurseAPI.project(projectID); - - this.projectName = curseProject.get().name(); - try { this.fileName = curseProject.get().files().fileWithID(fileID).displayName(); } - catch (NullPointerException npe) { this.fileName = curseProject.get().files().fileWithID(fileID).nameOnDisk(); } - this.fileDiskName = curseProject.get().files().fileWithID(fileID).nameOnDisk(); - - } else { - this.projectName = projectID.toString(); - this.fileName = fileID.toString(); - this.fileDiskName = fileID.toString(); + setProjectName(projectID); + setFileNameAndDiskName(projectID, fileID); } - } catch (CurseException cex) { appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.curseforgemodpack"), projectID, fileID), cex); } - if (!checkCurseForgeDir(modpackDir)) { + if (!checkCurseForgeDir(modpackDir) && + !getProjectName().equals(String.valueOf(projectID)) && + !getFileDiskName().equals(String.valueOf(fileID))) { + + initializeModpack(modpackDir, projectID, fileID); modpackCreated = true; } + return modpackCreated; } @@ -167,17 +239,17 @@ public class CurseCreateModpack { * @param fileID Integer. The ID of the file. Used to gather information and to download the modpack. */ @SuppressWarnings("ResultOfMethodCallIgnored") - private void initializeModpack(String modpackDir, Integer projectID, Integer fileID) { + void initializeModpack(String modpackDir, Integer projectID, Integer fileID) { try { - appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.download"), projectName, fileName)); + appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.download"), getProjectName(), getFileName())); CurseAPI.downloadFileToDirectory(projectID, fileID, Paths.get(modpackDir)); } catch (CurseException cex) { - appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.initializemodpack.download"), fileName, projectName, modpackDir)); + appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.initializemodpack.download"), getFileName(), getProjectName(), modpackDir)); } - unzipArchive(String.format("%s/%s", modpackDir, fileDiskName), modpackDir); - boolean isFileDeleted = new File(String.format("%s/%s", modpackDir, fileDiskName)).delete(); + unzipArchive(String.format("%s/%s", modpackDir, getFileDiskName()), modpackDir); + boolean isFileDeleted = new File(String.format("%s/%s", modpackDir, getFileDiskName())).delete(); if (isFileDeleted) { appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.deletezip")); } try { @@ -224,7 +296,7 @@ public class CurseCreateModpack { * @param modpackDir String. All mods are downloaded to the child-directory "mods" inside the modpack directory. */ @SuppressWarnings({"OptionalGetWithoutIsPresent", "BusyWait"}) - private void downloadMods(String modpackDir) { + void downloadMods(String modpackDir) { appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.downloadmods.info")); List<String> failedDownloads = new ArrayList<>(); @@ -309,10 +381,10 @@ public class CurseCreateModpack { * @param modpackDir String. The overrides directory resides in this directory. All folders and files within overrides * are copied to the parent directory, the modpack directory. */ - private void copyOverride(String modpackDir) { + void copyOverride(String modpackDir) { appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.copyoverrides.info")); try { - Stream<Path> files = java.nio.file.Files.walk(Paths.get(String.format("%s/overrides", modpackDir))); + Stream<Path> files = Files.walk(Paths.get(String.format("%s/overrides", modpackDir))); files.forEach(file -> { try { Files.copy(file, Paths.get(modpackDir).resolve(Paths.get(String.format("%s/overrides", modpackDir)).relativize(file)), REPLACE_EXISTING); @@ -338,7 +410,7 @@ public class CurseCreateModpack { * procedure finished successfully and we have a clean environment, false is returned. Returns false if the modpack * directory could not be found, indicating a clean environment. */ - private boolean checkCurseForgeDir(String modpackDir) { + boolean checkCurseForgeDir(String modpackDir) { boolean isModpackPresent = false; if (!(new File(modpackDir).isDirectory()) && !(new File(String.format("%s/manifest.json", modpackDir)).exists())) { appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.checkcurseforgedir.create")); @@ -356,7 +428,7 @@ public class CurseCreateModpack { * @param zipFile String. The path to the ZIP-archive which we want to unzip. * @param modpackDir The directory into which the ZIP-archive will be unzipped into. */ - private void unzipArchive(String zipFile, String modpackDir) { + void unzipArchive(String zipFile, String modpackDir) { appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.unziparchive")); File destDir = new File(modpackDir); byte[] buffer = new byte[1024]; @@ -428,7 +500,7 @@ public class CurseCreateModpack { * @param modpackDir String. The directory we want to delete. * @return Boolean. Returns false if every file and folder was, recursively and successfully, deleted. */ - private boolean cleanupEnvironment(String modpackDir) { + boolean cleanupEnvironment(String modpackDir) { boolean cleanedUp = false; if (new File(modpackDir).exists()) { appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.cleanupenvironment.enter")); -- GitLab From ca1215a0bb35ecd24b8aac4b4ec62db7d56c6547 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 7 May 2021 08:05:46 +0200 Subject: [PATCH 75/91] refactor(DI): Try and fix tests which fail on GitHub --- .../CurseCreateModpackTest.java | 57 +++++++++---------- .../overridestest/overrides/seeds/seed,json | 43 -------------- 2 files changed, 27 insertions(+), 73 deletions(-) delete mode 100644 src/test/resources/overridestest/overrides/seeds/seed,json diff --git a/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java b/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java index 6479056c6..7b08f12b7 100644 --- a/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java @@ -101,35 +101,32 @@ class CurseCreateModpackTest { @SuppressWarnings({"OptionalGetWithoutIsPresent", "ResultOfMethodCallIgnored"}) @Test void curseForgeModpackTest() throws CurseException, IOException { - //TODO: Figure out how to run this test on GitHub Runners - //if (!new File("/home/runner").isDirectory()) { - int projectID = 238298; - int fileID = 3174854; - String projectName = CurseAPI.project(projectID).get().name(); - String displayName = Objects.requireNonNull(CurseAPI.project(projectID) - .get() - .files() - .fileWithID(fileID)) - .displayName(); - String modpackDir = String.format("./src/test/resources/forge_tests/%s/%s", projectName, displayName); - Assertions.assertTrue(curseCreateModpack.curseForgeModpack(modpackDir, projectID, fileID)); - String deleteFile = String.format("./src/test/resources/forge_tests/%s/%s", projectName, displayName); - if (new File(deleteFile).isDirectory()) { - Path pathToBeDeleted = Paths.get(deleteFile); - Files.walk(pathToBeDeleted) - .sorted(Comparator.reverseOrder()) - .map(Path::toFile) - .forEach(File::delete); - } - String deleteProject = String.format("./src/test/resources/forge_tests/%s", projectName); - if (new File(deleteProject).isDirectory()) { - Path pathToBeDeleted = Paths.get(deleteProject); - Files.walk(pathToBeDeleted) - .sorted(Comparator.reverseOrder()) - .map(Path::toFile) - .forEach(File::delete); - } - //} + int projectID = 238298; + int fileID = 3174854; + String projectName = CurseAPI.project(projectID).get().name(); + String displayName = Objects.requireNonNull(CurseAPI.project(projectID) + .get() + .files() + .fileWithID(fileID)) + .displayName(); + String modpackDir = String.format("./src/test/resources/forge_tests/%s/%s", projectName, displayName); + Assertions.assertTrue(curseCreateModpack.curseForgeModpack(modpackDir, projectID, fileID)); + String deleteFile = String.format("./src/test/resources/forge_tests/%s/%s", projectName, displayName); + if (new File(deleteFile).isDirectory()) { + Path pathToBeDeleted = Paths.get(deleteFile); + Files.walk(pathToBeDeleted) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + } + String deleteProject = String.format("./src/test/resources/forge_tests/%s", projectName); + if (new File(deleteProject).isDirectory()) { + Path pathToBeDeleted = Paths.get(deleteProject); + Files.walk(pathToBeDeleted) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + } } @SuppressWarnings("OptionalGetWithoutIsPresent") @@ -204,7 +201,7 @@ class CurseCreateModpackTest { Assertions.assertTrue(new File("./src/test/resources/overridestest/mods/zzzzz.jar").exists()); Assertions.assertTrue(new File("./src/test/resources/overridestest/scripts/testscript.zs").exists()); - Assertions.assertTrue(new File("./src/test/resources/overridestest/seeds/seed.json").exists()); + Assertions.assertTrue(new File("./src/test/resources/overridestest/seeds/seed1.json").exists()); Assertions.assertTrue(new File("./src/test/resources/overridestest/seeds/testjson.json").exists()); if (new File("./src/test/resources/overridestest/config").isDirectory()) { diff --git a/src/test/resources/overridestest/overrides/seeds/seed,json b/src/test/resources/overridestest/overrides/seeds/seed,json deleted file mode 100644 index 8d630d4df..000000000 --- a/src/test/resources/overridestest/overrides/seeds/seed,json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "bonus_chest": false, - "dimensions": { - "minecraft:overworld": { - "type": "minecraft:overworld", - "generator": { - "biome_source": { - "seed": -8634566777844830259, - "type": "minecraft:biomesoplenty_overworld" - }, - "seed": -8634566777844830259, - "settings": "minecraft:overworld", - "type": "minecraft:noise" - } - }, - "minecraft:the_nether": { - "type": "minecraft:the_nether", - "generator": { - "biome_source": { - "seed": -8634566777844830259, - "type": "byg:bygnether" - }, - "seed": -8634566777844830259, - "settings": "minecraft:nether", - "type": "minecraft:noise" - } - }, - "minecraft:the_end": { - "type": "minecraft:the_end", - "generator": { - "biome_source": { - "seed": -8634566777844830259, - "type": "byg:bygend" - }, - "seed": -8634566777844830259, - "settings": "minecraft:end", - "type": "minecraft:noise" - } - } - }, - "seed": -8634566777844830259, - "generate_features": true -} \ No newline at end of file -- GitLab From d9c7a561f6748ccdc76227b899ed7871eaf83672 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 7 May 2021 08:14:12 +0200 Subject: [PATCH 76/91] refactor(DI): Try and fix tests which fail on GitHub --- .../serverpackcreator/ConfigurationTest.java | 36 +++++++++---------- .../CreateServerPackTest.java | 16 ++++----- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java b/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java index ca42ba612..c561833e7 100644 --- a/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java +++ b/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java @@ -76,13 +76,13 @@ class ConfigurationTest { @Test void testBuildString() { - List<String> args = Arrays.asList( + List<String> args = new ArrayList<>(Arrays.asList( "config", "mods", "scripts", "seeds", "defaultconfigs" - ); + )); String result = configuration.buildString(args.toString()); Assertions.assertEquals(args.toString(), String.format("[%s]",result)); } @@ -115,7 +115,7 @@ class ConfigurationTest { @Test void testPrintConfig() { String modpackDir = "src/test/resources/forge_tests"; - List<String> clientMods = Arrays.asList( + List<String> clientMods = new ArrayList<>(Arrays.asList( "AmbientSounds", "BackTools", "BetterAdvancement", @@ -139,14 +139,14 @@ class ConfigurationTest { "SpawnerFix", "TipTheScales", "WorldNameRandomizer" - ); - List<String> copyDirs = Arrays.asList( + )); + List<String> copyDirs = new ArrayList<>(Arrays.asList( "config", "mods", "scripts", "seeds", "defaultconfigs" - ); + )); boolean includeServerInstallation = true; String javaPath = "/usr/bin/java"; String minecraftVersion = "1.16.5"; @@ -187,13 +187,13 @@ class ConfigurationTest { @Test void testCheckCopyDirsCorrect() { String modpackDir = "./src/test/resources/forge_tests"; - List<String> copyDirs = Arrays.asList( + List<String> copyDirs = new ArrayList<>(Arrays.asList( "config", "mods", "scripts", "seeds", "defaultconfigs" - ); + )); boolean result = configuration.checkCopyDirs(copyDirs, modpackDir); Assertions.assertTrue(result); } @@ -201,13 +201,13 @@ class ConfigurationTest { @Test void testCheckCopyDirsFalse() { String modpackDir = "./src/test/resources/forge_tests"; - List<String> copyDirs = Arrays.asList( + List<String> copyDirs = new ArrayList<>(Arrays.asList( "configs", "modss", "scriptss", "seedss", "defaultconfigss" - ); + )); boolean result = configuration.checkCopyDirs(copyDirs, modpackDir); Assertions.assertFalse(result); } @@ -370,7 +370,7 @@ class ConfigurationTest { @Test void writeConfigToFileTestFabric() { String modpackDir = "./src/test/resources/fabric_tests"; - List<String> clientMods = Arrays.asList( + List<String> clientMods = new ArrayList<>(Arrays.asList( "AmbientSounds", "BackTools", "BetterAdvancement", @@ -394,14 +394,14 @@ class ConfigurationTest { "SpawnerFix", "TipTheScales", "WorldNameRandomizer" - ); - List<String> copyDirs = Arrays.asList( + )); + List<String> copyDirs = new ArrayList<>(Arrays.asList( "config", "mods", "scripts", "seeds", "defaultconfigs" - ); + )); String javaPath; String autoJavaPath = System.getProperty("java.home").replace("\\", "/") + "/bin/java"; if (autoJavaPath.startsWith("C:")) { @@ -440,7 +440,7 @@ class ConfigurationTest { @Test void testWriteConfigToFileForge() { String modpackDir = "./src/test/resources/forge_tests"; - List<String> clientMods = Arrays.asList( + List<String> clientMods = new ArrayList<>(Arrays.asList( "AmbientSounds", "BackTools", "BetterAdvancement", @@ -464,14 +464,14 @@ class ConfigurationTest { "SpawnerFix", "TipTheScales", "WorldNameRandomizer" - ); - List<String> copyDirs = Arrays.asList( + )); + List<String> copyDirs = new ArrayList<>(Arrays.asList( "config", "mods", "scripts", "seeds", "defaultconfigs" - ); + )); String javaPath = "/use/bin/java"; String minecraftVersion = "1.16.5"; String modLoader = "Forge"; diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java index 4a4637532..409b8cc3b 100644 --- a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -253,7 +253,7 @@ class CreateServerPackTest { @Test void copyFilesTest() throws IOException { String modpackDir = "./src/test/resources/forge_tests"; - List<String> clientMods = Arrays.asList( + List<String> clientMods = new ArrayList<>(Arrays.asList( "AmbientSounds", "BackTools", "BetterAdvancement", @@ -277,14 +277,14 @@ class CreateServerPackTest { "SpawnerFix", "TipTheScales", "WorldNameRandomizer" - ); - List<String> copyDirs = Arrays.asList( + )); + List<String> copyDirs = new ArrayList<>(Arrays.asList( "config", "mods", "scripts", "seeds", "defaultconfigs" - ); + )); createServerPack.copyFiles(modpackDir, copyDirs, clientMods); Assertions.assertTrue(new File(String.format("%s/server_pack/config",modpackDir)).isDirectory()); Assertions.assertTrue(new File(String.format("%s/server_pack/mods",modpackDir)).isDirectory()); @@ -313,13 +313,13 @@ class CreateServerPackTest { void copyFilesEmptyClientsTest() throws IOException { String modpackDir = "./src/test/resources/forge_tests"; List<String> clientMods = new ArrayList<>(); - List<String> copyDirs = Arrays.asList( + List<String> copyDirs = new ArrayList<>(Arrays.asList( "config", "mods", "scripts", "seeds", "defaultconfigs" - ); + )); createServerPack.copyFiles(modpackDir, copyDirs, clientMods); Assertions.assertTrue(new File(String.format("%s/server_pack/config",modpackDir)).isDirectory()); Assertions.assertTrue(new File(String.format("%s/server_pack/mods",modpackDir)).isDirectory()); @@ -345,10 +345,10 @@ class CreateServerPackTest { @Test void excludeClientModsTest() { - List<String> clientMods = Arrays.asList( + List<String> clientMods = new ArrayList<>(Arrays.asList( "aaaaa","bbbbb","ccccc","fffff","ggggg","hhhhh","iiiii","jjjjj","kkkkk","lllll", "nnnnn","ppppp","qqqqq","rrrrr","uuuuu","vvvvv","wwwww","xxxxx","yyyyy","zzzzz" - ); + )); List<String> result = createServerPack.excludeClientMods("./src/test/resources/forge_tests/mods", clientMods); Assertions.assertFalse(result.contains("aaaaa")); Assertions.assertFalse(result.contains("bbbbb")); Assertions.assertFalse(result.contains("ccccc")); Assertions.assertFalse(result.contains("fffff")); -- GitLab From 4aad6f8ff7c80e51f04e91bcd11affe35a7eeca9 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 7 May 2021 08:14:26 +0200 Subject: [PATCH 77/91] refactor(DI): Try and fix tests which fail on GitHub --- .../overridestest/overrides/seeds/seed1.json | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/test/resources/overridestest/overrides/seeds/seed1.json diff --git a/src/test/resources/overridestest/overrides/seeds/seed1.json b/src/test/resources/overridestest/overrides/seeds/seed1.json new file mode 100644 index 000000000..8d630d4df --- /dev/null +++ b/src/test/resources/overridestest/overrides/seeds/seed1.json @@ -0,0 +1,43 @@ +{ + "bonus_chest": false, + "dimensions": { + "minecraft:overworld": { + "type": "minecraft:overworld", + "generator": { + "biome_source": { + "seed": -8634566777844830259, + "type": "minecraft:biomesoplenty_overworld" + }, + "seed": -8634566777844830259, + "settings": "minecraft:overworld", + "type": "minecraft:noise" + } + }, + "minecraft:the_nether": { + "type": "minecraft:the_nether", + "generator": { + "biome_source": { + "seed": -8634566777844830259, + "type": "byg:bygnether" + }, + "seed": -8634566777844830259, + "settings": "minecraft:nether", + "type": "minecraft:noise" + } + }, + "minecraft:the_end": { + "type": "minecraft:the_end", + "generator": { + "biome_source": { + "seed": -8634566777844830259, + "type": "byg:bygend" + }, + "seed": -8634566777844830259, + "settings": "minecraft:end", + "type": "minecraft:noise" + } + } + }, + "seed": -8634566777844830259, + "generate_features": true +} \ No newline at end of file -- GitLab From 1bc7671074e6935fab0f40c65dfb2f5cf7b38a7b Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 7 May 2021 10:14:09 +0200 Subject: [PATCH 78/91] refactor(DI): Try and fix tests which fail on GitHub --- .../serverpackcreator/ConfigurationTest.java | 2 +- .../CreateServerPackTest.java | 40 ++++++++++++------ .../CurseCreateModpackTest.java | 2 + .../resources/testresources/server_pack.zip | Bin 5418 -> 5418 bytes 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java b/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java index c561833e7..055ef2b62 100644 --- a/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java +++ b/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java @@ -186,7 +186,7 @@ class ConfigurationTest { @Test void testCheckCopyDirsCorrect() { - String modpackDir = "./src/test/resources/forge_tests"; + String modpackDir = "src/test/resources/forge_tests"; List<String> copyDirs = new ArrayList<>(Arrays.asList( "config", "mods", diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java index 409b8cc3b..d1e78f46c 100644 --- a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -347,19 +347,32 @@ class CreateServerPackTest { void excludeClientModsTest() { List<String> clientMods = new ArrayList<>(Arrays.asList( "aaaaa","bbbbb","ccccc","fffff","ggggg","hhhhh","iiiii","jjjjj","kkkkk","lllll", - "nnnnn","ppppp","qqqqq","rrrrr","uuuuu","vvvvv","wwwww","xxxxx","yyyyy","zzzzz" + "nnnnn","ppppp","qqqqq","rrrrr","uuuuu","vvvvv","wwwww","xxxxx","yyyyy" )); - List<String> result = createServerPack.excludeClientMods("./src/test/resources/forge_tests/mods", clientMods); - Assertions.assertFalse(result.contains("aaaaa")); Assertions.assertFalse(result.contains("bbbbb")); - Assertions.assertFalse(result.contains("ccccc")); Assertions.assertFalse(result.contains("fffff")); - Assertions.assertFalse(result.contains("ggggg")); Assertions.assertFalse(result.contains("hhhhh")); - Assertions.assertFalse(result.contains("iiiii")); Assertions.assertFalse(result.contains("jjjjj")); - Assertions.assertFalse(result.contains("kkkkk")); Assertions.assertFalse(result.contains("lllll")); - Assertions.assertFalse(result.contains("nnnnn")); Assertions.assertFalse(result.contains("ppppp")); - Assertions.assertFalse(result.contains("qqqqq")); Assertions.assertFalse(result.contains("rrrrr")); - Assertions.assertFalse(result.contains("uuuuu")); Assertions.assertFalse(result.contains("vvvvv")); - Assertions.assertFalse(result.contains("wwwww")); Assertions.assertFalse(result.contains("xxxxx")); - Assertions.assertFalse(result.contains("yyyyy")); Assertions.assertFalse(result.contains("zzzzz")); + List<String> result = createServerPack.excludeClientMods("src/test/resources/forge_tests/mods", clientMods); + System.out.println(result); + Assertions.assertFalse(result.toString().contains("aaaaa")); + Assertions.assertFalse(result.toString().contains("bbbbb")); + Assertions.assertFalse(result.toString().contains("ccccc")); + Assertions.assertFalse(result.toString().contains("fffff")); + Assertions.assertFalse(result.toString().contains("ggggg")); + Assertions.assertFalse(result.toString().contains("hhhhh")); + Assertions.assertFalse(result.toString().contains("iiiii")); + Assertions.assertFalse(result.toString().contains("jjjjj")); + Assertions.assertFalse(result.toString().contains("kkkkk")); + Assertions.assertFalse(result.toString().contains("lllll")); + Assertions.assertFalse(result.toString().contains("nnnnn")); + Assertions.assertFalse(result.toString().contains("ppppp")); + Assertions.assertFalse(result.toString().contains("qqqqq")); + Assertions.assertFalse(result.toString().contains("rrrrr")); + Assertions.assertFalse(result.toString().contains("uuuuu")); + Assertions.assertFalse(result.toString().contains("vvvvv")); + Assertions.assertFalse(result.toString().contains("wwwww")); + Assertions.assertFalse(result.toString().contains("xxxxx")); + Assertions.assertFalse(result.toString().contains("yyyyy")); + Assertions.assertTrue(result.toString().contains("zzzzz")); + + Assertions.assertTrue(result.toString().contains("testmod")); } @SuppressWarnings("ResultOfMethodCallIgnored") @@ -614,11 +627,12 @@ class CreateServerPackTest { } @Test - void cleanUpServerPackForgeTest() { + void cleanUpServerPackForgeTest() throws IOException { String modLoader = "Forge"; String modpackDir = "./src/test/resources/forge_tests"; String minecraftVersion = "1.16.5"; String modLoaderVersion = "36.1.2"; + new File("./src/test/resources/forge_tests/server_pack/forge-1.16.5-36.1.2.jar").createNewFile(); createServerPack.cleanUpServerPack( new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)), new File(String.format("%s/server_pack/forge-%s-%s.jar", modpackDir, minecraftVersion, modLoaderVersion)), diff --git a/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java b/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java index 7b08f12b7..575e30dde 100644 --- a/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpackTest.java @@ -140,6 +140,8 @@ class CurseCreateModpackTest { .files() .fileWithID(fileID)) .displayName(); + curseCreateModpack.setProjectName(238298); + curseCreateModpack.setFileNameAndDiskName(238298,3174854); String modpackDir = String.format("./src/test/resources/forge_tests/%s/%s", projectName, displayName); curseCreateModpack.initializeModpack(modpackDir, projectID, fileID); Assertions.assertTrue(new File(String.format("./src/test/resources/forge_tests/%s", projectName)).isDirectory()); diff --git a/src/test/resources/testresources/server_pack.zip b/src/test/resources/testresources/server_pack.zip index 67e2c55730c7e43cd126257d3e8e4225ca41c77c..b0a87033147c241515000c18100a994959789701 100644 GIT binary patch delta 19 acmZ3bwMuIN6Jz{lMy3uS#`wuyA`1XMss=0o delta 19 acmZ3bwMuIN6QkZ{My3uSM!m^hA`1XJX$8sv -- GitLab From 905a92afc00c70eeb799d3e42ed6ca4cba40bb31 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 7 May 2021 10:16:42 +0200 Subject: [PATCH 79/91] refactor(DI): Improve excludeClientMods --- .../serverpackcreator/CreateServerPack.java | 95 +++++++++++-------- 1 file changed, 54 insertions(+), 41 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index 4f850ea34..65eb9d2af 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -43,7 +43,6 @@ import java.nio.channels.ReadableByteChannel; import java.nio.file.*; import java.nio.file.attribute.BasicFileAttributes; import java.util.*; -import java.util.stream.Collectors; import java.util.stream.Stream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -259,7 +258,8 @@ public class CreateServerPack { } } - /** Deletes all files, directories and ZIP-archives of previously generated server packs to ensure newly generated + /** + * Deletes all files, directories and ZIP-archives of previously generated server packs to ensure newly generated * server pack is as clean as possible. * @param modpackDir String. The server_pack directory and ZIP-archive will be deleted inside the modpack directory. */ @@ -301,7 +301,8 @@ public class CreateServerPack { } } - /** Copies start scripts for the specified modloader into the server pack. + /** + * Copies start scripts for the specified modloader into the server pack. * @param modpackDir String. Start scripts are copied into the server_pack directory in the modpack directory. * @param modLoader String. Whether to copy the Forge or Fabric scripts into the server pack. * @param includeStartScripts Boolean. Whether to copy the start scripts into the server pack. @@ -344,8 +345,9 @@ public class CreateServerPack { } } - /** Copies all specified directories and mods, excluding clientside-only mods, from the modpack directory into the - * server pack directory. + /** + * Copies all specified directories and mods, excluding clientside-only mods, from the modpack directory into the + * server pack directory. * Calls {@link #excludeClientMods(String, List)} to generate a list of all mods to copy to server pack, excluding * clientside-only mods. * @param modpackDir String. Files and directories are copied into the server_pack directory inside the modpack directory. @@ -460,43 +462,41 @@ public class CreateServerPack { } } - /** Generates a list of all mods to include in the server pack excluding clientside-only mods. + /** + * Generates a list of all mods to include in the server pack excluding clientside-only mods. * @param modsDir String. The mods directory of the modpack of which to generate a list of all it's contents. * @param clientMods List String. A list of all clientside-only mods. * @return List String. A list of all mods to include in the server pack. */ - @SuppressWarnings("UnusedAssignment") List<String> excludeClientMods(String modsDir, List<String> clientMods) { appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.excludeclientmods")); - String[] copyMods = new String[0]; - List<String> modpackModList = new ArrayList<>(); - - try (Stream<Path> walk = Files.walk(Paths.get(modsDir))) { - - modpackModList = walk.filter(Files::isRegularFile).map(Path::toString).collect(Collectors.toList()); - - for (int in = 0; in < modpackModList.size(); in++) { - - for (int i = 0; i < clientMods.size(); i++) { - String modpackMod = modpackModList.get(in); - String clientMod = clientMods.get(i); + File[] listModsInModpack = new File(modsDir).listFiles(); + List<String> modsInModpack = new ArrayList<>(); - if (modpackMod.contains(clientMod)) { - modpackModList.remove(in); - } + try { + for (File mod : listModsInModpack) { + if (mod.isFile()) { + modsInModpack.add(mod.getAbsolutePath()); } } - copyMods = modpackModList.toArray(new String[0]); - return Arrays.asList(copyMods.clone()); + } catch (NullPointerException np) { + appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.excludeclientmods"), np); + } - } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.excludeclientmods"), ex); + for (int inc = 0; inc < modsInModpack.size(); inc++) { + for (int inc2 = 0; inc2 < clientMods.size(); inc2++) { + if (modsInModpack.get(inc).contains(clientMods.get(inc2))) { + modsInModpack.remove(inc); + } + } } - return Arrays.asList(copyMods.clone()); + + return modsInModpack; } - /** Copies the server-icon.png into server_pack. + /** + * Copies the server-icon.png into server_pack. * @param modpackDir String. The server-icon.png is copied into the server_pack directory inside the modpack directory. */ void copyIcon(String modpackDir) { @@ -514,7 +514,8 @@ public class CreateServerPack { } } - /** Copies the server.properties into server_pack. + /** + * Copies the server.properties into server_pack. * @param modpackDir String. The server.properties file is copied into the server_pack directory inside the modpack directory. */ void copyProperties(String modpackDir) { @@ -532,7 +533,8 @@ public class CreateServerPack { } } - /** Installs the modloader server for the specified modloader, modloader version and Minecraft version. + /** + * Installs the modloader server for the specified modloader, modloader version and Minecraft version. * Calls<p> * {@link #downloadFabricJar(String)} to download the Fabric installer into the server_pack directory.<p> * {@link #downloadForgeJar(String, String, String)} to download the Forge installer for the specified Forge version @@ -630,7 +632,8 @@ public class CreateServerPack { modLoaderVersion); } - /** Creates a ZIP-archive of the server_pack directory and deletes the Minecraft server JAR afterwards.<p> + /** + * Creates a ZIP-archive of the server_pack directory and deletes the Minecraft server JAR afterwards.<p> * With help from <a href="https://stackoverflow.com/questions/1091788/how-to-create-a-zip-file-in-java">Stackoverflow</a><p> * Calls<p> * {@link #deleteMinecraftJar(String, String, String)} to delete the Minecraft server JAR from the ZIP-archive, @@ -674,7 +677,8 @@ public class CreateServerPack { appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.zipbuilder.finish")); } - /** Depending on the specified modloader and Minecraft version, this method makes calls to generate the corresponding + /** + * Depending on the specified modloader and Minecraft version, this method makes calls to generate the corresponding * download scripts for the Minecraft server JAR.<p> * Calls<p> * {@link #fabricShell(String, String)} if the modloader is Fabric. @@ -697,7 +701,8 @@ public class CreateServerPack { } } - /** Generates Fabric Linux-shell download scripts for Mojang's Minecraft server JAR for the specified Minecraft version. + /** + * Generates Fabric Linux-shell download scripts for Mojang's Minecraft server JAR for the specified Minecraft version. * @param modpackDir String. The script is generated in the server_pack directory inside the modpack directory. * @param minecraftVersion String. The Minecraft version for which to download the server JAR. */ @@ -724,7 +729,8 @@ public class CreateServerPack { appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.fabricshell")); } - /** Generates Fabric Windows-Batch download scripts for Mojang's Minecraft server JAR for the specified Minecraft version. + /** + * Generates Fabric Windows-Batch download scripts for Mojang's Minecraft server JAR for the specified Minecraft version. * @param modpackDir String. The script is generated in the server_pack directory inside the modpack directory. * @param minecraftVersion String. The Minecraft version for which to download the server JAR. */ @@ -751,7 +757,8 @@ public class CreateServerPack { appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.fabricbatch")); } - /** Generates Forge Linux-shell download scripts for Mojang's Minecraft server JAR for the specified Minecraft version. + /** + * Generates Forge Linux-shell download scripts for Mojang's Minecraft server JAR for the specified Minecraft version. * @param modpackDir String. The script is generated in the server_pack directory inside the modpack directory. * @param minecraftVersion String. The Minecraft version for which to download the server JAR. */ @@ -778,7 +785,8 @@ public class CreateServerPack { appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.forgeshell")); } - /** Generates Forge Windows-Batch download scripts for Mojang's Minecraft server JAR for the specified Minecraft version. + /** + * Generates Forge Windows-Batch download scripts for Mojang's Minecraft server JAR for the specified Minecraft version. * @param modpackDir String. The script is generated in the server_pack directory inside the modpack directory. * @param minecraftVersion String. The Minecraft version for which to download the server JAR. */ @@ -805,7 +813,8 @@ public class CreateServerPack { appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.forgebatch")); } - /** Downloads the latest Fabric installer into the server pack.<p> + /** + * Downloads the latest Fabric installer into the server pack.<p> * Calls<p> * {@link #latestFabricInstaller(String)} to acquire the latest version of the Fabric installer. * @param modpackDir String. The Fabric installer is downloaded into the server_pack directory inside the modpack directory. @@ -844,7 +853,8 @@ public class CreateServerPack { return downloaded; } - /** Acquires the latest version of the Fabric modloader installer and returns it as a string. If acquisition of the + /** + * Acquires the latest version of the Fabric modloader installer and returns it as a string. If acquisition of the * latest version fails, version 0.7.2 is returned by default. * @param modpackDir String. The fabric-installer.xml-file is saved inside the server_pack directory inside the modpack * directory. @@ -881,7 +891,8 @@ public class CreateServerPack { return result; } - /** Downloads the modloader server installer for Forge, for the specified modloader version. + /** + * Downloads the modloader server installer for Forge, for the specified modloader version. * @param minecraftVersion String. The Minecraft version for which to download the modloader server installer. * @param modLoaderVersion String. The Forge version for which to download the modloader server installer. * @param modpackDir String. The modloader installer is downloaded to the server_pack directory inside the modloader directory. @@ -917,7 +928,8 @@ public class CreateServerPack { return downloaded; } - /** Deletes the Minecraft server JAR from the ZIP-archive as per Mojang's TOS and EULA. + /** + * Deletes the Minecraft server JAR from the ZIP-archive as per Mojang's TOS and EULA. * With help from <a href=https://stackoverflow.com/questions/5244963/delete-files-from-a-zip-archive-without-decompressing-in-java-or-maybe-python>Stackoverflow</a> * and <a href=https://bugs.openjdk.java.net/browse/JDK-8186227>OpenJDK Bugtracker</a>. * @param modLoader String. The name of the Minecraft server JAR depends on the modloader used. @@ -964,7 +976,8 @@ public class CreateServerPack { } } - /** Cleans up the server_pack directory by deleting left-over files from modloader installations and version checking. + /** + * Cleans up the server_pack directory by deleting left-over files from modloader installations and version checking. * @param fabricInstaller File. The Fabric installer file which is to be deleted. * @param forgeInstaller File. The Forge installer file which is to be deleted. * @param modLoader String. Whether Forge or Fabric files are to be deleted. -- GitLab From 4e750f3bb5e8b541623e82e402989d5e3411e0cb Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 7 May 2021 10:18:05 +0200 Subject: [PATCH 80/91] refactor(DI): More logging to help with debugging --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0ea4247f1..3274f59e0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -29,7 +29,7 @@ jobs: - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build with Gradle - run: ./gradlew clean build createExe + run: ./gradlew clean build createExe --info - name: List files in libs run: ls -ahl build/libs # DOCKER RELATED -- GitLab From 6ab5254384abfb7783d0eb2dd34cc8d5ab2c330f Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 7 May 2021 10:20:57 +0200 Subject: [PATCH 81/91] refactor(DI): Improve some tests --- .../CreateServerPackTest.java | 1 + .../resources/forge_tests/server_pack.zip | Bin 5418 -> 5418 bytes 2 files changed, 1 insertion(+) diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java index d1e78f46c..7318bea7b 100644 --- a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -194,6 +194,7 @@ class CreateServerPackTest { new File("./src/test/resources/forge_tests/server_pack/start-forge.bat").delete(); new File("./src/test/resources/forge_tests/server_pack/start-forge.sh").delete(); new File("./serverpackcreator.conf").delete(); + Files.copy(Paths.get("./src/test/resources/testresources/server_pack.zip"), Paths.get("./src/test/resources/forge_tests/server_pack.zip"), REPLACE_EXISTING); } @Test diff --git a/src/test/resources/forge_tests/server_pack.zip b/src/test/resources/forge_tests/server_pack.zip index 67e2c55730c7e43cd126257d3e8e4225ca41c77c..b0a87033147c241515000c18100a994959789701 100644 GIT binary patch delta 19 acmZ3bwMuIN6Jz{lMy3uS#`wuyA`1XMss=0o delta 19 acmZ3bwMuIN6QkZ{My3uSM!m^hA`1XJX$8sv -- GitLab From 76003b310228667224b4bf1610e55c760bca96b4 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 7 May 2021 11:05:37 +0200 Subject: [PATCH 82/91] refactor(DI): Try to fix test which fails of GitHub only --- .../de/griefed/serverpackcreator/CreateServerPackTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java index 7318bea7b..0ae4705a6 100644 --- a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -346,10 +346,10 @@ class CreateServerPackTest { @Test void excludeClientModsTest() { - List<String> clientMods = new ArrayList<>(Arrays.asList( + List<String> clientMods = Arrays.asList( "aaaaa","bbbbb","ccccc","fffff","ggggg","hhhhh","iiiii","jjjjj","kkkkk","lllll", "nnnnn","ppppp","qqqqq","rrrrr","uuuuu","vvvvv","wwwww","xxxxx","yyyyy" - )); + ); List<String> result = createServerPack.excludeClientMods("src/test/resources/forge_tests/mods", clientMods); System.out.println(result); Assertions.assertFalse(result.toString().contains("aaaaa")); -- GitLab From 6c5c57024376dabe43c8e9f05a3d7782e64ff3cd Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 7 May 2021 11:30:16 +0200 Subject: [PATCH 83/91] refactor(DI): Refactor excludeClientMods to use removeIf, instead of nested for-loop --- .../serverpackcreator/CreateServerPack.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index 65eb9d2af..0b7d18413 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -21,6 +21,7 @@ package de.griefed.serverpackcreator; import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; import de.griefed.serverpackcreator.i18n.LocalizationManager; +import kotlin.internal.AccessibleLateinitPropertyLiteral; import net.fabricmc.installer.util.LauncherMeta; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -475,6 +476,7 @@ public class CreateServerPack { List<String> modsInModpack = new ArrayList<>(); try { + assert listModsInModpack != null; for (File mod : listModsInModpack) { if (mod.isFile()) { modsInModpack.add(mod.getAbsolutePath()); @@ -484,12 +486,12 @@ public class CreateServerPack { appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.excludeclientmods"), np); } - for (int inc = 0; inc < modsInModpack.size(); inc++) { - for (int inc2 = 0; inc2 < clientMods.size(); inc2++) { - if (modsInModpack.get(inc).contains(clientMods.get(inc2))) { - modsInModpack.remove(inc); - } - } + for (int iclient = 0; iclient < clientMods.size(); iclient++) { + + int i = iclient; + + modsInModpack.removeIf(n -> (n.contains(clientMods.get(i)))); + } return modsInModpack; -- GitLab From acbdd535d07406113dc792075ce141222f6e6c6e Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 7 May 2021 18:09:43 +0200 Subject: [PATCH 84/91] refactor(DI): Setters changed: Config, ModLoader. Better return in isCurse. Improved suggestCopyDirs --- .../serverpackcreator/Configuration.java | 187 +++++++++--------- 1 file changed, 98 insertions(+), 89 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/Configuration.java b/src/main/java/de/griefed/serverpackcreator/Configuration.java index d3e3b0b53..5589a5de7 100644 --- a/src/main/java/de/griefed/serverpackcreator/Configuration.java +++ b/src/main/java/de/griefed/serverpackcreator/Configuration.java @@ -56,7 +56,7 @@ import java.util.*; * 5. {@link #getForgeManifestUrl()}<br> * 6. {@link #getFabricManifestUrl()}<br> * 7. {@link #getConfig()}<br> - * 8. {@link #setConfig(Config)}<br> + * 8. {@link #setConfig(File)}<br> * 9. {@link #getFallbackModsList()}<br> * 10.{@link #getClientMods()}<br> * 11.{@link #setClientMods(List)}<br> @@ -281,10 +281,14 @@ public class Configuration { /** * Setter for a {@link Config} containing a parsed configuration-file. * For use in {@link #checkConfigFile(File, boolean)} - * @param newConfig The new Typesafe Config to store. + * @param newConfig The new file of which to store a Typesafe Config. */ - public void setConfig(Config newConfig) { - this.config = newConfig; + public void setConfig(File newConfig) { + try { + this.config = ConfigFactory.parseFile(newConfig); + } catch (ConfigException ex) { + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkconfig.start")); + } } /** @@ -414,7 +418,7 @@ public class Configuration { * @param newModLoader The new modloader to store. */ void setModLoader(String newModLoader) { - this.modLoader = newModLoader; + this.modLoader = setModLoaderCase(newModLoader); } /** @@ -559,10 +563,10 @@ public class Configuration { } /** - * Sets {@link #setConfig(Config)} and calls checks for the provided configuration-file. If any check returns <code>true</code> + * Sets {@link #setConfig(File)} and calls checks for the provided configuration-file. If any check returns <code>true</code> * then the server pack will not be created. In order to find out which check failed, the user has to check their * serverpackcreator.log in the logs directory. Calls<br> - * {@link #setConfig(Config)}<br> + * {@link #setConfig(File)}<br> * {@link #getConfig()}<br> * {@link #setClientMods(List)}<br> * {@link #getFallbackModsList()}<br> @@ -584,7 +588,7 @@ public class Configuration { boolean configHasError = false; appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.start")); try { - setConfig(ConfigFactory.parseFile(configFile)); + setConfig(configFile); } catch (ConfigException ex) { appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkconfig.start")); } @@ -658,7 +662,7 @@ public class Configuration { * configuration file and checks are made in this directory. * @return Boolean. Returns true if an error is found during configuration check. */ - private boolean isDir(String modpackDir) { + boolean isDir(String modpackDir) { boolean configHasError = false; setModpackDir(modpackDir); @@ -721,7 +725,7 @@ public class Configuration { * @return Boolean. Returns false unless an error was encountered during either the acquisition of the CurseForge * project name and displayname, or when the creation of the modpack fails. */ - private boolean isCurse() { + boolean isCurse() { boolean configHasError = false; try { if (CurseAPI.project(getProjectID()).isPresent()) { @@ -733,83 +737,93 @@ public class Configuration { catch (NullPointerException npe) { appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.iscurse.display")); try { displayName = Objects.requireNonNull(CurseAPI.project(getProjectID()).get().files().fileWithID(getProjectFileID())).nameOnDisk(); } - catch (NullPointerException npe2) { displayName = String.format("%d", getProjectFileID()); } + catch (NullPointerException npe2) { + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.iscurse.file"), npe2); + displayName = null; + } } - } + } catch (CurseException cex) { appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.iscurse.curseforge")); } - catch (CurseException cex) { appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.iscurse.curseforge")); } + if (displayName != null && projectName != null) { - setModpackDir(String.format("./%s/%s", projectName, displayName)); + setModpackDir(String.format("./%s/%s", projectName, displayName)); - if (curseCreateModpack.curseForgeModpack(getModpackDir(), getProjectID(), getProjectFileID())) { - try { - byte[] jsonData = Files.readAllBytes(Paths.get(String.format("%s/manifest.json", getModpackDir()))); + if (curseCreateModpack.curseForgeModpack(getModpackDir(), getProjectID(), getProjectFileID())) { + try { + byte[] jsonData = Files.readAllBytes(Paths.get(String.format("%s/manifest.json", getModpackDir()))); - CurseModpack modpack = getObjectMapper().readValue(jsonData, CurseModpack.class); + CurseModpack modpack = getObjectMapper().readValue(jsonData, CurseModpack.class); - String[] minecraftLoaderVersions = modpack - .getMinecraft() - .toString() - .split(","); + String[] minecraftLoaderVersions = modpack + .getMinecraft() + .toString() + .split(","); - String[] modLoaderVersion = minecraftLoaderVersions[1] - .replace("[", "") - .replace("]", "") - .split("-"); + String[] modLoaderVersion = minecraftLoaderVersions[1] + .replace("[", "") + .replace("]", "") + .split("-"); - setMinecraftVersion(minecraftLoaderVersions[0] - .replace("[", "")); + setMinecraftVersion(minecraftLoaderVersions[0] + .replace("[", "")); - if (containsFabric(modpack)) { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.iscurse.fabric")); + if (containsFabric(modpack)) { + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.iscurse.fabric")); - setModLoader("Fabric"); - setModLoaderVersion(latestFabricLoader(getModpackDir())); + setModLoader("Fabric"); + setModLoaderVersion(latestFabricLoader(getModpackDir())); - } else { + } else { - setModLoader("Forge"); - setModLoaderVersion(modLoaderVersion[1]); + setModLoader("Forge"); + setModLoaderVersion(modLoaderVersion[1]); + } + } catch (IOException ex) { + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.iscurse.json"), ex); } - } catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.iscurse.json"), ex); } - if (checkJavaPath(getConfig().getString("javaPath").replace("\\","/"))) { + if (checkJavaPath(getConfig().getString("javaPath").replace("\\", "/"))) { - setJavaPath(getConfig().getString("javaPath").replace("\\","/")); + setJavaPath(getConfig().getString("javaPath").replace("\\", "/")); - } else { - String tmpJavaPath = getJavaPathFromSystem(getConfig().getString("javaPath").replace("\\","/")); + } else { + String tmpJavaPath = getJavaPathFromSystem(getConfig().getString("javaPath").replace("\\", "/")); + + if (checkJavaPath(tmpJavaPath)) { + setJavaPath(tmpJavaPath); + } - if (checkJavaPath(tmpJavaPath)) { - setJavaPath(tmpJavaPath); } + setCopyDirs(suggestCopyDirs(getModpackDir())); + + appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.iscurse.replace")); + + writeConfigToFile( + getModpackDir(), + buildString(getClientMods().toString()), + buildString(getCopyDirs().toString()), + getIncludeServerInstallation(), + getJavaPath(), + getMinecraftVersion(), + getModLoader(), + getModLoaderVersion(), + getIncludeServerIcon(), + getIncludeServerProperties(), + getIncludeStartScripts(), + getIncludeZipCreation(), + getConfigFile(), + false + ); + } else { + configHasError = true; } - setCopyDirs(suggestCopyDirs(getModpackDir())); - - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.iscurse.replace")); - - writeConfigToFile( - getModpackDir(), - buildString(getClientMods().toString()), - buildString(getCopyDirs().toString()), - getIncludeServerInstallation(), - getJavaPath(), - getMinecraftVersion(), - getModLoader(), - getModLoaderVersion(), - getIncludeServerIcon(), - getIncludeServerProperties(), - getIncludeStartScripts(), - getIncludeZipCreation(), - getConfigFile(), - false - ); - } else { configHasError = true; } + } else { + configHasError = true; } } catch (CurseException cex) { appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.iscurse.project"), getProjectID()), cex); @@ -825,7 +839,7 @@ public class Configuration { * required by the modpack. * @return Boolean. Returns true if Jumploader is found. */ - private boolean containsFabric(CurseModpack modpack) { + boolean containsFabric(CurseModpack modpack) { boolean hasJumploader = false; for (int i = 0; i < modpack.getFiles().size(); i++) { @@ -849,40 +863,39 @@ public class Configuration { * @return List, String. Returns a list of directories inside the modpack, excluding well known client-side only * directories. */ - private List<String> suggestCopyDirs(String modpackDir) { + List<String> suggestCopyDirs(String modpackDir) { appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.suggestcopydirs.start")); - String[] dirsNotToCopy = { + List<String> dirsNotToCopy = new ArrayList<String>(Arrays.asList( "overrides", "packmenu", "resourcepacks", "server_pack" - }; - - String[] copyDirs = new String[0]; - List<String> dirList; - File directories = new File(modpackDir); - - String[] dirArray = directories.list((current, name) -> new File(current, name).isDirectory()); + )); - if (dirArray != null) { + File[] listDirectoriesInModpack = new File(modpackDir).listFiles(); - dirList = new ArrayList<>(Arrays.asList(dirArray)); - List<String> doNotCopyList = new ArrayList<>(Arrays.asList(dirsNotToCopy)); + List<String> dirsInModpack = new ArrayList<>(); - for (int i = 0; i < dirsNotToCopy.length; i++) { - dirList.remove(doNotCopyList.get(i)); + try { + assert listDirectoriesInModpack != null; + for (File dir : listDirectoriesInModpack) { + if (dir.isDirectory()) { + dirsInModpack.add(dir.getName()); + } } + } catch (NullPointerException np) { + appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.suggestcopydirs")); + } - copyDirs = dirList.toArray(new String[0]); - - appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.suggestcopydirs.list"), dirList)); + for (int idirs = 0; idirs < dirsNotToCopy.size(); idirs++) { - return Arrays.asList(copyDirs.clone()); + int i = idirs; - } else { appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.suggestcopydirs")); } + dirsInModpack.removeIf(n -> (n.contains(dirsNotToCopy.get(i)))); + } - return Arrays.asList(copyDirs.clone()); + return dirsInModpack; } /** @@ -1243,7 +1256,6 @@ public class Configuration { * @return Boolean. Returns true if the specified Minecraft version could be found in Mojang's manifest. */ boolean isMinecraftVersionCorrect(String minecraftVersion) { - //TODO: Download file during startup of ServerPackCreator. Replace existing file during every restart. Store in same dir as ServerPacKCreator. if (!minecraftVersion.equals("")) { try { URL manifestJsonURL = getMinecraftManifestUrl(); @@ -1313,7 +1325,6 @@ public class Configuration { * @return Boolean. Returns true if the specified fabric version could be found in Fabric's manifest. */ boolean isFabricVersionCorrect(String fabricVersion) { - //TODO: Download file during startup of ServerPackCreator. Replace existing file during every restart. Store in same dir as ServerPacKCreator. if (!fabricVersion.equals("")) { try { URL manifestJsonURL = getFabricManifestUrl(); @@ -1400,7 +1411,6 @@ public class Configuration { * @return Boolean. Returns true if the specified Forge version could be found in Forge's manifest. */ boolean isForgeVersionCorrect(String forgeVersion) { - //TODO: Download file during startup of ServerPackCreator. Replace existing file during every restart. Store in same dir as ServerPacKCreator. if (!forgeVersion.equals("")) { try { URL manifestJsonURL = getForgeManifestUrl(); @@ -1487,8 +1497,7 @@ public class Configuration { * @return Boolean. Returns true if the download was successful. False if not. */ @SuppressWarnings({"ReturnInsideFinallyBlock", "finally"}) - private String latestFabricLoader(String modpackDir) { - //TODO: Download file during startup of ServerPackCreator. Replace existing file during every restart. Store in same dir as ServerPacKCreator. + String latestFabricLoader(String modpackDir) { String result = "0.11.3"; try { URL downloadFabricXml = getFabricManifestUrl(); -- GitLab From 24b4e5642c2aecc9367a9b2d38627963d34331d3 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 7 May 2021 18:10:06 +0200 Subject: [PATCH 85/91] refactor(DI): Wrote more tests for remaining methods --- .../serverpackcreator/ConfigurationTest.java | 647 ++++++++++++------ 1 file changed, 439 insertions(+), 208 deletions(-) diff --git a/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java b/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java index 055ef2b62..1f8802141 100644 --- a/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java +++ b/src/test/java/de/griefed/serverpackcreator/ConfigurationTest.java @@ -20,8 +20,10 @@ package de.griefed.serverpackcreator; -import com.typesafe.config.ConfigFactory; +import com.therandomlabs.curseapi.CurseAPI; +import com.therandomlabs.curseapi.CurseException; import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; +import de.griefed.serverpackcreator.curseforgemodpack.CurseModpack; import de.griefed.serverpackcreator.i18n.LocalizationManager; import org.apache.logging.log4j.Logger; import org.junit.jupiter.api.Assertions; @@ -32,14 +34,60 @@ import org.mockito.MockitoAnnotations; import java.io.File; import java.io.IOException; +import java.net.URL; import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; +/** + * <strong>Table of tests</strong><p> + * 1. {@link #ConfigurationTest()}<br> + * 2. {@link #getOldConfigFileTest()}<br> + * 3. {@link #getConfigFileTest()}<br> + * 4. {@link #getMinecraftManifestUrlTest()}<br> + * 5. {@link #getForgeManifestUrlTest()}<br> + * 6. {@link #getFabricManifestUrlTest()}<br> + * 7. {@link #getsetConfigTest()}<br> + * 9. {@link #getFallbackModsListTest()}<br> + * 10.{@link #getsetClientModsTest()}<br> + * 12.{@link #getsetCopyDirsTest()}<br> + * 14.{@link #getsetModpackDirTest()}<br> + * 16.{@link #getsetJavaPathTest()}<br> + * 18.{@link #getsetMinecraftVersionTest()}<br> + * 20.{@link #getsetModLoaderTest()}<br> + * 22.{@link #getsetModLoaderVersionTest()}<br> + * 24.{@link #getsetIncludeServerInstallationTest()}<br> + * 26.{@link #getsetIncludeServerIconTest()}<br> + * 28.{@link #getsetIncludeServerPropertiesTest()}<br> + * 30.{@link #getsetIncludeStartScriptsTest()}<br> + * 32.{@link #getsetIncludeZipCreationTest()}<br> + * 34.{@link #getsetProjectIDTest()}<br> + * 36.{@link #getsetProjectFileIDTest()}<br> + * 38.{@link #checkConfigFileTest()}<br> + * 39.{@link #isDirTest()}<br> + * 40.{@link #isCurseTest()}<br> + * 41.{@link #containsFabricTest()}<br> + * 42.{@link #suggestCopyDirsTest()}<br> + * 43.{@link #checkCurseForgeTest()}<br> + * 44.{@link #convertToBooleanTest()}<br> + * 45.{@link #printConfigTest()}<br> + * 46.{@link #checkModpackDirTest()}<br> + * 47.{@link #checkCopyDirsTest()}<br> + * 48.{@link #getJavaPathFromSystemTest()}<br> + * 49.{@link #checkJavaPathTest()}<br> + * 50.{@link #checkModloaderTest()}<br> + * 51.{@link #setModLoaderCaseTest()}<br> + * 52.{@link #checkModloaderVersionTest()}<br> + * 53.{@link #isMinecraftVersionCorrectTest()}<br> + * 54.{@link #isFabricVersionCorrectTest()}<br> + * 55.{@link #isForgeVersionCorrectTest()}<br> + * 56.{@link #latestFabricLoaderTest()}<br> + * 59.{@link #buildStringTest()}<br> + * 61.{@link #writeConfigToFileTest()} + */ class ConfigurationTest { @Mock Logger appLogger; @@ -61,7 +109,81 @@ class ConfigurationTest { } @Test - void testSetCopyDirs() { + void getOldConfigFileTest() { + File file = configuration.getOldConfigFile(); + Assertions.assertNotNull(file); + } + + @Test + void getConfigFileTest() { + File file = configuration.getConfigFile(); + Assertions.assertNotNull(file); + } + + @Test + void getMinecraftManifestUrlTest() { + URL url = configuration.getMinecraftManifestUrl(); + Assertions.assertNotNull(url); + } + + @Test + void getForgeManifestUrlTest() { + URL url = configuration.getForgeManifestUrl(); + Assertions.assertNotNull(url); + } + + @Test + void getFabricManifestUrlTest() { + URL url = configuration.getFabricManifestUrl(); + Assertions.assertNotNull(url); + } + + @Test + void getsetConfigTest() { + File file = new File("src/test/resources/testresources/serverpackcreator.conf"); + configuration.setConfig(file); + Assertions.assertNotNull(configuration.getConfig()); + } + + @Test + void getFallbackModsListTest() { + Assertions.assertNotNull(configuration.getFallbackModsList()); + } + + @Test + void getsetClientModsTest() { + List<String> clientMods = new ArrayList<>(Arrays.asList( + "AmbientSounds", + "BackTools", + "BetterAdvancement", + "BetterPing", + "cherished", + "ClientTweaks", + "Controlling", + "DefaultOptions", + "durability", + "DynamicSurroundings", + "itemzoom", + "jei-professions", + "jeiintegration", + "JustEnoughResources", + "MouseTweaks", + "Neat", + "OldJavaWarning", + "PackMenu", + "preciseblockplacing", + "SimpleDiscordRichPresence", + "SpawnerFix", + "TipTheScales", + "WorldNameRandomizer" + )); + configuration.setClientMods(clientMods); + Assertions.assertNotNull(configuration.getClientMods()); + Assertions.assertEquals(clientMods, configuration.getClientMods()); + } + + @Test + void getsetCopyDirsTest() { List<String> testList = new ArrayList<>(Arrays.asList( "config", "mods", @@ -70,50 +192,263 @@ class ConfigurationTest { "defaultconfigs", "server_pack" )); - configuration.setCopyDirs(testList); - Assertions.assertFalse(configuration.getCopyDirs().contains("server_pack")); - } - - @Test - void testBuildString() { - List<String> args = new ArrayList<>(Arrays.asList( + List<String> getList = new ArrayList<>(Arrays.asList( "config", "mods", "scripts", "seeds", "defaultconfigs" )); - String result = configuration.buildString(args.toString()); - Assertions.assertEquals(args.toString(), String.format("[%s]",result)); + configuration.setCopyDirs(testList); + Assertions.assertNotNull(configuration.getCopyDirs()); + Assertions.assertEquals(getList, configuration.getCopyDirs()); + Assertions.assertFalse(configuration.getCopyDirs().contains("server_pack")); } - @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCheckConfig() throws IOException { + void getsetModpackDirTest() { + String modpackDir = "src/test/resources/forge_tests"; + configuration.setModpackDir(modpackDir); + Assertions.assertNotNull(configuration.getModpackDir()); + Assertions.assertEquals(modpackDir, configuration.getModpackDir()); + + String modpackDir2 = "src\\test\\resources\\forge_tests"; + configuration.setModpackDir(modpackDir2); + Assertions.assertNotNull(configuration.getModpackDir()); + Assertions.assertNotEquals(modpackDir2, configuration.getModpackDir()); + Assertions.assertEquals(modpackDir2.replace("\\","/"),configuration.getModpackDir()); + Assertions.assertFalse(configuration.getModpackDir().contains("\\")); + } + + @Test + void getsetJavaPathTest() { + String javaPath = "src/test/resources/forge_tests"; + configuration.setJavaPath(javaPath); + Assertions.assertNotNull(configuration.getJavaPath()); + Assertions.assertEquals(javaPath, configuration.getJavaPath()); + + String javaPath2 = "src\\test\\resources\\forge_tests"; + configuration.setModpackDir(javaPath2); + Assertions.assertNotNull(configuration.getJavaPath()); + Assertions.assertNotEquals(javaPath2, configuration.getJavaPath()); + Assertions.assertEquals(javaPath2.replace("\\","/"),configuration.getJavaPath()); + Assertions.assertFalse(configuration.getJavaPath().contains("\\")); + } + + @Test + void getsetMinecraftVersionTest() { + String minecraftVersion = "1.16.5"; + configuration.setMinecraftVersion(minecraftVersion); + Assertions.assertNotNull(configuration.getMinecraftVersion()); + Assertions.assertEquals(minecraftVersion, configuration.getMinecraftVersion()); + } + + @Test + void getsetModLoaderTest() { + String modloader = "FoRgE"; + configuration.setModLoader(modloader); + Assertions.assertNotNull(configuration.getModLoader()); + Assertions.assertNotEquals(modloader, configuration.getModLoader()); + Assertions.assertEquals("Forge", configuration.getModLoader()); + } + + @Test + void getsetModLoaderVersionTest() { + String modloaderVersion = "36.1.2"; + configuration.setModLoaderVersion(modloaderVersion); + Assertions.assertNotNull(configuration.getModLoaderVersion()); + Assertions.assertEquals(modloaderVersion, configuration.getModLoaderVersion()); + } + + @Test + void getsetIncludeServerInstallationTest() { + configuration.setIncludeServerInstallation(true); + Assertions.assertTrue(configuration.getIncludeServerInstallation()); + configuration.setIncludeServerInstallation(false); + Assertions.assertFalse(configuration.getIncludeServerInstallation()); + } + + @Test + void getsetIncludeServerIconTest() { + configuration.setIncludeServerIcon(true); + Assertions.assertTrue(configuration.getIncludeServerIcon()); + configuration.setIncludeServerIcon(false); + Assertions.assertFalse(configuration.getIncludeServerIcon()); + } + + @Test + void getsetIncludeServerPropertiesTest() { + configuration.setIncludeServerProperties(true); + Assertions.assertTrue(configuration.getIncludeServerProperties()); + configuration.setIncludeServerProperties(false); + Assertions.assertFalse(configuration.getIncludeServerProperties()); + } + + @Test + void getsetIncludeStartScriptsTest() { + configuration.setIncludeStartScripts(true); + Assertions.assertTrue(configuration.getIncludeStartScripts()); + configuration.setIncludeStartScripts(false); + Assertions.assertFalse(configuration.getIncludeStartScripts()); + } + + @Test + void getsetIncludeZipCreationTest() { + configuration.setIncludeZipCreation(true); + Assertions.assertTrue(configuration.getIncludeZipCreation()); + configuration.setIncludeZipCreation(false); + Assertions.assertFalse(configuration.getIncludeZipCreation()); + } + + @Test + void getsetProjectIDTest() { + int projectID = 123456; + configuration.setProjectID(projectID); + Assertions.assertEquals(projectID, configuration.getProjectID()); + } + + @Test + void getsetProjectFileIDTest() { + int fileID = 123456; + configuration.setProjectFileID(fileID); + Assertions.assertEquals(fileID, configuration.getProjectFileID()); + } + + @Test + void checkConfigFileTest() throws IOException { Files.copy(Paths.get("./src/test/resources/testresources/serverpackcreator.conf"), Paths.get("./serverpackcreator.conf"), REPLACE_EXISTING); - configuration.setConfig(ConfigFactory.parseFile(configuration.getConfigFile())); + configuration.setConfig(new File("./serverpackcreator.conf")); boolean result = configuration.checkConfigFile(configuration.getConfigFile(), true); Assertions.assertFalse(result); new File("./serverpackcreator.conf").delete(); } @Test - void testCheckCurseForgeCorrect() { - String modpackDir = "238298,3174854"; - boolean result = configuration.checkCurseForge(modpackDir); - Assertions.assertTrue(result); + void isDirTest() throws IOException { + Files.copy(Paths.get("./src/test/resources/testresources/serverpackcreator.conf"), Paths.get("./serverpackcreator.conf"), REPLACE_EXISTING); + configuration.setConfig(new File("./serverpackcreator.conf")); + configuration.setIncludeServerInstallation(true); + Assertions.assertFalse(configuration.isDir("./src/test/resources/forge_tests")); + new File("./serverpackcreator.conf").delete(); + + Files.copy(Paths.get("./src/test/resources/testresources/serverpackcreator_copydirs.conf"), Paths.get("./serverpackcreator.conf"), REPLACE_EXISTING); + configuration.setConfig(new File("./serverpackcreator.conf")); + configuration.setIncludeServerInstallation(true); + Assertions.assertTrue(configuration.isDir("./src/test/resources/forge_tests")); + new File("./serverpackcreator.conf").delete(); + + Files.copy(Paths.get("./src/test/resources/testresources/serverpackcreator_javapath.conf"), Paths.get("./serverpackcreator.conf"), REPLACE_EXISTING); + configuration.setConfig(new File("./serverpackcreator.conf")); + configuration.setIncludeServerInstallation(true); + Assertions.assertTrue(configuration.isDir("./src/test/resources/forge_tests")); + new File("./serverpackcreator.conf").delete(); + + Files.copy(Paths.get("./src/test/resources/testresources/serverpackcreator_minecraftversion.conf"), Paths.get("./serverpackcreator.conf"), REPLACE_EXISTING); + configuration.setConfig(new File("./serverpackcreator.conf")); + configuration.setIncludeServerInstallation(true); + Assertions.assertTrue(configuration.isDir("./src/test/resources/forge_tests")); + new File("./serverpackcreator.conf").delete(); + + Files.copy(Paths.get("./src/test/resources/testresources/serverpackcreator_modloader.conf"), Paths.get("./serverpackcreator.conf"), REPLACE_EXISTING); + configuration.setConfig(new File("./serverpackcreator.conf")); + configuration.setIncludeServerInstallation(true); + Assertions.assertTrue(configuration.isDir("./src/test/resources/forge_tests")); + new File("./serverpackcreator.conf").delete(); + + Files.copy(Paths.get("./src/test/resources/testresources/serverpackcreator_modloaderversion.conf"), Paths.get("./serverpackcreator.conf"), REPLACE_EXISTING); + configuration.setConfig(new File("./serverpackcreator.conf")); + configuration.setIncludeServerInstallation(true); + Assertions.assertTrue(configuration.isDir("./src/test/resources/forge_tests")); + new File("./serverpackcreator.conf").delete(); } @Test - void testCheckCurseForgeFalse() { - String modpackDir = "1,1234"; - boolean result = configuration.checkCurseForge(modpackDir); - Assertions.assertFalse(result); + void isCurseTest() throws CurseException, IOException { + Files.copy(Paths.get("./src/test/resources/testresources/serverpackcreator.conf"), Paths.get("./serverpackcreator.conf"), REPLACE_EXISTING); + configuration.setConfig(new File("./serverpackcreator.conf")); + configuration.setProjectID(238298); + configuration.setProjectFileID(3174854); + String projectName, displayName; + projectName = CurseAPI.project(238298).get().name(); + displayName = CurseAPI.project(238298).get().files().fileWithID(3174854).displayName(); + configuration.setClientMods(configuration.getFallbackModsList()); + configuration.setIncludeServerInstallation(true); + configuration.setIncludeServerIcon(true); + configuration.setIncludeServerProperties(true); + configuration.setIncludeStartScripts(true); + configuration.setIncludeZipCreation(true); + Assertions.assertFalse(configuration.isCurse()); + if (new File(String.format("./%s/%s",projectName,displayName)).isDirectory()) { + Path pathToBeDeleted = Paths.get(String.format("./%s/%s",projectName,displayName)); + Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); + } + new File("./serverpackcreator.conf").delete(); + + configuration.setProjectID(999999); + Assertions.assertTrue(configuration.isCurse()); + new File("./serverpackcreator.conf").delete(); + + Files.copy(Paths.get("./src/test/resources/testresources/serverpackcreator.conf"), Paths.get("./serverpackcreator.conf"), REPLACE_EXISTING); + configuration.setConfig(new File("./serverpackcreator.conf")); + configuration.setProjectID(238298); + configuration.setProjectFileID(999999); + Assertions.assertTrue(configuration.isCurse()); + + new File("./serverpackcreator.conf").delete(); + } + + @Test + void containsFabricTest() throws IOException { + byte[] fabricJsonData = Files.readAllBytes(Paths.get("src/test/resources/testresources/fabric_manifest.json")); + CurseModpack fabricModpack = configuration.getObjectMapper().readValue(fabricJsonData, CurseModpack.class); + Assertions.assertTrue(configuration.containsFabric(fabricModpack)); + + byte[] forgeJsonData = Files.readAllBytes(Paths.get("src/test/resources/testresources/manifest.json")); + CurseModpack forgeModpack = configuration.getObjectMapper().readValue(forgeJsonData, CurseModpack.class); + Assertions.assertFalse(configuration.containsFabric(forgeModpack)); + } + + @Test + void suggestCopyDirsTest() { + String modpackDir = "src/test/resources/forge_tests"; + Assertions.assertFalse(configuration.suggestCopyDirs(modpackDir).contains("server_pack")); + Assertions.assertTrue(configuration.suggestCopyDirs(modpackDir).contains("config")); + Assertions.assertTrue(configuration.suggestCopyDirs(modpackDir).contains("defaultconfigs")); + Assertions.assertTrue(configuration.suggestCopyDirs(modpackDir).contains("mods")); + Assertions.assertTrue(configuration.suggestCopyDirs(modpackDir).contains("scripts")); + Assertions.assertTrue(configuration.suggestCopyDirs(modpackDir).contains("seeds")); + } + + @Test + void checkCurseForgeTest() { + String valid = "430517,3266321"; + Assertions.assertTrue(configuration.checkCurseForge(valid)); + String invalid = "1,1234"; + Assertions.assertFalse(configuration.checkCurseForge(invalid)); + } + + @Test + void convertToBooleanTest() { + Assertions.assertTrue(configuration.convertToBoolean("True")); + Assertions.assertTrue(configuration.convertToBoolean("true")); + Assertions.assertTrue(configuration.convertToBoolean("1")); + Assertions.assertTrue(configuration.convertToBoolean("Yes")); + Assertions.assertTrue(configuration.convertToBoolean("yes")); + Assertions.assertTrue(configuration.convertToBoolean("Y")); + Assertions.assertTrue(configuration.convertToBoolean("y")); + + Assertions.assertFalse(configuration.convertToBoolean("False")); + Assertions.assertFalse(configuration.convertToBoolean("false")); + Assertions.assertFalse(configuration.convertToBoolean("0")); + Assertions.assertFalse(configuration.convertToBoolean("No")); + Assertions.assertFalse(configuration.convertToBoolean("no")); + Assertions.assertFalse(configuration.convertToBoolean("N")); + Assertions.assertFalse(configuration.convertToBoolean("n")); } @SuppressWarnings("ConstantConditions") @Test - void testPrintConfig() { + void printConfigTest() { String modpackDir = "src/test/resources/forge_tests"; List<String> clientMods = new ArrayList<>(Arrays.asList( "AmbientSounds", @@ -172,20 +507,15 @@ class ConfigurationTest { } @Test - void testCheckModpackDirCorrect() { - String modpackDir = "./src/test/resources/forge_tests"; - boolean result = configuration.checkModpackDir(modpackDir); - Assertions.assertTrue(result); + void checkModpackDirTest() { + String modpackDirCorrect = "./src/test/resources/forge_tests"; + Assertions.assertTrue(configuration.checkModpackDir(modpackDirCorrect)); + Assertions.assertFalse(configuration.checkModpackDir("modpackDir")); } - @Test - void testCheckModpackDirFalse() { - boolean result = configuration.checkModpackDir("modpackDir"); - Assertions.assertFalse(result); - } @Test - void testCheckCopyDirsCorrect() { + void checkCopyDirsTest() { String modpackDir = "src/test/resources/forge_tests"; List<String> copyDirs = new ArrayList<>(Arrays.asList( "config", @@ -194,26 +524,20 @@ class ConfigurationTest { "seeds", "defaultconfigs" )); - boolean result = configuration.checkCopyDirs(copyDirs, modpackDir); - Assertions.assertTrue(result); - } + Assertions.assertTrue(configuration.checkCopyDirs(copyDirs, modpackDir)); - @Test - void testCheckCopyDirsFalse() { - String modpackDir = "./src/test/resources/forge_tests"; - List<String> copyDirs = new ArrayList<>(Arrays.asList( + List<String> copyDirsInvalid = new ArrayList<>(Arrays.asList( "configs", "modss", "scriptss", "seedss", "defaultconfigss" )); - boolean result = configuration.checkCopyDirs(copyDirs, modpackDir); - Assertions.assertFalse(result); + Assertions.assertFalse(configuration.checkCopyDirs(copyDirsInvalid, modpackDir)); } @Test - void testGetJavaPath() { + void getJavaPathFromSystemTest() { String result = configuration.getJavaPathFromSystem(""); String autoJavaPath = System.getProperty("java.home").replace("\\", "/") + "/bin/java"; if (autoJavaPath.startsWith("C:")) { @@ -223,7 +547,7 @@ class ConfigurationTest { } @Test - void testCheckJavaPathCorrect() { + void checkJavaPathTest() { String javaPath; String autoJavaPath = System.getProperty("java.home").replace("\\", "/") + "/bin/java"; if (autoJavaPath.startsWith("C:")) { @@ -236,140 +560,87 @@ class ConfigurationTest { } else { javaPath = autoJavaPath; } - boolean result = configuration.checkJavaPath(javaPath); - Assertions.assertTrue(result); - } - - @Test - void testCheckModloaderFabric() { - String modLoader = "Fabric"; - boolean result = configuration.checkModloader(modLoader); - Assertions.assertTrue(result); - } - - @Test - void testCheckModloaderForge() { - String modLoader = "Forge"; - boolean result = configuration.checkModloader(modLoader); - Assertions.assertTrue(result); - } - - @Test - void testCheckModloaderFalse() { - boolean result = configuration.checkModloader("modloader"); - Assertions.assertFalse(result); - } - - @Test - void testSetModloaderFabric() { - String result = configuration.setModLoaderCase("fAbRiC"); - Assertions.assertEquals("Fabric", result); + Assertions.assertTrue(configuration.checkJavaPath(javaPath)); } @Test - void testSetModloaderForge() { - String result = configuration.setModLoaderCase("fOrGe"); - Assertions.assertEquals("Forge", result); + void checkModloaderTest() { + String Fabric = "Fabric"; + Assertions.assertTrue(configuration.checkModloader(Fabric)); + String Forge = "Forge"; + Assertions.assertTrue(configuration.checkModloader(Forge)); + Assertions.assertFalse(configuration.checkModloader("modloader")); + Assertions.assertEquals("Fabric", configuration.setModLoaderCase("fAbRiC")); + Assertions.assertEquals("Forge", configuration.setModLoaderCase("fOrGe")); } - @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCheckModloaderVersionFabric() { - String modLoader = "Fabric"; - String modLoaderVersion = "0.11.3"; - boolean result = configuration.checkModloaderVersion(modLoader, modLoaderVersion); - Assertions.assertTrue(result); - new File("fabric-manifest.xml").delete(); + void setModLoaderCaseTest() { + String forge = "fOrGe"; + String fabric = "fAbRiC"; + Assertions.assertEquals("Forge", configuration.setModLoaderCase(forge)); + Assertions.assertEquals("Fabric", configuration.setModLoaderCase(fabric)); } @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testCheckModloaderVersionFabricIncorrect() { - String modLoader = "Fabric"; - String modLoaderVersion = "0.90.3"; - boolean result = configuration.checkModloaderVersion(modLoader, modLoaderVersion); - Assertions.assertFalse(result); + void checkModloaderVersionTest() { + Assertions.assertTrue(configuration.checkModloaderVersion("Fabric", "0.11.3")); + Assertions.assertFalse(configuration.checkModloaderVersion("Fabric", "0.90.3")); new File("fabric-manifest.xml").delete(); - } - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testCheckModloaderVersionForge() { - String modLoader = "Forge"; - String modLoaderVersion = "36.1.2"; - boolean result = configuration.checkModloaderVersion(modLoader, modLoaderVersion); - Assertions.assertTrue(result); - new File("forge-manifest.json").delete(); - } - - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testCheckModloaderVersionForgeIncorrect() { - String modLoader = "Forge"; - String modLoaderVersion = "90.0.0"; - boolean result = configuration.checkModloaderVersion(modLoader, modLoaderVersion); - Assertions.assertFalse(result); + Assertions.assertTrue(configuration.checkModloaderVersion("Forge", "36.1.2")); + Assertions.assertFalse(configuration.checkModloaderVersion("Forge", "90.0.0")); new File("forge-manifest.json").delete(); } @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testIsMinecraftVersionCorrect() { - String minecraftVersion = "1.16.5"; - boolean result = configuration.isMinecraftVersionCorrect(minecraftVersion); - Assertions.assertTrue(result); + void isMinecraftVersionCorrectTest() { + Assertions.assertTrue(configuration.isMinecraftVersionCorrect("1.16.5")); + Assertions.assertFalse(configuration.isMinecraftVersionCorrect("1.99.5")); new File("mcmanifest.json").delete(); } @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testIsMinecraftVersionFalse() { - String minecraftVersion = "1.99.5"; - boolean result = configuration.isMinecraftVersionCorrect(minecraftVersion); - Assertions.assertFalse(result); - new File("mcmanifest.json").delete(); - } - - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testIsFabricVersionCorrect() { - String fabricVersion = "0.11.3"; - boolean result = configuration.isFabricVersionCorrect(fabricVersion); - Assertions.assertTrue(result); + void isFabricVersionCorrectTest() { + Assertions.assertTrue(configuration.isFabricVersionCorrect("0.11.3")); + Assertions.assertFalse(configuration.isFabricVersionCorrect("0.90.3")); new File("fabric-manifest.xml").delete(); } @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testIsFabricVersionFalse() { - String fabricVersion = "0.90.3"; - boolean result = configuration.isFabricVersionCorrect(fabricVersion); - Assertions.assertFalse(result); - new File("fabric-manifest.xml").delete(); + void isForgeVersionCorrectTest() { + Assertions.assertTrue(configuration.isForgeVersionCorrect("36.1.2")); + Assertions.assertFalse(configuration.isForgeVersionCorrect("99.0.0")); + new File("forge-manifest.json").delete(); } - @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void testIsForgeVersionCorrect() { - String forgeVersion = "36.1.2"; - boolean result = configuration.isForgeVersionCorrect(forgeVersion); - Assertions.assertTrue(result); - new File("forge-manifest.json").delete(); + void latestFabricLoaderTest() { + Assertions.assertNotNull(configuration.latestFabricLoader("src/test/resources/forge_tests")); } - @SuppressWarnings("ResultOfMethodCallIgnored") + + @Test - void testIsForgeVersionFalse() { - String forgeVersion = "99.0.0"; - boolean result = configuration.isForgeVersionCorrect(forgeVersion); - Assertions.assertFalse(result); - new File("forge-manifest.json").delete(); + void buildStringTest() { + List<String> args = new ArrayList<>(Arrays.asList( + "config", + "mods", + "scripts", + "seeds", + "defaultconfigs" + )); + String result = configuration.buildString(args.toString()); + Assertions.assertEquals(args.toString(), String.format("[%s]",result)); } @SuppressWarnings("ResultOfMethodCallIgnored") @Test - void writeConfigToFileTestFabric() { - String modpackDir = "./src/test/resources/fabric_tests"; + void writeConfigToFileTest() { List<String> clientMods = new ArrayList<>(Arrays.asList( "AmbientSounds", "BackTools", @@ -402,8 +673,10 @@ class ConfigurationTest { "seeds", "defaultconfigs" )); + String javaPath; String autoJavaPath = System.getProperty("java.home").replace("\\", "/") + "/bin/java"; + if (autoJavaPath.startsWith("C:")) { autoJavaPath = String.format("%s.exe", autoJavaPath); } @@ -412,88 +685,46 @@ class ConfigurationTest { } else { javaPath = autoJavaPath; } - String minecraftVersion = "1.16.5"; - String modLoader = "Fabric"; - String modLoaderVersion = "0.11.3"; - boolean result = configuration.writeConfigToFile( - modpackDir, + + Assertions.assertTrue(configuration.writeConfigToFile( + "./src/test/resources/fabric_tests", configuration.buildString(clientMods.toString()), configuration.buildString(copyDirs.toString()), true, javaPath, - minecraftVersion, - modLoader, - modLoaderVersion, + "1.16.5", + "Fabric", + "0.11.3", true, true, true, true, - configuration.getConfigFile(), + new File("./serverpackcreatorfabric.conf"), false - ); - Assertions.assertTrue(result); - Assertions.assertTrue(new File("./serverpackcreator.conf").exists()); - new File("./serverpackcreator.conf").delete(); - } - - @SuppressWarnings("ResultOfMethodCallIgnored") - @Test - void testWriteConfigToFileForge() { - String modpackDir = "./src/test/resources/forge_tests"; - List<String> clientMods = new ArrayList<>(Arrays.asList( - "AmbientSounds", - "BackTools", - "BetterAdvancement", - "BetterPing", - "cherished", - "ClientTweaks", - "Controlling", - "DefaultOptions", - "durability", - "DynamicSurroundings", - "itemzoom", - "jei-professions", - "jeiintegration", - "JustEnoughResources", - "MouseTweaks", - "Neat", - "OldJavaWarning", - "PackMenu", - "preciseblockplacing", - "SimpleDiscordRichPresence", - "SpawnerFix", - "TipTheScales", - "WorldNameRandomizer" )); - List<String> copyDirs = new ArrayList<>(Arrays.asList( - "config", - "mods", - "scripts", - "seeds", - "defaultconfigs" - )); - String javaPath = "/use/bin/java"; - String minecraftVersion = "1.16.5"; - String modLoader = "Forge"; - String modLoaderVersion = "36.1.2"; - boolean result = configuration.writeConfigToFile( - modpackDir, + + Assertions.assertTrue(new File("./serverpackcreatorfabric.conf").exists()); + new File("./serverpackcreatorfabric.conf").delete(); + + Assertions.assertTrue(configuration.writeConfigToFile( + "./src/test/resources/forge_tests", configuration.buildString(clientMods.toString()), configuration.buildString(copyDirs.toString()), true, javaPath, - minecraftVersion, - modLoader, - modLoaderVersion, + "1.16.5", + "Forge", + "36.1.2", true, true, true, true, - configuration.getConfigFile(), + new File("./serverpackcreatorforge.conf"), false - ); - Assertions.assertTrue(result); - Assertions.assertTrue(new File("./serverpackcreator.conf").exists()); - new File("./serverpackcreator.conf").delete(); + )); + + Assertions.assertTrue(new File("./serverpackcreatorforge.conf").exists()); + new File("./serverpackcreatorforge.conf").delete(); } + } -- GitLab From f3ca36f02a56bcf9fa5bf51338525eff9923a5bb Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 7 May 2021 18:10:44 +0200 Subject: [PATCH 86/91] misc --- .../java/de/griefed/serverpackcreator/CreateServerPack.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index 0b7d18413..8ca2fda43 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -21,7 +21,6 @@ package de.griefed.serverpackcreator; import de.griefed.serverpackcreator.curseforgemodpack.CurseCreateModpack; import de.griefed.serverpackcreator.i18n.LocalizationManager; -import kotlin.internal.AccessibleLateinitPropertyLiteral; import net.fabricmc.installer.util.LauncherMeta; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -865,7 +864,6 @@ public class CreateServerPack { String latestFabricInstaller(String modpackDir) { String result; try { - //TODO: Download file during startup of ServerPackCreator. Replace existing file during every restart. Store in same dir as ServerPacKCreator. URL downloadFabricXml = getFabricInstallerManifest(); ReadableByteChannel downloadFabricXmlReadableByteChannel = Channels.newChannel(downloadFabricXml.openStream()); -- GitLab From 773f4ad7607f3a9a97387fc927ad632a906c2e6f Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 7 May 2021 18:11:00 +0200 Subject: [PATCH 87/91] refactor(DI): Testfiles --- .../testresources/fabric_manifest.json | 964 ++++++++++++++++++ .../serverpackcreator_copydirs.conf | 59 ++ .../serverpackcreator_javapath.conf | 59 ++ .../serverpackcreator_minecraftversion.conf | 59 ++ .../serverpackcreator_modloader.conf | 59 ++ .../serverpackcreator_modloaderversion.conf | 59 ++ 6 files changed, 1259 insertions(+) create mode 100644 src/test/resources/testresources/fabric_manifest.json create mode 100644 src/test/resources/testresources/serverpackcreator_copydirs.conf create mode 100644 src/test/resources/testresources/serverpackcreator_javapath.conf create mode 100644 src/test/resources/testresources/serverpackcreator_minecraftversion.conf create mode 100644 src/test/resources/testresources/serverpackcreator_modloader.conf create mode 100644 src/test/resources/testresources/serverpackcreator_modloaderversion.conf diff --git a/src/test/resources/testresources/fabric_manifest.json b/src/test/resources/testresources/fabric_manifest.json new file mode 100644 index 000000000..f99a98ce9 --- /dev/null +++ b/src/test/resources/testresources/fabric_manifest.json @@ -0,0 +1,964 @@ +{ + "minecraft": { + "version": "1.16.5", + "modLoaders": [ + { + "id": "forge-36.1.4", + "primary": true + } + ] + }, + "manifestType": "minecraftModpack", + "manifestVersion": 1, + "name": "All of Fabric 3", + "version": "2.7.2", + "author": "", + "files": [ + { + "projectID": 412174, + "fileID": 3179159, + "required": true + }, + { + "projectID": 412182, + "fileID": 3278684, + "required": true + }, + { + "projectID": 398780, + "fileID": 3240209, + "required": true + }, + { + "projectID": 373093, + "fileID": 3282342, + "required": true + }, + { + "projectID": 352997, + "fileID": 3133994, + "required": true + }, + { + "projectID": 334011, + "fileID": 3029749, + "required": true + }, + { + "projectID": 378696, + "fileID": 3220895, + "required": true + }, + { + "projectID": 334018, + "fileID": 3029797, + "required": true + }, + { + "projectID": 323974, + "fileID": 3193392, + "required": true + }, + { + "projectID": 418921, + "fileID": 3107748, + "required": true + }, + { + "projectID": 387649, + "fileID": 2986964, + "required": true + }, + { + "projectID": 433447, + "fileID": 3157660, + "required": true + }, + { + "projectID": 393236, + "fileID": 3204286, + "required": true + }, + { + "projectID": 436799, + "fileID": 3205453, + "required": true + }, + { + "projectID": 412225, + "fileID": 3264885, + "required": true + }, + { + "projectID": 373138, + "fileID": 3212558, + "required": true + }, + { + "projectID": 394362, + "fileID": 3046119, + "required": true + }, + { + "projectID": 374274, + "fileID": 2934596, + "required": true + }, + { + "projectID": 361988, + "fileID": 3227191, + "required": true + }, + { + "projectID": 341888, + "fileID": 3087345, + "required": true + }, + { + "projectID": 422316, + "fileID": 3122049, + "required": true + }, + { + "projectID": 363126, + "fileID": 3063862, + "required": true + }, + { + "projectID": 318449, + "fileID": 3270712, + "required": true + }, + { + "projectID": 233564, + "fileID": 3244621, + "required": true + }, + { + "projectID": 435744, + "fileID": 3193053, + "required": true + }, + { + "projectID": 388832, + "fileID": 3247476, + "required": true + }, + { + "projectID": 319582, + "fileID": 3237427, + "required": true + }, + { + "projectID": 433518, + "fileID": 3209972, + "required": true + }, + { + "projectID": 319596, + "fileID": 3235711, + "required": true + }, + { + "projectID": 324066, + "fileID": 3157970, + "required": true + }, + { + "projectID": 433538, + "fileID": 3218841, + "required": true + }, + { + "projectID": 372124, + "fileID": 3202749, + "required": true + }, + { + "projectID": 453681, + "fileID": 3236342, + "required": true + }, + { + "projectID": 373261, + "fileID": 3095961, + "required": true + }, + { + "projectID": 390027, + "fileID": 3021434, + "required": true + }, + { + "projectID": 320778, + "fileID": 3135802, + "required": true + }, + { + "projectID": 393392, + "fileID": 3105698, + "required": true + }, + { + "projectID": 250419, + "fileID": 3191163, + "required": true + }, + { + "projectID": 349850, + "fileID": 3124936, + "required": true + }, + { + "projectID": 401236, + "fileID": 3269478, + "required": true + }, + { + "projectID": 462672, + "fileID": 3254442, + "required": true + }, + { + "projectID": 395659, + "fileID": 3111745, + "required": true + }, + { + "projectID": 365521, + "fileID": 3153778, + "required": true + }, + { + "projectID": 334248, + "fileID": 3101172, + "required": true + }, + { + "projectID": 333141, + "fileID": 3271918, + "required": true + }, + { + "projectID": 364426, + "fileID": 3071720, + "required": true + }, + { + "projectID": 451554, + "fileID": 3276317, + "required": true + }, + { + "projectID": 317514, + "fileID": 3197990, + "required": true + }, + { + "projectID": 413596, + "fileID": 3203464, + "required": true + }, + { + "projectID": 349938, + "fileID": 3247975, + "required": true + }, + { + "projectID": 356643, + "fileID": 3073169, + "required": true + }, + { + "projectID": 356678, + "fileID": 3239172, + "required": true + }, + { + "projectID": 409184, + "fileID": 3256820, + "required": true + }, + { + "projectID": 286328, + "fileID": 3197436, + "required": true + }, + { + "projectID": 355583, + "fileID": 3032313, + "required": true + }, + { + "projectID": 315386, + "fileID": 3248247, + "required": true + }, + { + "projectID": 335493, + "fileID": 3175749, + "required": true + }, + { + "projectID": 223794, + "fileID": 3225596, + "required": true + }, + { + "projectID": 386892, + "fileID": 3213023, + "required": true + }, + { + "projectID": 308702, + "fileID": 3268909, + "required": true + }, + { + "projectID": 408118, + "fileID": 3272380, + "required": true + }, + { + "projectID": 318760, + "fileID": 3153988, + "required": true + }, + { + "projectID": 391366, + "fileID": 3281245, + "required": true + }, + { + "projectID": 325471, + "fileID": 3280011, + "required": true + }, + { + "projectID": 391378, + "fileID": 3239861, + "required": true + }, + { + "projectID": 325492, + "fileID": 3207256, + "required": true + }, + { + "projectID": 395864, + "fileID": 3281406, + "required": true + }, + { + "projectID": 381349, + "fileID": 3098872, + "required": true + }, + { + "projectID": 353426, + "fileID": 3171780, + "required": true + }, + { + "projectID": 313219, + "fileID": 3161210, + "required": true + }, + { + "projectID": 371307, + "fileID": 3186845, + "required": true + }, + { + "projectID": 451744, + "fileID": 3221466, + "required": true + }, + { + "projectID": 326641, + "fileID": 3066593, + "required": true + }, + { + "projectID": 308769, + "fileID": 3225502, + "required": true + }, + { + "projectID": 391429, + "fileID": 3189140, + "required": true + }, + { + "projectID": 308777, + "fileID": 3209771, + "required": true + }, + { + "projectID": 365750, + "fileID": 3266839, + "required": true + }, + { + "projectID": 411557, + "fileID": 3087328, + "required": true + }, + { + "projectID": 373591, + "fileID": 3227926, + "required": true + }, + { + "projectID": 318872, + "fileID": 3220890, + "required": true + }, + { + "projectID": 317756, + "fileID": 3224736, + "required": true + }, + { + "projectID": 393714, + "fileID": 3132476, + "required": true + }, + { + "projectID": 399309, + "fileID": 3256690, + "required": true + }, + { + "projectID": 315534, + "fileID": 3155774, + "required": true + }, + { + "projectID": 421649, + "fileID": 3218648, + "required": true + }, + { + "projectID": 308841, + "fileID": 3039289, + "required": true + }, + { + "projectID": 406021, + "fileID": 3048188, + "required": true + }, + { + "projectID": 317780, + "fileID": 3275719, + "required": true + }, + { + "projectID": 306612, + "fileID": 3281140, + "required": true + }, + { + "projectID": 325625, + "fileID": 3138173, + "required": true + }, + { + "projectID": 416105, + "fileID": 3122710, + "required": true + }, + { + "projectID": 400477, + "fileID": 3120448, + "required": true + }, + { + "projectID": 341284, + "fileID": 3100959, + "required": true + }, + { + "projectID": 383733, + "fileID": 3107471, + "required": true + }, + { + "projectID": 380393, + "fileID": 3202525, + "required": true + }, + { + "projectID": 394915, + "fileID": 3245862, + "required": true + }, + { + "projectID": 364762, + "fileID": 3019469, + "required": true + }, + { + "projectID": 431787, + "fileID": 3263166, + "required": true + }, + { + "projectID": 317856, + "fileID": 3214308, + "required": true + }, + { + "projectID": 240783, + "fileID": 2989916, + "required": true + }, + { + "projectID": 435141, + "fileID": 3172144, + "required": true + }, + { + "projectID": 438495, + "fileID": 3237040, + "required": true + }, + { + "projectID": 438496, + "fileID": 3249259, + "required": true + }, + { + "projectID": 438500, + "fileID": 3231743, + "required": true + }, + { + "projectID": 473131, + "fileID": 3280130, + "required": true + }, + { + "projectID": 369254, + "fileID": 3264737, + "required": true + }, + { + "projectID": 312289, + "fileID": 3273758, + "required": true + }, + { + "projectID": 403889, + "fileID": 3039451, + "required": true + }, + { + "projectID": 388252, + "fileID": 3071147, + "required": true + }, + { + "projectID": 375969, + "fileID": 3035557, + "required": true + }, + { + "projectID": 360333, + "fileID": 3186818, + "required": true + }, + { + "projectID": 408366, + "fileID": 3269549, + "required": true + }, + { + "projectID": 353641, + "fileID": 2992917, + "required": true + }, + { + "projectID": 382694, + "fileID": 3196484, + "required": true + }, + { + "projectID": 238603, + "fileID": 3156163, + "required": true + }, + { + "projectID": 391640, + "fileID": 3119850, + "required": true + }, + { + "projectID": 359248, + "fileID": 3209165, + "required": true + }, + { + "projectID": 310111, + "fileID": 3272771, + "required": true + }, + { + "projectID": 355914, + "fileID": 3032328, + "required": true + }, + { + "projectID": 319057, + "fileID": 3261151, + "required": true + }, + { + "projectID": 387197, + "fileID": 3252374, + "required": true + }, + { + "projectID": 378266, + "fileID": 3262002, + "required": true + }, + { + "projectID": 390557, + "fileID": 3133269, + "required": true + }, + { + "projectID": 400619, + "fileID": 3124827, + "required": true + }, + { + "projectID": 392805, + "fileID": 2994761, + "required": true + }, + { + "projectID": 401753, + "fileID": 3274420, + "required": true + }, + { + "projectID": 320215, + "fileID": 3177342, + "required": true + }, + { + "projectID": 391708, + "fileID": 3279979, + "required": true + }, + { + "projectID": 361550, + "fileID": 3119667, + "required": true + }, + { + "projectID": 408465, + "fileID": 3218659, + "required": true + }, + { + "projectID": 362669, + "fileID": 3209365, + "required": true + }, + { + "projectID": 360438, + "fileID": 3215441, + "required": true + }, + { + "projectID": 380548, + "fileID": 3186878, + "required": true + }, + { + "projectID": 459857, + "fileID": 3253564, + "required": true + }, + { + "projectID": 416294, + "fileID": 3279704, + "required": true + }, + { + "projectID": 368263, + "fileID": 3185573, + "required": true + }, + { + "projectID": 360449, + "fileID": 3158251, + "required": true + }, + { + "projectID": 391737, + "fileID": 3134750, + "required": true + }, + { + "projectID": 361585, + "fileID": 3095793, + "required": true + }, + { + "projectID": 437552, + "fileID": 3264888, + "required": true + }, + { + "projectID": 248787, + "fileID": 2987255, + "required": true + }, + { + "projectID": 315811, + "fileID": 3195227, + "required": true + }, + { + "projectID": 419697, + "fileID": 3279825, + "required": true + }, + { + "projectID": 396245, + "fileID": 3212546, + "required": true + }, + { + "projectID": 421949, + "fileID": 3124331, + "required": true + }, + { + "projectID": 398502, + "fileID": 3113127, + "required": true + }, + { + "projectID": 377281, + "fileID": 3191170, + "required": true + }, + { + "projectID": 384009, + "fileID": 3276337, + "required": true + }, + { + "projectID": 399648, + "fileID": 3278801, + "required": true + }, + { + "projectID": 440979, + "fileID": 3274367, + "required": true + }, + { + "projectID": 309177, + "fileID": 3036690, + "required": true + }, + { + "projectID": 334873, + "fileID": 3128781, + "required": true + }, + { + "projectID": 399679, + "fileID": 3038575, + "required": true + }, + { + "projectID": 407500, + "fileID": 3252504, + "required": true + }, + { + "projectID": 356118, + "fileID": 3040466, + "required": true + }, + { + "projectID": 333779, + "fileID": 3121061, + "required": true + }, + { + "projectID": 263420, + "fileID": 3275706, + "required": true + }, + { + "projectID": 415339, + "fileID": 3106070, + "required": true + }, + { + "projectID": 393000, + "fileID": 3212566, + "required": true + }, + { + "projectID": 394120, + "fileID": 3273334, + "required": true + }, + { + "projectID": 398614, + "fileID": 3259847, + "required": true + }, + { + "projectID": 410902, + "fileID": 3157163, + "required": true + }, + { + "projectID": 422076, + "fileID": 3121774, + "required": true + }, + { + "projectID": 442184, + "fileID": 3188519, + "required": true + }, + { + "projectID": 401978, + "fileID": 3128808, + "required": true + }, + { + "projectID": 385230, + "fileID": 3107117, + "required": true + }, + { + "projectID": 309275, + "fileID": 3173974, + "required": true + }, + { + "projectID": 389718, + "fileID": 3181134, + "required": true + }, + { + "projectID": 317121, + "fileID": 3093525, + "required": true + }, + { + "projectID": 398667, + "fileID": 3282067, + "required": true + }, + { + "projectID": 398676, + "fileID": 3104836, + "required": true + }, + { + "projectID": 415438, + "fileID": 3257186, + "required": true + }, + { + "projectID": 437779, + "fileID": 3173720, + "required": true + }, + { + "projectID": 297038, + "fileID": 3266601, + "required": true + }, + { + "projectID": 413207, + "fileID": 3194197, + "required": true + }, + { + "projectID": 405388, + "fileID": 3274195, + "required": true + }, + { + "projectID": 396461, + "fileID": 3124604, + "required": true + }, + { + "projectID": 400929, + "fileID": 3030323, + "required": true + }, + { + "projectID": 444498, + "fileID": 3268237, + "required": true + }, + { + "projectID": 374143, + "fileID": 3206686, + "required": true + }, + { + "projectID": 354047, + "fileID": 3048200, + "required": true + }, + { + "projectID": 381973, + "fileID": 3063422, + "required": true + }, + { + "projectID": 332831, + "fileID": 3111160, + "required": true + }, + { + "projectID": 393149, + "fileID": 3191218, + "required": true + }, + { + "projectID": 446767, + "fileID": 3272633, + "required": true + }, + { + "projectID": 341772, + "fileID": 3060706, + "required": true + }, + { + "projectID": 431135, + "fileID": 3194033, + "required": true + }, + { + "projectID": 237903, + "fileID": 3215288, + "required": true + }, + { + "projectID": 461316, + "fileID": 3282051, + "required": true + } + ], + "overrides": "overrides" +} \ No newline at end of file diff --git a/src/test/resources/testresources/serverpackcreator_copydirs.conf b/src/test/resources/testresources/serverpackcreator_copydirs.conf new file mode 100644 index 000000000..32919d1ed --- /dev/null +++ b/src/test/resources/testresources/serverpackcreator_copydirs.conf @@ -0,0 +1,59 @@ +# Path to your modpack. Can be either relative or absolute. +# Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" +# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7 "390331,3215793" +modpackDir = "./src/test/resources/forge_tests" + +# List of client-only mods to delete from serverpack. +# No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge! +# Example: ["AmbientSounds", "ClientTweaks", "PackMenu", "BetterAdvancement", "jeiintegration"] +clientMods = [AmbientSounds,BackTools,BetterAdvancement,BetterPing,cherished,ClientTweaks,Controlling,DefaultOptions,durability,DynamicSurroundings,itemzoom,jei-professions,jeiintegration,JustEnoughResources,MouseTweaks,Neat,OldJavaWarning,PackMenu,preciseblockplacing,SimpleDiscordRichPresence,SpawnerFix,TipTheScales,WorldNameRandomizer] + +# Name of directories to include in serverpack. +# When specifying "saves/world_name", "world_name" will be copied to the base directory of the serverpack +# for immediate use with the server. Automatically set when projectID,fileID for modpackDir has been specified. +# Example: ["config", "mods", "scripts"] +copyDirs = [config,modss,scripts,seeds,defaultconfigs] + +# Whether to install a Forge/Fabric server for the serverpack. Must be true or false. +# Default value is true. +includeServerInstallation = true + +# Path to the Java executable. On Linux systems it would be something like "/usr/bin/java". +# Only needed if includeServerInstallation is true. +javaPath = "" + +# Which Minecraft version to use. Example: "1.16.5". +# Automatically set when projectID,fileID for modpackDir has been specified. +# Only needed if includeServerInstallation is true. +minecraftVersion = "1.16.8" + +# Which modloader to install. Must be either "Forge" or "Fabric". +# Automatically set when projectID,fileID for modpackDir has been specified. +# Only needed if includeServerInstallation is true. +modLoader = "Forgee" + +# The version of the modloader you want to install. Example for Fabric="0.7.3", example for Forge="36.0.15". +# Automatically set when projectID,fileID for modpackDir has been specified. +# Only needed if includeServerInstallation is true. +modLoaderVersion = "36.1.6123" + +# Include a server-icon.png in your serverpack. Must be true or false. +# Customize server-icon.png in ./server_files. +# Dimensions must be 64x64! +# Default value is true. +includeServerIcon = true + +# Include a server.properties in your serverpack. Must be true or false. +# Customize server.properties in ./server_files. +# If no server.properties is provided but is set to true, a default one will be provided. +# Default value is true. +includeServerProperties = true + +# Include start scripts for windows and linux systems. Must be true or false. +# Customize files beginning with "start-" in ./server_files. +# Default value is true. +includeStartScripts = true + +# Create zip-archive of serverpack. Must be true or false. +# Default value is true. +includeZipCreation = true diff --git a/src/test/resources/testresources/serverpackcreator_javapath.conf b/src/test/resources/testresources/serverpackcreator_javapath.conf new file mode 100644 index 000000000..c6b75c066 --- /dev/null +++ b/src/test/resources/testresources/serverpackcreator_javapath.conf @@ -0,0 +1,59 @@ +# Path to your modpack. Can be either relative or absolute. +# Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" +# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7 "390331,3215793" +modpackDir = "./src/test/resources/forge_tests" + +# List of client-only mods to delete from serverpack. +# No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge! +# Example: ["AmbientSounds", "ClientTweaks", "PackMenu", "BetterAdvancement", "jeiintegration"] +clientMods = [AmbientSounds,BackTools,BetterAdvancement,BetterPing,cherished,ClientTweaks,Controlling,DefaultOptions,durability,DynamicSurroundings,itemzoom,jei-professions,jeiintegration,JustEnoughResources,MouseTweaks,Neat,OldJavaWarning,PackMenu,preciseblockplacing,SimpleDiscordRichPresence,SpawnerFix,TipTheScales,WorldNameRandomizer] + +# Name of directories to include in serverpack. +# When specifying "saves/world_name", "world_name" will be copied to the base directory of the serverpack +# for immediate use with the server. Automatically set when projectID,fileID for modpackDir has been specified. +# Example: ["config", "mods", "scripts"] +copyDirs = [config,mods,scripts,seeds,defaultconfigs] + +# Whether to install a Forge/Fabric server for the serverpack. Must be true or false. +# Default value is true. +includeServerInstallation = true + +# Path to the Java executable. On Linux systems it would be something like "/usr/bin/java". +# Only needed if includeServerInstallation is true. +javaPath = "aaaaa" + +# Which Minecraft version to use. Example: "1.16.5". +# Automatically set when projectID,fileID for modpackDir has been specified. +# Only needed if includeServerInstallation is true. +minecraftVersion = "1.16.5" + +# Which modloader to install. Must be either "Forge" or "Fabric". +# Automatically set when projectID,fileID for modpackDir has been specified. +# Only needed if includeServerInstallation is true. +modLoader = "Forge" + +# The version of the modloader you want to install. Example for Fabric="0.7.3", example for Forge="36.0.15". +# Automatically set when projectID,fileID for modpackDir has been specified. +# Only needed if includeServerInstallation is true. +modLoaderVersion = "36.1.2" + +# Include a server-icon.png in your serverpack. Must be true or false. +# Customize server-icon.png in ./server_files. +# Dimensions must be 64x64! +# Default value is true. +includeServerIcon = true + +# Include a server.properties in your serverpack. Must be true or false. +# Customize server.properties in ./server_files. +# If no server.properties is provided but is set to true, a default one will be provided. +# Default value is true. +includeServerProperties = true + +# Include start scripts for windows and linux systems. Must be true or false. +# Customize files beginning with "start-" in ./server_files. +# Default value is true. +includeStartScripts = true + +# Create zip-archive of serverpack. Must be true or false. +# Default value is true. +includeZipCreation = true diff --git a/src/test/resources/testresources/serverpackcreator_minecraftversion.conf b/src/test/resources/testresources/serverpackcreator_minecraftversion.conf new file mode 100644 index 000000000..b93cc50a0 --- /dev/null +++ b/src/test/resources/testresources/serverpackcreator_minecraftversion.conf @@ -0,0 +1,59 @@ +# Path to your modpack. Can be either relative or absolute. +# Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" +# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7 "390331,3215793" +modpackDir = "./src/test/resources/forge_tests" + +# List of client-only mods to delete from serverpack. +# No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge! +# Example: ["AmbientSounds", "ClientTweaks", "PackMenu", "BetterAdvancement", "jeiintegration"] +clientMods = [AmbientSounds,BackTools,BetterAdvancement,BetterPing,cherished,ClientTweaks,Controlling,DefaultOptions,durability,DynamicSurroundings,itemzoom,jei-professions,jeiintegration,JustEnoughResources,MouseTweaks,Neat,OldJavaWarning,PackMenu,preciseblockplacing,SimpleDiscordRichPresence,SpawnerFix,TipTheScales,WorldNameRandomizer] + +# Name of directories to include in serverpack. +# When specifying "saves/world_name", "world_name" will be copied to the base directory of the serverpack +# for immediate use with the server. Automatically set when projectID,fileID for modpackDir has been specified. +# Example: ["config", "mods", "scripts"] +copyDirs = [config,mods,scripts,seeds,defaultconfigs] + +# Whether to install a Forge/Fabric server for the serverpack. Must be true or false. +# Default value is true. +includeServerInstallation = true + +# Path to the Java executable. On Linux systems it would be something like "/usr/bin/java". +# Only needed if includeServerInstallation is true. +javaPath = "" + +# Which Minecraft version to use. Example: "1.16.5". +# Automatically set when projectID,fileID for modpackDir has been specified. +# Only needed if includeServerInstallation is true. +minecraftVersion = "1.16.111" + +# Which modloader to install. Must be either "Forge" or "Fabric". +# Automatically set when projectID,fileID for modpackDir has been specified. +# Only needed if includeServerInstallation is true. +modLoader = "Forge" + +# The version of the modloader you want to install. Example for Fabric="0.7.3", example for Forge="36.0.15". +# Automatically set when projectID,fileID for modpackDir has been specified. +# Only needed if includeServerInstallation is true. +modLoaderVersion = "36.1.2" + +# Include a server-icon.png in your serverpack. Must be true or false. +# Customize server-icon.png in ./server_files. +# Dimensions must be 64x64! +# Default value is true. +includeServerIcon = true + +# Include a server.properties in your serverpack. Must be true or false. +# Customize server.properties in ./server_files. +# If no server.properties is provided but is set to true, a default one will be provided. +# Default value is true. +includeServerProperties = true + +# Include start scripts for windows and linux systems. Must be true or false. +# Customize files beginning with "start-" in ./server_files. +# Default value is true. +includeStartScripts = true + +# Create zip-archive of serverpack. Must be true or false. +# Default value is true. +includeZipCreation = true diff --git a/src/test/resources/testresources/serverpackcreator_modloader.conf b/src/test/resources/testresources/serverpackcreator_modloader.conf new file mode 100644 index 000000000..486c229e7 --- /dev/null +++ b/src/test/resources/testresources/serverpackcreator_modloader.conf @@ -0,0 +1,59 @@ +# Path to your modpack. Can be either relative or absolute. +# Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" +# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7 "390331,3215793" +modpackDir = "./src/test/resources/forge_tests" + +# List of client-only mods to delete from serverpack. +# No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge! +# Example: ["AmbientSounds", "ClientTweaks", "PackMenu", "BetterAdvancement", "jeiintegration"] +clientMods = [AmbientSounds,BackTools,BetterAdvancement,BetterPing,cherished,ClientTweaks,Controlling,DefaultOptions,durability,DynamicSurroundings,itemzoom,jei-professions,jeiintegration,JustEnoughResources,MouseTweaks,Neat,OldJavaWarning,PackMenu,preciseblockplacing,SimpleDiscordRichPresence,SpawnerFix,TipTheScales,WorldNameRandomizer] + +# Name of directories to include in serverpack. +# When specifying "saves/world_name", "world_name" will be copied to the base directory of the serverpack +# for immediate use with the server. Automatically set when projectID,fileID for modpackDir has been specified. +# Example: ["config", "mods", "scripts"] +copyDirs = [config,mods,scripts,seeds,defaultconfigs] + +# Whether to install a Forge/Fabric server for the serverpack. Must be true or false. +# Default value is true. +includeServerInstallation = true + +# Path to the Java executable. On Linux systems it would be something like "/usr/bin/java". +# Only needed if includeServerInstallation is true. +javaPath = "" + +# Which Minecraft version to use. Example: "1.16.5". +# Automatically set when projectID,fileID for modpackDir has been specified. +# Only needed if includeServerInstallation is true. +minecraftVersion = "1.16.5" + +# Which modloader to install. Must be either "Forge" or "Fabric". +# Automatically set when projectID,fileID for modpackDir has been specified. +# Only needed if includeServerInstallation is true. +modLoader = "Forgeeeee" + +# The version of the modloader you want to install. Example for Fabric="0.7.3", example for Forge="36.0.15". +# Automatically set when projectID,fileID for modpackDir has been specified. +# Only needed if includeServerInstallation is true. +modLoaderVersion = "36.1.2" + +# Include a server-icon.png in your serverpack. Must be true or false. +# Customize server-icon.png in ./server_files. +# Dimensions must be 64x64! +# Default value is true. +includeServerIcon = true + +# Include a server.properties in your serverpack. Must be true or false. +# Customize server.properties in ./server_files. +# If no server.properties is provided but is set to true, a default one will be provided. +# Default value is true. +includeServerProperties = true + +# Include start scripts for windows and linux systems. Must be true or false. +# Customize files beginning with "start-" in ./server_files. +# Default value is true. +includeStartScripts = true + +# Create zip-archive of serverpack. Must be true or false. +# Default value is true. +includeZipCreation = true diff --git a/src/test/resources/testresources/serverpackcreator_modloaderversion.conf b/src/test/resources/testresources/serverpackcreator_modloaderversion.conf new file mode 100644 index 000000000..b51c66ca8 --- /dev/null +++ b/src/test/resources/testresources/serverpackcreator_modloaderversion.conf @@ -0,0 +1,59 @@ +# Path to your modpack. Can be either relative or absolute. +# Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" +# Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7 "390331,3215793" +modpackDir = "./src/test/resources/forge_tests" + +# List of client-only mods to delete from serverpack. +# No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge! +# Example: ["AmbientSounds", "ClientTweaks", "PackMenu", "BetterAdvancement", "jeiintegration"] +clientMods = [AmbientSounds,BackTools,BetterAdvancement,BetterPing,cherished,ClientTweaks,Controlling,DefaultOptions,durability,DynamicSurroundings,itemzoom,jei-professions,jeiintegration,JustEnoughResources,MouseTweaks,Neat,OldJavaWarning,PackMenu,preciseblockplacing,SimpleDiscordRichPresence,SpawnerFix,TipTheScales,WorldNameRandomizer] + +# Name of directories to include in serverpack. +# When specifying "saves/world_name", "world_name" will be copied to the base directory of the serverpack +# for immediate use with the server. Automatically set when projectID,fileID for modpackDir has been specified. +# Example: ["config", "mods", "scripts"] +copyDirs = [config,mods,scripts,seeds,defaultconfigs] + +# Whether to install a Forge/Fabric server for the serverpack. Must be true or false. +# Default value is true. +includeServerInstallation = true + +# Path to the Java executable. On Linux systems it would be something like "/usr/bin/java". +# Only needed if includeServerInstallation is true. +javaPath = "" + +# Which Minecraft version to use. Example: "1.16.5". +# Automatically set when projectID,fileID for modpackDir has been specified. +# Only needed if includeServerInstallation is true. +minecraftVersion = "1.16.5" + +# Which modloader to install. Must be either "Forge" or "Fabric". +# Automatically set when projectID,fileID for modpackDir has been specified. +# Only needed if includeServerInstallation is true. +modLoader = "Forge" + +# The version of the modloader you want to install. Example for Fabric="0.7.3", example for Forge="36.0.15". +# Automatically set when projectID,fileID for modpackDir has been specified. +# Only needed if includeServerInstallation is true. +modLoaderVersion = "36.1.2222" + +# Include a server-icon.png in your serverpack. Must be true or false. +# Customize server-icon.png in ./server_files. +# Dimensions must be 64x64! +# Default value is true. +includeServerIcon = true + +# Include a server.properties in your serverpack. Must be true or false. +# Customize server.properties in ./server_files. +# If no server.properties is provided but is set to true, a default one will be provided. +# Default value is true. +includeServerProperties = true + +# Include start scripts for windows and linux systems. Must be true or false. +# Customize files beginning with "start-" in ./server_files. +# Default value is true. +includeStartScripts = true + +# Create zip-archive of serverpack. Must be true or false. +# Default value is true. +includeZipCreation = true -- GitLab From e8166e0dcf22c629c06b65710a9828de0102e405 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 7 May 2021 19:05:34 +0200 Subject: [PATCH 88/91] refactor(DI): Some comments here and there --- .../serverpackcreator/Configuration.java | 55 ++++++++++++------- .../serverpackcreator/CreateServerPack.java | 8 +++ .../griefed/serverpackcreator/FilesSetup.java | 10 ++-- .../de/griefed/serverpackcreator/Main.java | 14 +++++ 4 files changed, 63 insertions(+), 24 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/Configuration.java b/src/main/java/de/griefed/serverpackcreator/Configuration.java index 5589a5de7..03ab19563 100644 --- a/src/main/java/de/griefed/serverpackcreator/Configuration.java +++ b/src/main/java/de/griefed/serverpackcreator/Configuration.java @@ -151,11 +151,7 @@ public class Configuration { private final File oldConfigFile = new File("creator.conf"); private final File configFile = new File("serverpackcreator.conf"); - private final String minecraftManifest = "https://launchermeta.mojang.com/mc/game/version_manifest.json"; - private final String forgeManifest = "https://files.minecraftforge.net/net/minecraftforge/forge/maven-metadata.json"; - private final String fabricManifest = "https://maven.fabricmc.net/net/fabricmc/fabric-loader/maven-metadata.xml"; - -//-- If you wish to expand this list, fork this repository, make your changes, and submit a PR ------------------------- + //-- If you wish to expand this list, fork this repository, make your changes, and submit a PR ------------------------- private final List<String> fallbackModsList = Arrays.asList( "AmbientSounds", "BackTools", @@ -240,7 +236,9 @@ public class Configuration { */ URL getMinecraftManifestUrl() { URL minecraftURL = null; - try { minecraftURL = new URL(minecraftManifest); } + String minecraftManifest = "https://launchermeta.mojang.com/mc/game/version_manifest.json"; + try { + minecraftURL = new URL(minecraftManifest); } catch (IOException ex) { appLogger.error(ex); } return minecraftURL; } @@ -251,7 +249,9 @@ public class Configuration { */ URL getForgeManifestUrl() { URL forgeURL = null; - try { forgeURL = new URL(forgeManifest); } + String forgeManifest = "https://files.minecraftforge.net/net/minecraftforge/forge/maven-metadata.json"; + try { + forgeURL = new URL(forgeManifest); } catch (IOException ex) { appLogger.error(ex); } return forgeURL; } @@ -262,7 +262,9 @@ public class Configuration { */ URL getFabricManifestUrl() { URL fabricURL = null; - try { fabricURL = new URL(fabricManifest); } + String fabricManifest = "https://maven.fabricmc.net/net/fabricmc/fabric-loader/maven-metadata.xml"; + try { + fabricURL = new URL(fabricManifest); } catch (IOException ex) { appLogger.error(ex); } return fabricURL; } @@ -274,7 +276,7 @@ public class Configuration { * {@link #isDir(String)}<br> * {@link #isCurse()} */ - public Config getConfig() { + Config getConfig() { return config; } @@ -283,7 +285,7 @@ public class Configuration { * For use in {@link #checkConfigFile(File, boolean)} * @param newConfig The new file of which to store a Typesafe Config. */ - public void setConfig(File newConfig) { + void setConfig(File newConfig) { try { this.config = ConfigFactory.parseFile(newConfig); } catch (ConfigException ex) { @@ -667,28 +669,45 @@ public class Configuration { setModpackDir(modpackDir); if (checkCopyDirs(getConfig().getStringList("copyDirs"), getModpackDir())) { + setCopyDirs(getConfig().getStringList("copyDirs")); + } else { configHasError = true; } if (getIncludeServerInstallation()) { + if (checkJavaPath(getConfig().getString("javaPath"))) { + setJavaPath(getConfig().getString("javaPath")); + } else { + String tmpJavaPath = getJavaPathFromSystem(getConfig().getString("javaPath")); + if (checkJavaPath(tmpJavaPath)) { + setJavaPath(tmpJavaPath); + } else { configHasError = true; } } + + if (isMinecraftVersionCorrect(getConfig().getString("minecraftVersion"))) { + setMinecraftVersion(getConfig().getString("minecraftVersion")); + } else { configHasError = true; } if (checkModloader(getConfig().getString("modLoader"))) { + setModLoader(setModLoaderCase(getConfig().getString("modLoader"))); + } else { configHasError = true; } if (checkModloaderVersion(getModLoader(), getConfig().getString("modLoaderVersion"))) { + setModLoaderVersion(getConfig().getString("modLoaderVersion")); + } else { configHasError = true; } } else { @@ -729,8 +748,10 @@ public class Configuration { boolean configHasError = false; try { if (CurseAPI.project(getProjectID()).isPresent()) { + String projectName, displayName; projectName = displayName = ""; + try { projectName = CurseAPI.project(getProjectID()).get().name(); try { displayName = Objects.requireNonNull(CurseAPI.project(getProjectID()).get().files().fileWithID(getProjectFileID())).displayName(); } @@ -744,6 +765,7 @@ public class Configuration { } } catch (CurseException cex) { appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.iscurse.curseforge")); } + if (displayName != null && projectName != null) { setModpackDir(String.format("./%s/%s", projectName, displayName)); @@ -816,15 +838,10 @@ public class Configuration { false ); - } else { - configHasError = true; - } - } else { - configHasError = true; - } - } else { - configHasError = true; - } + } else { configHasError = true; } + } else { configHasError = true; } + } else { configHasError = true; } + } catch (CurseException cex) { appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.iscurse.project"), getProjectID()), cex); configHasError = true; diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index 8ca2fda43..99c6930e2 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -216,36 +216,44 @@ public class CreateServerPack { public boolean run() { if (!configuration.checkConfigFile(configuration.getConfigFile(), true)) { + // Make sure no files from previously generated server packs interrupt us. cleanupEnvironment(configuration.getModpackDir()); + // Recursively copy all specified directories and files, excluding clientside-only mods, to server pack. copyFiles(configuration.getModpackDir(), configuration.getCopyDirs(), configuration.getClientMods()); + // Copy start scripts for specified modloader from server_files to server pack. copyStartScripts(configuration.getModpackDir(), configuration.getModLoader(), configuration.getIncludeStartScripts()); + // If true, Install the modloader software for the specified Minecraft version, modloader, modloader version if (configuration.getIncludeServerInstallation()) { installServer(configuration.getModLoader(), configuration.getModpackDir(), configuration.getMinecraftVersion(), configuration.getModLoaderVersion(), configuration.getJavaPath()); } else { appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.server")); } + // If true, copy the server-icon.png from server_files to the server pack. if (configuration.getIncludeServerIcon()) { copyIcon(configuration.getModpackDir()); } else { appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.icon")); } + // If true, copy the server.properties from server_files to the server pack. if (configuration.getIncludeServerProperties()) { copyProperties(configuration.getModpackDir()); } else { appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.properties")); } + // If true, create a ZIP-archive excluding the Minecraft server JAR of the server pack. if (configuration.getIncludeZipCreation()) { zipBuilder(configuration.getModpackDir(), configuration.getModLoader(), configuration.getIncludeServerInstallation(), configuration.getMinecraftVersion()); } else { appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.zip")); } + // Inform user about location of newly generated server pack. appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.runincli.serverpack"), configuration.getModpackDir())); appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.runincli.archive"), configuration.getModpackDir())); appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.finish")); diff --git a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java index d580ab406..a615f907d 100644 --- a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java +++ b/src/main/java/de/griefed/serverpackcreator/FilesSetup.java @@ -163,11 +163,10 @@ public class FilesSetup { */ void filesSetup() { appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.filessetup.enter")); - try { - Files.createDirectories(Paths.get("./server_files")); - } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.filessetup"), ex); - } + + try { Files.createDirectories(Paths.get("./server_files")); } + catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.filessetup"), ex); } + boolean doesConfigExist = checkForConfig(); boolean doesFabricLinuxExist = checkForFabricLinux(); boolean doesFabricWindowsExist = checkForFabricWindows(); @@ -176,6 +175,7 @@ public class FilesSetup { boolean doesPropertiesExist = checkForProperties(); boolean doesIconExist = checkForIcon(); + // Inform user about customization of files if any of them were generated from the template. if (doesConfigExist || doesFabricLinuxExist || doesFabricWindowsExist || diff --git a/src/main/java/de/griefed/serverpackcreator/Main.java b/src/main/java/de/griefed/serverpackcreator/Main.java index d284df1d3..6bf325c2d 100644 --- a/src/main/java/de/griefed/serverpackcreator/Main.java +++ b/src/main/java/de/griefed/serverpackcreator/Main.java @@ -80,16 +80,21 @@ public class Main { LocalizationManager localizationManager = new LocalizationManager(); if (Arrays.asList(args).contains("-lang")) { try { + // Init the LocalizationManager with the locale passed by the cli arguments. localizationManager.init(programArgs.get(programArgs.indexOf("-lang") + 1)); } catch (IncorrectLanguageException e) { appLogger.info(programArgs.get(programArgs.indexOf("-lang") + 1)); appLogger.error("Incorrect language specified, falling back to English (United States)..."); + + // Init the LocalizationManager with the default locale en_US. localizationManager.init(); } } else { + // Check local lang.properties file for locale setting. localizationManager.checkLocaleFile(); } + // Prepare instances for dependency injection CurseCreateModpack curseCreateModpack = new CurseCreateModpack(localizationManager); Configuration configuration = new Configuration(localizationManager, curseCreateModpack); FilesSetup filesSetup = new FilesSetup(localizationManager); @@ -111,6 +116,7 @@ public class Main { appLogger.warn(localizationManager.getLocalizedString("handler.log.warn.wip0")); try { + // Print system information to console and logs. jarPath = Main.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath(); jarName = jarPath.substring(jarPath.lastIndexOf("/") + 1); javaVersion = System.getProperty("java.version"); @@ -130,8 +136,10 @@ public class Main { appLogger.error(localizationManager.getLocalizedString("handler.log.error.system.properties"), ex); } + // Ensure default files are present. filesSetup.filesSetup(); + // Start generation of a new configuration file with user input. if (Arrays.asList(args).contains("-cgen")) { configuration.createConfigurationFile(); @@ -142,8 +150,10 @@ public class Main { System.exit(1); } + // Start ServerPackCreator in commandline mode. } else if (Arrays.asList(args).contains("-cli")) { + // Start generation of a new configuration with user input if no configuration file is present. if (!new File("creator.conf").exists() && !new File("serverpackcreator.conf").exists()) { configuration.createConfigurationFile(); @@ -154,8 +164,11 @@ public class Main { } else { System.exit(1); } + + // If the environment is headless, so no possibility for GUI, start in commandline-mode. } else if (GraphicsEnvironment.isHeadless()) { + // Start generation of a new configuration with user input if no configuration file is present. if (!new File("creator.conf").exists() && !new File("serverpackcreator.conf").exists()) { configuration.createConfigurationFile(); @@ -167,6 +180,7 @@ public class Main { System.exit(1); } + // If no mode is specified and we have a graphical environment, start in GUI mode. } else { tabbedPane.mainGUI(); -- GitLab From ac5673403301ad89ae92b8baeed5be687ba6c76f Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 7 May 2021 19:06:24 +0200 Subject: [PATCH 89/91] refactor(DI): Move bufferedImage so we can use localization for logging --- .../griefed/serverpackcreator/gui/CreateGui.java | 15 ++++++--------- .../griefed/resources/lang/lang_de_de.properties | 1 + .../griefed/resources/lang/lang_en_us.properties | 1 + .../griefed/resources/lang/lang_uk_ua.properties | 1 + 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java index be79e14fe..aa6f037cc 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java @@ -55,16 +55,7 @@ public class CreateGui extends JPanel { private final ImageIcon bannerIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/banner.png"))); private final Image icon = Toolkit.getDefaultToolkit().getImage(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/app.png"))); private final Dimension windowDimension = new Dimension(800,860); - private final Image tile = Toolkit.getDefaultToolkit().getImage(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/tile.png"))); private BufferedImage bufferedImage; - { - try { - bufferedImage = ImageIO.read(getClass().getResource("/de/griefed/resources/gui/tile.png")); - } catch (IOException ex) { - //Can't use localization here. - appLogger.error("Could not read image for tiling.", ex); - } - } private LocalizationManager localizationManager; private Configuration configuration; @@ -120,12 +111,18 @@ public class CreateGui extends JPanel { this.createServerPack = injectedCreateServerPack; } + try { bufferedImage = ImageIO.read(Objects.requireNonNull(getClass().getResource("/de/griefed/resources/gui/tile.png")));} + catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("createserverpack.gui.createandshowgui.image"), ex); } + createServerPackTab = new CreateServerPackTab(localizationManager, configuration, curseCreateModpack, createServerPack); serverPackCreatorLogTab = new ServerPackCreatorLogTab(localizationManager); modloaderInstallerLogTab = new ModloaderInstallerLogTab(localizationManager); aboutTab = new AboutTab(localizationManager); + serverPackCreatorFrame = new JFrame(localizationManager.getLocalizedString("createserverpack.gui.createandshowgui")); + backgroundPanel = new BackgroundPanel(bufferedImage, BackgroundPanel.TILED, 0.0f, 0.0f); + tabbedPane = new JTabbedPane(JTabbedPane.TOP); /* diff --git a/src/main/resources/de/griefed/resources/lang/lang_de_de.properties b/src/main/resources/de/griefed/resources/lang/lang_de_de.properties index 9454e0bbd..f068c9bb1 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_de_de.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_de_de.properties @@ -17,6 +17,7 @@ cli.input.false=[Ff]alsch # GUI createserverpack.gui.createandshowgui=ServerPackCreator +createserverpack.gui.createandshowgui.image=Could not read image for tiling. createserverpack.gui.tabbedpane.createserverpack.title=Create Server Pack createserverpack.gui.tabbedpane.createserverpack.tip=Configure and start generation of server pack. createserverpack.gui.tabbedpane.serverpackcreatorlog.title=ServerPackCreator Log diff --git a/src/main/resources/de/griefed/resources/lang/lang_en_us.properties b/src/main/resources/de/griefed/resources/lang/lang_en_us.properties index 5617fffd7..6f82c6b0c 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_en_us.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_en_us.properties @@ -17,6 +17,7 @@ cli.input.false=[Ff]alse # GUI createserverpack.gui.createandshowgui=ServerPackCreator +createserverpack.gui.createandshowgui.image=Could not read image for tiling. createserverpack.gui.tabbedpane.createserverpack.title=Create Server Pack createserverpack.gui.tabbedpane.createserverpack.tip=Configure and start generation of server pack. createserverpack.gui.tabbedpane.serverpackcreatorlog.title=ServerPackCreator Log diff --git a/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties b/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties index 02fc1428a..c0e356688 100644 --- a/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties +++ b/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties @@ -17,6 +17,7 @@ cli.input.false=[Ff]alse # GUI createserverpack.gui.createandshowgui=ServerPackCreator +createserverpack.gui.createandshowgui.image=Could not read image for tiling. createserverpack.gui.tabbedpane.createserverpack.title=Create Server Pack createserverpack.gui.tabbedpane.createserverpack.tip=Configure and start generation of server pack. createserverpack.gui.tabbedpane.serverpackcreatorlog.title=ServerPackCreator Log -- GitLab From 1a451091ba9a7713c6e5d75a2adbdd26cc18f2be Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 7 May 2021 21:57:12 +0200 Subject: [PATCH 90/91] refactor(DI): Make appropriate fields final. Adhere to final naming convention. Minor refactorings. --- .../serverpackcreator/Configuration.java | 405 +++++++++--------- .../serverpackcreator/CreateServerPack.java | 302 ++++++------- .../de/griefed/serverpackcreator/Main.java | 45 +- .../curseforgemodpack/CurseCreateModpack.java | 129 +++--- .../curseforgemodpack/CurseMinecraft.java | 2 +- .../curseforgemodpack/CurseSplines.java | 14 +- .../serverpackcreator/gui/AboutTab.java | 114 +++-- .../gui/BackgroundPanel.java | 12 +- .../serverpackcreator/gui/CreateGui.java | 147 +++---- .../gui/CreateServerPackTab.java | 296 ++++++------- .../gui/ModloaderInstallerLogTab.java | 22 +- .../gui/ServerPackCreatorLogTab.java | 20 +- .../serverpackcreator/gui/SmartScroller.java | 3 +- .../i18n/LocalizationManager.java | 72 ++-- .../CreateServerPackTest.java | 4 +- 15 files changed, 777 insertions(+), 810 deletions(-) diff --git a/src/main/java/de/griefed/serverpackcreator/Configuration.java b/src/main/java/de/griefed/serverpackcreator/Configuration.java index 03ab19563..e929c530f 100644 --- a/src/main/java/de/griefed/serverpackcreator/Configuration.java +++ b/src/main/java/de/griefed/serverpackcreator/Configuration.java @@ -115,13 +115,12 @@ import java.util.*; * be a combination of a CurseForge projectID and fileID.<p> * Requires an instance of {@link LocalizationManager} for use of localization, but creates one if injected one is null.<p> * Loads a configuration from a serverpackcreator.conf-file in the same directory in which ServerPackCreator resides in. - * */ public class Configuration { - private static final Logger appLogger = LogManager.getLogger(Configuration.class); + private static final Logger LOG = LogManager.getLogger(Configuration.class); - private LocalizationManager localizationManager; - private CurseCreateModpack curseCreateModpack; + private final LocalizationManager LOCALIZATIONMANAGER; + private final CurseCreateModpack CURSECREATEMODPACK; /** * <strong>Constructor</strong><p> @@ -136,23 +135,23 @@ public class Configuration { */ public Configuration(LocalizationManager injectedLocalizationManager, CurseCreateModpack injectedCurseCreateModpack) { if (injectedLocalizationManager == null) { - this.localizationManager = new LocalizationManager(); + this.LOCALIZATIONMANAGER = new LocalizationManager(); } else { - this.localizationManager = injectedLocalizationManager; + this.LOCALIZATIONMANAGER = injectedLocalizationManager; } if (injectedCurseCreateModpack == null) { - this.curseCreateModpack = new CurseCreateModpack(localizationManager); + this.CURSECREATEMODPACK = new CurseCreateModpack(LOCALIZATIONMANAGER); } else { - this.curseCreateModpack = injectedCurseCreateModpack; + this.CURSECREATEMODPACK = injectedCurseCreateModpack; } } - private final File oldConfigFile = new File("creator.conf"); - private final File configFile = new File("serverpackcreator.conf"); + private final File FILE_CONFIG_OLD = new File("creator.conf"); + private final File FILE_CONFIG = new File("serverpackcreator.conf"); - //-- If you wish to expand this list, fork this repository, make your changes, and submit a PR ------------------------- - private final List<String> fallbackModsList = Arrays.asList( + // If you wish to expand this list, fork this repository, make your changes, and submit a PR. + private final List<String> FALLBACKMODSLIST = Arrays.asList( "AmbientSounds", "BackTools", "BetterAdvancement", @@ -202,12 +201,10 @@ public class Configuration { private Config config; - private ObjectMapper objectMapper = new ObjectMapper(); - public ObjectMapper getObjectMapper() { - this.objectMapper = new ObjectMapper(); - this.objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); - this.objectMapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); + objectMapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY); return objectMapper; } @@ -216,7 +213,7 @@ public class Configuration { * @return File. Returns the creator.conf-file for use in {@link #writeConfigToFile(String, String, String, boolean, String, String, String, String, boolean, boolean, boolean, boolean, File, boolean)} */ public File getOldConfigFile() { - return oldConfigFile; + return FILE_CONFIG_OLD; } /** @@ -227,7 +224,7 @@ public class Configuration { * {@link #writeConfigToFile(String, String, String, boolean, String, String, String, String, boolean, boolean, boolean, boolean, File, boolean)} */ public File getConfigFile() { - return configFile; + return FILE_CONFIG; } /** @@ -239,7 +236,7 @@ public class Configuration { String minecraftManifest = "https://launchermeta.mojang.com/mc/game/version_manifest.json"; try { minecraftURL = new URL(minecraftManifest); } - catch (IOException ex) { appLogger.error(ex); } + catch (IOException ex) { LOG.error(ex); } return minecraftURL; } @@ -252,7 +249,7 @@ public class Configuration { String forgeManifest = "https://files.minecraftforge.net/net/minecraftforge/forge/maven-metadata.json"; try { forgeURL = new URL(forgeManifest); } - catch (IOException ex) { appLogger.error(ex); } + catch (IOException ex) { LOG.error(ex); } return forgeURL; } @@ -265,7 +262,7 @@ public class Configuration { String fabricManifest = "https://maven.fabricmc.net/net/fabricmc/fabric-loader/maven-metadata.xml"; try { fabricURL = new URL(fabricManifest); } - catch (IOException ex) { appLogger.error(ex); } + catch (IOException ex) { LOG.error(ex); } return fabricURL; } @@ -289,7 +286,7 @@ public class Configuration { try { this.config = ConfigFactory.parseFile(newConfig); } catch (ConfigException ex) { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkconfig.start")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.checkconfig.start")); } } @@ -298,7 +295,7 @@ public class Configuration { * @return List String. Returns the fallback clientside-only mods-list for use in {@link #checkConfigFile(File, boolean)} */ List<String> getFallbackModsList() { - return fallbackModsList; + return FALLBACKMODSLIST; } /** @@ -337,13 +334,8 @@ public class Configuration { */ void setCopyDirs(List<String> newCopyDirs) { for (int i = 0; i < newCopyDirs.size(); i++) { - if (newCopyDirs.get(i).equalsIgnoreCase("server_pack")) { - newCopyDirs.remove(i); - } + newCopyDirs.removeIf(n -> (n.equalsIgnoreCase("server_pack"))); } - -// String string_server_pack = "server_pack"; -// newCopyDirs.removeIf(n -> Objects.equals(n, string_server_pack)); this.copyDirs = newCopyDirs; } @@ -588,15 +580,15 @@ public class Configuration { */ public boolean checkConfigFile(File configFile, boolean shouldModpackBeCreated) { boolean configHasError = false; - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.start")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.checkconfig.start")); try { setConfig(configFile); } catch (ConfigException ex) { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkconfig.start")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.checkconfig.start")); } if (getConfig().getStringList("clientMods").isEmpty()) { - appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.checkconfig.clientmods")); + LOG.warn(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.warn.checkconfig.clientmods")); setClientMods(getFallbackModsList()); } else { setClientMods(getConfig().getStringList("clientMods")); @@ -613,7 +605,7 @@ public class Configuration { if (shouldModpackBeCreated) { configHasError = isCurse(); } else { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.skipmodpackcreation")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.checkconfig.skipmodpackcreation")); } } else { configHasError = true; @@ -633,9 +625,9 @@ public class Configuration { getIncludeZipCreation()); if (!configHasError) { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.success")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.checkconfig.success")); } else { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkconfig.failure")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.checkconfig.failure")); } return configHasError; } @@ -711,11 +703,11 @@ public class Configuration { } else { configHasError = true; } } else { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.skipstart")); - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.skipjava")); - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.skipminecraft")); - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.skipmodlaoder")); - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkconfig.skipmodloaderversion")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.checkconfig.skipstart")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.checkconfig.skipjava")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.checkconfig.skipminecraft")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.checkconfig.skipmodlaoder")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.checkconfig.skipmodloaderversion")); } return configHasError; } @@ -755,22 +747,22 @@ public class Configuration { try { projectName = CurseAPI.project(getProjectID()).get().name(); try { displayName = Objects.requireNonNull(CurseAPI.project(getProjectID()).get().files().fileWithID(getProjectFileID())).displayName(); } - catch (NullPointerException npe) { appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.iscurse.display")); + catch (NullPointerException npe) { LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.iscurse.display")); try { displayName = Objects.requireNonNull(CurseAPI.project(getProjectID()).get().files().fileWithID(getProjectFileID())).nameOnDisk(); } catch (NullPointerException npe2) { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.iscurse.file"), npe2); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.iscurse.file"), npe2); displayName = null; } } - } catch (CurseException cex) { appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.iscurse.curseforge")); } + } catch (CurseException cex) { LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.iscurse.curseforge")); } if (displayName != null && projectName != null) { setModpackDir(String.format("./%s/%s", projectName, displayName)); - if (curseCreateModpack.curseForgeModpack(getModpackDir(), getProjectID(), getProjectFileID())) { + if (CURSECREATEMODPACK.curseForgeModpack(getModpackDir(), getProjectID(), getProjectFileID())) { try { byte[] jsonData = Files.readAllBytes(Paths.get(String.format("%s/manifest.json", getModpackDir()))); @@ -790,7 +782,7 @@ public class Configuration { .replace("[", "")); if (containsFabric(modpack)) { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.iscurse.fabric")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.iscurse.fabric")); setModLoader("Fabric"); setModLoaderVersion(latestFabricLoader(getModpackDir())); @@ -802,7 +794,7 @@ public class Configuration { } } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.iscurse.json"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.iscurse.json"), ex); } if (checkJavaPath(getConfig().getString("javaPath").replace("\\", "/"))) { @@ -819,7 +811,7 @@ public class Configuration { } setCopyDirs(suggestCopyDirs(getModpackDir())); - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.iscurse.replace")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.iscurse.replace")); writeConfigToFile( getModpackDir(), @@ -843,7 +835,7 @@ public class Configuration { } else { configHasError = true; } } catch (CurseException cex) { - appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.iscurse.project"), getProjectID()), cex); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.iscurse.project"), getProjectID()), cex); configHasError = true; } return configHasError; @@ -864,7 +856,7 @@ public class Configuration { String[] mods = modpack.getFiles().get(i).toString().split(","); if (mods[0].equalsIgnoreCase("361988") || mods[0].equalsIgnoreCase("306612")) { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.containsfabric")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.containsfabric")); hasJumploader = true; } } @@ -881,9 +873,9 @@ public class Configuration { * directories. */ List<String> suggestCopyDirs(String modpackDir) { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.suggestcopydirs.start")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.suggestcopydirs.start")); - List<String> dirsNotToCopy = new ArrayList<String>(Arrays.asList( + List<String> dirsNotToCopy = new ArrayList<>(Arrays.asList( "overrides", "packmenu", "resourcepacks", @@ -902,7 +894,7 @@ public class Configuration { } } } catch (NullPointerException np) { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.suggestcopydirs")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.suggestcopydirs")); } for (int idirs = 0; idirs < dirsNotToCopy.size(); idirs++) { @@ -940,7 +932,7 @@ public class Configuration { configCorrect = true; } } catch (CurseException cex) { - appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.iscurse.project"), curseProjectID),cex); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.iscurse.project"), curseProjectID),cex); configCorrect = false; } @@ -950,16 +942,16 @@ public class Configuration { configCorrect = true; } } catch (CurseException cex) { - appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.iscurse.file"), curseFileID), cex); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.iscurse.file"), curseFileID), cex); configCorrect = false; } - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.checkcurseforge.info")); - appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.checkcurseforge.return"), getProjectID(), getProjectFileID())); - appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.checkcurseforge.warn")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.checkcurseforge.info")); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.checkcurseforge.return"), getProjectID(), getProjectFileID())); + LOG.warn(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.warn.checkcurseforge.warn")); - } else { appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.checkcurseforge.warn2")); } + } else { LOG.warn(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.warn.checkcurseforge.warn2")); } return configCorrect; } @@ -992,9 +984,9 @@ public class Configuration { stringBoolean.matches("1") || stringBoolean.matches("[Yy]es") || stringBoolean.matches("[Yy]") || - stringBoolean.matches(localizationManager.getLocalizedString("cli.input.true")) || - stringBoolean.matches(localizationManager.getLocalizedString("cli.input.yes")) || - stringBoolean.matches(localizationManager.getLocalizedString("cli.input.yes.short")) + stringBoolean.matches(LOCALIZATIONMANAGER.getLocalizedString("cli.input.true")) || + stringBoolean.matches(LOCALIZATIONMANAGER.getLocalizedString("cli.input.yes")) || + stringBoolean.matches(LOCALIZATIONMANAGER.getLocalizedString("cli.input.yes.short")) ){ returnBoolean = true; @@ -1002,14 +994,14 @@ public class Configuration { stringBoolean.matches("0") || stringBoolean.matches("[Nn]o") || stringBoolean.matches("[Nn]" ) || - stringBoolean.matches(localizationManager.getLocalizedString("cli.input.false")) || - stringBoolean.matches(localizationManager.getLocalizedString("cli.input.no")) || - stringBoolean.matches(localizationManager.getLocalizedString("cli.input.no.short")) + stringBoolean.matches(LOCALIZATIONMANAGER.getLocalizedString("cli.input.false")) || + stringBoolean.matches(LOCALIZATIONMANAGER.getLocalizedString("cli.input.no")) || + stringBoolean.matches(LOCALIZATIONMANAGER.getLocalizedString("cli.input.no.short")) ){ returnBoolean = false; } else { - appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.converttoboolean.warn")); + LOG.warn(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.warn.converttoboolean.warn")); returnBoolean = false; } @@ -1048,39 +1040,41 @@ public class Configuration { boolean includeScripts, boolean includeZip) { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.printconfig.start")); - appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.modpackdir"), modpackDirectory)); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.printconfig.start")); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.printconfig.modpackdir"), modpackDirectory)); if (clientsideMods.isEmpty()) { - appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.printconfig.noclientmods")); + LOG.warn(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.warn.printconfig.noclientmods")); } else { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.printconfig.clientmods")); - for (int i = 0; i < clientsideMods.size(); i++) { - appLogger.info(String.format(" %s", clientsideMods.get(i))); } + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.printconfig.clientmods")); + for (String mod : clientsideMods) { + LOG.info(String.format(" %s", mod)); + } } - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.printconfig.copydirs")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.printconfig.copydirs")); if (copyDirectories != null) { - for (int i = 0; i < copyDirectories.size(); i++) { - appLogger.info(String.format(" %s", copyDirectories.get(i))); } + for (String directory : copyDirectories) { + LOG.info(String.format(" %s", directory)); + } } else { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.printconfig.copydirs")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.printconfig.copydirs")); } - appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.server"), installServer)); - appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.javapath"), javaInstallPath)); - appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.minecraftversion"), minecraftVer)); - appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.modloader"), modloader)); - appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.modloaderversion"), modloaderVersion)); - appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.icon"), includeIcon)); - appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.properties"), includeProperties)); - appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.scripts"), includeScripts)); - appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.info.printconfig.zip"), includeZip)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.printconfig.server"), installServer)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.printconfig.javapath"), javaInstallPath)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.printconfig.minecraftversion"), minecraftVer)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.printconfig.modloader"), modloader)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.printconfig.modloaderversion"), modloaderVersion)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.printconfig.icon"), includeIcon)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.printconfig.properties"), includeProperties)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.printconfig.scripts"), includeScripts)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.printconfig.zip"), includeZip)); } /** @@ -1096,11 +1090,11 @@ public class Configuration { if (modpackDir.equals("")) { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkmodpackdir")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.checkmodpackdir")); } else if (!(new File(modpackDir).isDirectory())) { - appLogger.warn(String.format(localizationManager.getLocalizedString("configcheck.log.warn.checkmodpackdir"), modpackDir)); + LOG.warn(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.warn.checkmodpackdir"), modpackDir)); } else { @@ -1115,29 +1109,29 @@ public class Configuration { * prints a message to the console and serverpackcreator.log if it is.<br> * Checks whether all directories in the list exist in the modpack directory and prints a message to the console * and serverpackcreator.log if any one of the directories could not be found. - * @param copyDirs List String. The list of directories to check for existence. + * @param directoriesToCopy List String. The list of directories to check for existence. * @param modpackDir String. The path to the modpack directory in which to check for existence of the passed list of * directories. * @return Boolean. Returns true if every directory was found in the modpack directory. If any single one was not found, * false is returned. */ - boolean checkCopyDirs(List<String> copyDirs, String modpackDir) { + boolean checkCopyDirs(List<String> directoriesToCopy, String modpackDir) { boolean configCorrect = true; - if (copyDirs.isEmpty()) { + if (directoriesToCopy.isEmpty()) { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkcopydirs.empty")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.checkcopydirs.empty")); configCorrect = false; } else { - for (int i = 0; i < copyDirs.size(); i++) { + for (String directory : directoriesToCopy) { - File directory = new File(String.format("%s/%s", modpackDir, copyDirs.get(i))); + File dirToCheck = new File(String.format("%s/%s", modpackDir, directory)); - if (!directory.exists() || !directory.isDirectory()) { + if (!dirToCheck.exists() || !dirToCheck.isDirectory()) { - appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.checkcopydirs.notfound"), directory.getAbsolutePath())); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.checkcopydirs.notfound"), dirToCheck.getAbsolutePath())); configCorrect = false; } } @@ -1158,7 +1152,7 @@ public class Configuration { if (enteredPath.equals("")) { - appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.getjavapath.empty")); + LOG.warn(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.warn.getjavapath.empty")); autoJavaPath = String.format("%s/bin/java",System.getProperty("java.home").replace("\\", "/")); if (autoJavaPath.startsWith("C:")) { @@ -1166,12 +1160,12 @@ public class Configuration { autoJavaPath = String.format("%s.exe", autoJavaPath); } - appLogger.warn(String.format(localizationManager.getLocalizedString("configcheck.log.warn.getjavapath.set"), autoJavaPath)); + LOG.warn(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.warn.getjavapath.set"), autoJavaPath)); return autoJavaPath; } else { - appLogger.info(String.format(localizationManager.getLocalizedString("configcheck.log.warn.getjavapath.set"), enteredPath)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.warn.getjavapath.set"), enteredPath)); return enteredPath; } } @@ -1193,7 +1187,7 @@ public class Configuration { configCorrect = true; } else { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkjavapath")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.checkjavapath")); } return configCorrect; } @@ -1212,7 +1206,7 @@ public class Configuration { } else { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkmodloader")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.checkmodloader")); } return configCorrect; } @@ -1261,7 +1255,7 @@ public class Configuration { isVersionCorrect = true; } else { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkmodloaderversion")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.checkmodloaderversion")); } return isVersionCorrect; } @@ -1283,22 +1277,22 @@ public class Configuration { downloadManifestOutputStream = new FileOutputStream("mcmanifest.json"); } catch (FileNotFoundException ex) { - appLogger.debug(localizationManager.getLocalizedString("configcheck.log.debug.isminecraftversioncorrect"), ex); + LOG.debug(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.debug.isminecraftversioncorrect"), ex); File file = new File("mcmanifest.json"); if (!file.exists()) { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isminecraftversioncorrect.create")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.isminecraftversioncorrect.create")); boolean jsonCreated = file.createNewFile(); if (jsonCreated) { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isminecraftversioncorrect.created")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.isminecraftversioncorrect.created")); } else { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isminecraftversioncorrect.parse")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.isminecraftversioncorrect.parse")); } } downloadManifestOutputStream = new FileOutputStream("mcmanifest.json"); @@ -1326,11 +1320,11 @@ public class Configuration { return contains; } catch (Exception ex) { - appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.isminecraftversioncorrect.validate"), minecraftVersion), ex); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.isminecraftversioncorrect.validate"), minecraftVersion), ex); return false; } } else { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isminecraftversioncorrect.empty")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.isminecraftversioncorrect.empty")); return false; } } @@ -1354,20 +1348,20 @@ public class Configuration { downloadManifestOutputStream = new FileOutputStream("fabric-manifest.xml"); } catch (FileNotFoundException ex) { - appLogger.debug(localizationManager.getLocalizedString("configcheck.log.debug.isfabricversioncorrect"), ex); + LOG.debug(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.debug.isfabricversioncorrect"), ex); File file = new File("fabric-manifest.xml"); if (!file.exists()) { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isfabricversioncorrect.create")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.isfabricversioncorrect.create")); boolean jsonCreated = file.createNewFile(); if (jsonCreated) { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isfabricversioncorrect.created")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.isfabricversioncorrect.created")); } else { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isfabricversioncorrect.parse")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.isfabricversioncorrect.parse")); } } downloadManifestOutputStream = new FileOutputStream("fabric-manifest.xml"); @@ -1410,13 +1404,13 @@ public class Configuration { } catch (Exception ex) { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isfabricversioncorrect.validate"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.isfabricversioncorrect.validate"), ex); return false; } } else { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isfabricversioncorrect.empty")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.isfabricversioncorrect.empty")); return false; } } @@ -1440,21 +1434,21 @@ public class Configuration { } catch (FileNotFoundException ex) { - appLogger.debug(localizationManager.getLocalizedString("configcheck.log.debug.isforgeversioncorrect"), ex); + LOG.debug(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.debug.isforgeversioncorrect"), ex); File file = new File("forge-manifest.json"); if (!file.exists()) { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isforgeversioncorrect.create")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.isforgeversioncorrect.create")); boolean jsonCreated = file.createNewFile(); if (jsonCreated) { - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.isforgeversioncorrect.created")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.isforgeversioncorrect.created")); } else { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isforgeversioncorrect.parse")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.isforgeversioncorrect.parse")); } } downloadManifestOutputStream = new FileOutputStream("forge-manifest.json"); @@ -1496,12 +1490,12 @@ public class Configuration { } catch (Exception ex) { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isforgeversioncorrect.validate"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.isforgeversioncorrect.validate"), ex); return false; } } else { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.isforgeversioncorrect.empty")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.isforgeversioncorrect.empty")); return false; } } @@ -1513,9 +1507,9 @@ public class Configuration { * directory. * @return Boolean. Returns true if the download was successful. False if not. */ - @SuppressWarnings({"ReturnInsideFinallyBlock", "finally"}) String latestFabricLoader(String modpackDir) { String result = "0.11.3"; + try { URL downloadFabricXml = getFabricManifestUrl(); ReadableByteChannel downloadFabricXmlReadableByteChannel = Channels.newChannel(downloadFabricXml.openStream()); @@ -1536,12 +1530,16 @@ public class Configuration { XPath xpath = xPathFactory.newXPath(); result = (String) xpath.evaluate("/metadata/versioning/release", fabricXml, XPathConstants.STRING); - appLogger.info(localizationManager.getLocalizedString("configcheck.log.info.latestfabricloader.created")); + + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.info.latestfabricloader.created")); + } catch (IOException | ParserConfigurationException | SAXException | XPathExpressionException ex) { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.latestfabricloader.parse"), ex); - } finally { - return result; + + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.latestfabricloader.parse"), ex); } + + return result; + } /** @@ -1593,145 +1591,146 @@ public class Configuration { Scanner reader = new Scanner(System.in); - appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.start"), "-cgen")); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.start"), "-cgen")); do { //--------------------------------------------------------------------------------------------MODPACK DIRECTORY--------- - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.modpack.enter")); - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.modpack.example")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.modpack.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.modpack.example")); do { do { - System.out.print(localizationManager.getLocalizedString("clisetup.log.info.modpack.cli")); + System.out.print(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.modpack.cli")); tmpModpackDir = reader.nextLine(); } while (!checkModpackDir(tmpModpackDir)); - appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), tmpModpackDir)); - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.modpack.checkreturninfo")); - System.out.print(localizationManager.getLocalizedString("clisetup.log.info.answer")); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.checkreturn"), tmpModpackDir)); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.modpack.checkreturninfo")); + System.out.print(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.answer")); } while (!readBoolean()); modpackDir = tmpModpackDir.replace("\\", "/"); - appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), modpackDir)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.checkreturn"), modpackDir)); System.out.println(); //-----------------------------------------------------------------------------------------CLIENTSIDE-ONLY MODS--------- - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.clientmods.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.clientmods.enter")); do { clientMods.addAll(readStringArray()); - appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), clientMods)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.checkreturn"), clientMods)); if (clientMods.isEmpty()) { clientMods = getFallbackModsList(); - appLogger.warn(localizationManager.getLocalizedString("configcheck.log.warn.checkconfig.clientmods")); + LOG.warn(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.warn.checkconfig.clientmods")); - for (int i = 0; i < clientMods.size(); i++) { - appLogger.warn(String.format(" %s", clientMods.get(i))); } + for (String mod : clientMods) { + LOG.warn(String.format(" %s", mod)); + } } - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.clientmods.checkreturninfo")); - System.out.print(localizationManager.getLocalizedString("clisetup.log.info.answer")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.clientmods.checkreturninfo")); + System.out.print(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.answer")); } while (!readBoolean()); - appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), clientMods)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.checkreturn"), clientMods)); tmpClientMods = new String[clientMods.size()]; clientMods.toArray(tmpClientMods); System.out.println(); //---------------------------------------------------------------------------DIRECTORIES TO COPY TO SERVER PACK--------- - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.copydirs.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.copydirs.enter")); File directories = new File(modpackDir); List<String> dirList = Arrays.asList(Objects.requireNonNull(directories.list((current, name) -> new File(current, name).isDirectory()))); - appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.copydirs.dirsinmodpack"), dirList.toString().replace("[","").replace("]",""))); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.copydirs.dirsinmodpack"), dirList.toString().replace("[","").replace("]",""))); do { do { copyDirs.clear(); - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.copydirs.specify")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.copydirs.specify")); copyDirs.addAll(readStringArray()); } while (!checkCopyDirs(copyDirs, modpackDir)); - appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), copyDirs)); - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.copydirs.checkreturninfo")); - System.out.print(localizationManager.getLocalizedString("clisetup.log.info.answer")); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.checkreturn"), copyDirs)); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.copydirs.checkreturninfo")); + System.out.print(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.answer")); } while (!readBoolean()); - appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), copyDirs)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.checkreturn"), copyDirs)); tmpCopyDirs = new String[copyDirs.size()]; copyDirs.toArray(tmpCopyDirs); System.out.println(); //-------------------------------------------------------------WHETHER TO INCLUDE MODLOADER SERVER INSTALLATION--------- - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.server.enter")); - System.out.print(localizationManager.getLocalizedString("clisetup.log.info.server.include")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.server.enter")); + System.out.print(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.server.include")); includeServerInstallation = readBoolean(); - appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), includeServerInstallation)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.checkreturn"), includeServerInstallation)); //-------------------------------------------------------------------------------MINECRAFT VERSION MODPACK USES--------- - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.minecraft.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.minecraft.enter")); do { - System.out.print(localizationManager.getLocalizedString("clisetup.log.info.minecraft.specify")); + System.out.print(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.minecraft.specify")); minecraftVersion = reader.nextLine(); } while (!isMinecraftVersionCorrect(minecraftVersion)); - appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), minecraftVersion)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.checkreturn"), minecraftVersion)); System.out.println(); //---------------------------------------------------------------------------------------MODLOADER MODPACK USES--------- - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.modloader.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.modloader.enter")); do { - System.out.print(localizationManager.getLocalizedString("clisetup.log.info.modloader.cli")); + System.out.print(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.modloader.cli")); modLoader = reader.nextLine(); } while (!checkModloader(modLoader)); modLoader = setModLoaderCase(modLoader); - appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), modLoader)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.checkreturn"), modLoader)); System.out.println(); //----------------------------------------------------------------------------VERSION OF MODLOADER MODPACK USES--------- - appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.modloaderversion.enter"), modLoader)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.modloaderversion.enter"), modLoader)); do { - System.out.print(localizationManager.getLocalizedString("clisetup.log.info.modloaderversion.cli")); + System.out.print(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.modloaderversion.cli")); modLoaderVersion = reader.nextLine(); } while (!checkModloaderVersion(modLoader, modLoaderVersion)); - appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), modLoaderVersion)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.checkreturn"), modLoaderVersion)); System.out.println(); //------------------------------------------------------------------------------------PATH TO JAVA INSTALLATION--------- - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.java.enter")); - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.java.enter2")); - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.java.example")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.java.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.java.enter2")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.java.example")); do { - System.out.print(localizationManager.getLocalizedString("clisetup.log.info.java.cli")); + System.out.print(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.java.cli")); String tmpJavaPath = reader.nextLine(); javaPath = getJavaPathFromSystem(tmpJavaPath); } while (!checkJavaPath(javaPath)); System.out.println(); //------------------------------------------------------------WHETHER TO INCLUDE SERVER-ICON.PNG IN SERVER PACK--------- - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.icon.enter")); - System.out.print(localizationManager.getLocalizedString("clisetup.log.info.icon.cli")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.icon.enter")); + System.out.print(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.icon.cli")); includeServerIcon = readBoolean(); - appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), includeServerIcon)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.checkreturn"), includeServerIcon)); System.out.println(); //----------------------------------------------------------WHETHER TO INCLUDE SERVER.PROPERTIES IN SERVER PACK--------- - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.properties.enter")); - System.out.print(localizationManager.getLocalizedString("clisetup.log.info.properties.cli")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.properties.enter")); + System.out.print(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.properties.cli")); includeServerProperties = readBoolean(); - appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), includeServerProperties)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.checkreturn"), includeServerProperties)); System.out.println(); //--------------------------------------------------------------WHETHER TO INCLUDE START SCRIPTS IN SERVER PACK--------- - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.scripts.enter")); - System.out.print(localizationManager.getLocalizedString("clisetup.log.info.scripts.cli")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.scripts.enter")); + System.out.print(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.scripts.cli")); includeStartScripts = readBoolean(); - appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), includeStartScripts)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.checkreturn"), includeStartScripts)); System.out.println(); //----------------------------------------------------WHETHER TO INCLUDE CREATION OF ZIP-ARCHIVE OF SERVER PACK--------- - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.zip.enter")); - System.out.print(localizationManager.getLocalizedString("clisetup.log.info.zip.cli")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.zip.enter")); + System.out.print(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.zip.cli")); includeZipCreation = readBoolean(); - appLogger.info(String.format(localizationManager.getLocalizedString("clisetup.log.info.checkreturn"), includeZipCreation)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.checkreturn"), includeZipCreation)); //------------------------------------------------------------------------------PRINT CONFIG TO CONSOLE AND LOG--------- printConfig(modpackDir, @@ -1746,8 +1745,8 @@ public class Configuration { includeServerProperties, includeStartScripts, includeZipCreation); - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.config.enter")); - System.out.print(localizationManager.getLocalizedString("clisetup.log.info.answer")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.config.enter")); + System.out.print(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.answer")); } while (!readBoolean()); reader.close(); @@ -1768,7 +1767,7 @@ public class Configuration { getConfigFile(), false )) { - appLogger.info(localizationManager.getLocalizedString("clisetup.log.info.config.written")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.info.config.written")); } } @@ -1819,22 +1818,22 @@ public class Configuration { boolRead.matches("[Yy]es") || boolRead.matches("[Yy]") || boolRead.matches("1") || - boolRead.matches(localizationManager.getLocalizedString("cli.input.true")) || - boolRead.matches(localizationManager.getLocalizedString("cli.input.yes")) || - boolRead.matches(localizationManager.getLocalizedString("cli.input.yes.short"))) { + boolRead.matches(LOCALIZATIONMANAGER.getLocalizedString("cli.input.true")) || + boolRead.matches(LOCALIZATIONMANAGER.getLocalizedString("cli.input.yes")) || + boolRead.matches(LOCALIZATIONMANAGER.getLocalizedString("cli.input.yes.short"))) { return true; } else if (boolRead.matches("[Ff]alse") || boolRead.matches("[Nn]o") || boolRead.matches("[Nn]" ) || boolRead.matches("0") || - boolRead.matches(localizationManager.getLocalizedString("cli.input.false")) || - boolRead.matches(localizationManager.getLocalizedString("cli.input.no")) || - boolRead.matches(localizationManager.getLocalizedString("cli.input.no.short"))) { + boolRead.matches(LOCALIZATIONMANAGER.getLocalizedString("cli.input.false")) || + boolRead.matches(LOCALIZATIONMANAGER.getLocalizedString("cli.input.no")) || + boolRead.matches(LOCALIZATIONMANAGER.getLocalizedString("cli.input.no.short"))) { return false; } else { - appLogger.error(localizationManager.getLocalizedString("clisetup.log.error.answer")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("clisetup.log.error.answer")); } } } @@ -1888,35 +1887,35 @@ public class Configuration { "%s\nincludeServerProperties = %b\n\n" + "%s\nincludeStartScripts = %b\n\n" + "%s\nincludeZipCreation = %b\n", - localizationManager.getLocalizedString("filessetup.writeconfigtofile.modpackdir"), modpackDir.replace("\\","/"), - localizationManager.getLocalizedString("filessetup.writeconfigtofile.clientmods"), clientMods, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.copydirs"), copyDirs, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.includeserverinstallation"), includeServer, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.javapath"), javaPath.replace("\\","/"), - localizationManager.getLocalizedString("filessetup.writeconfigtofile.minecraftversion"), minecraftVersion, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.modloader"), modLoader, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.modloaderversion"), modLoaderVersion, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.includeservericon"), includeIcon, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.includeserverproperties"), includeProperties, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.includestartscripts"), includeScripts, - localizationManager.getLocalizedString("filessetup.writeconfigtofile.includezipcreation"), includeZip + LOCALIZATIONMANAGER.getLocalizedString("filessetup.writeconfigtofile.modpackdir"), modpackDir.replace("\\","/"), + LOCALIZATIONMANAGER.getLocalizedString("filessetup.writeconfigtofile.clientmods"), clientMods, + LOCALIZATIONMANAGER.getLocalizedString("filessetup.writeconfigtofile.copydirs"), copyDirs, + LOCALIZATIONMANAGER.getLocalizedString("filessetup.writeconfigtofile.includeserverinstallation"), includeServer, + LOCALIZATIONMANAGER.getLocalizedString("filessetup.writeconfigtofile.javapath"), javaPath.replace("\\","/"), + LOCALIZATIONMANAGER.getLocalizedString("filessetup.writeconfigtofile.minecraftversion"), minecraftVersion, + LOCALIZATIONMANAGER.getLocalizedString("filessetup.writeconfigtofile.modloader"), modLoader, + LOCALIZATIONMANAGER.getLocalizedString("filessetup.writeconfigtofile.modloaderversion"), modLoaderVersion, + LOCALIZATIONMANAGER.getLocalizedString("filessetup.writeconfigtofile.includeservericon"), includeIcon, + LOCALIZATIONMANAGER.getLocalizedString("filessetup.writeconfigtofile.includeserverproperties"), includeProperties, + LOCALIZATIONMANAGER.getLocalizedString("filessetup.writeconfigtofile.includestartscripts"), includeScripts, + LOCALIZATIONMANAGER.getLocalizedString("filessetup.writeconfigtofile.includezipcreation"), includeZip ); if (!isTemporary) { if (getConfigFile().exists()) { boolean delConf = getConfigFile().delete(); if (delConf) { - appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.writeconfigtofile.config")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.info.writeconfigtofile.config")); } else { - appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.writeconfigtofile.config")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.error.writeconfigtofile.config")); } } if (getOldConfigFile().exists()) { boolean delOldConf = getOldConfigFile().delete(); if (delOldConf) { - appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.writeconfigtofile.old")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.info.writeconfigtofile.old")); } else { - appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.writeconfigtofile.old")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.error.writeconfigtofile.old")); } } } @@ -1926,9 +1925,9 @@ public class Configuration { writer.write(configString); writer.close(); configWritten = true; - appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.writeconfigtofile.confignew")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.info.writeconfigtofile.confignew")); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.writeconfigtofile"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.error.writeconfigtofile"), ex); } return configWritten; diff --git a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java index 99c6930e2..8bedaedac 100644 --- a/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java +++ b/src/main/java/de/griefed/serverpackcreator/CreateServerPack.java @@ -90,12 +90,11 @@ import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; * other platforms. */ public class CreateServerPack { - private static final Logger appLogger = LogManager.getLogger(FilesSetup.class); - private static final Logger installerLogger = LogManager.getLogger("InstallerLogger"); + private static final Logger LOG = LogManager.getLogger(DefaultFiles.class); + private static final Logger LOG_INSTALLER = LogManager.getLogger("InstallerLogger"); - private Configuration configuration; - private CurseCreateModpack curseCreateModpack; - private LocalizationManager localizationManager; + private final Configuration CONFIGURATION; + private final LocalizationManager LOCALIZATIONMANAGER; /** * <strong>Constructor</strong><p> @@ -111,39 +110,40 @@ public class CreateServerPack { * CurseForge projectID and fileID, from which to <em>then</em> create the server pack. */ public CreateServerPack(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration, CurseCreateModpack injectedCurseCreateModpack) { + CurseCreateModpack curseCreateModpack; + if (injectedLocalizationManager == null) { - this.localizationManager = new LocalizationManager(); + this.LOCALIZATIONMANAGER = new LocalizationManager(); } else { - this.localizationManager = injectedLocalizationManager; + this.LOCALIZATIONMANAGER = injectedLocalizationManager; } if (injectedCurseCreateModpack == null) { - this.curseCreateModpack = new CurseCreateModpack(localizationManager); + curseCreateModpack = new CurseCreateModpack(LOCALIZATIONMANAGER); } else { - this.curseCreateModpack = injectedCurseCreateModpack; + curseCreateModpack = injectedCurseCreateModpack; } if (injectedConfiguration == null) { - this.configuration = new Configuration(localizationManager, curseCreateModpack); + this.CONFIGURATION = new Configuration(LOCALIZATIONMANAGER, curseCreateModpack); } else { - this.configuration = injectedConfiguration; + this.CONFIGURATION = injectedConfiguration; } } - private final File propertiesFile = new File("server.properties"); - private final File iconFile = new File("server-icon.png"); - private final File forgeWindowsFile = new File("start-forge.bat"); - private final File forgeLinuxFile = new File("start-forge.sh"); - private final File fabricWindowsFile = new File("start-fabric.bat"); - private final File fabricLinuxFile = new File("start-fabric.sh"); + private final File FILE_PROPERTIES = new File("server.properties"); + private final File FILE_ICON = new File("server-icon.png"); + private final File FILE_FORGE_WINDOWS = new File("start-forge.bat"); + private final File FILE_FORGE_LINUX = new File("start-forge.sh"); + private final File FILE_FABRIC_WINDOWS = new File("start-fabric.bat"); + private final File FILE_FABRIC_LINUX = new File("start-fabric.sh"); - private final String fabricInstallerManifest = "https://maven.fabricmc.net/net/fabricmc/fabric-installer/maven-metadata.xml"; /** * Getter for server.properties. * @return Returns the server.properties-file for use in {@link #copyProperties(String)} */ public File getPropertiesFile() { - return propertiesFile; + return FILE_PROPERTIES; } /** @@ -151,7 +151,7 @@ public class CreateServerPack { * @return Returns the server-icon.png-file for use in {@link #copyIcon(String)} */ public File getIconFile() { - return iconFile; + return FILE_ICON; } /** @@ -159,7 +159,7 @@ public class CreateServerPack { * @return Returns the start-forge.bat-file for use in {@link #copyStartScripts(String, String, boolean)} */ public File getForgeWindowsFile() { - return forgeWindowsFile; + return FILE_FORGE_WINDOWS; } /** @@ -167,7 +167,7 @@ public class CreateServerPack { * @return Returns the start-forge.sh-file for use in {@link #copyStartScripts(String, String, boolean)} */ public File getForgeLinuxFile() { - return forgeLinuxFile; + return FILE_FORGE_LINUX; } /** @@ -175,7 +175,7 @@ public class CreateServerPack { * @return Returns the start-fabric.bat-file for use in {@link #copyStartScripts(String, String, boolean)} */ public File getFabricWindowsFile() { - return fabricWindowsFile; + return FILE_FABRIC_WINDOWS; } /** @@ -183,7 +183,7 @@ public class CreateServerPack { * @return Returns the start-fabric.sh-file for use in {@link #copyStartScripts(String, String, boolean)} */ public File getFabricLinuxFile() { - return fabricLinuxFile; + return FILE_FABRIC_LINUX; } /** @@ -192,8 +192,12 @@ public class CreateServerPack { */ public URL getFabricInstallerManifest() { URL downloadURL = null; + + String fabricInstallerManifest = "https://maven.fabricmc.net/net/fabricmc/fabric-installer/maven-metadata.xml"; + try { downloadURL = new URL(fabricInstallerManifest); } - catch (IOException ex) { appLogger.error(ex); } + catch (IOException ex) { LOG.error(ex); } + return downloadURL; } @@ -214,54 +218,54 @@ public class CreateServerPack { * @return Boolean. Returns true if the server pack was successfully generated. */ public boolean run() { - if (!configuration.checkConfigFile(configuration.getConfigFile(), true)) { + if (!CONFIGURATION.checkConfigFile(CONFIGURATION.getConfigFile(), true)) { // Make sure no files from previously generated server packs interrupt us. - cleanupEnvironment(configuration.getModpackDir()); + cleanupEnvironment(CONFIGURATION.getModpackDir()); // Recursively copy all specified directories and files, excluding clientside-only mods, to server pack. - copyFiles(configuration.getModpackDir(), configuration.getCopyDirs(), configuration.getClientMods()); + copyFiles(CONFIGURATION.getModpackDir(), CONFIGURATION.getCopyDirs(), CONFIGURATION.getClientMods()); // Copy start scripts for specified modloader from server_files to server pack. - copyStartScripts(configuration.getModpackDir(), configuration.getModLoader(), configuration.getIncludeStartScripts()); + copyStartScripts(CONFIGURATION.getModpackDir(), CONFIGURATION.getModLoader(), CONFIGURATION.getIncludeStartScripts()); // If true, Install the modloader software for the specified Minecraft version, modloader, modloader version - if (configuration.getIncludeServerInstallation()) { - installServer(configuration.getModLoader(), configuration.getModpackDir(), configuration.getMinecraftVersion(), configuration.getModLoaderVersion(), configuration.getJavaPath()); + if (CONFIGURATION.getIncludeServerInstallation()) { + installServer(CONFIGURATION.getModLoader(), CONFIGURATION.getModpackDir(), CONFIGURATION.getMinecraftVersion(), CONFIGURATION.getModLoaderVersion(), CONFIGURATION.getJavaPath()); } else { - appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.server")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("handler.log.info.runincli.server")); } // If true, copy the server-icon.png from server_files to the server pack. - if (configuration.getIncludeServerIcon()) { - copyIcon(configuration.getModpackDir()); + if (CONFIGURATION.getIncludeServerIcon()) { + copyIcon(CONFIGURATION.getModpackDir()); } else { - appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.icon")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("handler.log.info.runincli.icon")); } // If true, copy the server.properties from server_files to the server pack. - if (configuration.getIncludeServerProperties()) { - copyProperties(configuration.getModpackDir()); + if (CONFIGURATION.getIncludeServerProperties()) { + copyProperties(CONFIGURATION.getModpackDir()); } else { - appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.properties")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("handler.log.info.runincli.properties")); } // If true, create a ZIP-archive excluding the Minecraft server JAR of the server pack. - if (configuration.getIncludeZipCreation()) { - zipBuilder(configuration.getModpackDir(), configuration.getModLoader(), configuration.getIncludeServerInstallation(), configuration.getMinecraftVersion()); + if (CONFIGURATION.getIncludeZipCreation()) { + zipBuilder(CONFIGURATION.getModpackDir(), CONFIGURATION.getModLoader(), CONFIGURATION.getIncludeServerInstallation(), CONFIGURATION.getMinecraftVersion()); } else { - appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.zip")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("handler.log.info.runincli.zip")); } // Inform user about location of newly generated server pack. - appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.runincli.serverpack"), configuration.getModpackDir())); - appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.runincli.archive"), configuration.getModpackDir())); - appLogger.info(localizationManager.getLocalizedString("handler.log.info.runincli.finish")); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("handler.log.info.runincli.serverpack"), CONFIGURATION.getModpackDir())); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("handler.log.info.runincli.archive"), CONFIGURATION.getModpackDir())); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("handler.log.info.runincli.finish")); return true; } else { - appLogger.error(localizationManager.getLocalizedString("handler.log.error.runincli")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("handler.log.error.runincli")); return false; } } @@ -273,7 +277,7 @@ public class CreateServerPack { */ void cleanupEnvironment(String modpackDir) { if (new File(String.format("%s/server_pack", modpackDir)).exists()) { - appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.cleanupenvironment.folder.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.info.cleanupenvironment.folder.enter")); Path serverPack = Paths.get(String.format("%s/server_pack", modpackDir)); try { Files.walkFileTree(serverPack, @@ -293,18 +297,18 @@ public class CreateServerPack { } }); } catch (IOException ex) { - appLogger.error(String.format(localizationManager.getLocalizedString("copyfiles.log.error.cleanupenvironment.folder.delete"), modpackDir)); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.error.cleanupenvironment.folder.delete"), modpackDir)); } finally { - appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.cleanupenvironment.folder.complete")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.info.cleanupenvironment.folder.complete")); } } if (new File(String.format("%s/server_pack.zip", modpackDir)).exists()) { - appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.cleanupenvironment.zip.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.info.cleanupenvironment.zip.enter")); boolean isZipDeleted = new File(String.format("%s/server_pack.zip", modpackDir)).delete(); if (isZipDeleted) { - appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.cleanupenvironment.zip.complete")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.info.cleanupenvironment.zip.complete")); } else { - appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.cleanupenvironment.zip.delete")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.error.cleanupenvironment.zip.delete")); } } } @@ -317,7 +321,7 @@ public class CreateServerPack { */ void copyStartScripts(String modpackDir, String modLoader, boolean includeStartScripts) { if (modLoader.equalsIgnoreCase("Forge") && includeStartScripts) { - appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.copystartscripts.forge")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.info.copystartscripts.forge")); try { Files.copy( Paths.get(String.format("./server_files/%s", getForgeWindowsFile())), @@ -330,10 +334,10 @@ public class CreateServerPack { REPLACE_EXISTING ); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copystartscripts"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.error.copystartscripts"), ex); } } else if (modLoader.equalsIgnoreCase("Fabric") && includeStartScripts) { - appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.copystartscripts.fabric")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.info.copystartscripts.fabric")); try { Files.copy( Paths.get(String.format("./server_files/%s", getFabricWindowsFile())), @@ -346,10 +350,10 @@ public class CreateServerPack { REPLACE_EXISTING ); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copystartscripts"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.error.copystartscripts"), ex); } } else { - appLogger.error(localizationManager.getLocalizedString("configcheck.log.error.checkmodloader")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.checkmodloader")); } } @@ -359,28 +363,28 @@ public class CreateServerPack { * Calls {@link #excludeClientMods(String, List)} to generate a list of all mods to copy to server pack, excluding * clientside-only mods. * @param modpackDir String. Files and directories are copied into the server_pack directory inside the modpack directory. - * @param copyDirs String List. All directories and files therein to copy to the server pack. + * @param directoriesToCopy String List. All directories and files therein to copy to the server pack. * @param clientMods String List. List of clientside-only mods to exclude from the server pack. */ - void copyFiles(String modpackDir, List<String> copyDirs, List<String> clientMods) { + void copyFiles(String modpackDir, List<String> directoriesToCopy, List<String> clientMods) { String serverPath = String.format("%s/server_pack", modpackDir); try { Files.createDirectories(Paths.get(serverPath)); } catch (IOException ex) { - appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.unziparchive.createdir"), serverPath)); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.unziparchive.createdir"), serverPath)); } - for (int i = 0; i < copyDirs.size(); i++) { + for (String directory : directoriesToCopy) { - String clientDir = String.format("%s/%s", modpackDir,copyDirs.get(i)); - String serverDir = String.format("%s/%s", serverPath,copyDirs.get(i)); + String clientDir = String.format("%s/%s", modpackDir, directory); + String serverDir = String.format("%s/%s", serverPath, directory); - appLogger.info(String.format(localizationManager.getLocalizedString("copyfiles.log.info.copyfiles.setup"), serverDir)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.info.copyfiles.setup"), serverDir)); - if (copyDirs.get(i).startsWith("saves/")) { + if (directory.startsWith("saves/")) { - String savesDir = String.format("%s/%s", serverPath, copyDirs.get(i).substring(6)); + String savesDir = String.format("%s/%s", serverPath, directory.substring(6)); try { Stream<Path> files = Files.walk(Paths.get(clientDir)); @@ -394,44 +398,44 @@ public class CreateServerPack { REPLACE_EXISTING ); - appLogger.debug(String.format(localizationManager.getLocalizedString("copyfiles.log.debug.copyfiles"), file.toAbsolutePath().toString())); + LOG.debug(String.format(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.debug.copyfiles"), file.toAbsolutePath())); } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.DirectoryNotEmptyException")) { - appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyfiles.saves"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.error.copyfiles.saves"), ex); } } }); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyfiles.saves.world"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.error.copyfiles.saves.world"), ex); } - } else if (copyDirs.get(i).startsWith("mods") && clientMods.size() > 0) { + } else if (directory.startsWith("mods") && clientMods.size() > 0) { List<String> listOfFiles = excludeClientMods(clientDir, clientMods); try { Files.createDirectories(Paths.get(serverDir)); } catch (IOException ex) { - appLogger.info(String.format(localizationManager.getLocalizedString("copyfiles.log.info.copyfiles.setup"), serverDir)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.info.copyfiles.setup"), serverDir)); } - for (int in = 0; in < listOfFiles.size(); in++) { + for (String file : listOfFiles) { try { Files.copy( - Paths.get(listOfFiles.get(in)), - Paths.get(String.format("%s/%s",serverDir, new File(listOfFiles.get(in)).getName())), + Paths.get(file), + Paths.get(String.format("%s/%s", serverDir, new File(file).getName())), REPLACE_EXISTING ); - appLogger.debug(String.format(localizationManager.getLocalizedString("copyfiles.log.debug.copyfiles"), listOfFiles.get(in))); + LOG.debug(String.format(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.debug.copyfiles"), file)); } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.DirectoryNotEmptyException")) { - appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyfiles.mods"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.error.copyfiles.mods"), ex); } } } @@ -451,10 +455,10 @@ public class CreateServerPack { REPLACE_EXISTING ); - appLogger.debug(String.format(localizationManager.getLocalizedString("copyfiles.log.debug.copyfiles"), file.toAbsolutePath().toString())); + LOG.debug(String.format(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.debug.copyfiles"), file.toAbsolutePath())); } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.DirectoryNotEmptyException")) { - appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyfiles.mods"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.error.copyfiles.mods"), ex); } } }); @@ -462,7 +466,7 @@ public class CreateServerPack { files.close(); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyfiles"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.error.copyfiles"), ex); } } @@ -477,7 +481,7 @@ public class CreateServerPack { * @return List String. A list of all mods to include in the server pack. */ List<String> excludeClientMods(String modsDir, List<String> clientMods) { - appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.excludeclientmods")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.info.excludeclientmods")); File[] listModsInModpack = new File(modsDir).listFiles(); List<String> modsInModpack = new ArrayList<>(); @@ -490,7 +494,7 @@ public class CreateServerPack { } } } catch (NullPointerException np) { - appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.excludeclientmods"), np); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.error.excludeclientmods"), np); } for (int iclient = 0; iclient < clientMods.size(); iclient++) { @@ -509,7 +513,7 @@ public class CreateServerPack { * @param modpackDir String. The server-icon.png is copied into the server_pack directory inside the modpack directory. */ void copyIcon(String modpackDir) { - appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.copyicon")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.info.copyicon")); try { Files.copy( @@ -519,7 +523,7 @@ public class CreateServerPack { ); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyicon"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.error.copyicon"), ex); } } @@ -528,7 +532,7 @@ public class CreateServerPack { * @param modpackDir String. The server.properties file is copied into the server_pack directory inside the modpack directory. */ void copyProperties(String modpackDir) { - appLogger.info(localizationManager.getLocalizedString("copyfiles.log.info.copyproperties")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.info.copyproperties")); try { Files.copy( @@ -538,7 +542,7 @@ public class CreateServerPack { ); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("copyfiles.log.error.copyproperties"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("copyfiles.log.error.copyproperties"), ex); } } @@ -563,10 +567,10 @@ public class CreateServerPack { File forgeInstaller = new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)); if (modLoader.equalsIgnoreCase("Fabric")) { try { - appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver.fabric.enter")); - installerLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver.fabric.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.info.installserver.fabric.enter")); + LOG_INSTALLER.info(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.info.installserver.fabric.enter")); if (downloadFabricJar(modpackDir)) { - appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver.fabric.download")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.info.installserver.fabric.download")); ProcessBuilder processBuilder = new ProcessBuilder( javaPath, "-jar", @@ -582,24 +586,24 @@ public class CreateServerPack { while (true) { line = reader.readLine(); if (line == null) { break; } - installerLogger.info(line); + LOG_INSTALLER.info(line); } - installerLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver")); + LOG_INSTALLER.info(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.info.installserver")); reader.close(); - appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver.fabric.details")); - appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.info.installserver.fabric.details")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.info.installserver")); } else { - appLogger.error(localizationManager.getLocalizedString("serversetup.log.error.installserver.fabric")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.error.installserver.fabric")); } } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("serversetup.log.error.installserver.fabricfail"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.error.installserver.fabricfail"), ex); } } else if (modLoader.equalsIgnoreCase("Forge")) { try { - appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver.forge.enter")); - installerLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver.forge.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.info.installserver.forge.enter")); + LOG_INSTALLER.info(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.info.installserver.forge.enter")); if (downloadForgeJar(minecraftVersion, modLoaderVersion, modpackDir)) { - appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver.forge.download")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.info.installserver.forge.download")); ProcessBuilder processBuilder = new ProcessBuilder( javaPath, "-jar", @@ -613,21 +617,21 @@ public class CreateServerPack { while (true) { line = reader.readLine(); if (line == null) { break; } - installerLogger.info(line); + LOG_INSTALLER.info(line); } - installerLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver")); + LOG_INSTALLER.info(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.info.installserver")); reader.close(); - appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver.forge.details")); - appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.installserver")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.info.installserver.forge.details")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.info.installserver")); process.destroy(); } else { - appLogger.error(localizationManager.getLocalizedString("serversetup.log.error.installserver.forge")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.error.installserver.forge")); } } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("serversetup.log.error.installserver.forgefail"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.error.installserver.forgefail"), ex); } } else { - appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.checkmodloader"), modLoader)); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.checkmodloader"), modLoader)); } generateDownloadScripts(modLoader, modpackDir, minecraftVersion); @@ -655,7 +659,7 @@ public class CreateServerPack { void zipBuilder(String modpackDir, String modLoader, Boolean includeServerInstallation, String minecraftVersion) { final Path sourceDir = Paths.get(String.format("%s/server_pack", modpackDir)); String zipFileName = sourceDir.toString().concat(".zip"); - appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.zipbuilder.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.info.zipbuilder.enter")); try { final ZipOutputStream outputStream = new ZipOutputStream(new FileOutputStream(zipFileName)); Files.walkFileTree(sourceDir, new SimpleFileVisitor<Path>() { @@ -668,22 +672,22 @@ public class CreateServerPack { outputStream.write(bytes, 0, bytes.length); outputStream.closeEntry(); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("serversetup.log.error.zipbuilder.create"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.error.zipbuilder.create"), ex); } return FileVisitResult.CONTINUE; } }); outputStream.close(); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("serversetup.log.error.zipbuilder.create"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.error.zipbuilder.create"), ex); } if (includeServerInstallation) { deleteMinecraftJar(modLoader, modpackDir, minecraftVersion); - appLogger.warn(localizationManager.getLocalizedString("serversetup.log.warn.zipbuilder.minecraftjar1")); - appLogger.warn(localizationManager.getLocalizedString("serversetup.log.warn.zipbuilder.minecraftjar2")); - appLogger.warn(localizationManager.getLocalizedString("serversetup.log.warn.zipbuilder.minecraftjar3")); + LOG.warn(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.warn.zipbuilder.minecraftjar1")); + LOG.warn(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.warn.zipbuilder.minecraftjar2")); + LOG.warn(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.warn.zipbuilder.minecraftjar3")); } - appLogger.info(localizationManager.getLocalizedString("serversetup.log.info.zipbuilder.finish")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.info.zipbuilder.finish")); } /** @@ -706,7 +710,7 @@ public class CreateServerPack { forgeShell(modpackDir, minecraftVersion); forgeBatch(modpackDir, minecraftVersion); } else { - appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.checkmodloader"), modLoader)); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.checkmodloader"), modLoader)); } } @@ -731,11 +735,11 @@ public class CreateServerPack { byte[] strToBytesSh = shFabric.getBytes(); Files.write(pathSh, strToBytesSh); String readSh = Files.readAllLines(pathSh).get(0); - appLogger.debug(String.format(localizationManager.getLocalizedString("serverutilities.log.debug.fabricshell"), readSh)); + LOG.debug(String.format(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.debug.fabricshell"), readSh)); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.fabricshell"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.error.fabricshell"), ex); } - appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.fabricshell")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.info.fabricshell")); } /** @@ -759,11 +763,11 @@ public class CreateServerPack { byte[] strToBytesBat = batFabric.getBytes(); Files.write(pathBat, strToBytesBat); String readBat = Files.readAllLines(pathBat).get(0); - appLogger.debug(String.format(localizationManager.getLocalizedString("serverutilities.log.debug.fabricbatch"), readBat)); + LOG.debug(String.format(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.debug.fabricbatch"), readBat)); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.fabricbatch"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.error.fabricbatch"), ex); } - appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.fabricbatch")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.info.fabricbatch")); } /** @@ -787,11 +791,11 @@ public class CreateServerPack { byte[] strToBytesSh = shForge.getBytes(); Files.write(pathSh, strToBytesSh); String readSh = Files.readAllLines(pathSh).get(0); - appLogger.debug(String.format(localizationManager.getLocalizedString("serverutilities.log.debug.forgeshell"), readSh)); + LOG.debug(String.format(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.debug.forgeshell"), readSh)); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.forgeshell"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.error.forgeshell"), ex); } - appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.forgeshell")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.info.forgeshell")); } /** @@ -815,11 +819,11 @@ public class CreateServerPack { byte[] strToBytesBat = batForge.getBytes(); Files.write(pathBat, strToBytesBat); String readBat = Files.readAllLines(pathBat).get(0); - appLogger.debug(String.format(localizationManager.getLocalizedString("serverutilities.log.debug.forgebatch"), readBat)); + LOG.debug(String.format(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.debug.forgebatch"), readBat)); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.forgebatch"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.error.forgebatch"), ex); } - appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.forgebatch")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.info.forgebatch")); } /** @@ -832,7 +836,7 @@ public class CreateServerPack { boolean downloadFabricJar(String modpackDir) { boolean downloaded = false; try { - appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.downloadfabricjar.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.info.downloadfabricjar.enter")); String latestFabricInstaller = latestFabricInstaller(modpackDir); URL downloadFabric = new URL(String.format("https://maven.fabricmc.net/net/fabricmc/fabric-installer/%s/fabric-installer-%s.jar", latestFabricInstaller, latestFabricInstaller)); @@ -847,12 +851,12 @@ public class CreateServerPack { downloadFabricFileChannel.close(); } catch (IOException e) { - appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.downloadfabricjar.download"), e); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.error.downloadfabricjar.download"), e); if (new File(String.format("%s/server_pack/fabric-installer.jar", modpackDir)).exists()) { try { Files.delete(Paths.get(String.format("%s/server_pack/fabric-installer.jar", modpackDir))); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.downloadfabricjar.delete"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.error.downloadfabricjar.delete"), ex); } } } @@ -891,9 +895,9 @@ public class CreateServerPack { XPath xpath = xPathFactory.newXPath(); result = (String) xpath.evaluate("/metadata/versioning/release", fabricXml, XPathConstants.STRING); - appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.latestfabricinstaller")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.info.latestfabricinstaller")); } catch (IOException | ParserConfigurationException | SAXException | XPathExpressionException ex) { - appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.latestfabricinstaller"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.error.latestfabricinstaller"), ex); result = "0.7.3"; } return result; @@ -909,7 +913,7 @@ public class CreateServerPack { boolean downloadForgeJar(String minecraftVersion, String modLoaderVersion, String modpackDir) { boolean downloaded = false; try { - appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.downloadforgejar.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.info.downloadforgejar.enter")); URL downloadForge = new URL(String.format("https://files.minecraftforge.net/maven/net/minecraftforge/forge/%s-%s/forge-%s-%s-installer.jar", minecraftVersion, modLoaderVersion, minecraftVersion, modLoaderVersion)); ReadableByteChannel readableByteChannel = Channels.newChannel(downloadForge.openStream()); @@ -923,10 +927,10 @@ public class CreateServerPack { downloadForgeFileChannel.close(); } catch (IOException e) { - appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.downloadforgejar.download"), e); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.error.downloadforgejar.download"), e); if (new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).exists()) { if (new File(String.format("%s/server_pack/forge-installer.jar", modpackDir)).delete()) { - appLogger.error(localizationManager.getLocalizedString("serverutilities.log.debug.downloadforgejar")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.debug.downloadforgejar")); } } } @@ -946,7 +950,7 @@ public class CreateServerPack { */ void deleteMinecraftJar(String modLoader, String modpackDir, String minecraftVersion) { if (modLoader.equalsIgnoreCase("Forge")) { - appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.deleteminecraftjar.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.info.deleteminecraftjar.enter")); Map<String, String> zip_properties = new HashMap<>(); zip_properties.put("create", "false"); @@ -958,12 +962,12 @@ public class CreateServerPack { try (FileSystem zipfs = FileSystems.newFileSystem(zipUri, zip_properties)) { Path pathInZipfile = zipfs.getPath(String.format("minecraft_server.%s.jar", minecraftVersion)); Files.delete(pathInZipfile); - appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.deleteminecraftjar.success")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.info.deleteminecraftjar.success")); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.deleteminecraftjar.delete"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.error.deleteminecraftjar.delete"), ex); } } else if (modLoader.equalsIgnoreCase("Fabric")) { - appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.deleteminecraftjar.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.info.deleteminecraftjar.enter")); Map<String, String> zip_properties = new HashMap<>(); zip_properties.put("create", "false"); @@ -975,12 +979,12 @@ public class CreateServerPack { try (FileSystem zipfs = FileSystems.newFileSystem(zipUri, zip_properties)) { Path pathInZipfile = zipfs.getPath("server.jar"); Files.delete(pathInZipfile); - appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.deleteminecraftjar.success")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.info.deleteminecraftjar.success")); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.deleteminecraftjar.delete"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.error.deleteminecraftjar.delete"), ex); } } else { - appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.checkmodloader"), modLoader)); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.checkmodloader"), modLoader)); } } @@ -994,7 +998,7 @@ public class CreateServerPack { * @param modLoaderVersion String. Needed for renaming the Forge server JAR to work with launch scripts provided by ServerPackCreator. */ void cleanUpServerPack(File fabricInstaller, File forgeInstaller, String modLoader, String modpackDir, String minecraftVersion, String modLoaderVersion) { - appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.info.cleanupserverpack.enter")); if (modLoader.equalsIgnoreCase("Fabric")) { File fabricXML = new File(String.format("%s/server_pack/fabric-installer.xml", modpackDir)); @@ -1002,14 +1006,14 @@ public class CreateServerPack { boolean isInstallerDeleted = fabricInstaller.delete(); if (isXmlDeleted) - { appLogger.info(String.format(localizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.deleted"), fabricXML.getName())); } + { LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.info.cleanupserverpack.deleted"), fabricXML.getName())); } else - { appLogger.error(String.format(localizationManager.getLocalizedString("serverutilities.log.error.cleanupserverpack.delete"), fabricXML.getName())); } + { LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.error.cleanupserverpack.delete"), fabricXML.getName())); } if (isInstallerDeleted) - { appLogger.info(String.format(localizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.deleted"), fabricInstaller.getName())); } + { LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.info.cleanupserverpack.deleted"), fabricInstaller.getName())); } else - { appLogger.error(String.format(localizationManager.getLocalizedString("serverutilities.log.error.cleanupserverpack.delete"), fabricInstaller.getName())); } + { LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.error.cleanupserverpack.delete"), fabricInstaller.getName())); } } else if (modLoader.equalsIgnoreCase("Forge")) { try { @@ -1027,20 +1031,20 @@ public class CreateServerPack { boolean isInstallerDeleted = forgeInstaller.delete(); if ((isOldJarDeleted) && (new File(String.format("%s/server_pack/forge.jar", modpackDir)).exists())) - { appLogger.info(localizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.rename")); } + { LOG.info(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.info.cleanupserverpack.rename")); } else - { appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.cleanupserverpack.rename")); } + { LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.error.cleanupserverpack.rename")); } if (isInstallerDeleted) - { appLogger.info(String.format(localizationManager.getLocalizedString("serverutilities.log.info.cleanupserverpack.deleted"), forgeInstaller.getName())); } + { LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.info.cleanupserverpack.deleted"), forgeInstaller.getName())); } else - { appLogger.error(String.format(localizationManager.getLocalizedString("serverutilities.log.error.cleanupserverpack.delete"), forgeInstaller.getName())); } + { LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.error.cleanupserverpack.delete"), forgeInstaller.getName())); } } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("serverutilities.log.error.cleanupserverpack"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("serverutilities.log.error.cleanupserverpack"), ex); } } else { - appLogger.error(String.format(localizationManager.getLocalizedString("configcheck.log.error.checkmodloader"), modLoader)); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("configcheck.log.error.checkmodloader"), modLoader)); } } } \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/Main.java b/src/main/java/de/griefed/serverpackcreator/Main.java index 6bf325c2d..53ac918f4 100644 --- a/src/main/java/de/griefed/serverpackcreator/Main.java +++ b/src/main/java/de/griefed/serverpackcreator/Main.java @@ -63,14 +63,13 @@ import java.util.List; * enter <code>-cli</code>-mode. */ public class Main { - private static final Logger appLogger = LogManager.getLogger(Main.class); + private static final Logger LOG = LogManager.getLogger(Main.class); /** * Initializes all objects needed for running ServerPackCreator and ensures Dependency Injection. - * Calls {@link FilesSetup} so all default files are available. + * Calls {@link DefaultFiles} so all default files are available. * Checks arguments to determine which mode to enter. * Lists a couple of environment variables important for reporting issues. - * * @param args Commandline arguments with which ServerPackCreator is run. Determines which mode ServerPackCreator * will enter and which locale is used. */ @@ -83,8 +82,9 @@ public class Main { // Init the LocalizationManager with the locale passed by the cli arguments. localizationManager.init(programArgs.get(programArgs.indexOf("-lang") + 1)); } catch (IncorrectLanguageException e) { - appLogger.info(programArgs.get(programArgs.indexOf("-lang") + 1)); - appLogger.error("Incorrect language specified, falling back to English (United States)..."); + LOG.info(programArgs.get(programArgs.indexOf("-lang") + 1)); + // We can not use localized string here, because the localization manager has not yet been initialized. + LOG.error("Incorrect language specified, falling back to English (United States)..."); // Init the LocalizationManager with the default locale en_US. localizationManager.init(); @@ -97,10 +97,11 @@ public class Main { // Prepare instances for dependency injection CurseCreateModpack curseCreateModpack = new CurseCreateModpack(localizationManager); Configuration configuration = new Configuration(localizationManager, curseCreateModpack); - FilesSetup filesSetup = new FilesSetup(localizationManager); + DefaultFiles defaultFiles = new DefaultFiles(localizationManager); CreateServerPack createServerPack = new CreateServerPack(localizationManager, configuration, curseCreateModpack); CreateGui tabbedPane = new CreateGui(localizationManager, configuration, curseCreateModpack, createServerPack); + //noinspection UnusedAssignment String jarPath = null, jarName = null, javaVersion = null, @@ -108,12 +109,12 @@ public class Main { osName = null, osVersion = null; - appLogger.warn(localizationManager.getLocalizedString("handler.log.warn.wip0")); - appLogger.warn(localizationManager.getLocalizedString("handler.log.warn.wip1")); - appLogger.warn(localizationManager.getLocalizedString("handler.log.warn.wip2")); - appLogger.warn(localizationManager.getLocalizedString("handler.log.warn.wip3")); - appLogger.warn(localizationManager.getLocalizedString("handler.log.warn.wip4")); - appLogger.warn(localizationManager.getLocalizedString("handler.log.warn.wip0")); + LOG.warn(localizationManager.getLocalizedString("handler.log.warn.wip0")); + LOG.warn(localizationManager.getLocalizedString("handler.log.warn.wip1")); + LOG.warn(localizationManager.getLocalizedString("handler.log.warn.wip2")); + LOG.warn(localizationManager.getLocalizedString("handler.log.warn.wip3")); + LOG.warn(localizationManager.getLocalizedString("handler.log.warn.wip4")); + LOG.warn(localizationManager.getLocalizedString("handler.log.warn.wip0")); try { // Print system information to console and logs. @@ -123,21 +124,21 @@ public class Main { osArch = System.getProperty("os.arch"); osName = System.getProperty("os.name"); osVersion = System.getProperty("os.version"); - appLogger.info(localizationManager.getLocalizedString("handler.log.info.system.enter")); - appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.jarpath"), jarPath)); - appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.jarname"), jarName)); - appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.java"), javaVersion)); - appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.osarchitecture"), osArch)); - appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.osname"), osName)); - appLogger.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.osversion"), osVersion)); - appLogger.info(localizationManager.getLocalizedString("handler.log.info.system.include")); + LOG.info(localizationManager.getLocalizedString("handler.log.info.system.enter")); + LOG.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.jarpath"), jarPath)); + LOG.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.jarname"), jarName)); + LOG.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.java"), javaVersion)); + LOG.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.osarchitecture"), osArch)); + LOG.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.osname"), osName)); + LOG.info(String.format(localizationManager.getLocalizedString("handler.log.info.system.osversion"), osVersion)); + LOG.info(localizationManager.getLocalizedString("handler.log.info.system.include")); } catch (URISyntaxException ex) { - appLogger.error(localizationManager.getLocalizedString("handler.log.error.system.properties"), ex); + LOG.error(localizationManager.getLocalizedString("handler.log.error.system.properties"), ex); } // Ensure default files are present. - filesSetup.filesSetup(); + defaultFiles.filesSetup(); // Start generation of a new configuration file with user input. if (Arrays.asList(args).contains("-cgen")) { diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java index a7089dcd2..2d5c00c3b 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseCreateModpack.java @@ -70,13 +70,14 @@ import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; * a projectID,fileID. */ public class CurseCreateModpack { - private static final Logger appLogger = LogManager.getLogger(CurseCreateModpack.class); + private static final Logger LOG = LogManager.getLogger(CurseCreateModpack.class); + + private final LocalizationManager LOCALIZATIONMANAGER; + private String projectName; private String fileName; private String fileDiskName; - private LocalizationManager localizationManager; - /** * <strong>Constructor</strong><p> * Used for Dependency Injection.<p> @@ -86,9 +87,9 @@ public class CurseCreateModpack { */ public CurseCreateModpack(LocalizationManager injectedLocalizationManager) { if (injectedLocalizationManager == null) { - this.localizationManager = new LocalizationManager(); + this.LOCALIZATIONMANAGER = new LocalizationManager(); } else { - this.localizationManager = injectedLocalizationManager; + this.LOCALIZATIONMANAGER = injectedLocalizationManager; } } @@ -105,7 +106,7 @@ public class CurseCreateModpack { * @param newProjectID The ID of the new CurseForge project. */ void setProjectName(int newProjectID) { - String newProjectName = null; + String newProjectName; try { if (CurseAPI.project(newProjectID).isPresent()) { newProjectName = CurseAPI.project(newProjectID).get().name(); @@ -113,40 +114,31 @@ public class CurseCreateModpack { newProjectName = String.valueOf(newProjectID); } } catch (CurseException cex) { - appLogger.error(cex); + LOG.error(cex); newProjectName = String.valueOf(newProjectID); } this.projectName = newProjectName; } - /** - * Getter for the CurseForge file name. - * @return String. Returns the file name of the CurseForge project. - */ - String getFileName() { - return fileName; - } - /** * Setter for the CurseForge file name and file disk name. * @param newProjectID The ID of the CurseForge project. * @param newFileID The ID of the CurseForge file. */ - @SuppressWarnings("ConstantConditions") void setFileNameAndDiskName(int newProjectID, int newFileID) { - String newFileName = null; - String newFileDiskName = null; + String newFileName; + String newFileDiskName; try { if (CurseAPI.project(newProjectID).isPresent()) { try { - newFileName = CurseAPI.project(newProjectID).get().files().fileWithID(newFileID).displayName(); + newFileName = Objects.requireNonNull(CurseAPI.project(newProjectID).get().files().fileWithID(newFileID)).displayName(); } catch (NullPointerException npe) { - newFileName = CurseAPI.project(newProjectID).get().files().fileWithID(newFileID).nameOnDisk(); + newFileName = Objects.requireNonNull(CurseAPI.project(newProjectID).get().files().fileWithID(newFileID)).nameOnDisk(); } - newFileDiskName = CurseAPI.project(newProjectID).get().files().fileWithID(newFileID).nameOnDisk(); + newFileDiskName = Objects.requireNonNull(CurseAPI.project(newProjectID).get().files().fileWithID(newFileID)).nameOnDisk(); } else { newFileName = String.valueOf(newFileID); @@ -154,7 +146,7 @@ public class CurseCreateModpack { } } catch (CurseException cex) { - appLogger.error(cex); + LOG.error(cex); newFileName = String.valueOf(newFileID); newFileDiskName = String.valueOf(newFileID); } @@ -163,6 +155,14 @@ public class CurseCreateModpack { this.fileName = newFileName; } + /** + * Getter for the CurseForge file name. + * @return String. Returns the file name of the CurseForge project. + */ + String getFileName() { + return fileName; + } + /** * Getter for the CurseForge file disk name. * @return String. Returns the file disk name of the CurseForge file. @@ -211,7 +211,7 @@ public class CurseCreateModpack { setProjectName(projectID); setFileNameAndDiskName(projectID, fileID); } - } catch (CurseException cex) { appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.curseforgemodpack"), projectID, fileID), cex); } + } catch (CurseException cex) { LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.curseforgemodpack"), projectID, fileID), cex); } if (!checkCurseForgeDir(modpackDir) && !getProjectName().equals(String.valueOf(projectID)) && @@ -238,19 +238,18 @@ public class CurseCreateModpack { * @param projectID Integer. The ID of the project. Used to gather information and to download the modpack. * @param fileID Integer. The ID of the file. Used to gather information and to download the modpack. */ - @SuppressWarnings("ResultOfMethodCallIgnored") void initializeModpack(String modpackDir, Integer projectID, Integer fileID) { try { - appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.download"), getProjectName(), getFileName())); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.initializemodpack.download"), getProjectName(), getFileName())); CurseAPI.downloadFileToDirectory(projectID, fileID, Paths.get(modpackDir)); } catch (CurseException cex) { - appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.initializemodpack.download"), getFileName(), getProjectName(), modpackDir)); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.initializemodpack.download"), getFileName(), getProjectName(), modpackDir)); } unzipArchive(String.format("%s/%s", modpackDir, getFileDiskName()), modpackDir); boolean isFileDeleted = new File(String.format("%s/%s", modpackDir, getFileDiskName())).delete(); - if (isFileDeleted) { appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.deletezip")); } + if (isFileDeleted) { LOG.info(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.initializemodpack.deletezip")); } try { byte[] jsonData = Files.readAllBytes(Paths.get(String.format("%s/manifest.json", modpackDir))); @@ -262,23 +261,24 @@ public class CurseCreateModpack { String[] minecraftLoaderVersions = modpack.getMinecraft().toString().split(","); String[] modLoaderVersion = minecraftLoaderVersions[1].replace("[", "").replace("]", "").split("-"); - appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.infoheader")); - appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modpackname"), modpack.getName())); - appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modpackversion"), modpack.getVersion())); - appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modpackauthor"), modpack.getAuthor())); - appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modpackminecraftversion"), minecraftLoaderVersions[0].replace("[", ""))); - appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modloader"), setModloaderCase(modLoaderVersion[0]))); - appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.modloaderversion"), modLoaderVersion[1])); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.initializemodpack.infoheader")); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.initializemodpack.modpackname"), modpack.getName())); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.initializemodpack.modpackversion"), modpack.getVersion())); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.initializemodpack.modpackauthor"), modpack.getAuthor())); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.initializemodpack.modpackminecraftversion"), minecraftLoaderVersions[0].replace("[", ""))); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.initializemodpack.modloader"), setModloaderCase(modLoaderVersion[0]))); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.initializemodpack.modloaderversion"), modLoaderVersion[1])); - } catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("createmodpack.log.error.initializemodpack.readmodpack"), ex); } + } catch (IOException ex) { LOG.error(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.initializemodpack.readmodpack"), ex); } copyOverride(modpackDir); if (new File(String.format("%s/overrides", modpackDir)).isDirectory()) { try { Path pathToBeDeleted = Paths.get(String.format("%s/overrides", modpackDir)); + //noinspection ResultOfMethodCallIgnored Files.walk(pathToBeDeleted).sorted(Comparator.reverseOrder()).map(Path::toFile).forEach(File::delete); } catch (IOException ex) { - appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.initializemodpack.overrides")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.initializemodpack.overrides")); } } @@ -295,9 +295,8 @@ public class CurseCreateModpack { * was taken down, no longer exists, CurseForge is unavailable etc. etc. There's nothing we can do about that. * @param modpackDir String. All mods are downloaded to the child-directory "mods" inside the modpack directory. */ - @SuppressWarnings({"OptionalGetWithoutIsPresent", "BusyWait"}) void downloadMods(String modpackDir) { - appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.downloadmods.info")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.downloadmods.info")); List<String> failedDownloads = new ArrayList<>(); try { @@ -312,7 +311,7 @@ public class CurseCreateModpack { CurseSplines curseSplines = new CurseSplines(); for (int i = 0; i < curseModpack.getFiles().size(); i++) { if (randInt.nextInt(curseModpack.getFiles().size())==i) { - appLogger.info(curseSplines.reticulate()); + LOG.info(curseSplines.reticulate()); } String[] mods = curseModpack.getFiles().get(i).toString().split(","); @@ -325,34 +324,36 @@ public class CurseCreateModpack { try { + //noinspection OptionalGetWithoutIsPresent modName = CurseAPI.project(modID).get().name(); + //noinspection OptionalGetWithoutIsPresent modFileName = Objects.requireNonNull(CurseAPI.project(modID).get().files().fileWithID(fileID)).nameOnDisk(); } catch (CurseException cex) { - appLogger.error(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.curseforgeinfo"), cex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.downloadmods.curseforgeinfo"), cex); } try { - appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.downloadmods.specificmod"), i+1, curseModpack.getFiles().size(), modName, modFileName)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.downloadmods.specificmod"), i+1, curseModpack.getFiles().size(), modName, modFileName)); //Download mod CurseAPI.downloadFileToDirectory(modID, fileID, Paths.get(String.format("%s/mods", modpackDir))); try { Thread.sleep(1000); } - catch (InterruptedException iex) { appLogger.debug(localizationManager.getLocalizedString("createmodpack.log.debug.downloadmods.sleep"), iex); } + catch (InterruptedException iex) { LOG.debug(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.debug.downloadmods.sleep"), iex); } } catch (CurseException cex) { - appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.errordownload"), modName, modID, modFileName, fileID)); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.downloadmods.errordownload"), modName, modID, modFileName, fileID)); try { - appLogger.info(String.format(localizationManager.getLocalizedString("createmodpack.log.info.downloadmods.tryagain"), modName, modID, modFileName, fileID)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.downloadmods.tryagain"), modName, modID, modFileName, fileID)); //Retry download if previous attempt failed CurseAPI.downloadFileToDirectory(modID, fileID, Paths.get(String.format("%s/mods", modpackDir))); } catch (CurseException cex2) { - appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.retryfail"), modName, modID, modFileName, fileID)); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.downloadmods.retryfail"), modName, modID, modFileName, fileID)); try { //Add URL of failed download to list @@ -360,18 +361,18 @@ public class CurseCreateModpack { } catch (CurseException cex3) { - appLogger.error(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.urlfail")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.downloadmods.urlfail")); } } } } } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.fail")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.downloadmods.fail")); } if (failedDownloads.size() != 0) { //Print the URLs of failed downloads, if there are any for (int i = 0; i <= failedDownloads.size(); i++) { - appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.downloadmods.urllist"), failedDownloads.get(i))); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.downloadmods.urllist"), failedDownloads.get(i))); } } } @@ -382,22 +383,22 @@ public class CurseCreateModpack { * are copied to the parent directory, the modpack directory. */ void copyOverride(String modpackDir) { - appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.copyoverrides.info")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.copyoverrides.info")); try { Stream<Path> files = Files.walk(Paths.get(String.format("%s/overrides", modpackDir))); files.forEach(file -> { try { Files.copy(file, Paths.get(modpackDir).resolve(Paths.get(String.format("%s/overrides", modpackDir)).relativize(file)), REPLACE_EXISTING); - appLogger.debug(String.format(localizationManager.getLocalizedString("createmodpack.log.debug.copyoverrides.status"), file.toAbsolutePath().toString())); + LOG.debug(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.debug.copyoverrides.status"), file.toAbsolutePath())); } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.DirectoryNotEmptyException")) { - appLogger.error(localizationManager.getLocalizedString("createmodpack.log.error.copyoverrides.copy"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.copyoverrides.copy"), ex); } } }); files.close(); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("createmodpack.log.error.copyoverrides.copy"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.copyoverrides.copy"), ex); } } @@ -413,9 +414,9 @@ public class CurseCreateModpack { boolean checkCurseForgeDir(String modpackDir) { boolean isModpackPresent = false; if (!(new File(modpackDir).isDirectory()) && !(new File(String.format("%s/manifest.json", modpackDir)).exists())) { - appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.checkcurseforgedir.create")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.checkcurseforgedir.create")); } else { - appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.checkcurseforgedir")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.checkcurseforgedir")); isModpackPresent = cleanupEnvironment(modpackDir); } return isModpackPresent; @@ -429,7 +430,7 @@ public class CurseCreateModpack { * @param modpackDir The directory into which the ZIP-archive will be unzipped into. */ void unzipArchive(String zipFile, String modpackDir) { - appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.unziparchive")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.unziparchive")); File destDir = new File(modpackDir); byte[] buffer = new byte[1024]; try { @@ -439,12 +440,12 @@ public class CurseCreateModpack { final File newFile = newFile(destDir, zipEntry); if (zipEntry.isDirectory()) { if (!newFile.isDirectory() && !newFile.mkdirs()) { - appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.unziparchive.createdir"), newFile)); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.unziparchive.createdir"), newFile)); } } else { File parent = newFile.getParentFile(); if (!parent.isDirectory() && !parent.mkdirs()) { - appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.unziparchive.createdir"), parent)); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.unziparchive.createdir"), parent)); } final FileOutputStream output = new FileOutputStream(newFile); int length; @@ -458,7 +459,7 @@ public class CurseCreateModpack { input.closeEntry(); input.close(); } catch (IOException ex) { - appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.unziparchive.extract"), zipFile), ex); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.unziparchive.extract"), zipFile), ex); } } @@ -481,15 +482,15 @@ public class CurseCreateModpack { destDirPath = destinationDir.getCanonicalPath(); } catch (IOException ex) { - appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.newfile.path"), destinationDir), ex); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.newfile.path"), destinationDir), ex); } try { destFilePath = destFile.getCanonicalPath(); } catch (IOException ex) { - appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.newfile.path"), destFile.toString()), ex); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.newfile.path"), destFile), ex); } if (destFilePath != null && !destFilePath.startsWith(destDirPath + File.separator)) { - appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.newfile.outside"), zipEntry.getName())); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.newfile.outside"), zipEntry.getName())); } return destFile; } @@ -503,7 +504,7 @@ public class CurseCreateModpack { boolean cleanupEnvironment(String modpackDir) { boolean cleanedUp = false; if (new File(modpackDir).exists()) { - appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.cleanupenvironment.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.cleanupenvironment.enter")); Path modpackPath = Paths.get(modpackDir); try { Files.walkFileTree(modpackPath, @@ -524,9 +525,9 @@ public class CurseCreateModpack { }); } catch (IOException ex) { cleanedUp = true; - appLogger.error(String.format(localizationManager.getLocalizedString("createmodpack.log.error.cleanupenvironment"), modpackDir)); + LOG.error(String.format(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.error.cleanupenvironment"), modpackDir)); } finally { - appLogger.info(localizationManager.getLocalizedString("createmodpack.log.info.cleanupenvironment.complete")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("createmodpack.log.info.cleanupenvironment.complete")); } } return cleanedUp; diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java index 31a3fb8d8..efb9623bd 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseMinecraft.java @@ -61,7 +61,7 @@ public class CurseMinecraft { /** * Getter for modloader related information using {@link CurseModLoaders}. - * @return List CurseModLoaders. Returns an isntance of CurseModLoaders.class with information about the modlaoder + * @return List CurseModLoaders. Returns an instance of CurseModLoaders.class with information about the modloader * and modloader version used by the CurseForge modpack. */ public List<CurseModLoaders> getModLoaders() { diff --git a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java index 17661d92c..5b1b2dd10 100644 --- a/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java +++ b/src/main/java/de/griefed/serverpackcreator/curseforgemodpack/CurseSplines.java @@ -23,7 +23,7 @@ import java.util.Random; /** * <strong>Table of methods</strong><br> - * {@link #reticulating}<br> + * {@link #RETICULATING}<br> * {@link #getRandomInt()}<br> * {@link #getSpline()}<br> * {@link #reticulate()}<p> @@ -36,7 +36,7 @@ public class CurseSplines { /** * The list of messages as they were available in SimCity, plus Reticulating Splines added by myself, for good measure. */ - private final String[] reticulating = { + private final String[] RETICULATING = { "Adding Hidden Agendas", "Adjusting Bell Curves", "Aesthesizing Industrial Areas", @@ -147,24 +147,24 @@ public class CurseSplines { }; /** - * Retrieves the index of a random message in {@link #reticulating}. + * Retrieves the index of a random message in {@link #RETICULATING}. * @return Integer. Returns a randomly generated index. */ private int getRandomInt() { Random randInt = new Random(); - return randInt.nextInt(reticulating.length); + return randInt.nextInt(RETICULATING.length); } /** - * Retrieves a message from {@link #reticulating} using a randomly generated index from {@link #getRandomInt()}. + * Retrieves a message from {@link #RETICULATING} using a randomly generated index from {@link #getRandomInt()}. * @return String. Returns the message at the index provided by the randomizer. */ private String getSpline() { - return reticulating[getRandomInt()]; + return RETICULATING[getRandomInt()]; } /** - * Retrieve a random message from {@link #reticulating}. + * Retrieve a random message from {@link #RETICULATING}. * @return String. Returns a random message. */ public String reticulate() { diff --git a/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java b/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java index 0f1d06e96..c8294ed00 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/AboutTab.java @@ -41,9 +41,9 @@ import java.util.Objects; * to Griefed#s discord server in your browser. */ public class AboutTab extends Component { - private static final Logger appLogger = LogManager.getLogger(AboutTab.class); + private static final Logger LOG = LogManager.getLogger(AboutTab.class); - private LocalizationManager localizationManager; + private final LocalizationManager LOCALIZATIONMANAGER; /** * <strong>Constructor</strong><p> @@ -54,31 +54,24 @@ public class AboutTab extends Component { */ public AboutTab(LocalizationManager injectedLocalizationManager) { if (injectedLocalizationManager == null) { - this.localizationManager = new LocalizationManager(); + this.LOCALIZATIONMANAGER = new LocalizationManager(); } else { - this.localizationManager = injectedLocalizationManager; + this.LOCALIZATIONMANAGER = injectedLocalizationManager; } } - private final Dimension miscButtonDimension = new Dimension(50,50); + private final Dimension DIMENSION_MISC_BUTTON = new Dimension(50,50); - private final ImageIcon issueIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/issue.png"))); - private final ImageIcon hastebinIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/hastebin.png"))); - private final ImageIcon prosperIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/prosper.png"))); + private final ImageIcon ICON_ISSUE = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/issue.png"))); + private final ImageIcon ICON_HASTEBIN = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/hastebin.png"))); + private final ImageIcon ICON_PROSPER = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/prosper.png"))); - private JComponent aboutPanel; - - private GridBagConstraints constraints; - - private JTextPane textPane; - - private SimpleAttributeSet attributeSet; + private final Clipboard CLIPBOARD = Toolkit.getDefaultToolkit().getSystemClipboard(); - private StyledDocument document; + private final File FILE_CONFIG = new File("serverpackcreator.conf"); + private final File LOG_SERVERPACKCREATOR = new File("logs/serverpackcreator.log"); - private JButton buttonCreatePasteBin; - private JButton buttonOpenIssue; - private JButton buttonDiscord; + private JComponent aboutPanel; private JTextArea textArea; @@ -88,12 +81,8 @@ public class AboutTab extends Component { private StringSelection stringSelection; - private Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); - - private final File serverPackCreatorConf = new File("serverpackcreator.conf"); - private final File serverPackCreatorLog = new File("logs/serverpackcreator.log"); - private String[] options; + private int userResponse; /** @@ -108,7 +97,7 @@ public class AboutTab extends Component { JComponent aboutTab() { aboutPanel = new JPanel(false); aboutPanel.setLayout(new GridBagLayout()); - constraints = new GridBagConstraints(); + GridBagConstraints constraints = new GridBagConstraints(); constraints.anchor = GridBagConstraints.CENTER; constraints.fill = GridBagConstraints.BOTH; @@ -117,29 +106,29 @@ public class AboutTab extends Component { constraints.gridwidth = 3; //About Panel - textPane = new JTextPane(); + JTextPane textPane = new JTextPane(); textPane.setEditable(false); textPane.setOpaque(false); textPane.setMinimumSize(new Dimension(getMaximumSize().width,520)); textPane.setPreferredSize(new Dimension(getMaximumSize().width,520)); textPane.setMaximumSize(new Dimension(getMaximumSize().width,520)); - attributeSet = new SimpleAttributeSet(); + SimpleAttributeSet attributeSet = new SimpleAttributeSet(); StyleConstants.setBold(attributeSet, true); StyleConstants.setFontSize(attributeSet, 14); textPane.setCharacterAttributes(attributeSet, true); - document = textPane.getStyledDocument(); + StyledDocument document = textPane.getStyledDocument(); StyleConstants.setAlignment(attributeSet, StyleConstants.ALIGN_CENTER); document.setParagraphAttributes(0, document.getLength(), attributeSet, false); try { document.insertString( document.getLength(), - localizationManager.getLocalizedString("createserverpack.gui.about.text"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.about.text"), attributeSet ); } catch (BadLocationException ex) { - appLogger.error(localizationManager.getLocalizedString("about.log.error.document"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("about.log.error.document"), ex); } aboutPanel.add(textPane, constraints); @@ -157,40 +146,40 @@ public class AboutTab extends Component { constraints.gridwidth = 1; //Button to upload log file to hastebin - buttonCreatePasteBin = new JButton(); - buttonCreatePasteBin.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.about.hastebin")); - buttonCreatePasteBin.setIcon(hastebinIcon); - buttonCreatePasteBin.setPreferredSize(miscButtonDimension); + JButton buttonCreatePasteBin = new JButton(); + buttonCreatePasteBin.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.about.hastebin")); + buttonCreatePasteBin.setIcon(ICON_HASTEBIN); + buttonCreatePasteBin.setPreferredSize(DIMENSION_MISC_BUTTON); buttonCreatePasteBin.addActionListener(e -> { textArea = new JTextArea(); textArea.setOpaque(false); - configURL = createHasteBinFromFile(serverPackCreatorConf); - spclogURL = createHasteBinFromFile(serverPackCreatorLog); + configURL = createHasteBinFromFile(FILE_CONFIG); + spclogURL = createHasteBinFromFile(LOG_SERVERPACKCREATOR); textAreaContent = String.format( "%s\n%s\n" + "%s\n%s\n", - localizationManager.getLocalizedString("createserverpack.gui.about.hastebin.conf"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.about.hastebin.conf"), configURL, - localizationManager.getLocalizedString("createserverpack.gui.about.hastebin.spclog"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.about.hastebin.spclog"), spclogURL ); textArea.setText(textAreaContent); options = new String[] { - localizationManager.getLocalizedString("createserverpack.gui.about.hastebin.dialog.yes"), - localizationManager.getLocalizedString("createserverpack.gui.about.hastebin.dialog.no"), - localizationManager.getLocalizedString("createserverpack.gui.about.hastebin.dialog.clipboard"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.about.hastebin.dialog.yes"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.about.hastebin.dialog.no"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.about.hastebin.dialog.clipboard"), }; userResponse = JOptionPane.showOptionDialog( aboutPanel, textArea, - localizationManager.getLocalizedString("createserverpack.gui.about.hastebin.dialog"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.about.hastebin.dialog"), JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, - hastebinIcon, + ICON_HASTEBIN, options, options[0] ); @@ -205,14 +194,14 @@ public class AboutTab extends Component { Desktop.getDesktop().browse(URI.create(spclogURL)); } } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("about.log.error.browser"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("about.log.error.browser"), ex); } break; case 2: stringSelection = new StringSelection(textAreaContent); - clipboard.setContents(stringSelection, null); + CLIPBOARD.setContents(stringSelection, null); break; default: @@ -224,10 +213,10 @@ public class AboutTab extends Component { aboutPanel.add(buttonCreatePasteBin, constraints); //Button to open a new issue on GitHub - buttonOpenIssue = new JButton(); - buttonOpenIssue.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.about.issue")); - buttonOpenIssue.setIcon(issueIcon); - buttonOpenIssue.setPreferredSize(miscButtonDimension); + JButton buttonOpenIssue = new JButton(); + buttonOpenIssue.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.about.issue")); + buttonOpenIssue.setIcon(ICON_ISSUE); + buttonOpenIssue.setPreferredSize(DIMENSION_MISC_BUTTON); buttonOpenIssue.addActionListener(e -> { try { @@ -235,7 +224,7 @@ public class AboutTab extends Component { Desktop.getDesktop().browse(URI.create("https://github.com/Griefed/ServerPackCreator/issues")); } } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("about.log.error.browser"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("about.log.error.browser"), ex); } }); @@ -244,10 +233,10 @@ public class AboutTab extends Component { aboutPanel.add(buttonOpenIssue, constraints); //Button to open the invite link to the discord server - buttonDiscord = new JButton(); - buttonDiscord.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.about.discord")); - buttonDiscord.setIcon(prosperIcon); - buttonDiscord.setPreferredSize(miscButtonDimension); + JButton buttonDiscord = new JButton(); + buttonDiscord.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.about.discord")); + buttonDiscord.setIcon(ICON_PROSPER); + buttonDiscord.setPreferredSize(DIMENSION_MISC_BUTTON); buttonDiscord.addActionListener(e -> { try { @@ -255,7 +244,7 @@ public class AboutTab extends Component { Desktop.getDesktop().browse(URI.create("https://discord.griefed.de")); } } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("about.log.error.browser"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("about.log.error.browser"), ex); } }); @@ -294,22 +283,25 @@ public class AboutTab extends Component { BufferedReader bufferedReader; try { url = new URL(requestURL); } - catch (IOException ex) {appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.abouttab.hastebin.request"), ex);} + catch (IOException ex) { + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.error.abouttab.hastebin.request"), ex);} try { text = FileUtils.readFileToString(textFile, "UTF-8"); } - catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.abouttab.hastebin.readfile"),ex); } + catch (IOException ex) { LOG.error(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.error.abouttab.hastebin.readfile"),ex); } postData = Objects.requireNonNull(text).getBytes(StandardCharsets.UTF_8); postDataLength = postData.length; try { conn = (HttpsURLConnection) Objects.requireNonNull(url).openConnection(); } - catch (IOException ex) {appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.abouttab.hastebin.connection"), ex);} + catch (IOException ex) { + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.error.abouttab.hastebin.connection"), ex);} Objects.requireNonNull(conn).setDoOutput(true); conn.setInstanceFollowRedirects(false); try { conn.setRequestMethod("POST"); } - catch (ProtocolException ex) {appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.abouttab.hastebin.method"), ex);} + catch (ProtocolException ex) { + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.error.abouttab.hastebin.method"), ex);} conn.setRequestProperty("User-Agent", "HasteBin-Creator for ServerPackCreator"); conn.setRequestProperty("Content-Length", Integer.toString(postDataLength)); @@ -321,7 +313,7 @@ public class AboutTab extends Component { bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream())); response = bufferedReader.readLine(); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.abouttab.hastebin.response"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.error.abouttab.hastebin.response"), ex); } if (Objects.requireNonNull(response).contains("\"key\"")) { @@ -331,7 +323,7 @@ public class AboutTab extends Component { if (response.contains("https://haste.zneix.eu")) { return response; } else { - return localizationManager.getLocalizedString("createserverpack.log.error.abouttab.hastebin.response"); + return LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.error.abouttab.hastebin.response"); } } diff --git a/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java b/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java index 93b06ba02..2d49ab424 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/BackgroundPanel.java @@ -51,7 +51,7 @@ import javax.swing.*; import java.awt.*; /** - * Hey, Griefed here. I tried to add a tiled background image to the frame which holds the JTabbedPane, but after serveral + * Hey, Griefed here. I tried to add a tiled background image to the frame which holds the JTabbedPane, but after several * failed attempts, I gave up and almost threw the idea out of the window. I wanted to set the background to a tiled image, * because simply setting a colour seemed too boring, and I needed <em>something</em> in the background so the banner * icon would be more clear to the eye. So, I activated my Google-Fu and encountered this holy grail of tiling images @@ -159,7 +159,7 @@ public class BackgroundPanel extends JPanel { * @param alignmentX Sets the alignment along the x-axis. */ public void setImageAlignmentX(float alignmentX) { - this.alignmentX = alignmentX > 1.0f ? 1.0f : alignmentX < 0.0f ? 0.0f : alignmentX; + this.alignmentX = alignmentX > 1.0f ? 1.0f : Math.max(alignmentX, 0.0f); repaint(); } @@ -168,7 +168,7 @@ public class BackgroundPanel extends JPanel { * @param alignmentY Sets the alignment along the y-axis. */ public void setImageAlignmentY(float alignmentY) { - this.alignmentY = alignmentY > 1.0f ? 1.0f : alignmentY < 0.0f ? 0.0f : alignmentY; + this.alignmentY = alignmentY > 1.0f ? 1.0f : Math.max(alignmentY, 0.0f); repaint(); } @@ -195,7 +195,7 @@ public class BackgroundPanel extends JPanel { /** * Override method so we can make the component transparent. * @param component JComponent to add to the panel. - * @param constraints Contraints wich which the panel should be added. + * @param constraints Constraints with which the panel should be added. */ public void add(JComponent component, Object constraints) { if (isTransparentAdd) @@ -260,10 +260,6 @@ public class BackgroundPanel extends JPanel { if (image == null ) return; switch (style) { - case SCALED : - drawScaled(g); - break; - case TILED : drawTiled(g); break; diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java index aa6f037cc..3da169fc4 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateGui.java @@ -50,25 +50,23 @@ import java.util.Objects; * are created in the constructor of this class to make sure they are ready when the GUI is created and shown to the user. */ public class CreateGui extends JPanel { - private static final Logger appLogger = LogManager.getLogger(CreateGui.class); + private static final Logger LOG = LogManager.getLogger(CreateGui.class); - private final ImageIcon bannerIcon = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/banner.png"))); - private final Image icon = Toolkit.getDefaultToolkit().getImage(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/app.png"))); - private final Dimension windowDimension = new Dimension(800,860); - private BufferedImage bufferedImage; + private final ImageIcon ICON_SERVERPACKCREATOR_BANNER = new ImageIcon(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/banner.png"))); + private final Image ICON_SERVERPACKCREATOR = Toolkit.getDefaultToolkit().getImage(Objects.requireNonNull(CreateGui.class.getResource("/de/griefed/resources/gui/app.png"))); + private final Dimension DIMENSION_WINDOW = new Dimension(800,860); - private LocalizationManager localizationManager; - private Configuration configuration; - private CurseCreateModpack curseCreateModpack; - private CreateServerPack createServerPack; + private final LocalizationManager LOCALIZATIONMANAGER; + private final Configuration CONFIGURATION; + private final CurseCreateModpack CURSECREATEMODPACK; + private final CreateServerPack CREATESERVERPACK; - private CreateServerPackTab createServerPackTab; - private ServerPackCreatorLogTab serverPackCreatorLogTab; - private ModloaderInstallerLogTab modloaderInstallerLogTab; - private AboutTab aboutTab; - private BackgroundPanel backgroundPanel; - private JTabbedPane tabbedPane; + private final BackgroundPanel BACKGROUNDPANEL; + private final JFrame FRAME_SERVERPACKCREATOR; + private File secretFile; + private Config secret; + private BufferedImage bufferedImage; /** * <strong>Constructor</strong><p> * Used for Dependency Injection.<p> @@ -88,48 +86,48 @@ public class CreateGui extends JPanel { super(new GridLayout(1, 1)); if (injectedLocalizationManager == null) { - this.localizationManager = new LocalizationManager(); + this.LOCALIZATIONMANAGER = new LocalizationManager(); } else { - this.localizationManager = injectedLocalizationManager; + this.LOCALIZATIONMANAGER = injectedLocalizationManager; } if (injectedConfiguration == null) { - this.curseCreateModpack = new CurseCreateModpack(localizationManager); + this.CURSECREATEMODPACK = new CurseCreateModpack(LOCALIZATIONMANAGER); } else { - this.curseCreateModpack = injectedCurseCreateModpack; + this.CURSECREATEMODPACK = injectedCurseCreateModpack; } if (injectedConfiguration == null) { - this.configuration = new Configuration(localizationManager, curseCreateModpack); + this.CONFIGURATION = new Configuration(LOCALIZATIONMANAGER, CURSECREATEMODPACK); } else { - this.configuration = injectedConfiguration; + this.CONFIGURATION = injectedConfiguration; } if (injectedCreateServerPack == null) { - this.createServerPack = new CreateServerPack(localizationManager, configuration, curseCreateModpack); + this.CREATESERVERPACK = new CreateServerPack(LOCALIZATIONMANAGER, CONFIGURATION, CURSECREATEMODPACK); } else { - this.createServerPack = injectedCreateServerPack; + this.CREATESERVERPACK = injectedCreateServerPack; } try { bufferedImage = ImageIO.read(Objects.requireNonNull(getClass().getResource("/de/griefed/resources/gui/tile.png")));} - catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("createserverpack.gui.createandshowgui.image"), ex); } + catch (IOException ex) { LOG.error(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createandshowgui.image"), ex); } - createServerPackTab = new CreateServerPackTab(localizationManager, configuration, curseCreateModpack, createServerPack); - serverPackCreatorLogTab = new ServerPackCreatorLogTab(localizationManager); - modloaderInstallerLogTab = new ModloaderInstallerLogTab(localizationManager); - aboutTab = new AboutTab(localizationManager); + CreateServerPackTab TAB_CREATESERVERPACK = new CreateServerPackTab(LOCALIZATIONMANAGER, CONFIGURATION, CURSECREATEMODPACK, CREATESERVERPACK); + ServerPackCreatorLogTab TAB_LOG_SERVERPACKCREATOR = new ServerPackCreatorLogTab(LOCALIZATIONMANAGER); + ModloaderInstallerLogTab TAB_LOG_MODLOADERINSTALLER = new ModloaderInstallerLogTab(LOCALIZATIONMANAGER); + AboutTab TAB_ABOUT = new AboutTab(LOCALIZATIONMANAGER); - serverPackCreatorFrame = new JFrame(localizationManager.getLocalizedString("createserverpack.gui.createandshowgui")); + FRAME_SERVERPACKCREATOR = new JFrame(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createandshowgui")); - backgroundPanel = new BackgroundPanel(bufferedImage, BackgroundPanel.TILED, 0.0f, 0.0f); + BACKGROUNDPANEL = new BackgroundPanel(bufferedImage, BackgroundPanel.TILED, 0.0f, 0.0f); - tabbedPane = new JTabbedPane(JTabbedPane.TOP); + JTabbedPane TABBEDPANE = new JTabbedPane(JTabbedPane.TOP); /* * Remove the border insets so the panes fully fill out the area available to them. Prevents the image * painted by BackgroundPanel from being displayed along the border of the pane. */ - tabbedPane.setUI(new BasicTabbedPaneUI() { + TABBEDPANE.setUI(new BasicTabbedPaneUI() { private final Insets borderInsets = new Insets(0, 0, 0, 0); @Override @@ -138,57 +136,52 @@ public class CreateGui extends JPanel { } }); - tabbedPane.addTab( - localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.title"), + TABBEDPANE.addTab( + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.title"), null, - createServerPackTab.createServerPackTab(), - localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.tip")); + TAB_CREATESERVERPACK.createServerPackTab(), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.tabbedpane.createserverpack.tip")); - tabbedPane.setMnemonicAt(0, KeyEvent.VK_1); + TABBEDPANE.setMnemonicAt(0, KeyEvent.VK_1); - tabbedPane.addTab( - localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.title"), + TABBEDPANE.addTab( + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.title"), null, - serverPackCreatorLogTab.serverPackCreatorLogTab(), - localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.tip")); + TAB_LOG_SERVERPACKCREATOR.serverPackCreatorLogTab(), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.tabbedpane.serverpackcreatorlog.tip")); - tabbedPane.setMnemonicAt(1, KeyEvent.VK_2); + TABBEDPANE.setMnemonicAt(1, KeyEvent.VK_2); - tabbedPane.addTab( - localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.modloaderinstallerlog.title"), + TABBEDPANE.addTab( + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.tabbedpane.modloaderinstallerlog.title"), null, - modloaderInstallerLogTab.modloaderInstallerLogTab(), - localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.modloaderinstallerlog.tip")); + TAB_LOG_MODLOADERINSTALLER.modloaderInstallerLogTab(), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.tabbedpane.modloaderinstallerlog.tip")); - tabbedPane.setMnemonicAt(2, KeyEvent.VK_3); + TABBEDPANE.setMnemonicAt(2, KeyEvent.VK_3); - tabbedPane.addTab( - localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.about.title"), + TABBEDPANE.addTab( + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.tabbedpane.about.title"), null, - aboutTab.aboutTab(), - localizationManager.getLocalizedString("createserverpack.gui.tabbedpane.about.tip")); + TAB_ABOUT.aboutTab(), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.tabbedpane.about.tip")); - tabbedPane.setMnemonicAt(3, KeyEvent.VK_4); + TABBEDPANE.setMnemonicAt(3, KeyEvent.VK_4); - tabbedPane.setOpaque(true); + TABBEDPANE.setOpaque(true); - add(tabbedPane); + add(TABBEDPANE); /* * We need both in order to have a transparent TabbedPane * behind which we can see the image painted by BackgroundPanel */ setOpaque(false); - tabbedPane.setOpaque(false); + TABBEDPANE.setOpaque(false); - tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); + TABBEDPANE.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); } - private JFrame serverPackCreatorFrame; - private JLabel serverPackCreatorBanner; - private File secretFile; - private Config secret; - /** * Shows the GUI from the EDT by using SwingUtilities and it's invokeLater method by calling {@link #createAndShowGUI()}. * Sets the font to bold, which may be overridden by the LookAndFeel which gets automatically determined and depends @@ -213,10 +206,10 @@ public class CreateGui extends JPanel { if (secret.getString("topsicrets") != null && !secret.getString("topsicrets").equals("") && secret.getString("topsicrets").length() > 0) { - appLogger.info(localizationManager.getLocalizedString("topsicrets")); - appLogger.info(localizationManager.getLocalizedString("topsicrets.moar")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("topsicrets")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("topsicrets.moar")); for (UIManager.LookAndFeelInfo look : UIManager.getInstalledLookAndFeels()) { - appLogger.info(look.getClassName()); + LOG.info(look.getClassName()); } UIManager.setLookAndFeel(secret.getString("topsicrets")); @@ -233,7 +226,7 @@ public class CreateGui extends JPanel { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { - appLogger.error(localizationManager.getLocalizedString("tabbedpane.log.error"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("tabbedpane.log.error"), ex); } } @@ -246,26 +239,26 @@ public class CreateGui extends JPanel { */ private void createAndShowGUI() { - serverPackCreatorFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + FRAME_SERVERPACKCREATOR.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - serverPackCreatorFrame.setContentPane(backgroundPanel); + FRAME_SERVERPACKCREATOR.setContentPane(BACKGROUNDPANEL); - serverPackCreatorFrame.setIconImage(icon); + FRAME_SERVERPACKCREATOR.setIconImage(ICON_SERVERPACKCREATOR); - serverPackCreatorBanner = new JLabel(bannerIcon); + JLabel serverPackCreatorBanner = new JLabel(ICON_SERVERPACKCREATOR_BANNER); serverPackCreatorBanner.setOpaque(false); - serverPackCreatorFrame.add(serverPackCreatorBanner, BorderLayout.PAGE_START); + FRAME_SERVERPACKCREATOR.add(serverPackCreatorBanner, BorderLayout.PAGE_START); - serverPackCreatorFrame.add(new CreateGui(localizationManager, configuration, curseCreateModpack, createServerPack), BorderLayout.CENTER); + FRAME_SERVERPACKCREATOR.add(new CreateGui(LOCALIZATIONMANAGER, CONFIGURATION, CURSECREATEMODPACK, CREATESERVERPACK), BorderLayout.CENTER); - serverPackCreatorFrame.setSize(windowDimension); - serverPackCreatorFrame.setPreferredSize(windowDimension); - serverPackCreatorFrame.setMaximumSize(windowDimension); - serverPackCreatorFrame.setResizable(true); + FRAME_SERVERPACKCREATOR.setSize(DIMENSION_WINDOW); + FRAME_SERVERPACKCREATOR.setPreferredSize(DIMENSION_WINDOW); + FRAME_SERVERPACKCREATOR.setMaximumSize(DIMENSION_WINDOW); + FRAME_SERVERPACKCREATOR.setResizable(true); - serverPackCreatorFrame.pack(); + FRAME_SERVERPACKCREATOR.pack(); - serverPackCreatorFrame.setVisible(true); + FRAME_SERVERPACKCREATOR.setVisible(true); } } \ No newline at end of file diff --git a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java index 5b59a87c5..8a202f7bd 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/CreateServerPackTab.java @@ -33,8 +33,6 @@ import org.apache.logging.log4j.Logger; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.awt.*; -import java.awt.event.HierarchyEvent; -import java.awt.event.HierarchyListener; import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -57,12 +55,11 @@ import java.util.concurrent.Executors; * </p> */ public class CreateServerPackTab extends JComponent { - private static final Logger appLogger = LogManager.getLogger(CreateServerPackTab.class); + private static final Logger LOG = LogManager.getLogger(CreateServerPackTab.class); - private Configuration configuration; - private LocalizationManager localizationManager; - private CurseCreateModpack curseCreateModpack; - private CreateServerPack createServerPack; + private final Configuration CONFIGURATION; + private final LocalizationManager LOCALIZATIONMANAGER; + private final CreateServerPack CREATESERVERPACK; /** * <strong>Constructor</strong><p> @@ -80,28 +77,30 @@ public class CreateServerPackTab extends JComponent { * @param injectedCreateServerPack Instance of {@link CreateServerPack} required for the generation of server packs. */ public CreateServerPackTab(LocalizationManager injectedLocalizationManager, Configuration injectedConfiguration, CurseCreateModpack injectedCurseCreateModpack, CreateServerPack injectedCreateServerPack) { + CurseCreateModpack curseCreateModpack; + if (injectedLocalizationManager == null) { - this.localizationManager = new LocalizationManager(); + this.LOCALIZATIONMANAGER = new LocalizationManager(); } else { - this.localizationManager = injectedLocalizationManager; + this.LOCALIZATIONMANAGER = injectedLocalizationManager; } if (injectedConfiguration == null) { - this.curseCreateModpack = new CurseCreateModpack(localizationManager); + curseCreateModpack = new CurseCreateModpack(LOCALIZATIONMANAGER); } else { - this.curseCreateModpack = injectedCurseCreateModpack; + curseCreateModpack = injectedCurseCreateModpack; } if (injectedConfiguration == null) { - this.configuration = new Configuration(localizationManager, curseCreateModpack); + this.CONFIGURATION = new Configuration(LOCALIZATIONMANAGER, curseCreateModpack); } else { - this.configuration = injectedConfiguration; + this.CONFIGURATION = injectedConfiguration; } if (injectedCreateServerPack == null) { - this.createServerPack = new CreateServerPack(localizationManager, configuration, curseCreateModpack); + this.CREATESERVERPACK = new CreateServerPack(LOCALIZATIONMANAGER, CONFIGURATION, curseCreateModpack); } else { - this.createServerPack = injectedCreateServerPack; + this.CREATESERVERPACK = injectedCreateServerPack; } } @@ -118,15 +117,6 @@ public class CreateServerPackTab extends JComponent { private JScrollPane helpScrollPane; - private GridBagConstraints constraints; - - private JLabel labelModpackDir; - private JLabel labelClientMods; - private JLabel labelCopyDirs; - private JLabel labelJavaPath; - private JLabel labelMinecraftVersion; - private JLabel labelModloader; - private JLabel labelModloaderVersion; private JLabel labelGenerateServerPack; private JTextField textModpackDir; @@ -166,7 +156,7 @@ public class CreateServerPackTab extends JComponent { JComponent createServerPackTab() { createServerPackPanel = new JPanel(false); createServerPackPanel.setLayout(new GridBagLayout()); - constraints = new GridBagConstraints(); + GridBagConstraints constraints = new GridBagConstraints(); // ----------------------------------------------------------------------------------------LABELS AND TEXTFIELDS-------- constraints.fill = GridBagConstraints.HORIZONTAL; @@ -174,98 +164,98 @@ public class CreateServerPackTab extends JComponent { constraints.weightx = 0.7; //Label and textfield modpackDir - labelModpackDir = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodpackdir")); - labelModpackDir.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodpackdir.tip")); + JLabel labelModpackDir = new JLabel(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelmodpackdir")); + labelModpackDir.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelmodpackdir.tip")); constraints.gridx = 0; constraints.gridy = 0; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelModpackDir, constraints); textModpackDir = new JTextField(""); - textModpackDir.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodpackdir.tip")); + textModpackDir.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelmodpackdir.tip")); constraints.gridx = 0; constraints.gridy = 1; constraints.insets = new Insets(0,10,0,0); createServerPackPanel.add(textModpackDir, constraints); //Label and textfield clientMods - labelClientMods = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelclientmods")); - labelClientMods.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelclientmods.tip")); + JLabel labelClientMods = new JLabel(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelclientmods")); + labelClientMods.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelclientmods.tip")); constraints.gridx = 0; constraints.gridy = 2; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelClientMods, constraints); textClientMods = new JTextField(""); - textClientMods.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelclientmods.tip")); + textClientMods.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelclientmods.tip")); constraints.gridx = 0; constraints.gridy = 3; constraints.insets = new Insets(0,10,0,0); createServerPackPanel.add(textClientMods, constraints); //Label and textfield copyDirs - labelCopyDirs = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelcopydirs")); - labelCopyDirs.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelcopydirs.tip")); + JLabel labelCopyDirs = new JLabel(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelcopydirs")); + labelCopyDirs.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelcopydirs.tip")); constraints.gridx = 0; constraints.gridy = 4; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelCopyDirs, constraints); textCopyDirs = new JTextField(""); - textCopyDirs.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelcopydirs.tip")); + textCopyDirs.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelcopydirs.tip")); constraints.gridx = 0; constraints.gridy = 5; constraints.insets = new Insets(0,10,0,0); createServerPackPanel.add(textCopyDirs, constraints); //Label and textfield javaPath - labelJavaPath = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labeljavapath")); - labelJavaPath.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labeljavapath.tip")); + JLabel labelJavaPath = new JLabel(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labeljavapath")); + labelJavaPath.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labeljavapath.tip")); constraints.gridx = 0; constraints.gridy = 6; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelJavaPath, constraints); textJavaPath = new JTextField(""); - textJavaPath.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labeljavapath.tip")); + textJavaPath.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labeljavapath.tip")); constraints.gridx = 0; constraints.gridy = 7; constraints.insets = new Insets(0,10,0,0); createServerPackPanel.add(textJavaPath, constraints); //Label and textfield minecraftVersion - labelMinecraftVersion = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelminecraft")); - labelMinecraftVersion.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelminecraft.tip")); + JLabel labelMinecraftVersion = new JLabel(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelminecraft")); + labelMinecraftVersion.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelminecraft.tip")); constraints.gridx = 0; constraints.gridy = 8; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelMinecraftVersion, constraints); textMinecraftVersion = new JTextField(""); - textMinecraftVersion.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelminecraft.tip")); + textMinecraftVersion.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelminecraft.tip")); constraints.gridx = 0; constraints.gridy = 9; constraints.insets = new Insets(0,10,0,0); createServerPackPanel.add(textMinecraftVersion, constraints); //Label and textfield Modloader - labelModloader = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloader")); - labelModloader.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloader.tip")); + JLabel labelModloader = new JLabel(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelmodloader")); + labelModloader.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelmodloader.tip")); constraints.gridx = 0; constraints.gridy = 10; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelModloader, constraints); textModloader = new JTextField(""); - textModloader.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloader.tip")); + textModloader.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelmodloader.tip")); constraints.gridx = 0; constraints.gridy = 11; constraints.insets = new Insets(0,10,0,0); createServerPackPanel.add(textModloader, constraints); //Label and textfield modloaderVersion - labelModloaderVersion = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloaderversion")); - labelModloaderVersion.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloaderversion.tip")); + JLabel labelModloaderVersion = new JLabel(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelmodloaderversion")); + labelModloaderVersion.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelmodloaderversion.tip")); constraints.gridx = 0; constraints.gridy = 12; constraints.insets = new Insets(20,10,0,0); createServerPackPanel.add(labelModloaderVersion, constraints); textModloaderVersion = new JTextField(""); - textModloaderVersion.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.labelmodloaderversion.tip")); + textModloaderVersion.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.labelmodloaderversion.tip")); constraints.gridx = 0; constraints.gridy = 13; constraints.insets = new Insets(0,10,0,0); @@ -280,36 +270,36 @@ public class CreateServerPackTab extends JComponent { constraints.fill = GridBagConstraints.NONE; //Checkbox installServer - checkBoxServer = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxserver"),true); - checkBoxServer.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxserver.tip")); + checkBoxServer = new JCheckBox(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.checkboxserver"),true); + checkBoxServer.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.checkboxserver.tip")); constraints.gridx = 0; constraints.gridy = 14; createServerPackPanel.add(checkBoxServer, constraints); //Checkbox copyIcon - checkBoxIcon = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxicon"),true); - checkBoxIcon.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxicon.tip")); + checkBoxIcon = new JCheckBox(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.checkboxicon"),true); + checkBoxIcon.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.checkboxicon.tip")); constraints.gridx = 1; constraints.gridy = 14; createServerPackPanel.add(checkBoxIcon, constraints); //Checkbox copyProperties - checkBoxProperties = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxproperties"),true); - checkBoxProperties.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxproperties.tip")); + checkBoxProperties = new JCheckBox(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.checkboxproperties"),true); + checkBoxProperties.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.checkboxproperties.tip")); constraints.gridx = 0; constraints.gridy = 15; createServerPackPanel.add(checkBoxProperties, constraints); //Checkbox copyScripts - checkBoxScripts = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxscripts"),true); - checkBoxScripts.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxscripts.tip")); + checkBoxScripts = new JCheckBox(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.checkboxscripts"),true); + checkBoxScripts.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.checkboxscripts.tip")); constraints.gridx = 1; constraints.gridy = 15; createServerPackPanel.add(checkBoxScripts, constraints); //Checkbox createZIP - checkBoxZIP = new JCheckBox(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxzip"),true); - checkBoxZIP.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.checkboxzip.tip")); + checkBoxZIP = new JCheckBox(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.checkboxzip"),true); + checkBoxZIP.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.checkboxzip.tip")); constraints.gridx = 0; constraints.gridy = 16; createServerPackPanel.add(checkBoxZIP, constraints); @@ -322,7 +312,7 @@ public class CreateServerPackTab extends JComponent { //Select modpackDir button buttonModpackDir = new JButton(); - buttonModpackDir.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttonmodpackdir")); + buttonModpackDir.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.buttonmodpackdir")); buttonModpackDir.setContentAreaFilled(false); buttonModpackDir.setIcon(folderIcon); buttonModpackDir.setMinimumSize(folderButtonDimension); @@ -332,7 +322,7 @@ public class CreateServerPackTab extends JComponent { modpackDirChooser = new JFileChooser(); modpackDirChooser.setCurrentDirectory(new File(".")); - modpackDirChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttonmodpackdir.title")); + modpackDirChooser.setDialogTitle(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.buttonmodpackdir.title")); modpackDirChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); modpackDirChooser.setAcceptAllFileFilterUsed(false); modpackDirChooser.setMultiSelectionEnabled(false); @@ -342,12 +332,12 @@ public class CreateServerPackTab extends JComponent { try { textModpackDir.setText(modpackDirChooser.getSelectedFile().getCanonicalPath().replace("\\","/")); - appLogger.info(String.format( - localizationManager.getLocalizedString("createserverpack.log.info.buttonmodpack"), + LOG.info(String.format( + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttonmodpack"), modpackDirChooser.getSelectedFile().getCanonicalPath().replace("\\","/"))); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.buttonmodpack"),ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.error.buttonmodpack"),ex); } } }); @@ -366,7 +356,7 @@ public class CreateServerPackTab extends JComponent { //Select clientside-mods button buttonClientMods = new JButton(); - buttonClientMods.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttonclientmods")); + buttonClientMods.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.buttonclientmods")); buttonClientMods.setContentAreaFilled(false); buttonClientMods.setIcon(folderIcon); buttonClientMods.setMinimumSize(folderButtonDimension); @@ -384,11 +374,11 @@ public class CreateServerPackTab extends JComponent { clientModsChooser.setCurrentDirectory(new File(".")); } - clientModsChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttonclientmods.title")); + clientModsChooser.setDialogTitle(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.buttonclientmods.title")); clientModsChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); clientModsChooser.setFileFilter(new FileNameExtensionFilter( - localizationManager.getLocalizedString("createserverpack.gui.buttonclientmods.filter"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.buttonclientmods.filter"), "jar" )); @@ -400,16 +390,16 @@ public class CreateServerPackTab extends JComponent { File[] clientMods = clientModsChooser.getSelectedFiles(); ArrayList<String> clientModsFilenames = new ArrayList<>(); - for (int i = 0; i < clientMods.length; i++) { - clientModsFilenames.add(clientMods[i].getName()); + for (File mod : clientMods) { + clientModsFilenames.add(mod.getName()); } textClientMods.setText( - configuration.buildString( + CONFIGURATION.buildString( Arrays.toString( clientModsFilenames.toArray(new String[0]))) ); - appLogger.info(String.format(localizationManager.getLocalizedString("createserverpack.log.info.buttonclientmods"), clientModsFilenames)); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttonclientmods"), clientModsFilenames)); } }); buttonClientMods.addMouseListener(new java.awt.event.MouseAdapter() { @@ -427,7 +417,7 @@ public class CreateServerPackTab extends JComponent { //Select directories to copy to server pack button buttonCopyDirs = new JButton(); - buttonCopyDirs.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttoncopydirs")); + buttonCopyDirs.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.buttoncopydirs")); buttonCopyDirs.setContentAreaFilled(false); buttonCopyDirs.setIcon(folderIcon); buttonCopyDirs.setMinimumSize(folderButtonDimension); @@ -444,22 +434,22 @@ public class CreateServerPackTab extends JComponent { copyDirsChooser.setCurrentDirectory(new File(".")); } - copyDirsChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttoncopydirs.title")); + copyDirsChooser.setDialogTitle(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.buttoncopydirs.title")); copyDirsChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); copyDirsChooser.setAcceptAllFileFilterUsed(false); copyDirsChooser.setMultiSelectionEnabled(true); copyDirsChooser.setPreferredSize(chooserDimension); if (copyDirsChooser.showOpenDialog(copyDirsChooser) == JFileChooser.APPROVE_OPTION) { - File[] copyDirs = copyDirsChooser.getSelectedFiles(); + File[] directoriesToCopy = copyDirsChooser.getSelectedFiles(); ArrayList<String> copyDirsNames = new ArrayList<>(); - for (int i = 0; i < copyDirs.length; i++) { - copyDirsNames.add(copyDirs[i].getName()); + for (File directory : directoriesToCopy) { + copyDirsNames.add(directory.getName()); } - textCopyDirs.setText(configuration.buildString(Arrays.toString(copyDirsNames.toArray(new String[0])))); - appLogger.info(String.format(localizationManager.getLocalizedString("createserverpack.log.info.buttoncopydirs"), copyDirsNames)); + textCopyDirs.setText(CONFIGURATION.buildString(Arrays.toString(copyDirsNames.toArray(new String[0])))); + LOG.info(String.format(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttoncopydirs"), copyDirsNames)); } }); buttonCopyDirs.addMouseListener(new java.awt.event.MouseAdapter() { @@ -477,7 +467,7 @@ public class CreateServerPackTab extends JComponent { //Select javaPath button buttonJavaPath = new JButton(); - buttonJavaPath.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttonjavapath")); + buttonJavaPath.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.buttonjavapath")); buttonJavaPath.setContentAreaFilled(false); buttonJavaPath.setIcon(folderIcon); buttonJavaPath.setMinimumSize(folderButtonDimension); @@ -497,7 +487,7 @@ public class CreateServerPackTab extends JComponent { javaChooser.setCurrentDirectory(new File(".")); } - javaChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttonjavapath.tile")); + javaChooser.setDialogTitle(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.buttonjavapath.tile")); javaChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); javaChooser.setAcceptAllFileFilterUsed(true); javaChooser.setMultiSelectionEnabled(false); @@ -507,13 +497,13 @@ public class CreateServerPackTab extends JComponent { try { textJavaPath.setText(javaChooser.getSelectedFile().getCanonicalPath().replace("\\","/")); - appLogger.info(String.format( - localizationManager.getLocalizedString("createserverpack.log.info.buttonjavapath"), + LOG.info(String.format( + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttonjavapath"), javaChooser.getSelectedFile().getCanonicalPath().replace("\\","/") )); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.buttonjavapath"),ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.error.buttonjavapath"),ex); } } }); @@ -532,7 +522,7 @@ public class CreateServerPackTab extends JComponent { //Load config from file buttonLoadConfigFromFile = new JButton(); - buttonLoadConfigFromFile.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttonloadconfig")); + buttonLoadConfigFromFile.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.buttonloadconfig")); buttonLoadConfigFromFile.setContentAreaFilled(false); buttonLoadConfigFromFile.setIcon(loadIcon); buttonLoadConfigFromFile.setMinimumSize(miscButtonDimension); @@ -542,11 +532,11 @@ public class CreateServerPackTab extends JComponent { configChooser = new JFileChooser(); configChooser.setCurrentDirectory(new File(".")); - configChooser.setDialogTitle(localizationManager.getLocalizedString("createserverpack.gui.buttonloadconfig.title")); + configChooser.setDialogTitle(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.buttonloadconfig.title")); configChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); configChooser.setFileFilter(new FileNameExtensionFilter( - localizationManager.getLocalizedString("createserverpack.gui.buttonloadconfig.filter"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.buttonloadconfig.filter"), "conf")); configChooser.setAcceptAllFileFilterUsed(false); @@ -560,22 +550,22 @@ public class CreateServerPackTab extends JComponent { try { newConfigFile = ConfigFactory.parseFile(new File(configChooser.getSelectedFile().getCanonicalPath())); - appLogger.info(String.format( - localizationManager.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile"), + LOG.info(String.format( + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile"), configChooser.getSelectedFile().getCanonicalPath() )); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.buttonloadconfigfromfile"),ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.error.buttonloadconfigfromfile"),ex); } if (newConfigFile != null) { textModpackDir.setText(newConfigFile.getString("modpackDir")); - textClientMods.setText(configuration.buildString(newConfigFile.getStringList("clientMods").toString())); + textClientMods.setText(CONFIGURATION.buildString(newConfigFile.getStringList("clientMods").toString())); - textCopyDirs.setText(configuration.buildString(newConfigFile.getStringList("copyDirs").toString())); + textCopyDirs.setText(CONFIGURATION.buildString(newConfigFile.getStringList("copyDirs").toString())); textJavaPath.setText(newConfigFile.getString("javaPath")); @@ -585,17 +575,17 @@ public class CreateServerPackTab extends JComponent { textModloaderVersion.setText(newConfigFile.getString("modLoaderVersion")); - checkBoxServer.setSelected(configuration.convertToBoolean(newConfigFile.getString("includeServerInstallation"))); + checkBoxServer.setSelected(CONFIGURATION.convertToBoolean(newConfigFile.getString("includeServerInstallation"))); - checkBoxIcon.setSelected(configuration.convertToBoolean(newConfigFile.getString("includeServerIcon"))); + checkBoxIcon.setSelected(CONFIGURATION.convertToBoolean(newConfigFile.getString("includeServerIcon"))); - checkBoxProperties.setSelected(configuration.convertToBoolean(newConfigFile.getString("includeServerProperties"))); + checkBoxProperties.setSelected(CONFIGURATION.convertToBoolean(newConfigFile.getString("includeServerProperties"))); - checkBoxScripts.setSelected(configuration.convertToBoolean(newConfigFile.getString("includeStartScripts"))); + checkBoxScripts.setSelected(CONFIGURATION.convertToBoolean(newConfigFile.getString("includeStartScripts"))); - checkBoxZIP.setSelected(configuration.convertToBoolean(newConfigFile.getString("includeZipCreation"))); + checkBoxZIP.setSelected(CONFIGURATION.convertToBoolean(newConfigFile.getString("includeZipCreation"))); - appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile.finish")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttonloadconfigfromfile.finish")); } } }); @@ -616,7 +606,7 @@ public class CreateServerPackTab extends JComponent { //Open window with detailed information about the UI buttonInfoWindow = new JButton(); - buttonInfoWindow.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.button")); + buttonInfoWindow.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.help.button")); buttonInfoWindow.setContentAreaFilled(false); buttonInfoWindow.setIcon(helpIcon); buttonInfoWindow.setMinimumSize(miscButtonDimension); @@ -626,18 +616,18 @@ public class CreateServerPackTab extends JComponent { helpTextArea = new JTextArea(String.format( "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s", - localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.modpackdir"), - localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.clientsidemods"), - localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.directories"), - localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.pathtojava"), - localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.minecraftversion"), - localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.modloader"), - localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.modloaderversion"), - localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.installserver"), - localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.copypropertires"), - localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.copyscripts"), - localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.copyicon"), - localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.createzip") + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.help.modpackdir"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.help.clientsidemods"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.help.directories"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.help.pathtojava"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.help.minecraftversion"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.help.modloader"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.help.modloaderversion"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.help.installserver"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.help.copypropertires"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.help.copyscripts"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.help.copyicon"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.help.createzip") )); helpTextArea.setEditable(false); @@ -650,24 +640,20 @@ public class CreateServerPackTab extends JComponent { ); helpScrollPane.setBorder(null); - helpTextArea.addHierarchyListener( - new HierarchyListener() { - @Override - public void hierarchyChanged(HierarchyEvent e) { - Window window = SwingUtilities.getWindowAncestor(helpTextArea); - if (window instanceof Dialog) { - Dialog dialog = (Dialog) window; - if (!dialog.isResizable()) { - dialog.setResizable(true); - } + helpTextArea.addHierarchyListener(e1 -> { + Window window = SwingUtilities.getWindowAncestor(helpTextArea); + if (window instanceof Dialog) { + Dialog dialog = (Dialog) window; + if (!dialog.isResizable()) { + dialog.setResizable(true); } } - }); + }); JOptionPane.showMessageDialog( createServerPackPanel, helpScrollPane, - localizationManager.getLocalizedString("createserverpack.gui.createserverpack.help.title"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.help.title"), JOptionPane.INFORMATION_MESSAGE, helpIcon ); @@ -692,7 +678,7 @@ public class CreateServerPackTab extends JComponent { constraints.fill = GridBagConstraints.NONE; constraints.insets = new Insets(5,0,5,0); - labelGenerateServerPack = new JLabel(localizationManager.getLocalizedString("createserverpack.gui.buttongenerateserverpack.ready")); + labelGenerateServerPack = new JLabel(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.buttongenerateserverpack.ready")); labelGenerateServerPack.setFont(new Font(labelGenerateServerPack.getFont().getName(), Font.BOLD, labelGenerateServerPack.getFont().getSize())); constraints.gridx = 0; constraints.gridy = 18; @@ -704,7 +690,7 @@ public class CreateServerPackTab extends JComponent { buttonGenerateServerPack = new JButton(); buttonGenerateServerPack.setContentAreaFilled(false); - buttonGenerateServerPack.setToolTipText(localizationManager.getLocalizedString("createserverpack.gui.buttongenerateserverpack.tip")); + buttonGenerateServerPack.setToolTipText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.buttongenerateserverpack.tip")); buttonGenerateServerPack.setIcon(startGeneration); buttonGenerateServerPack.setMinimumSize(startDimension); buttonGenerateServerPack.setPreferredSize(startDimension); @@ -713,10 +699,10 @@ public class CreateServerPackTab extends JComponent { buttonGenerateServerPack.setEnabled(false); - appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.start")); - labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.start")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.start")); + labelGenerateServerPack.setText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.start")); - configuration.writeConfigToFile( + CONFIGURATION.writeConfigToFile( textModpackDir.getText(), textClientMods.getText(), textCopyDirs.getText(), @@ -732,24 +718,24 @@ public class CreateServerPackTab extends JComponent { new File("serverpackcreator.tmp"), true ); - if (!configuration.checkConfigFile(new File("serverpackcreator.tmp"), false)) { - appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.checked")); - labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.checked")); + if (!CONFIGURATION.checkConfigFile(new File("serverpackcreator.tmp"), false)) { + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.checked")); + labelGenerateServerPack.setText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.checked")); if (new File("serverpackcreator.tmp").exists()) { boolean delTmp = new File("serverpackcreator.tmp").delete(); if (delTmp) { - labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.tempfile")); - appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.tempfile")); + labelGenerateServerPack.setText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.tempfile")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.tempfile")); } else { - labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.error.buttoncreateserverpack.tempfile")); - appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.buttoncreateserverpack.tempfile")); + labelGenerateServerPack.setText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.error.buttoncreateserverpack.tempfile")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.error.buttoncreateserverpack.tempfile")); } } - appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.writing")); - labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.writing")); - configuration.writeConfigToFile( + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.writing")); + labelGenerateServerPack.setText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.writing")); + CONFIGURATION.writeConfigToFile( textModpackDir.getText(), textClientMods.getText(), textCopyDirs.getText(), @@ -762,12 +748,12 @@ public class CreateServerPackTab extends JComponent { checkBoxProperties.isSelected(), checkBoxScripts.isSelected(), checkBoxZIP.isSelected(), - configuration.getConfigFile(), + CONFIGURATION.getConfigFile(), false ); - appLogger.info(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.generating")); - labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.generating")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.generating")); + labelGenerateServerPack.setText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.generating")); Tailer tailer = Tailer.create(new File("./logs/serverpackcreator.log"), new TailerListenerAdapter() { @@ -780,36 +766,36 @@ public class CreateServerPackTab extends JComponent { final ExecutorService executorService = Executors.newSingleThreadExecutor(); executorService.execute(() -> { - if (createServerPack.run()) { + if (CREATESERVERPACK.run()) { tailer.stop(); System.gc(); System.runFinalization(); buttonGenerateServerPack.setEnabled(true); - labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.ready")); - textModpackDir.setText(configuration.getModpackDir()); - textCopyDirs.setText(configuration.getCopyDirs().toString().replace("[","").replace("]","")); + labelGenerateServerPack.setText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.ready")); + textModpackDir.setText(CONFIGURATION.getModpackDir()); + textCopyDirs.setText(CONFIGURATION.getCopyDirs().toString().replace("[","").replace("]","")); JTextArea textArea = new JTextArea(); textArea.setOpaque(false); textArea.setText(String.format( "%s\n%s", - localizationManager.getLocalizedString("createserverpack.gui.createserverpack.openfolder.browse"), - String.format("%s/server_pack",configuration.getModpackDir()) + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.openfolder.browse"), + String.format("%s/server_pack", CONFIGURATION.getModpackDir()) ) ); if (JOptionPane.showConfirmDialog( createServerPackPanel, textArea, - localizationManager.getLocalizedString("createserverpack.gui.createserverpack.openfolder.title"), + LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.createserverpack.openfolder.title"), JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE) == 0) { try { - Desktop.getDesktop().open(new File(String.format("%s/server_pack",configuration.getModpackDir()))); + Desktop.getDesktop().open(new File(String.format("%s/server_pack", CONFIGURATION.getModpackDir()))); } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("createserverpack.log.error.browserserverpack")); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.error.browserserverpack")); } } buttonGenerateServerPack.setEnabled(true); @@ -825,13 +811,13 @@ public class CreateServerPackTab extends JComponent { System.runFinalization(); buttonGenerateServerPack.setEnabled(true); - labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.ready")); + labelGenerateServerPack.setText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.ready")); executorService.shutdown(); } }); } else { - labelGenerateServerPack.setText(localizationManager.getLocalizedString("createserverpack.gui.buttongenerateserverpack.fail")); + labelGenerateServerPack.setText(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.gui.buttongenerateserverpack.fail")); buttonGenerateServerPack.setEnabled(true); } }); @@ -862,9 +848,9 @@ public class CreateServerPackTab extends JComponent { textModpackDir.setText(config.getString("modpackDir")); - textClientMods.setText(configuration.buildString(config.getStringList("clientMods").toString())); + textClientMods.setText(CONFIGURATION.buildString(config.getStringList("clientMods").toString())); - textCopyDirs.setText(configuration.buildString(config.getStringList("copyDirs").toString())); + textCopyDirs.setText(CONFIGURATION.buildString(config.getStringList("copyDirs").toString())); textJavaPath.setText(config.getString("javaPath")); @@ -874,15 +860,15 @@ public class CreateServerPackTab extends JComponent { textModloaderVersion.setText(config.getString("modLoaderVersion")); - checkBoxServer.setSelected(configuration.convertToBoolean(config.getString("includeServerInstallation"))); + checkBoxServer.setSelected(CONFIGURATION.convertToBoolean(config.getString("includeServerInstallation"))); - checkBoxIcon.setSelected(configuration.convertToBoolean(config.getString("includeServerIcon"))); + checkBoxIcon.setSelected(CONFIGURATION.convertToBoolean(config.getString("includeServerIcon"))); - checkBoxProperties.setSelected(configuration.convertToBoolean(config.getString("includeServerProperties"))); + checkBoxProperties.setSelected(CONFIGURATION.convertToBoolean(config.getString("includeServerProperties"))); - checkBoxScripts.setSelected(configuration.convertToBoolean(config.getString("includeStartScripts"))); + checkBoxScripts.setSelected(CONFIGURATION.convertToBoolean(config.getString("includeStartScripts"))); - checkBoxZIP.setSelected(configuration.convertToBoolean(config.getString("includeZipCreation"))); + checkBoxZIP.setSelected(CONFIGURATION.convertToBoolean(config.getString("includeZipCreation"))); } } catch (NullPointerException ignored) {} diff --git a/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java b/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java index f05543b7c..69bcdf592 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/ModloaderInstallerLogTab.java @@ -32,7 +32,7 @@ import java.io.File; */ public class ModloaderInstallerLogTab extends JComponent { - private LocalizationManager localizationManager; + private final LocalizationManager LOCALIZATIONMANAGER; /** * <strong>Constructor</strong><p> @@ -43,17 +43,13 @@ public class ModloaderInstallerLogTab extends JComponent { */ public ModloaderInstallerLogTab(LocalizationManager injectedLocalizationManager) { if (injectedLocalizationManager == null) { - this.localizationManager = new LocalizationManager(); + this.LOCALIZATIONMANAGER = new LocalizationManager(); } else { - this.localizationManager = injectedLocalizationManager; + this.LOCALIZATIONMANAGER = injectedLocalizationManager; } } - private JComponent modloaderInstallerLogPanel; - private GridBagConstraints constraints; private JTextArea textArea; - private JScrollPane scrollPane; - private SmartScroller smartScroller; /** * Create the tab for the modloader_installer.log tailer in a JScrollPane with an always available vertical scrollbar @@ -64,9 +60,9 @@ public class ModloaderInstallerLogTab extends JComponent { * modloader_installer.log entries. */ JComponent modloaderInstallerLogTab() { - modloaderInstallerLogPanel = new JPanel(false); + JComponent modloaderInstallerLogPanel = new JPanel(false); modloaderInstallerLogPanel.setLayout(new GridBagLayout()); - constraints = new GridBagConstraints(); + GridBagConstraints constraints = new GridBagConstraints(); constraints.anchor = GridBagConstraints.CENTER; constraints.fill = GridBagConstraints.BOTH; @@ -82,8 +78,8 @@ public class ModloaderInstallerLogTab extends JComponent { Tailer.create(new File("./logs/modloader_installer.log"), new TailerListenerAdapter() { public void handle(String line) { synchronized (this) { - if (line.contains(localizationManager.getLocalizedString("serversetup.log.info.installserver.fabric.enter")) || - line.contains(localizationManager.getLocalizedString("serversetup.log.info.installserver.forge.enter"))) { + if (line.contains(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.info.installserver.fabric.enter")) || + line.contains(LOCALIZATIONMANAGER.getLocalizedString("serversetup.log.info.installserver.forge.enter"))) { textArea.setText(""); } textArea.append(line + "\n"); @@ -91,12 +87,12 @@ public class ModloaderInstallerLogTab extends JComponent { } }, 2000, false); - scrollPane = new JScrollPane( + JScrollPane scrollPane = new JScrollPane( textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); - smartScroller = new SmartScroller(scrollPane); + new SmartScroller(scrollPane); modloaderInstallerLogPanel.add(scrollPane, constraints); diff --git a/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java b/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java index 6ad2e2564..bbc68382f 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/ServerPackCreatorLogTab.java @@ -32,7 +32,7 @@ import java.io.File; */ public class ServerPackCreatorLogTab extends JComponent { - private LocalizationManager localizationManager; + private final LocalizationManager LOCALIZATIONMANAGER; /** * <strong>Constructor</strong><p> @@ -43,17 +43,13 @@ public class ServerPackCreatorLogTab extends JComponent { */ public ServerPackCreatorLogTab(LocalizationManager injectedLocalizationManager) { if (injectedLocalizationManager == null) { - this.localizationManager = new LocalizationManager(); + this.LOCALIZATIONMANAGER = new LocalizationManager(); } else { - this.localizationManager = injectedLocalizationManager; + this.LOCALIZATIONMANAGER = injectedLocalizationManager; } } - private JComponent serverPackCreatorLogPanel; - private GridBagConstraints constraints; private JTextArea textArea; - private JScrollPane scrollPane; - private SmartScroller smartScroller; /** * Create the tab for the serverpackcreator.log tailer in a JScrollPane with an always available vertical scrollbar @@ -64,9 +60,9 @@ public class ServerPackCreatorLogTab extends JComponent { * serverpackcreator.log entries. */ JComponent serverPackCreatorLogTab() { - serverPackCreatorLogPanel = new JPanel(false); + JComponent serverPackCreatorLogPanel = new JPanel(false); serverPackCreatorLogPanel.setLayout(new GridBagLayout()); - constraints = new GridBagConstraints(); + GridBagConstraints constraints = new GridBagConstraints(); constraints.anchor = GridBagConstraints.CENTER; constraints.fill = GridBagConstraints.BOTH; @@ -82,7 +78,7 @@ public class ServerPackCreatorLogTab extends JComponent { Tailer.create(new File("./logs/serverpackcreator.log"), new TailerListenerAdapter() { public void handle(String line) { synchronized (this) { - if (line.contains(localizationManager.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.start"))) { + if (line.contains(LOCALIZATIONMANAGER.getLocalizedString("createserverpack.log.info.buttoncreateserverpack.start"))) { textArea.setText(""); } textArea.append(line + "\n"); @@ -90,12 +86,12 @@ public class ServerPackCreatorLogTab extends JComponent { } }, 2000, false); - scrollPane = new JScrollPane( + JScrollPane scrollPane = new JScrollPane( textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); - smartScroller = new SmartScroller(scrollPane); + new SmartScroller(scrollPane); serverPackCreatorLogPanel.add(scrollPane, constraints); diff --git a/src/main/java/de/griefed/serverpackcreator/gui/SmartScroller.java b/src/main/java/de/griefed/serverpackcreator/gui/SmartScroller.java index f3f6f1ad8..ca78a636a 100644 --- a/src/main/java/de/griefed/serverpackcreator/gui/SmartScroller.java +++ b/src/main/java/de/griefed/serverpackcreator/gui/SmartScroller.java @@ -99,9 +99,9 @@ public class SmartScroller implements AdjustmentListener { public final static int START = 0; public final static int END = 1; + @SuppressWarnings("FieldMayBeFinal") private int viewportPosition; - private JScrollBar scrollBar; private boolean adjustScrollBar = true; private int previousValue = -1; @@ -150,6 +150,7 @@ public class SmartScroller implements AdjustmentListener { this.viewportPosition = viewportPosition; + JScrollBar scrollBar; if (scrollDirection == HORIZONTAL) { scrollBar = scrollPane.getHorizontalScrollBar(); } else { diff --git a/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java b/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java index 89a929341..4cdbcf5f8 100644 --- a/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java +++ b/src/main/java/de/griefed/serverpackcreator/i18n/LocalizationManager.java @@ -49,13 +49,13 @@ import java.util.*; */ public class LocalizationManager { - private static final Logger localeLogger = LogManager.getLogger(LocalizationManager.class); - private final File langPropertiesFile = new File("lang.properties"); + private static final Logger LOG = LogManager.getLogger(LocalizationManager.class); + private final File FILE_LANGPROPERTIES = new File("lang.properties"); /** * Current language of ServerPackCreator, mapped for easier further reference. */ - private Map<String, String> currentLanguage = new HashMap<>(); + private final Map<String, String> CURRENT_LANGUAGE = new HashMap<>(); /** * Localized strings which ServerPackCreator uses. @@ -65,8 +65,8 @@ public class LocalizationManager { /** * Keys that used for current language mapping. */ - private final String LANGUAGE_MAP_PATH = "language"; - private final String COUNTRY_MAP_PATH = "country"; + private final String MAP_PATH_LANGUAGE = "language"; + private final String MAP_PATH_COUNTRY = "country"; /** * Languages supported by ServerPackCreator. @@ -90,7 +90,7 @@ public class LocalizationManager { * @return File. Returns the file which will set the locale for ServerPackCreator. */ File getLangPropertiesFile() { - return langPropertiesFile; + return FILE_LANGPROPERTIES; } /** @@ -98,7 +98,7 @@ public class LocalizationManager { * @return String. Returns a String containing the currently used language. */ public String getLocale() { - return String.format("%s_%s", currentLanguage.get(LANGUAGE_MAP_PATH), currentLanguage.get(COUNTRY_MAP_PATH)); + return String.format("%s_%s", CURRENT_LANGUAGE.get(MAP_PATH_LANGUAGE), CURRENT_LANGUAGE.get(MAP_PATH_COUNTRY)); } /** @@ -118,7 +118,8 @@ public class LocalizationManager { if (lang.equalsIgnoreCase(locale)) { - localeLogger.debug("Lang is correct"); + // Can not yet use localization, as the localization manager is still being initialized. + LOG.debug("Lang is correct"); doesLanguageExist = true; break; @@ -133,19 +134,20 @@ public class LocalizationManager { langCode = locale.split("_"); - currentLanguage.put(LANGUAGE_MAP_PATH, langCode[0]); - currentLanguage.put(COUNTRY_MAP_PATH, langCode[1]); + CURRENT_LANGUAGE.put(MAP_PATH_LANGUAGE, langCode[0]); + CURRENT_LANGUAGE.put(MAP_PATH_COUNTRY, langCode[1]); } else { throw new IncorrectLanguageException(); } localeResources = ResourceBundle.getBundle(String.format("de/griefed/resources/lang/lang_%s", locale)); - localeLogger.info(String.format("Using language: %s", getLocalizedString("localeUnlocalizedName"))); - if (!currentLanguage.get(LANGUAGE_MAP_PATH).equalsIgnoreCase("en")) { + LOG.info(String.format("Using language: %s", getLocalizedString("localeUnlocalizedName"))); - localeLogger.info(String.format("%s %s", getLocalizedString("cli.usingLanguage"), getLocalizedString("localeName"))); + if (!CURRENT_LANGUAGE.get(MAP_PATH_LANGUAGE).equalsIgnoreCase("en")) { + + LOG.info(String.format("%s %s", getLocalizedString("cli.usingLanguage"), getLocalizedString("localeName"))); } writeLocaleToFile(locale); @@ -166,14 +168,14 @@ public class LocalizationManager { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream, StandardCharsets.UTF_8)); langProperties.load(bufferedReader); - localeLogger.debug(String.format("langProperties = %s", langProperties)); + LOG.debug(String.format("langProperties = %s", langProperties)); } catch (Exception ex) { - localeLogger.error(ex); + LOG.error(ex); } String langProp = langProperties.getProperty("lang"); - localeLogger.debug(langProp); + LOG.debug(langProp); boolean doesLanguageExist = false; @@ -181,7 +183,7 @@ public class LocalizationManager { if (lang.equalsIgnoreCase(langProp)) { - localeLogger.debug("Lang is correct"); + LOG.debug("Lang is correct"); doesLanguageExist = true; break; @@ -198,19 +200,19 @@ public class LocalizationManager { langCode = langProperty.split("_"); - currentLanguage.put(LANGUAGE_MAP_PATH, langCode[0]); - currentLanguage.put(COUNTRY_MAP_PATH, langCode[1]); + CURRENT_LANGUAGE.put(MAP_PATH_LANGUAGE, langCode[0]); + CURRENT_LANGUAGE.put(MAP_PATH_COUNTRY, langCode[1]); } else { throw new IncorrectLanguageException(); } - localeResources = ResourceBundle.getBundle(String.format("de/griefed/resources/lang/lang_%s", langProperties.getProperty("lang")), new Locale(currentLanguage.get(LANGUAGE_MAP_PATH), currentLanguage.get(COUNTRY_MAP_PATH))); - localeLogger.info(String.format("Using language: %s", getLocalizedString("localeUnlocalizedName"))); + localeResources = ResourceBundle.getBundle(String.format("de/griefed/resources/lang/lang_%s", langProperties.getProperty("lang")), new Locale(CURRENT_LANGUAGE.get(MAP_PATH_LANGUAGE), CURRENT_LANGUAGE.get(MAP_PATH_COUNTRY))); + LOG.info(String.format("Using language: %s", getLocalizedString("localeUnlocalizedName"))); - if (!currentLanguage.get(LANGUAGE_MAP_PATH).equalsIgnoreCase("en")) { + if (!CURRENT_LANGUAGE.get(MAP_PATH_LANGUAGE).equalsIgnoreCase("en")) { - localeLogger.info(String.format("%s %s", getLocalizedString("cli.usingLanguage"), getLocalizedString("localeName"))); + LOG.info(String.format("%s %s", getLocalizedString("cli.usingLanguage"), getLocalizedString("localeName"))); } } @@ -221,7 +223,7 @@ public class LocalizationManager { try { init("en_us"); } catch (IncorrectLanguageException e) { - localeLogger.error("Error during default localization initialization."); + LOG.error("Error during default localization initialization."); } } @@ -235,7 +237,7 @@ public class LocalizationManager { String value = localeResources.getString(languageKey); return new String(value.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); } catch (MissingResourceException ex) { - localeLogger.error(String.format("ERROR: Language key %s not found in the language file.", ex.getKey())); + LOG.error(String.format("ERROR: Language key %s not found in the language file.", ex.getKey())); System.exit(8); } return null; @@ -253,15 +255,15 @@ public class LocalizationManager { init(getLangPropertiesFile()); } catch (IncorrectLanguageException e) { - localeLogger.error("Incorrect language specified, falling back to English (United States)..."); + LOG.error("Incorrect language specified, falling back to English (United States)..."); try (BufferedWriter writer = new BufferedWriter(new FileWriter(getLangPropertiesFile()))) { if (!getLangPropertiesFile().exists()) { boolean langCreated = getLangPropertiesFile().createNewFile(); if (langCreated) { - localeLogger.debug("Lang properties file created successfully."); + LOG.debug("Lang properties file created successfully."); } else { - localeLogger.debug("Lang properties file not created."); + LOG.debug("Lang properties file not created."); } } @@ -269,7 +271,7 @@ public class LocalizationManager { writer.write(String.format("lang=en_us%n")); } catch (IOException ex) { - localeLogger.error("Error: There was an error writing the localization properties file.", ex); + LOG.error("Error: There was an error writing the localization properties file.", ex); } init(); } @@ -279,9 +281,9 @@ public class LocalizationManager { if (!getLangPropertiesFile().exists()) { boolean langCreated = getLangPropertiesFile().createNewFile(); if (langCreated) { - localeLogger.debug("Lang properties file created successfully."); + LOG.debug("Lang properties file created successfully."); } else { - localeLogger.debug("Lang properties file not created."); + LOG.debug("Lang properties file not created."); } } @@ -289,7 +291,7 @@ public class LocalizationManager { writer.write(String.format("lang=en_us%n")); } catch (IOException ex) { - localeLogger.error("Error: There was an error writing the localization properties file.", ex); + LOG.error("Error: There was an error writing the localization properties file.", ex); } init(); } @@ -308,9 +310,9 @@ public class LocalizationManager { if (!getLangPropertiesFile().exists()) { boolean langCreated = getLangPropertiesFile().createNewFile(); if (langCreated) { - localeLogger.debug("Lang properties file created successfully."); + LOG.debug("Lang properties file created successfully."); } else { - localeLogger.debug("Lang properties file not created."); + LOG.debug("Lang properties file not created."); } } @@ -318,7 +320,7 @@ public class LocalizationManager { writer.write(String.format("lang=%s%n", locale)); } catch (IOException ex) { - localeLogger.error("Error: There was an error writing the localization properties file.", ex); + LOG.error("Error: There was an error writing the localization properties file.", ex); } } } \ No newline at end of file diff --git a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java index 0ae4705a6..6bebd171f 100644 --- a/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java +++ b/src/test/java/de/griefed/serverpackcreator/CreateServerPackTest.java @@ -77,7 +77,7 @@ import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; class CreateServerPackTest { private CreateServerPack createServerPack; - private FilesSetup filesSetup; + private DefaultFiles filesSetup; private CurseCreateModpack curseCreateModpack; private LocalizationManager localizationManager; private Configuration configuration; @@ -87,7 +87,7 @@ class CreateServerPackTest { curseCreateModpack = new CurseCreateModpack(localizationManager); configuration = new Configuration(localizationManager, curseCreateModpack); createServerPack = new CreateServerPack(localizationManager, configuration, curseCreateModpack); - filesSetup = new FilesSetup(localizationManager); + filesSetup = new DefaultFiles(localizationManager); } @BeforeEach -- GitLab From c0439219b0bac5d9197f951efe91642fcc572e3d Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Fri, 7 May 2021 21:57:29 +0200 Subject: [PATCH 91/91] refactor(DI): Refactor to DefaultFiles as it is more appropriate for said class --- .../{FilesSetup.java => DefaultFiles.java} | 108 +++++++++--------- ...esSetupTest.java => DefaultFilesTest.java} | 106 ++++++++--------- 2 files changed, 107 insertions(+), 107 deletions(-) rename src/main/java/de/griefed/serverpackcreator/{FilesSetup.java => DefaultFiles.java} (70%) rename src/test/java/de/griefed/serverpackcreator/{FilesSetupTest.java => DefaultFilesTest.java} (66%) diff --git a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java b/src/main/java/de/griefed/serverpackcreator/DefaultFiles.java similarity index 70% rename from src/main/java/de/griefed/serverpackcreator/FilesSetup.java rename to src/main/java/de/griefed/serverpackcreator/DefaultFiles.java index a615f907d..4ee869963 100644 --- a/src/main/java/de/griefed/serverpackcreator/FilesSetup.java +++ b/src/main/java/de/griefed/serverpackcreator/DefaultFiles.java @@ -29,7 +29,7 @@ import java.nio.file.Paths; /** * <strong>Table of methods</strong> * <p> - * 1. {@link #FilesSetup(LocalizationManager)}<br> + * 1. {@link #DefaultFiles(LocalizationManager)}<br> * 2. {@link #getConfigFile()}<br> * 3. {@link #getOldConfigFile()}<br> * 4. {@link #getPropertiesFile()}<br> @@ -62,11 +62,11 @@ import java.nio.file.Paths; * Should an old configuration file, <em>creator.conf</em>, be detected, it is renamed to <em>serverpackcreator.conf</em> * to ensure a configuration file is present at all times. */ -public class FilesSetup { +public class DefaultFiles { - private static final Logger appLogger = LogManager.getLogger(FilesSetup.class); + private static final Logger LOG = LogManager.getLogger(DefaultFiles.class); - private LocalizationManager localizationManager; + private final LocalizationManager LOCALIZATIONMANAGER; /** * <strong>Constructor</strong><p> @@ -74,29 +74,29 @@ public class FilesSetup { * one is null. Required for use of localization. * @param injectedLocalizationManager Instance of {@link LocalizationManager} required for localized log messages. */ - public FilesSetup(LocalizationManager injectedLocalizationManager) { + public DefaultFiles(LocalizationManager injectedLocalizationManager) { if (injectedLocalizationManager == null) { - this.localizationManager = new LocalizationManager(); + this.LOCALIZATIONMANAGER = new LocalizationManager(); } else { - this.localizationManager = injectedLocalizationManager; + this.LOCALIZATIONMANAGER = injectedLocalizationManager; } } - private final File configFile = new File("serverpackcreator.conf"); - private final File oldConfigFile = new File("creator.conf"); - private final File propertiesFile = new File("server.properties"); - private final File iconFile = new File("server-icon.png"); - private final File forgeWindowsFile = new File("start-forge.bat"); - private final File forgeLinuxFile = new File("start-forge.sh"); - private final File fabricWindowsFile = new File("start-fabric.bat"); - private final File fabricLinuxFile = new File("start-fabric.sh"); + private final File FILE_CONFIG = new File("serverpackcreator.conf"); + private final File FILE_CONFIG_OLD = new File("creator.conf"); + private final File FILE_PROPERTIES = new File("server.properties"); + private final File FILE_ICON = new File("server-icon.png"); + private final File FILE_FORGE_WINDOWS = new File("start-forge.bat"); + private final File FILE_FORGE_LINUX = new File("start-forge.sh"); + private final File FILE_FABRIC_WINDOWS = new File("start-fabric.bat"); + private final File FILE_FABRIC_LINUX = new File("start-fabric.sh"); /** * Getter for serverpackcreator.conf. * @return Returns the serverpackcreator.conf-file for use in {@link #checkForConfig()} */ public File getConfigFile() { - return configFile; + return FILE_CONFIG; } /** @@ -104,7 +104,7 @@ public class FilesSetup { * @return Returns the creator.conf-file for use in {@link #checkForConfig()}. */ public File getOldConfigFile() { - return oldConfigFile; + return FILE_CONFIG_OLD; } /** @@ -112,7 +112,7 @@ public class FilesSetup { * @return Returns the server.properties-file for use in {@link #checkForProperties()} */ public File getPropertiesFile() { - return propertiesFile; + return FILE_PROPERTIES; } /** @@ -120,7 +120,7 @@ public class FilesSetup { * @return Returns the server-icon.png-file for use in {@link #checkForIcon()} */ public File getIconFile() { - return iconFile; + return FILE_ICON; } /** @@ -128,7 +128,7 @@ public class FilesSetup { * @return Returns the start-forge.bat-file for use in {@link #checkForForgeWindows()} */ public File getForgeWindowsFile() { - return forgeWindowsFile; + return FILE_FORGE_WINDOWS; } /** @@ -136,7 +136,7 @@ public class FilesSetup { * @return Returns the start-forge.sh-file for use in {@link #checkForForgeLinux()} */ public File getForgeLinuxFile() { - return forgeLinuxFile; + return FILE_FORGE_LINUX; } /** @@ -144,7 +144,7 @@ public class FilesSetup { * @return Returns the start-fabric.bat-file for use in {@link #checkForFabricWindows()} */ public File getFabricWindowsFile() { - return fabricWindowsFile; + return FILE_FABRIC_WINDOWS; } /** @@ -152,7 +152,7 @@ public class FilesSetup { * @return Returns the start-fabric.sh-file for use in {@link #checkForFabricLinux()} */ public File getFabricLinuxFile() { - return fabricLinuxFile; + return FILE_FABRIC_LINUX; } /** Calls individual methods which check for existence of default files. Only this method should be called to check @@ -162,10 +162,10 @@ public class FilesSetup { * and log. */ void filesSetup() { - appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.filessetup.enter")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.info.filessetup.enter")); try { Files.createDirectories(Paths.get("./server_files")); } - catch (IOException ex) { appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.filessetup"), ex); } + catch (IOException ex) { LOG.error(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.error.filessetup"), ex); } boolean doesConfigExist = checkForConfig(); boolean doesFabricLinuxExist = checkForFabricLinux(); @@ -184,14 +184,14 @@ public class FilesSetup { doesPropertiesExist || doesIconExist) { - appLogger.warn(localizationManager.getLocalizedString("filessetup.log.warn.filessetup.warning0")); - appLogger.warn(localizationManager.getLocalizedString("filessetup.log.warn.filessetup.warning1")); - appLogger.warn(localizationManager.getLocalizedString("filessetup.log.warn.filessetup.warning2")); - appLogger.warn(localizationManager.getLocalizedString("filessetup.log.warn.filessetup.warning3")); - appLogger.warn(localizationManager.getLocalizedString("filessetup.log.warn.filessetup.warning0")); + LOG.warn(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.warn.filessetup.warning0")); + LOG.warn(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.warn.filessetup.warning1")); + LOG.warn(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.warn.filessetup.warning2")); + LOG.warn(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.warn.filessetup.warning3")); + LOG.warn(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.warn.filessetup.warning0")); } else { - appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.filessetup.finish")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.info.filessetup.finish")); } } /** Check for old config file, if found rename to new name. If neither old nor new config file can be found, a new @@ -207,27 +207,27 @@ public class FilesSetup { boolean isOldConfigDeleted = getOldConfigFile().delete(); if (isOldConfigDeleted) { - appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.chechforconfig.old")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.info.chechforconfig.old")); } } catch (IOException ex) { - appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.checkforconfig.old"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.error.checkforconfig.old"), ex); } } else if (!getConfigFile().exists()) { try { - InputStream link = (FilesSetup.class.getResourceAsStream(String.format("/de/griefed/resources/%s", getConfigFile().getName()))); + InputStream link = (DefaultFiles.class.getResourceAsStream(String.format("/de/griefed/resources/%s", getConfigFile().getName()))); if (link != null) { Files.copy(link, getConfigFile().getAbsoluteFile().toPath()); link.close(); } - appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.checkforconfig.config")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.info.checkforconfig.config")); firstRun = true; } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.FileAlreadyExistsException")) { - appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.checkforconfig.config"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.error.checkforconfig.config"), ex); firstRun = true; } } @@ -243,18 +243,18 @@ public class FilesSetup { boolean firstRun = false; if (!getFabricLinuxFile().exists()) { try { - InputStream link = (FilesSetup.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getFabricLinuxFile().getName()))); + InputStream link = (DefaultFiles.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getFabricLinuxFile().getName()))); if (link != null) { Files.copy(link, Paths.get(String.format("./server_files/%s", getFabricLinuxFile()))); link.close(); } - appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.checkforfabriclinux")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.info.checkforfabriclinux")); firstRun = true; } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.FileAlreadyExistsException")) { - appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.checkforfabriclinux"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.error.checkforfabriclinux"), ex); firstRun = true; } } @@ -270,18 +270,18 @@ public class FilesSetup { boolean firstRun = false; if (!getFabricWindowsFile().exists()) { try { - InputStream link = (FilesSetup.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getFabricWindowsFile().getName()))); + InputStream link = (DefaultFiles.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getFabricWindowsFile().getName()))); if (link != null) { Files.copy(link, Paths.get(String.format("./server_files/%s", getFabricWindowsFile()))); link.close(); } - appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.checkforfabricwindows")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.info.checkforfabricwindows")); firstRun = true; } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.FileAlreadyExistsException")) { - appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.checkforfabricwindows"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.error.checkforfabricwindows"), ex); firstRun = true; } } @@ -297,18 +297,18 @@ public class FilesSetup { boolean firstRun = false; if (!getForgeLinuxFile().exists()) { try { - InputStream link = (FilesSetup.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getForgeLinuxFile().getName()))); + InputStream link = (DefaultFiles.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getForgeLinuxFile().getName()))); if (link != null) { Files.copy(link, Paths.get(String.format("./server_files/%s", getForgeLinuxFile()))); link.close(); } - appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.checkforforgelinux")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.info.checkforforgelinux")); firstRun = true; } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.FileAlreadyExistsException")) { - appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.checkforforgelinux"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.error.checkforforgelinux"), ex); firstRun = true; } } @@ -324,18 +324,18 @@ public class FilesSetup { boolean firstRun = false; if (!getForgeWindowsFile().exists()) { try { - InputStream link = (FilesSetup.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getForgeWindowsFile().getName()))); + InputStream link = (DefaultFiles.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getForgeWindowsFile().getName()))); if (link != null) { Files.copy(link, Paths.get(String.format("./server_files/%s", getForgeWindowsFile()))); link.close(); } - appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.checkforforgewindows")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.info.checkforforgewindows")); firstRun = true; } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.FileAlreadyExistsException")) { - appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.checkforforgewindows"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.error.checkforforgewindows"), ex); firstRun = true; } } @@ -351,18 +351,18 @@ public class FilesSetup { boolean firstRun = false; if (!getPropertiesFile().exists()) { try { - InputStream link = (FilesSetup.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getPropertiesFile().getName()))); + InputStream link = (DefaultFiles.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getPropertiesFile().getName()))); if (link != null) { Files.copy(link, Paths.get(String.format("./server_files/%s", getPropertiesFile()))); link.close(); } - appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.checkforproperties")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.info.checkforproperties")); firstRun = true; } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.FileAlreadyExistsException")) { - appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.checkforproperties"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.error.checkforproperties"), ex); firstRun = true; } } @@ -378,18 +378,18 @@ public class FilesSetup { boolean firstRun = false; if (!getIconFile().exists()) { try { - InputStream link = (FilesSetup.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getIconFile().getName()))); + InputStream link = (DefaultFiles.class.getResourceAsStream(String.format("/de/griefed/resources/server_files/%s", getIconFile().getName()))); if (link != null) { Files.copy(link, Paths.get(String.format("./server_files/%s", getIconFile()))); link.close(); } - appLogger.info(localizationManager.getLocalizedString("filessetup.log.info.checkforicon")); + LOG.info(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.info.checkforicon")); firstRun = true; } catch (IOException ex) { if (!ex.toString().startsWith("java.nio.file.FileAlreadyExistsException")) { - appLogger.error(localizationManager.getLocalizedString("filessetup.log.error.checkforicon"), ex); + LOG.error(LOCALIZATIONMANAGER.getLocalizedString("filessetup.log.error.checkforicon"), ex); firstRun = true; } } diff --git a/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java b/src/test/java/de/griefed/serverpackcreator/DefaultFilesTest.java similarity index 66% rename from src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java rename to src/test/java/de/griefed/serverpackcreator/DefaultFilesTest.java index 902049e9f..8f7b5c7f5 100644 --- a/src/test/java/de/griefed/serverpackcreator/FilesSetupTest.java +++ b/src/test/java/de/griefed/serverpackcreator/DefaultFilesTest.java @@ -35,40 +35,40 @@ import java.util.Comparator; /** * <strong>Table of tests</strong> * <p> - * 1. {@link #FilesSetupTest()} tests {@link FilesSetup#FilesSetup(LocalizationManager)}<br> - * 2. {@link #getConfigFileTest()} tests {@link FilesSetup#getConfigFile()}<br> - * 3. {@link #getOldConfigFileTest()} tests {@link FilesSetup#getOldConfigFile()}<br> - * 4. {@link #getPropertiesFileTest()} tests {@link FilesSetup#getPropertiesFile()}<br> - * 5. {@link #getIconFileTest()} tests {@link FilesSetup#getIconFile()}<br> - * 6. {@link #getForgeWindowsFileTest()} tests {@link FilesSetup#getForgeWindowsFile()}<br> - * 7. {@link #getForgeLinuxFileTest()} tests {@link FilesSetup#getForgeLinuxFile()}<br> - * 8. {@link #getFabricWindowsFileTest()} tests {@link FilesSetup#getFabricWindowsFile()}<br> - * 9. {@link #getFabricLinuxFileTest()} tests {@link FilesSetup#getFabricLinuxFile()}<br> - * 10.{@link #checkForConfigTestOld} tests {@link FilesSetup#checkForConfig()}<br> - * 11.{@link #checkForConfigTest} tests {@link FilesSetup#checkForConfig()}<br> - * 12.{@link #checkForConfigTestNew} tests {@link FilesSetup#checkForConfig()}<br> - * 13.{@link #checkForFabricLinuxTest} tests {@link FilesSetup#checkForFabricLinux()}<br> - * 14.{@link #checkForFabricLinuxTestNew} tests {@link FilesSetup#checkForForgeLinux()}<br> - * 15.{@link #checkForFabricWindowsTest} tests {@link FilesSetup#checkForFabricWindows()}<br> - * 16.{@link #checkForFabricWindowsTestNew} tests {@link FilesSetup#checkForFabricWindows()}<br> - * 17.{@link #checkForForgeLinuxTest} tests {@link FilesSetup#checkForForgeLinux()}<br> - * 18.{@link #checkForForgeLinuxTestNew} tests {@link FilesSetup#checkForForgeLinux()}<br> - * 19.{@link #checkForForgeWindowsTest} tests {@link FilesSetup#checkForForgeWindows()}<br> - * 20.{@link #checkForForgeWindowsTestNew} tests {@link FilesSetup#checkForForgeWindows()}<br> - * 21.{@link #checkForPropertiesTest} tests {@link FilesSetup#checkForProperties()}<br> - * 22.{@link #checkForPropertiesTestNew} tests {@link FilesSetup#checkForProperties()}<br> - * 23.{@link #checkForIconTest} tests {@link FilesSetup#checkForIcon()}<br> - * 24.{@link #checkForIconTestNew} tests {@link FilesSetup#checkForIcon()}<br> - * 25.{@link #filesSetupTest} tests {@link FilesSetup#filesSetup()} + * 1. {@link #DefaultFilesTest()} tests {@link DefaultFiles#DefaultFiles(LocalizationManager)}<br> + * 2. {@link #getConfigFileTest()} tests {@link DefaultFiles#getConfigFile()}<br> + * 3. {@link #getOldConfigFileTest()} tests {@link DefaultFiles#getOldConfigFile()}<br> + * 4. {@link #getPropertiesFileTest()} tests {@link DefaultFiles#getPropertiesFile()}<br> + * 5. {@link #getIconFileTest()} tests {@link DefaultFiles#getIconFile()}<br> + * 6. {@link #getForgeWindowsFileTest()} tests {@link DefaultFiles#getForgeWindowsFile()}<br> + * 7. {@link #getForgeLinuxFileTest()} tests {@link DefaultFiles#getForgeLinuxFile()}<br> + * 8. {@link #getFabricWindowsFileTest()} tests {@link DefaultFiles#getFabricWindowsFile()}<br> + * 9. {@link #getFabricLinuxFileTest()} tests {@link DefaultFiles#getFabricLinuxFile()}<br> + * 10.{@link #checkForConfigTestOld} tests {@link DefaultFiles#checkForConfig()}<br> + * 11.{@link #checkForConfigTest} tests {@link DefaultFiles#checkForConfig()}<br> + * 12.{@link #checkForConfigTestNew} tests {@link DefaultFiles#checkForConfig()}<br> + * 13.{@link #checkForFabricLinuxTest} tests {@link DefaultFiles#checkForFabricLinux()}<br> + * 14.{@link #checkForFabricLinuxTestNew} tests {@link DefaultFiles#checkForForgeLinux()}<br> + * 15.{@link #checkForFabricWindowsTest} tests {@link DefaultFiles#checkForFabricWindows()}<br> + * 16.{@link #checkForFabricWindowsTestNew} tests {@link DefaultFiles#checkForFabricWindows()}<br> + * 17.{@link #checkForForgeLinuxTest} tests {@link DefaultFiles#checkForForgeLinux()}<br> + * 18.{@link #checkForForgeLinuxTestNew} tests {@link DefaultFiles#checkForForgeLinux()}<br> + * 19.{@link #checkForForgeWindowsTest} tests {@link DefaultFiles#checkForForgeWindows()}<br> + * 20.{@link #checkForForgeWindowsTestNew} tests {@link DefaultFiles#checkForForgeWindows()}<br> + * 21.{@link #checkForPropertiesTest} tests {@link DefaultFiles#checkForProperties()}<br> + * 22.{@link #checkForPropertiesTestNew} tests {@link DefaultFiles#checkForProperties()}<br> + * 23.{@link #checkForIconTest} tests {@link DefaultFiles#checkForIcon()}<br> + * 24.{@link #checkForIconTestNew} tests {@link DefaultFiles#checkForIcon()}<br> + * 25.{@link #filesSetupTest} tests {@link DefaultFiles#filesSetup()} */ -class FilesSetupTest { +class DefaultFilesTest { - private FilesSetup filesSetup; + private DefaultFiles defaultFiles; private LocalizationManager localizationManager; - FilesSetupTest() { + DefaultFilesTest() { localizationManager = new LocalizationManager(); - filesSetup = new FilesSetup(localizationManager); + defaultFiles = new DefaultFiles(localizationManager); } @BeforeEach @@ -79,49 +79,49 @@ class FilesSetupTest { @Test void getConfigFileTest() { - File file = filesSetup.getConfigFile(); + File file = defaultFiles.getConfigFile(); Assertions.assertNotNull(file); } @Test void getOldConfigFileTest() { - File file = filesSetup.getOldConfigFile(); + File file = defaultFiles.getOldConfigFile(); Assertions.assertNotNull(file); } @Test void getPropertiesFileTest() { - File file = filesSetup.getPropertiesFile(); + File file = defaultFiles.getPropertiesFile(); Assertions.assertNotNull(file); } @Test void getIconFileTest() { - File file = filesSetup.getIconFile(); + File file = defaultFiles.getIconFile(); Assertions.assertNotNull(file); } @Test void getForgeWindowsFileTest() { - File file = filesSetup.getForgeWindowsFile(); + File file = defaultFiles.getForgeWindowsFile(); Assertions.assertNotNull(file); } @Test void getForgeLinuxFileTest() { - File file = filesSetup.getForgeLinuxFile(); + File file = defaultFiles.getForgeLinuxFile(); Assertions.assertNotNull(file); } @Test void getFabricWindowsFileTest() { - File file = filesSetup.getFabricWindowsFile(); + File file = defaultFiles.getFabricWindowsFile(); Assertions.assertNotNull(file); } @Test void getFabricLinuxFileTest() { - File file = filesSetup.getFabricLinuxFile(); + File file = defaultFiles.getFabricLinuxFile(); Assertions.assertNotNull(file); } @@ -130,7 +130,7 @@ class FilesSetupTest { void checkForConfigTestOld() throws IOException { File oldConfigFile = new File("creator.conf"); oldConfigFile.createNewFile(); - Assertions.assertFalse(filesSetup.checkForConfig()); + Assertions.assertFalse(defaultFiles.checkForConfig()); Assertions.assertTrue(new File("serverpackcreator.conf").exists()); new File("serverpackcreator.conf").delete(); new File("creator.conf").delete(); @@ -141,7 +141,7 @@ class FilesSetupTest { void checkForConfigTest() throws IOException { File configFile = new File("serverpackcreator.conf"); configFile.createNewFile(); - Assertions.assertFalse(filesSetup.checkForConfig()); + Assertions.assertFalse(defaultFiles.checkForConfig()); configFile.delete(); } @@ -150,7 +150,7 @@ class FilesSetupTest { void checkForConfigTestNew() { File configFile = new File("./serverpackcreator.conf"); configFile.delete(); - Assertions.assertTrue(filesSetup.checkForConfig()); + Assertions.assertTrue(defaultFiles.checkForConfig()); configFile.delete(); } @@ -159,7 +159,7 @@ class FilesSetupTest { void checkForFabricLinuxTest() throws IOException { File fabricLinux = new File("start-fabric.sh"); fabricLinux.createNewFile(); - Assertions.assertFalse(filesSetup.checkForFabricLinux()); + Assertions.assertFalse(defaultFiles.checkForFabricLinux()); fabricLinux.delete(); } @@ -169,7 +169,7 @@ class FilesSetupTest { Files.createDirectories(Paths.get("./server_files")); File fabricLinux = new File("./server_files/start-fabric.sh"); fabricLinux.delete(); - Assertions.assertTrue(filesSetup.checkForFabricLinux()); + Assertions.assertTrue(defaultFiles.checkForFabricLinux()); fabricLinux.delete(); } @@ -178,7 +178,7 @@ class FilesSetupTest { void checkForFabricWindowsTest() throws IOException { File fabricWindows = new File("start-fabric.bat"); fabricWindows.createNewFile(); - Assertions.assertFalse(filesSetup.checkForFabricWindows()); + Assertions.assertFalse(defaultFiles.checkForFabricWindows()); fabricWindows.delete(); } @@ -188,7 +188,7 @@ class FilesSetupTest { Files.createDirectories(Paths.get("./server_files")); File fabricWindows = new File("./server_files/start-fabric.bat"); fabricWindows.delete(); - Assertions.assertTrue(filesSetup.checkForFabricWindows()); + Assertions.assertTrue(defaultFiles.checkForFabricWindows()); fabricWindows.delete(); } @@ -197,7 +197,7 @@ class FilesSetupTest { void checkForForgeLinuxTest() throws IOException { File forgeLinux = new File("start-forge.sh"); forgeLinux.createNewFile(); - Assertions.assertFalse(filesSetup.checkForForgeLinux()); + Assertions.assertFalse(defaultFiles.checkForForgeLinux()); forgeLinux.delete(); } @@ -207,7 +207,7 @@ class FilesSetupTest { Files.createDirectories(Paths.get("./server_files")); File forgeLinux = new File("./server_files/start-forge.sh"); forgeLinux.delete(); - Assertions.assertTrue(filesSetup.checkForForgeLinux()); + Assertions.assertTrue(defaultFiles.checkForForgeLinux()); forgeLinux.delete(); } @@ -216,7 +216,7 @@ class FilesSetupTest { void checkForForgeWindowsTest() throws IOException { File forgeWindows = new File("start-forge.bat"); forgeWindows.createNewFile(); - Assertions.assertFalse(filesSetup.checkForForgeWindows()); + Assertions.assertFalse(defaultFiles.checkForForgeWindows()); forgeWindows.delete(); } @@ -226,7 +226,7 @@ class FilesSetupTest { Files.createDirectories(Paths.get("./server_files")); File forgeWindows = new File("./server_files/start-forge.bat"); forgeWindows.delete(); - Assertions.assertTrue(filesSetup.checkForForgeWindows()); + Assertions.assertTrue(defaultFiles.checkForForgeWindows()); forgeWindows.delete(); } @@ -235,7 +235,7 @@ class FilesSetupTest { void checkForPropertiesTest() throws IOException { File properties = new File("server.properties"); properties.createNewFile(); - Assertions.assertFalse(filesSetup.checkForProperties()); + Assertions.assertFalse(defaultFiles.checkForProperties()); properties.delete(); } @@ -245,7 +245,7 @@ class FilesSetupTest { Files.createDirectories(Paths.get("./server_files")); File properties = new File("./server_files/server.properties"); properties.delete(); - Assertions.assertTrue(filesSetup.checkForProperties()); + Assertions.assertTrue(defaultFiles.checkForProperties()); properties.delete(); } @@ -254,7 +254,7 @@ class FilesSetupTest { void checkForIconTest() throws IOException { File icon = new File("server-icon.png"); icon.createNewFile(); - Assertions.assertFalse(filesSetup.checkForIcon()); + Assertions.assertFalse(defaultFiles.checkForIcon()); icon.delete(); } @@ -264,14 +264,14 @@ class FilesSetupTest { Files.createDirectories(Paths.get("./server_files")); File icon = new File("./server_files/server-icon.png"); icon.delete(); - Assertions.assertTrue(filesSetup.checkForIcon()); + Assertions.assertTrue(defaultFiles.checkForIcon()); icon.delete(); } @SuppressWarnings("ResultOfMethodCallIgnored") @Test void filesSetupTest() throws IOException { - filesSetup.filesSetup(); + defaultFiles.filesSetup(); Assertions.assertTrue(new File("./server_files").isDirectory()); Assertions.assertTrue(new File("./server_files/server.properties").exists()); Assertions.assertTrue(new File("./server_files/server-icon.png").exists()); -- GitLab