From 98d0e3f2198fd7f6e5092ed3b54c11a28088a113 Mon Sep 17 00:00:00 2001 From: Morlok8k Date: Fri, 4 Nov 2011 03:22:43 -0700 Subject: [PATCH] 1.6.0 (test12) --- README | 7 +- bin/MLG-BuildID | 1 + bin/MinecraftLandGenerator.jar | Bin 40846 -> 40847 bytes .../minecraft/landgenerator/Main.java | 195 ++++++------------ 4 files changed, 71 insertions(+), 132 deletions(-) diff --git a/README b/README index d2d6199..b2fadd1 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -Minecraft Land Generator version 1.6.0 Testing 11 +Minecraft Land Generator version 1.6.0 Testing 12 Updated November 4, 2011 @@ -25,9 +25,10 @@ Morlok8k: 1.6.0 - TODO: add features -- Added the ability to download files from the internet (specifically for the BuildID file) +- 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) -- Minor Refactoring +- Some Refactoring +- Code Formatting 1.5.1 - pr0f1x: Added the "save-all" command to be sent to the server before shutting it down. diff --git a/bin/MLG-BuildID b/bin/MLG-BuildID index 1fbf712..1f39cb5 100644 --- a/bin/MLG-BuildID +++ b/bin/MLG-BuildID @@ -1,2 +1,3 @@ 919315DC465C9A821A857FCBE789C571=1320395554000#MLG v1.6.0 Testing 8 293A184EB26A62AE6D64CEB01BAD9537=1320399076000#MLG v1.6.0 Testing 11 +4F00853101546B5C030F5D89036EC574=1320402115000#MLG v1.6.0 Testing 12 diff --git a/bin/MinecraftLandGenerator.jar b/bin/MinecraftLandGenerator.jar index 72340abf25df63cab6d74fbbc0c76fcda8d0a892..1797f2aa6fb55be0122a8a9237844ee037173326 100755 GIT binary patch delta 22511 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 delta 22511 zcmXtfV{o8N({(nsZEbAZw!N{PY^*D`ZQHhO8yhDZYh!))^HzO-x_f3$_xzZusp-=_ zaebh%eW374vS8roAkfgzAb-&k;L}0>lcmJ}ljA@ClMOcoVE?J4T3o!Q8t^jE|Li6W zs4npTX*BrJ|BaJS(D0g`5Y>MC&sN~VYqCHt|34fG+Tj1K*W%(QZD+wZePY!8pI


