Delete stuff (maybe the last one)

This commit is contained in:
Piegames 2018-11-14 10:07:05 +01:00
parent 97644e0dc9
commit 56e6493c27
3 changed files with 0 additions and 507 deletions

View File

@ -1,164 +0,0 @@
/*
#######################################################################
# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE #
# Version 2, December 2004 #
# #
# Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> #
# #
# Everyone is permitted to copy and distribute verbatim or modified #
# copies of this license document, and changing it is allowed as long #
# as the name is changed. #
# #
# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE #
# TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION #
# #
# 0. You just DO WHAT THE FUCK YOU WANT TO. #
# #
#######################################################################
*/
package morlok8k.MinecraftLandGenerator;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import org.jnbt.CompoundTag;
import org.jnbt.IntTag;
import org.jnbt.LongTag;
import org.jnbt.NBTInputStream;
import org.jnbt.NBTOutputStream;
import org.jnbt.Tag;
import org.joml.Vector3i;
/**
*
* @author morlok8k
*/
public class SpawnPoint {
//TODO: update this
/**
* @param level
* @return
* @throws IOException
* @author Corrodias
*/
protected static Vector3i getSpawn(final File level) throws IOException {
try {
final NBTInputStream input = new NBTInputStream(new FileInputStream(level));
final CompoundTag originalTopLevelTag = (CompoundTag) input.readTag();
input.close();
final Map<String, Tag> 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.
final Map<String, Tag> 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.
final IntTag spawnX = (IntTag) newData.get("SpawnX");
final IntTag spawnY = (IntTag) newData.get("SpawnY");
final IntTag spawnZ = (IntTag) newData.get("SpawnZ");
final LongTag Seed = (LongTag) newData.get("RandomSeed");
var.randomSeed = Seed.getValue();
System.out.println("Seed: " + var.randomSeed); // lets output the seed, cause why not?
final Vector3i ret =
new Vector3i(spawnX.getValue(), spawnY.getValue(), spawnZ.getValue());
return ret;
} catch (final ClassCastException ex) {
throw new IOException("Invalid level format.");
} catch (final NullPointerException ex) {
throw new IOException("Invalid level format.");
}
}
/**
* Changes the spawn point in the given Alpha/Beta level to the given coordinates.<br>
* Note that, in Minecraft levels, the Y coordinate is height.<br>
* (We picture maps from above, but the game was made from a different perspective)
*
* @param level
* the level file to change the spawn point in
* @param xyz
* the Coordinates of the spawn point
* @throws IOException
* if there are any problems reading/writing the file
* @author Corrodias
*/
protected static void setSpawn(final File level, final Vector3i xyz) throws IOException {
try {
final NBTInputStream input = new NBTInputStream(new FileInputStream(level));
final CompoundTag originalTopLevelTag = (CompoundTag) input.readTag();
input.close();
//@formatter:off
//Note: The Following Information is Old (from 2010), compared to the Data inside a current "level.dat".
//However, What we look at (SpawnX,Y,Z and RandomSeed) have not changed.
/* <editor-fold defaultstate="collapsed" desc="structure">
* 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.
* </editor-fold>
*/
//@formatter:on
final Map<String, Tag> 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.
final Map<String, Tag> 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.
@SuppressWarnings("unused")
final IntTag spawnX = (IntTag) newData.get("SpawnX"); // we never use these... Its only here for potential debugging.
@SuppressWarnings("unused")
final IntTag spawnY = (IntTag) newData.get("SpawnY"); // but whatever... so I (Morlok8k) suppressed these warnings.
@SuppressWarnings("unused")
final IntTag spawnZ = (IntTag) newData.get("SpawnZ"); // I don't want to remove existing code, either by myself (Morlok8k) or Corrodias
newData.put("SpawnX", new IntTag("SpawnX", xyz.x)); // pulling the data out of the Coordinates,
newData.put("SpawnY", new IntTag("SpawnY", xyz.y)); // and putting it into our IntTag's
newData.put("SpawnZ", new IntTag("SpawnZ", xyz.z));
// Again, we can't modify the data map in the old Tag, so we have to make a new one.
final CompoundTag newDataTag = new CompoundTag("Data", newData);
final Map<String, Tag> newTopLevelMap = new HashMap<>(1);
newTopLevelMap.put("Data", newDataTag);
final CompoundTag newTopLevelTag = new CompoundTag("", newTopLevelMap);
final NBTOutputStream output = new NBTOutputStream(new FileOutputStream(level));
output.writeTag(newTopLevelTag);
output.close();
} catch (final ClassCastException ex) {
throw new IOException("Invalid level format.");
} catch (final NullPointerException ex) {
throw new IOException("Invalid level format.");
}
}
}

