From a2a3e75745722557e68cf9abaa190a07c5a66c52 Mon Sep 17 00:00:00 2001 From: Morlok8k Date: Fri, 4 Nov 2011 08:42:29 -0700 Subject: [PATCH] 1.6.0 (test26) --- README | 10 +- bin/MLG-BuildID | 1 + bin/MinecraftLandGenerator.conf | 4 +- bin/MinecraftLandGenerator.jar | Bin 41687 -> 41976 bytes .../minecraft/landgenerator/Main.java | 157 ++++++++++-------- 5 files changed, 99 insertions(+), 73 deletions(-) diff --git a/README b/README index 459161f..42cfa67 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -Minecraft Land Generator version 1.6.0 Testing 22 +Minecraft Land Generator version 1.6.0 Testing 26 Updated November 4, 2011 @@ -24,9 +24,10 @@ Version History: Morlok8k: 1.6.0 -- Added the ability to download files from the internet (specifically for the BuildID file, and conf file) +- Added the ability to download files from the internet - Added the ability to check what version the .jar is. (Using MD5 hashes, timestamps, and the BuildID file) -- COde Refactoring +- Added "-update" to download new versions of MLG directly from github. +- Code Refactoring - Code Formatting - Code Optimization @@ -125,6 +126,9 @@ Switches: -y# : set the X offset to generate land around (example: -y0) Other options: + java -jar MinecraftLandGenerator.jar -update + Checks for and downloads new versions of MLG online. + java -jar MinecraftLandGenerator.jar -printspawn java -jar MinecraftLandGenerator.jar -ps Outputs the current world's spawn point coordinates. diff --git a/bin/MLG-BuildID b/bin/MLG-BuildID index 92203bb..97b432c 100644 --- a/bin/MLG-BuildID +++ b/bin/MLG-BuildID @@ -4,3 +4,4 @@ E77F9F6977FA5BE75D81CA8E3584DCF8=1320404362000#MLG v1.6.0 Testing 16 867265064E26F0F83EAC586C80ED5604=1320416550000# MLG v1.6.0 Testing 21 A176A5BC42F9BBDDE2F9D38D0B761DE0=1320416854000# MLG v1.6.0 Testing 22 +B34874112FC61567034E9988C8D576D1=1320421331000# MLG v1.6.0 Testing 26 diff --git a/bin/MinecraftLandGenerator.conf b/bin/MinecraftLandGenerator.conf index acb8c29..b986238 100644 --- a/bin/MinecraftLandGenerator.conf +++ b/bin/MinecraftLandGenerator.conf @@ -1,6 +1,6 @@ -#Minecraft Land Generator Configuration File: Version: 1.6.0 Testing 22 +#Minecraft Land Generator Configuration File: Version: 1.6.0 Testing 26 #Authors: Corrodias, Morlok8k, pr0f1x -#Auto-Generated: Friday, November 4, 2011 at 7:28 AM Pacific Daylight Time +#Auto-Generated: Friday, November 4, 2011 at 8:42 AM Pacific Daylight Time #Line to run server: Java=java -Djava.awt.headless=true -Djline.terminal=jline.UnsupportedTerminal -Duser.language=en -Xms1024m -Xmx1024m -Xincgc -jar minecraft_server.jar nogui diff --git a/bin/MinecraftLandGenerator.jar b/bin/MinecraftLandGenerator.jar index a0d2d175b68c5477ef82a5cd2e1ff1ecaae8e47c..1165ce69dcf8c79363fd8420efdc86508f818dab 100755 GIT binary patch delta 23675 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 delta 23372 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 Z^5hAz!(aXXpL2RisV=rjKHA^$e*l@>jEn#P diff --git a/src/corrodias/minecraft/landgenerator/Main.java b/src/corrodias/minecraft/landgenerator/Main.java index 674b20c..7b0b821 100644 --- a/src/corrodias/minecraft/landgenerator/Main.java +++ b/src/corrodias/minecraft/landgenerator/Main.java @@ -45,10 +45,14 @@ import org.jnbt.Tag; * @author Corrodias, Morlok8k, pr0f1x * */ +/** + * @author morlok8k + * + */ public class Main { // Version Number! - private static final String VERSION = "1.6.0 Testing 22"; + private static final String VERSION = "1.6.0 Testing 26"; private static final String AUTHORS = "Corrodias, Morlok8k, pr0f1x"; private static final String fileSeparator = System.getProperty("file.separator"); @@ -101,6 +105,7 @@ public class Main { private static boolean isCompiledAsJar = false; private static String MLG_Current_Hash = null; private static int inf_loop_protect_BuildID = 0; + private static ArrayList timeStamps = new ArrayList(); private static final String github_MLG_Conf_URL = "https://raw.github.com/Morlok8k/MinecraftLandGenerator/master/bin/MinecraftLandGenerator.conf"; @@ -113,7 +118,7 @@ public class Main { ////// - private static final boolean testing = false; // a constant to display more output when debugging + private static final boolean testing = false; // display more output when debugging ////// @@ -180,7 +185,7 @@ public class Main { if (args[0].equalsIgnoreCase("-conf")) { if (args[0].equalsIgnoreCase("download")) { - boolean fileSuccess = downloadFile(github_MLG_Conf_URL); + boolean fileSuccess = downloadFile(github_MLG_Conf_URL, testing); if (fileSuccess) { System.out.println(MLG + MinecraftLandGeneratorConf + " file downloaded."); return; @@ -254,6 +259,9 @@ public class Main { } else if (args[0].equalsIgnoreCase("-build")) { buildID(); return; + } else if (args[0].equalsIgnoreCase("-update")) { + updateMLG(); + return; } else if (args[0].equalsIgnoreCase("-readme")) { readMe(args[1]); return; @@ -357,7 +365,7 @@ public class Main { if (doneText == null) { // MLG 1.4.0 oldConf = true; - } else if (preparingText == null) { // MLG 1.4.0 + } else if (preparingText == null) { // MLG 1.4.0O oldConf = true; } else if (preparingLevel == null) { // MLG 1.4.5 / 1.5.0 oldConf = true; @@ -557,7 +565,7 @@ public class Main { // prepare our two ProcessBuilders // minecraft = new ProcessBuilder(javaLine, "-Xms1024m", "-Xmx1024m", // "-jar", jarFile, "nogui"); - minecraft = new ProcessBuilder(javaLine.split("\\s")); // is this always going to work? i don't know. + minecraft = new ProcessBuilder(javaLine.split("\\s")); // is this always going to work? i don't know. minecraft.directory(new File(serverPath)); minecraft.redirectErrorStream(true); @@ -692,13 +700,7 @@ public class Main { IntTag spawnZ = (IntTag) newData.get("SpawnZ"); randomSeed = (LongTag) newData.get("RandomSeed"); - System.out.println(MLG + "Seed: " + randomSeed.getValue()); // lets - // output - // the - // seed, - // cause - // why - // not? + System.out.println(MLG + "Seed: " + randomSeed.getValue()); // lets output the seed, cause why not? Integer[] ret = new Integer[] { spawnX.getValue(), spawnY.getValue(), spawnZ.getValue() }; @@ -748,7 +750,7 @@ public class Main { * # TAG_Byte("Slot"): Indicates which inventory slot this item is in. * o TAG_Int("Score"): Current score, doesn't appear to be implemented yet. Always 0. * * TAG_Int("SpawnX"): X coordinate of the player's spawn position. Default is 0. - * * TAG_Int("SpawnY"): Y coordinate of the player's spawn position. Default is 64. + * * TAG_Int("SpawnY"): Y coordinate of the player's spawn position. Default is 64. * * TAG_Int("SpawnZ"): Z coordinate of the player's spawn position. Default is 0. * * TAG_Byte("SnowCovered"): 1 enables, 0 disables, see Winter Mode * * TAG_Long("SizeOnDisk"): Estimated size of the entire world in bytes. @@ -769,7 +771,7 @@ public class Main { @SuppressWarnings("unused") IntTag spawnX = (IntTag) newData.get("SpawnX"); // we never use these... Its only here for potential debugging. @SuppressWarnings("unused") - IntTag spawnY = (IntTag) newData.get("SpawnY"); // but whatever... so I (Morlok8k) suppressed these warnings. + IntTag spawnY = (IntTag) newData.get("SpawnY"); // but whatever... so I (Morlok8k) suppress ed these warnings. @SuppressWarnings("unused") IntTag spawnZ = (IntTag) newData.get("SpawnZ"); // I don't want to remove existing code, either by myself (Morlok8k) or Corrodias @@ -1208,9 +1210,10 @@ public class Main { + "Morlok8k:" + newLine + newLine + "1.6.0" + newLine - + "- Added the ability to download files from the internet (specifically for the BuildID file, and conf file)" + newLine + + "- Added the ability to download files from the internet" + newLine + "- Added the ability to check what version the .jar is. (Using MD5 hashes, timestamps, and the BuildID file)" + newLine - + "- COde Refactoring" + newLine + + "- Added \"-update\" to download new versions of MLG directly from github." + newLine + + "- Code Refactoring" + newLine + "- Code Formatting" + newLine + "- Code Optimization" + newLine + newLine @@ -1322,9 +1325,11 @@ public class Main { * * @author Morlok8k * @param URL - * + * URL in a String + * @param Output + * Displays output if true */ - public static boolean downloadFile(String URL) { + public static boolean downloadFile(String URL, boolean Output) { boolean success = true; @@ -1335,7 +1340,7 @@ public class Main { fileName = String.valueOf(System.currentTimeMillis()); } - if (testing) { + if (Output) { System.out.println(MLG + "Downloading: " + URL); System.out.println(MLG + "Saving as: " + fileName); } @@ -1359,12 +1364,12 @@ public class Main { } bout.close(); in.close(); - if (testing) { + if (Output) { System.out.println(count + " byte(s) copied"); } timeTracking[1] = System.currentTimeMillis(); differenceTime = (timeTracking[1] - timeTracking[0]) / 2; - if (testing) { + if (Output) { System.out.println(String.format(MLG + "Elapsed Time: %dm%ds", (differenceTime % (1000 * 60 * 60)) / (1000 * 60), ((differenceTime % (1000 * 60 * 60)) % (1000 * 60)) / 1000)); @@ -1379,7 +1384,7 @@ public class Main { e.printStackTrace(); success = false; } - if (testing) { + if (Output) { System.out.println(MLG + "Done"); } return success; @@ -1396,7 +1401,7 @@ public class Main { public static void buildID() { // download BuildID from Github. - boolean fileSuccess = downloadFile(github_MLG_BuildID_URL); + boolean fileSuccess = downloadFile(github_MLG_BuildID_URL, testing); if (fileSuccess) { System.out.println(MLG + buildIDFile + " file downloaded."); @@ -1528,7 +1533,8 @@ public class Main { } int tsCount = 0; - ArrayList timeStamps = new ArrayList(); + + timeStamps.clear(); if (MLG_Last_Modified_Date == null) { boolean foundLine = false; @@ -1573,50 +1579,6 @@ public class Main { } in.close(); - Iterator e = timeStamps.iterator(); - String s; - int diff; - //boolean renameFailed = false; - - while (e.hasNext()) { - s = e.next(); - diff = MLG_Last_Modified_Date.compareTo(new Date(new Long(s))); - //System.out.println(diff); - - if (diff < 0) { // if this is less than 0, there is a new version of MLG on the Internet! - System.out - .println("There is a NEW VERSION Of Minecraft Land Generator available online!"); - - try { - File fileRename = new File("MinecraftLandGenerator.jar"); - fileRename.renameTo(new File("MinecraftLandGenerator.jar" + ".old")); - } catch (Exception e1) { - System.out.println("Rename failed"); - e1.printStackTrace(); - - try { - copyFile(new File("MinecraftLandGenerator.jar"), new File( - "MinecraftLandGenerator.jar" + ".old")); - File fileDelete = new File("MinecraftLandGenerator.jar"); - fileDelete.delete(); - } catch (Exception e2) { - System.out.println("Rename 2 failed"); - e2.printStackTrace(); - //renameFailed = true; - return; - } - - } - - boolean fileSuccess = downloadFile(github_MLG_jar_URL); - if (fileSuccess) { - System.out.println(MLG + "MinecraftLandGenerator.jar" + " downloaded."); - return; - } - - } - } - if (foundLine == false) { // System.out.println("[DEBUG] FoundLine False"); buildID(); @@ -1635,6 +1597,62 @@ public class Main { } + /** + * Updates MLG to the Latest Version + * + * @author Morlok8k + * + */ + public static void updateMLG() { + + buildID(); + + Iterator e = timeStamps.iterator(); + String s; + int diff; + + //boolean renameFailed = false; + + while (e.hasNext()) { + s = e.next(); + diff = MLG_Last_Modified_Date.compareTo(new Date(new Long(s))); + //System.out.println(diff); + + if (diff < 0) { // if this is less than 0, there is a new version of MLG on the Internet! + System.out + .println("There is a NEW VERSION Of Minecraft Land Generator available online!"); + + try { + File fileRename = new File("MinecraftLandGenerator.jar"); + fileRename.renameTo(new File("MinecraftLandGenerator.jar" + ".old")); + } catch (Exception e1) { + System.out.println("Rename failed"); + e1.printStackTrace(); + + try { + copyFile(new File("MinecraftLandGenerator.jar"), new File( + "MinecraftLandGenerator.jar" + ".old")); + File fileDelete = new File("MinecraftLandGenerator.jar"); + fileDelete.delete(); + } catch (Exception e2) { + System.out.println("Rename 2 failed"); + e2.printStackTrace(); + //renameFailed = true; + return; + } + + } + + boolean fileSuccess = downloadFile(github_MLG_jar_URL, true); + if (fileSuccess) { + System.out.println(MLG + "MinecraftLandGenerator.jar" + " downloaded."); + return; + } + + } + } + } + /** * This gets the filename of a .jar (typically this one!) * @@ -1766,6 +1784,9 @@ public class Main { + " -y# : set the X offset to generate land around (example: -y0)" + newLine + newLine + "Other options:" + newLine + + " java -jar MinecraftLandGenerator.jar -update" + newLine + + " Checks for and downloads new versions of MLG online." + newLine + + newLine + " java -jar MinecraftLandGenerator.jar -printspawn" + newLine + " java -jar MinecraftLandGenerator.jar -ps" + newLine + " Outputs the current world's spawn point coordinates." + newLine