diff --git a/src/corrodias/minecraft/landgenerator/Main.java b/src/corrodias/minecraft/landgenerator/Main.java index 504cfb5..bfe1888 100644 --- a/src/corrodias/minecraft/landgenerator/Main.java +++ b/src/corrodias/minecraft/landgenerator/Main.java @@ -32,9 +32,11 @@ import java.util.logging.Logger; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; -import morlok8k.minecraft.landgenerator.DownloadFile; -import morlok8k.minecraft.landgenerator.MD5; -import morlok8k.minecraft.landgenerator.Readme_and_HelpInfo; +import morlok8k.minecraft.landgenerator.MLG_DownloadFile; +import morlok8k.minecraft.landgenerator.MLG_MD5; +import morlok8k.minecraft.landgenerator.MLG_Readme_and_HelpInfo; +import morlok8k.minecraft.landgenerator.MLG_input_CLI; +import morlok8k.minecraft.landgenerator.MLG_StringArrayParse; import org.jnbt.CompoundTag; import org.jnbt.IntTag; @@ -87,7 +89,7 @@ public class Main { private int zRange = 0; private Integer xOffset = null; private Integer zOffset = null; - private boolean verbose = false; + private static boolean verbose = false; private boolean alternate = false; private static boolean dontWait = false; private static boolean waitSave = false; @@ -113,7 +115,7 @@ public class Main { private static String MLG_Current_Hash = null; private static int inf_loop_protect_BuildID = 0; private static boolean flag_downloadedBuildID = false; - private static Scanner sc = new Scanner(System.in); + public static Scanner sc = new Scanner(System.in); private static ArrayList timeStamps = new ArrayList(); @@ -191,13 +193,24 @@ public class Main { if (args.length == 0) { out("Please Enter the size of world you want. Example: X:1000 Z:1000"); outP(MLG + "X:"); - xRange = getInt("X:"); + xRange = MLG_input_CLI.getInt("X:"); outP(MLG + "Z:"); - zRange = getInt("Z:"); + zRange = MLG_input_CLI.getInt("Z:"); args = new String[] { String.valueOf(xRange), String.valueOf(zRange) }; } + // check for -nowait, and remove from arguments if it exists. (we remove it for compatibility reasons with the rest of the existing code.) + // (-nowait is the only universal switch - it can be used with anything. its basically for scripting, as it turns off the 10sec wait for human readability) + String[] newArgs = new String[args.length]; + newArgs = args; + newArgs = MLG_StringArrayParse.Parse(newArgs, "-n"); + newArgs = MLG_StringArrayParse.Parse(newArgs, "-nowait"); + if (!(args.equals(newArgs))) { + dontWait = true; + args = newArgs; + } + if (args[0].equalsIgnoreCase("-version") || args[0].equalsIgnoreCase("-help") || args[0].equals("/?")) { @@ -370,8 +383,8 @@ public class Main { } catch (NumberFormatException ex) { err("Invalid X or Z argument."); err("Please Enter the size of world you want. Example: X:1000 Z:1000"); - xRange = getInt("X:"); - zRange = getInt("Z:"); + xRange = MLG_input_CLI.getInt("X:"); + zRange = MLG_input_CLI.getInt("Z:"); //return; } @@ -395,10 +408,6 @@ public class Main { ignoreWarnings = true; out("Notice: Warnings from Server are Ignored"); - } else if (nextSwitch.equals("-nowait") || nextSwitch.equals("-n")) { - dontWait = true; - out("Notice: Not pausing for anything..."); - } else if (nextSwitch.equals("-alt") || nextSwitch.equals("-a")) { alternate = true; out("Notice: Using Alternate Launching"); @@ -1096,7 +1105,7 @@ public class Main { */ private static void readMe(String readmeFile) { - Readme_and_HelpInfo.readMe(readmeFile); + MLG_Readme_and_HelpInfo.readMe(readmeFile); } @@ -1109,8 +1118,8 @@ public class Main { * @return Boolean: true if download was successful, false if download wasn't */ private static boolean downloadFile(String URL, boolean Output) { - //This exists so I don't need to type "DownloadFile.downloadFile" every time. - return DownloadFile.downloadFile(URL, Output); + //This exists so I don't need to type "MLG_DownloadFile.downloadFile" every time. + return MLG_DownloadFile.downloadFile(URL, Output); } /** @@ -1162,7 +1171,7 @@ public class Main { MLG_Current_Hash = fileMD5(MLGFileName); // out(hash + " " + MLGFileName);® } catch (Exception e) { - out("Error: MD5 from file failed"); + out("Error: MLG_MD5 from file failed"); e.printStackTrace(); } } @@ -1266,7 +1275,7 @@ public class Main { MLG_Current_Hash = fileMD5(MLGFileName); // out(hash + " " + MLGFileName); } catch (Exception e) { - out("Error: MD5 from file failed"); + out("Error: MLG_MD5 from file failed"); e.printStackTrace(); } } @@ -1497,13 +1506,13 @@ public class Main { } /** - * This gets the MD5 of a file
+ * This gets the MLG_MD5 of a file
* * @author Morlok8k */ private static String fileMD5(String fileName) throws NoSuchAlgorithmException, FileNotFoundException { - return MD5.fileMD5(fileName); + return MLG_MD5.fileMD5(fileName); } /** @@ -1517,7 +1526,7 @@ public class Main { */ private static String showHelp(boolean SysOut) { - return Readme_and_HelpInfo.showHelp(SysOut); + return MLG_Readme_and_HelpInfo.showHelp(SysOut); } /** @@ -1884,24 +1893,6 @@ public class Main { System.out.print(str); } - /** - * getInt(String msg) - outputs a message, will only accept a valid integer from keyboard - * - * @param msg - * String - * @return int - * @author Morlok8k - */ - private static int getInt(String msg) { - - while (!sc.hasNextInt()) { - sc.nextLine(); - outP(MLG + "Invalid Input. " + msg); - } - return sc.nextInt(); - - } - /** * waits ten seconds. outputs 10%, 20%, etc after each second. * @@ -2003,6 +1994,16 @@ public class Main { + String.format("%d " + ((seconds % 60) == 1 ? "Second" : "Seconds"), seconds % 60); + if (!(verbose)) { + int end = took.indexOf(","); + if (end == -1) { + end = took.length(); + } else { + end = end - 1; + } + took = took.substring(0, end); + } + return (took); } diff --git a/src/morlok8k/minecraft/landgenerator/DownloadFile.java b/src/morlok8k/minecraft/landgenerator/MLG_DownloadFile.java similarity index 98% rename from src/morlok8k/minecraft/landgenerator/DownloadFile.java rename to src/morlok8k/minecraft/landgenerator/MLG_DownloadFile.java index fc75043..a666bab 100644 --- a/src/morlok8k/minecraft/landgenerator/DownloadFile.java +++ b/src/morlok8k/minecraft/landgenerator/MLG_DownloadFile.java @@ -12,7 +12,7 @@ import org.w3c.bert_bos.UTF8URL.Unescape; import corrodias.minecraft.landgenerator.Main; -public class DownloadFile { +public class MLG_DownloadFile { /** * diff --git a/src/morlok8k/minecraft/landgenerator/MD5.java b/src/morlok8k/minecraft/landgenerator/MLG_MD5.java similarity index 98% rename from src/morlok8k/minecraft/landgenerator/MD5.java rename to src/morlok8k/minecraft/landgenerator/MLG_MD5.java index e7badbe..1538a72 100644 --- a/src/morlok8k/minecraft/landgenerator/MD5.java +++ b/src/morlok8k/minecraft/landgenerator/MLG_MD5.java @@ -9,7 +9,7 @@ import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Locale; -public class MD5 { +public class MLG_MD5 { /** * This gets the MD5 of a file
diff --git a/src/morlok8k/minecraft/landgenerator/rcon_MLG.java b/src/morlok8k/minecraft/landgenerator/MLG_RCON.java similarity index 97% rename from src/morlok8k/minecraft/landgenerator/rcon_MLG.java rename to src/morlok8k/minecraft/landgenerator/MLG_RCON.java index e3e83fc..ce8bb1d 100644 --- a/src/morlok8k/minecraft/landgenerator/rcon_MLG.java +++ b/src/morlok8k/minecraft/landgenerator/MLG_RCON.java @@ -2,7 +2,7 @@ package morlok8k.minecraft.landgenerator; import corrodias.minecraft.landgenerator.Main; -public class rcon_MLG { +public class MLG_RCON { /** * connects to server using RCON, sends a message, and disconnects. Not Functional yet. diff --git a/src/morlok8k/minecraft/landgenerator/Readme_and_HelpInfo.java b/src/morlok8k/minecraft/landgenerator/MLG_Readme_and_HelpInfo.java similarity index 99% rename from src/morlok8k/minecraft/landgenerator/Readme_and_HelpInfo.java rename to src/morlok8k/minecraft/landgenerator/MLG_Readme_and_HelpInfo.java index c76ae65..ca5e155 100644 --- a/src/morlok8k/minecraft/landgenerator/Readme_and_HelpInfo.java +++ b/src/morlok8k/minecraft/landgenerator/MLG_Readme_and_HelpInfo.java @@ -2,7 +2,7 @@ package morlok8k.minecraft.landgenerator; import corrodias.minecraft.landgenerator.Main; -public class Readme_and_HelpInfo { +public class MLG_Readme_and_HelpInfo { static String newLine = Main.newLine; static String MLGFileNameShort = Main.MLGFileNameShort; diff --git a/src/morlok8k/minecraft/landgenerator/MLG_StringArrayParse.java b/src/morlok8k/minecraft/landgenerator/MLG_StringArrayParse.java new file mode 100644 index 0000000..5dc20b6 --- /dev/null +++ b/src/morlok8k/minecraft/landgenerator/MLG_StringArrayParse.java @@ -0,0 +1,49 @@ +package morlok8k.minecraft.landgenerator; + +public class MLG_StringArrayParse { + + public static String[] Parse(String[] array, String ParseOut) { + + //There is probably a better way to do this. + //We input a String[] array, and a String. + //if the String matches one inside the array, it gets "deleted" + //(actually a new String[] without it is returned) + + String[] workingArray = new String[array.length]; //workingArray is our working array. we don't modify the original. + + boolean removed = false; + + try { + + int ii = 0; + for (int i = 0; i < array.length; i++) { + workingArray[ii] = array[i]; // copy + if ((array[i].equals(ParseOut)) && (removed == false)) { // we only remove the first match! + workingArray[ii] = null; // we make sure this is set to null (if the last arg is the match it would otherwise be copied... granted it would later be removed... but whatever.) + ii = ii - 1; // we just simply move back one + removed = true; // set our flag + } + ii++; + } + + } catch (Exception ex) { + System.err.println("Something went wrong! (Parsing Error?)"); + ex.fillInStackTrace(); + return array; //we got some error... return the original array, just in case. + } + + if (removed) { + // at this point, workingArray has null for its last string. we need to remove it. + String[] returnArray = new String[workingArray.length - 1]; + for (int i = 0; i < returnArray.length; i++) { + returnArray[i] = workingArray[i]; + } + + return returnArray; + } else { + return array; //no changes have been done, return the original array + } + + } + +} diff --git a/src/morlok8k/minecraft/landgenerator/MLG_input_CLI.java b/src/morlok8k/minecraft/landgenerator/MLG_input_CLI.java new file mode 100644 index 0000000..bb64a82 --- /dev/null +++ b/src/morlok8k/minecraft/landgenerator/MLG_input_CLI.java @@ -0,0 +1,25 @@ +package morlok8k.minecraft.landgenerator; + +import corrodias.minecraft.landgenerator.Main; + +public class MLG_input_CLI { + + /** + * getInt(String msg) - outputs a message, will only accept a valid integer from keyboard + * + * @param msg + * String + * @return int + * @author Morlok8k + */ + public static int getInt(String msg) { + + while (!(Main.sc.hasNextInt())) { + Main.sc.nextLine(); + Main.outP(Main.MLG + "Invalid Input. " + msg); + } + return Main.sc.nextInt(); + + } + +}