View File

@ -1,267 +0,0 @@
/*
#######################################################################
# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE #
# Version 2, December 2004 #
# #
# Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> #
# #
# Everyone is permitted to copy and distribute verbatim or modified #
# copies of this license document, and changing it is allowed as long #
# as the name is changed. #
# #
# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE #
# TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION #
# #
# 0. You just DO WHAT THE FUCK YOU WANT TO. #
# #
#######################################################################
*/
package morlok8k.MinecraftLandGenerator;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
*
* Program Initialization code. placed here so both CLI and GUI can use it.
*
* @author morlok8k
*
*/
public class Startup {
private static Log log = LogFactory.getLog(Main.class);
/**
*
* CLI only: Reads arguments from command line
*
* @return
*/
public static boolean programArguments() {
// =====================================================================
// INSTRUCTIONS
// =====================================================================
// 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[var.args.length];
newArgs = var.args;
newArgs = StringArrayParse.Parse(newArgs, "-n"); //parse out -n
newArgs = StringArrayParse.Parse(newArgs, "-nowait"); //parse out -nowait
if (!(var.args.equals(newArgs))) { //do the freshly parsed args match the original?
var.dontWait = true; //if not, we dont wait for anything!
var.args = newArgs; //use the freshly parsed args for everything else now...
log.info("Notice: Not waiting for anything...");
}
if (var.args.length == 0) { //we didn't find a an X and Z size, so lets ask for one.
log.info("Please Enter the size of world you want. Example: X:1000 Z:1000");
log.info(var.MLG + "X:");
var.xRange = Input_CLI.getInt("X:");
log.info(var.MLG + "Z:");
var.zRange = Input_CLI.getInt("Z:");
var.args = new String[] { String.valueOf(var.xRange), String.valueOf(var.zRange) };
}
if (var.args[0].equalsIgnoreCase("-version") || var.args[0].equalsIgnoreCase("-help")
|| var.args[0].equals("/?")) {
Readme_and_HelpInfo.showHelp(true);
return true;
}
// =====================================================================
// STARTUP AND CONFIG
// =====================================================================
// the arguments are apparently okay so far. parse the conf file.
if (var.args[0].equalsIgnoreCase("-conf")) {
if (var.args.length == 2) {
if (var.args[1].equalsIgnoreCase("download")) {
final boolean fileSuccess =
DownloadFile.downloadFile(var.github_MLG_Conf_URL, var.testing);
if (fileSuccess) {
log.info(var.MinecraftLandGeneratorConf + " file downloaded.");
return true;
}
}
}
FileWrite.saveConf(true); //new conf file
return true;
} else if (var.args[0].equalsIgnoreCase("-ps")
|| var.args[0].equalsIgnoreCase("-printspawn")) {
// okay, sorry, this is an ugly hack, but it's just a last-minute feature.
Misc.printSpawn();
return true;
} else if (var.args[0].equalsIgnoreCase("-build")) {
Update.buildID(false);
return true;
} else if (var.args[0].equalsIgnoreCase("-update")) {
Update.updateMLG();
return true;
} else if (var.args[0].equalsIgnoreCase("-readme")) {
if (var.args.length == 2) {
Readme_and_HelpInfo.readMe(var.args[1]);
} else {
Readme_and_HelpInfo.readMe(null);
}
return true;
} else if (var.args[0].equalsIgnoreCase("-downloadfile")) {
if (var.args.length == 2) {
DownloadFile.downloadFile(var.args[1], true);
} else {
log.info("No File to Download!");
}
return true;
} else if (var.args[0].equalsIgnoreCase("-downloadlist")) {
if (var.args.length == 2) {
String origMD5 = "";
String recheckMD5 = "";
try {
final File config = new File(var.args[1]);
try {
origMD5 = MD5.fileMD5(config.toString());
} catch (final NoSuchAlgorithmException e) {
e.printStackTrace();
}
final BufferedReader in = new BufferedReader(new FileReader(config));
String line;
while ((line = in.readLine()) != null) {
if (line.contains("###RECHECK###")) {
var.recheckFlag = !var.recheckFlag;
} else {
DownloadFile.downloadFile(line, true);
}
}
in.close();
if (var.recheckFlag == true) { // the first line is always the location of this file. the second is the recheck flag, if we want to.
try {
recheckMD5 = MD5.fileMD5(config.toString());
} catch (final NoSuchAlgorithmException e) {
e.printStackTrace();
}
if (!origMD5.contentEquals(recheckMD5)) {
final BufferedReader in_recheck =
new BufferedReader(new FileReader(config));
String line_recheck;
while ((line_recheck = in_recheck.readLine()) != null) {
if (line_recheck.contains("###RECHECK###")) {
var.recheckFlag = !var.recheckFlag;
} else {
DownloadFile.downloadFile(line_recheck, true);
}
}
in_recheck.close();
}
}
} catch (final FileNotFoundException ex) {
System.err.println(var.args[1] + " - File not found");
return true;
} catch (final IOException ex) {
System.err.println(var.args[1] + " - Could not read file.");
return true;
}
} else {
log.info("No File with links!");
}
return true;
} else if (var.args.length == 1) {
log.info("For help, use java -jar " + var.MLGFileNameShort + " -help");
return true;
}
// ARGUMENTS
try {
var.xRange = Integer.parseInt(var.args[0]);
var.zRange = Integer.parseInt(var.args[1]);
if ((var.xRange < 1000) && (var.xRange != 0)) {
var.xRange = 1000; //if less than 1000, (and not 0) set to 1000 (Calculations don't work well on very small maps)
log.error("X size too small - Changing X to 1000");
}
if ((var.zRange < 1000) && (var.zRange != 0)) {
var.zRange = 1000;
log.error("Z size too small - Changing Z to 1000");
}
} catch (final NumberFormatException ex) {
log.error("Invalid X or Z argument.");
log.error("Please Enter the size of world you want. Example: X:1000 Z:1000");
var.xRange = Input_CLI.getInt("X:");
var.zRange = Input_CLI.getInt("Z:");
//return;
}
// This is embarrassing. Don't look.
try {
for (int i = 0; i < (var.args.length - 2); i++) {
final String nextSwitch = var.args[i + 2].toLowerCase();
if (nextSwitch.equals("-verbose") || nextSwitch.equals("-v")) {
var.verbose = true;
log.info("Notice: Verbose Mode");
} else if (nextSwitch.startsWith("-i")) {
var.increment = Integer.parseInt(var.args[i + 2].substring(2));
log.info("Notice: Non-Default Increment: " + var.increment);
} else if (nextSwitch.startsWith("-w")) {
var.ignoreWarnings = true;
log.info("Notice: Warnings from Server are Ignored");
} else if (nextSwitch.equals("-alt") || nextSwitch.equals("-a")) {
var.alternate = true;
log.info("Notice: Using Alternate Launching");
} else if (nextSwitch.equals("-chunk") || nextSwitch.equals("-c")) {
var.useChunks = true;
log.info("Notice: Using Chunks instead of Regions");
} else if (nextSwitch.startsWith("-x")) {
var.xOffset = Integer.valueOf(var.args[i + 2].substring(2));
log.info("Notice: X Offset: " + var.xOffset);
} else if (nextSwitch.startsWith("-y") || nextSwitch.startsWith("-z")) { //NOTE: "-y" is just here for backwards compatibility
var.zOffset = Integer.valueOf(var.args[i + 2].substring(2));
log.info("Notice: Z Offset: " + var.zOffset);
if (nextSwitch.startsWith("-y")) {
log.info(
"Notice: MLG now uses Z instead of Y. Please use the -z switch instead");
}
} else {
var.serverPath = var.args[i + 2];
log.info("Notice: Attempting to use Alternate Server:" + var.serverPath);
}
}
} catch (final NumberFormatException ex) {
log.error("Invalid switch value.");
return true;
}
return false; // success!
}
}

View File

@ -1,76 +0,0 @@
/*
#######################################################################
# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE #
# Version 2, December 2004 #
# #
# Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> #
# #
# Everyone is permitted to copy and distribute verbatim or modified #
# copies of this license document, and changing it is allowed as long #
# as the name is changed. #
# #
# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE #
# TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION #
# #
# 0. You just DO WHAT THE FUCK YOU WANT TO. #
# #
#######################################################################
*/
package morlok8k.MinecraftLandGenerator;
/**
*
* @author morlok8k
*/
public class StringArrayParse {
/**
*
* @param array
* @param ParseOut
* @return
*/
public static String[] Parse(final String[] array, final 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)
final 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].contains(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 (final 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.
final String[] returnArray = new String[workingArray.length - 1];
for (int i = 0; i < returnArray.length; i++) {
returnArray[i] = workingArray[i];
}
return returnArray;
}
return array; //no changes have been done, return the original array
}
}