#`n@qb%2Aq)Nh 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 diff --git a/src/corrodias/minecraft/landgenerator/Main.java b/src/corrodias/minecraft/landgenerator/Main.java index 314f1b5..995fc51 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 11"; + private static final String VERSION = "1.6.0 Testing 12"; private static final String AUTHORS = "Corrodias, Morlok8k, pr0f1x"; private static final String fileSeparator = System.getProperty("file.separator"); @@ -116,8 +116,7 @@ public class Main { * the command line arguments */ public static void main(String[] args) { - (new Main()).run(args); // Why? idk, but merging this with run() creates - // errors, and i'm lazy! + (new Main()).run(args); // Why? idk, but merging this with run() creates errors, and i'm lazy! } /** @@ -128,8 +127,7 @@ public class Main { */ private void run(String[] args) { - // Lets get a nice Date format for display, and a compact one for - // telling apart builds. + // Lets get a nice Date format for display, and a compact one for telling apart builds. dateFormat = new SimpleDateFormat("EEEE, MMMM d, yyyy 'at' h:mm a zzzz", Locale.ENGLISH); dateFormatBuildID = new SimpleDateFormat("'BuildID:' (yyMMdd.HHmmss)", Locale.ENGLISH); dateFormat_MDY = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH); @@ -138,10 +136,7 @@ public class Main { readBuildID(); - //readMe("test.txt"); - - // The following displays no matter what happens, so we needed this date - // stuff to happen first. + // The following displays no matter what happens, so we needed this date stuff to happen first. // MLG_Last_Modified_Date = date; @@ -336,9 +331,10 @@ public class Main { if (serverPath == null || javaLine == null) { // MLG 1.2 Check for a valid .conf file. System.err.println(MLG + MinecraftLandGeneratorConf - + " does not contain all required properties. Making New File!"); - // Please recreate it by running this application with -conf. + + " does not contain all required properties. Making New File!"); // Please recreate it by running this application with -conf. + // return; + // We no longer quit. We generate a new one with defaults. javaLine = defaultJavaLine; @@ -346,15 +342,15 @@ public class Main { oldConf = true; } - if (doneText == null) { // MLG 1.3 + if (doneText == null) { // MLG 1.4.0 oldConf = true; - } else if (preparingText == null) { // MLG 1.4? + } else if (preparingText == null) { // MLG 1.4.0 oldConf = true; - } else if (preparingLevel == null) { // MLG 1.4? + } else if (preparingLevel == null) { // MLG 1.4.5 / 1.5.0 oldConf = true; - } else if (level_1 == null) { // MLG 1.5.0? + } else if (level_1 == null) { // MLG 1.4.5 / 1.5.0 oldConf = true; - } else if (level_0 == null) { // MLG 1.5.1 + } else if (level_0 == null) { // MLG 1.5.1 / 1.6.0 oldConf = true; } @@ -608,22 +604,13 @@ public class Main { + ") " + Float.toString((Float.parseFloat(Integer .toString(currentIteration)) / Float.parseFloat(Integer - .toString(totalIterations))) * 100) + "% Done"); // Time - // Remaining - // estimate + .toString(totalIterations))) * 100) + "% Done"); // Time Remaining estimate timeTracking[0] = timeTracking[1]; timeTracking[1] = timeTracking[2]; timeTracking[2] = timeTracking[3]; timeTracking[3] = System.currentTimeMillis(); if (currentIteration >= 4) { - differenceTime = (timeTracking[3] - timeTracking[0]) / 3; // well, - // this - // is - // what - // it - // boils - // down - // to + differenceTime = (timeTracking[3] - timeTracking[0]) / 3; // well, this is what it boils down to differenceTime *= 1 + (totalIterations - currentIteration); System.out .println(MLG @@ -633,14 +620,7 @@ public class Main { (differenceTime % (1000 * 60 * 60)) / (1000 * 60), ((differenceTime % (1000 * 60 * 60)) % (1000 * 60)) / 1000)); } else if (currentIteration == 3) { - differenceTime = (timeTracking[3] - timeTracking[1]) / 2; // well, - // this - // is - // what - // it - // boils - // down - // to + differenceTime = (timeTracking[3] - timeTracking[1]) / 2; // well, this is what it boils down to differenceTime *= 1 + (totalIterations - currentIteration); System.out .println(MLG @@ -650,14 +630,7 @@ public class Main { (differenceTime % (1000 * 60 * 60)) / (1000 * 60), ((differenceTime % (1000 * 60 * 60)) % (1000 * 60)) / 1000)); } else if (currentIteration == 2) { - differenceTime = (timeTracking[3] - timeTracking[2]); // well, - // this - // is - // what - // it - // boils - // down - // to + differenceTime = (timeTracking[3] - timeTracking[2]); // well, this is what it boils down to differenceTime *= 1 + (totalIterations - currentIteration); System.out .println(MLG @@ -744,56 +717,41 @@ public class Main { CompoundTag originalTopLevelTag = (CompoundTag) input.readTag(); input.close(); - // - // Structure: - // - // TAG_Compound("Data"): World data. - // * TAG_Long("Time"): Stores the current "time of day" in ticks. - // There are 20 ticks per real-life second, and 24000 ticks per - // Minecraft day, making the day length 20 minutes. 0 appears to be - // sunrise, 12000 sunset and 24000 sunrise again. - // * TAG_Long("LastPlayed"): Stores the Unix time stamp (in - // milliseconds) when the player saved the game. - // * TAG_Compound("Player"): Player entity information. See Entity - // Format and Mob Entity Format for details. Has additional - // elements: - // o TAG_List("Inventory"): Each TAG_Compound in this list defines - // an item the player is carrying, holding, or wearing as armor. - // + TAG_Compound: Inventory item data - // # TAG_Short("id"): Item or Block ID. - // # TAG_Short("Damage"): The amount of wear each item has suffered. - // 0 means undamaged. When the Damage exceeds the item's durability, - // it breaks and disappears. Only tools and armor accumulate damage - // normally. - // # TAG_Byte("Count"): Number of items stacked in this inventory - // slot. Any item can be stacked, including tools, armor, and - // vehicles. Range is 1-255. Values above 127 are not displayed - // in-game. - // # 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("SpawnZ"): Z coordinate of the player's spawn position. - // Default is 0. - // * TAG_Byte("SnowCovered"): 1 enables, 0 disables, see Winter Mode - // //Old! - // * TAG_Long("SizeOnDisk"): Estimated size of the entire world in - // bytes. - // * TAG_Long("RandomSeed"): Random number providing the Random Seed - // for the terrain. - // + //@formatter:off + + + /* + * Structure: + * + *TAG_Compound("Data"): World data. + * * TAG_Long("Time"): Stores the current "time of day" in ticks. There are 20 ticks per real-life second, and 24000 ticks per Minecraft day, making the day length 20 minutes. 0 appears to be sunrise, 12000 sunset and 24000 sunrise again. + * * TAG_Long("LastPlayed"): Stores the Unix time stamp (in milliseconds) when the player saved the game. + * * TAG_Compound("Player"): Player entity information. See Entity Format and Mob Entity Format for details. Has additional elements: + * o TAG_List("Inventory"): Each TAG_Compound in this list defines an item the player is carrying, holding, or wearing as armor. + * + TAG_Compound: Inventory item data + * # TAG_Short("id"): Item or Block ID. + * # TAG_Short("Damage"): The amount of wear each item has suffered. 0 means undamaged. When the Damage exceeds the item's durability, it breaks and disappears. Only tools and armor accumulate damage normally. + * # TAG_Byte("Count"): Number of items stacked in this inventory slot. Any item can be stacked, including tools, armor, and vehicles. Range is 1-255. Values above 127 are not displayed in-game. + * # 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("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. + * * TAG_Long("RandomSeed"): Random number providing the Random Seed for the terrain. + * + */ + + + + //@formatter:on Map originalData = ((CompoundTag) originalTopLevelTag.getValue().get("Data")).getValue(); - // This is our map of data. It is an unmodifiable map, for some - // reason, so we have to make a copy. + // This is our map of data. It is an unmodifiable map, for some reason, so we have to make a copy. Map newData = new LinkedHashMap(originalData); - // .get() a couple of values, just to make sure we're dealing with a - // valid level file, here. Good for debugging, too. + // .get() a couple of values, just to make sure we're dealing with a valid level file, here. Good for debugging, too. @SuppressWarnings("unused") IntTag spawnX = (IntTag) newData.get("SpawnX"); // we never use these... Its only here for potential debugging. @@ -918,19 +876,12 @@ public class Main { String line = null; - byte[] stop = { 's', 't', 'o', 'p', '\r', '\n' }; // Moved here, so - // this code - // wont run - // every loop, - // thus Faster! + byte[] stop = { 's', 't', 'o', 'p', '\r', '\n' }; // Moved here, so this code wont run every loop, thus Faster! // and no, i can't use a string here! byte[] saveAll = { 's', 'a', 'v', 'e', '-', 'a', 'l', 'l', '\r', '\n' }; - OutputStream outputStream = process.getOutputStream(); // moved here - // to remove - // some - // redundancy + OutputStream outputStream = process.getOutputStream(); // moved here to remove some redundancy while ((line = pOut.readLine()) != null) { if (verbose) { @@ -1012,24 +963,19 @@ public class Main { } } if (ignoreWarnings == false) { - if (line.contains("[WARNING]")) { // If we have a warning, - // stop... + if (line.contains("[WARNING]")) { // If we have a warning, stop... System.out.println(""); System.out .println(MLG + "Warning found: Stopping Minecraft Land Generator"); - if (verbose == false) { // If verbose is true, we - // already displayed it. + if (verbose == false) { // If verbose is true, we already displayed it. System.out.println(line); } System.out.println(""); System.out.println(MLG + "Forcing Save..."); outputStream.write(saveAll); outputStream.flush(); - // OutputStream outputStream = - // process.getOutputStream(); - outputStream.write(stop); // if the warning was a fail - // to bind to port, we may - // need to write stop twice! + // OutputStream outputStream = process.getOutputStream(); + outputStream.write(stop); // if the warning was a fail to bind to port, we may need to write stop twice! outputStream.flush(); outputStream.write(stop); outputStream.flush(); @@ -1037,24 +983,20 @@ public class Main { warning = true; // System.exit(1); } - if (line.contains("[SEVERE]")) { // If we have a severe - // error, stop... + if (line.contains("[SEVERE]")) { // If we have a severe error, stop... System.out.println(""); System.out.println(MLG + "Severe error found: Stopping server."); - if (verbose == false) { // If verbose is true, we - // already displayed it. + if (verbose == false) { // If verbose is true, we already displayed it. System.out.println(line); } System.out.println(""); System.out.println(MLG + "Forcing Save..."); outputStream.write(saveAll); outputStream.flush(); - // OutputStream outputStream = - // process.getOutputStream(); + // OutputStream outputStream = process.getOutputStream(); outputStream.write(stop); outputStream.flush(); - outputStream.write(stop); // sometimes we need to do - // stop twice... + outputStream.write(stop); // sometimes we need to do stop twice... outputStream.flush(); // outputStream.close(); warning = true; @@ -1064,10 +1006,7 @@ public class Main { } } - if (warning == true) { // in 1.4.4 we had a issue. tried to write - // stop twice, but we had closed the stream - // already. this, and other lines should fix - // this. + if (warning == true) { // in 1.4.4 we had a issue. tried to write stop twice, but we had closed the stream already. this, and other lines should fix this. outputStream.flush(); outputStream.close(); System.exit(1); @@ -1256,10 +1195,11 @@ public class Main { + "Morlok8k:" + newLine + newLine + "1.6.0" + newLine - + "- TODO: add features" + newLine - + "- Added the ability to download files from the internet (specifically for the BuildID file)" + 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 - + "- Minor Refactoring" + newLine + + "- Some Refactoring" + newLine + + "- Code Formatting" + newLine + newLine + "1.5.1" + newLine + "- pr0f1x: Added the \"save-all\" command to be sent to the server before shutting it down." + newLine @@ -1376,8 +1316,7 @@ public class Main { boolean success = true; String fileName = URL.substring(URL.lastIndexOf("/") + 1, URL.length()); - int size = 1024 * 4; // 1024 * n should be tested to get the optimum - // size (for download speed.) + int size = 1024 * 4; // 1024 * n should be tested to get the optimum size (for download speed.) if (fileName.equals("")) { fileName = String.valueOf(System.currentTimeMillis()); @@ -1588,8 +1527,7 @@ public class Main { if (end == -1) { // If we have no hash sign, then we read till the end of the line end = line.length(); } - if (end <= pos) { // If hash is before the '=', we may have an issue... it should be fine, cause we check for issues next, but lets make - // sure. + if (end <= pos) { // If hash is before the '=', we may have an issue... it should be fine, cause we check for issues next, but lets make sure. end = line.length(); } @@ -1642,11 +1580,10 @@ public class Main { // START Garbage removal: int bang = filename.indexOf("!"); // remove everything after xxxx.jar - if (bang == -1) { // a real example: + if (bang == -1) { // a real example: bang = filename.length(); // jar:file:/home/morlok8k/test.jar!/me/Morlok8k/test/Main.class } - int file = filename.indexOf("file:"); // removes junk from the beginning - // of the path + int file = filename.indexOf("file:"); // removes junk from the beginning of the path file = file + 5; if (file == -1) { file = 0;