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 72340ab..1797f2a 100755 Binary files a/bin/MinecraftLandGenerator.jar and b/bin/MinecraftLandGenerator.jar differ 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;