From 1c49b7ead27b5d23f1b2affac3f631dcbf2d7f1e Mon Sep 17 00:00:00 2001 From: Morlok8k Date: Fri, 4 Nov 2011 04:04:33 -0700 Subject: [PATCH] 1.6.0. (test16) --- README | 9 ++-- bin/MLG-BuildID | 1 + bin/MinecraftLandGenerator.conf | 4 +- bin/MinecraftLandGenerator.jar | Bin 40847 -> 40956 bytes .../minecraft/landgenerator/Main.java | 43 ++++++++++-------- 5 files changed, 33 insertions(+), 24 deletions(-) diff --git a/README b/README index b2fadd1..ffb5c18 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -Minecraft Land Generator version 1.6.0 Testing 12 +Minecraft Land Generator version 1.6.0 Testing 16 Updated November 4, 2011 @@ -24,11 +24,11 @@ Version History: Morlok8k: 1.6.0 -- TODO: add features - Added the ability to download files from the internet (specifically for the BuildID file, and conf file) - Added the ability to check what version the .jar is. (Using MD5 hashes, timestamps, and the BuildID file) -- Some Refactoring +- COde Refactoring - Code Formatting +- Code Optimization 1.5.1 - pr0f1x: Added the "save-all" command to be sent to the server before shutting it down. @@ -130,7 +130,8 @@ Other options: Outputs the current world's spawn point coordinates. java -jar MinecraftLandGenerator.jar -conf - Generates a MinecraftLandGenerator.conf file. + java -jar MinecraftLandGenerator.jar -conf download + Generates or downloads a MinecraftLandGenerator.conf file. java -jar MinecraftLandGenerator.jar -readme readme.txt java -jar MinecraftLandGenerator.jar -readme diff --git a/bin/MLG-BuildID b/bin/MLG-BuildID index 1f39cb5..4269672 100644 --- a/bin/MLG-BuildID +++ b/bin/MLG-BuildID @@ -1,3 +1,4 @@ 919315DC465C9A821A857FCBE789C571=1320395554000#MLG v1.6.0 Testing 8 293A184EB26A62AE6D64CEB01BAD9537=1320399076000#MLG v1.6.0 Testing 11 4F00853101546B5C030F5D89036EC574=1320402115000#MLG v1.6.0 Testing 12 +E77F9F6977FA5BE75D81CA8E3584DCF8=1320404362000#MLG v1.6.0 Testing 16 diff --git a/bin/MinecraftLandGenerator.conf b/bin/MinecraftLandGenerator.conf index 1fd7ae4..234887f 100644 --- a/bin/MinecraftLandGenerator.conf +++ b/bin/MinecraftLandGenerator.conf @@ -1,6 +1,6 @@ -#Minecraft Land Generator Configuration File: Version: 1.6.0 Testing 8 +#Minecraft Land Generator Configuration File: Version: 1.6.0 Testing 16 #Authors: Corrodias, Morlok8k, pr0f1x -#Auto-Generated: Friday, November 4, 2011 at 1:53 AM Pacific Daylight Time +#Auto-Generated: Friday, November 4, 2011 at 3:59 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 1797f2aa6fb55be0122a8a9237844ee037173326..3d08a1ec53fac1b155ed7590261e368ff0e3418d 100755 GIT binary patch delta 22612 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 z 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 delta 22510 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 diff --git a/src/corrodias/minecraft/landgenerator/Main.java b/src/corrodias/minecraft/landgenerator/Main.java index 995fc51..3043c9e 100644 --- a/src/corrodias/minecraft/landgenerator/Main.java +++ b/src/corrodias/minecraft/landgenerator/Main.java @@ -45,7 +45,7 @@ import org.jnbt.Tag; public class Main { // Version Number! - private static final String VERSION = "1.6.0 Testing 12"; + private static final String VERSION = "1.6.0 Testing 16"; private static final String AUTHORS = "Corrodias, Morlok8k, pr0f1x"; private static final String fileSeparator = System.getProperty("file.separator"); @@ -97,16 +97,20 @@ public class Main { private static String buildIDFile = "MLG-BuildID"; private static boolean isCompiledAsJar = false; private static String MLG_Current_Hash = null; + private static int inf_loop_protect_BuildID = 0; private static final String github_MLG_Conf_URL = "https://raw.github.com/Morlok8k/MinecraftLandGenerator/master/bin/MinecraftLandGenerator.conf"; private static final String github_MLG_BuildID_URL = "https://raw.github.com/Morlok8k/MinecraftLandGenerator/master/bin/MLG-BuildID"; - private static final String MinecraftLandGeneratorConf = "MinecraftLandGenerator.conf"; + ////// + private static final boolean testing = false; // a constant to display more output when debugging + ////// + // REMINDER: because I always forget/mix up languages: // "static" in java means "global" // "final" means "constant" @@ -124,6 +128,7 @@ public class Main { * * @author Corrodias, Morlok8k * @param args + * */ private void run(String[] args) { @@ -168,10 +173,12 @@ public class Main { // the arguments are apparently okay so far. parse the conf file. if (args[0].equalsIgnoreCase("-conf")) { - boolean fileSuccess = downloadFile(github_MLG_Conf_URL); - if (fileSuccess) { - System.out.println(MLG + MinecraftLandGeneratorConf + " file downloaded."); - return; + if (args[0].equalsIgnoreCase("download")) { + boolean fileSuccess = downloadFile(github_MLG_Conf_URL); + if (fileSuccess) { + System.out.println(MLG + MinecraftLandGeneratorConf + " file downloaded."); + return; + } } try { @@ -1195,11 +1202,11 @@ public class Main { + "Morlok8k:" + newLine + newLine + "1.6.0" + newLine - + "- TODO: add features" + newLine //TODO + "- Added the ability to download files from the internet (specifically for the BuildID file, and conf file)" + newLine + "- Added the ability to check what version the .jar is. (Using MD5 hashes, timestamps, and the BuildID file)" + newLine - + "- Some Refactoring" + newLine + + "- COde Refactoring" + newLine + "- Code Formatting" + newLine + + "- Code Optimization" + newLine + newLine + "1.5.1" + newLine + "- pr0f1x: Added the \"save-all\" command to be sent to the server before shutting it down." + newLine @@ -1382,20 +1389,15 @@ public class Main { */ public static void buildID() { - // TODO: Decide to download BuildID from Github. - + // download BuildID from Github. boolean fileSuccess = downloadFile(github_MLG_BuildID_URL); if (fileSuccess) { System.out.println(MLG + buildIDFile + " file downloaded."); - } + } // If not available, create. // After downloading, check to see if it matches hash. - // example: - // downloadFile(MinecraftLandGeneratorConfURL); - // downloadFile("https://raw.github.com/Morlok8k/MinecraftLandGenerator/master/bin/" + buildIDFile); - if (MLGFileName == null) { try { MLGFileName = getClassLoader(cls); @@ -1488,6 +1490,12 @@ public class Main { */ private void readBuildID() { + if (inf_loop_protect_BuildID > 10) { + MLG_Last_Modified_Date = new Date(new Long(0)); //set the day to Jan 1, 1970 for failure + return; + } + inf_loop_protect_BuildID++; // this is to prevent an infinite loop (however unlikely) + if (MLGFileName == null) { try { MLGFileName = getClassLoader(cls); @@ -1548,7 +1556,6 @@ public class Main { // System.out.println("[DEBUG] FoundLine False"); buildID(); readBuildID(); // yes I'm calling the function from itself. potential infinite loop? possibly. I haven't encountered it yet! - // TODO: Add safeguard to prevent Infinite Loops return; } } catch (Exception e) { @@ -1556,7 +1563,6 @@ public class Main { // e.printStackTrace(); buildID(); readBuildID(); - // TODO: Add safeguard to prevent Infinite Loops return; } @@ -1700,7 +1706,8 @@ public class Main { + " Outputs the current world's spawn point coordinates." + newLine + newLine + " java -jar MinecraftLandGenerator.jar -conf" + newLine - + " Generates a "+ MinecraftLandGeneratorConf + " file." + newLine + + " java -jar MinecraftLandGenerator.jar -conf download" + newLine + + " Generates or downloads a "+ MinecraftLandGeneratorConf + " file." + newLine + newLine + " java -jar MinecraftLandGenerator.jar -readme readme.txt" + newLine + " java -jar MinecraftLandGenerator.jar -readme" + newLine