package xenxier.minecraft.servermagic; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.nio.charset.Charset; import java.util.List; import org.apache.commons.io.FileUtils; public class MinecraftServerProperties { public final File file; public final List<String> lines; public MinecraftServerProperties(File server_properties_file) throws IOException { this.file = server_properties_file; this.lines = FileUtils.readLines(file, Charset.defaultCharset()); } public String getPropOf(String line) { return getPropLine(line).split("=")[0]; } public String getValueOf(String line) { return getPropLine(line).split("=")[1]; } public String getPropOf(Integer line) { return lines.get(line).split("=")[0]; } public String getValueOf(Integer line) { return lines.get(line).split("=")[1]; } public String getPropLine(String property) { return lines.get(getPropLineNumber(property)); } public int getPropLineNumber(String property) { for (int i = 0; i < lines.size(); i++) { if (doesPropExistHere(property, i)) { return i; } } return -1; } public boolean doesPropExistHere(String prop, int line) { return this.lines.get(line).split("=")[0].equals(prop); } public void modifyProp(String property, String value) throws IOException { replaceLine(getPropLine(property), property + "=" + value); } private void replaceLine(String old_line, String new_line) throws IOException { String line; File tmp = new File(this.file.getAbsolutePath().toString() + ".tmp"); BufferedReader reader = new BufferedReader(new FileReader(this.file)); BufferedWriter writer = new BufferedWriter(new FileWriter(tmp)); while((line = reader.readLine()) != null) { if (line.trim().equals(old_line)) { writer.write(new_line + System.getProperty("line.separator")); } else { writer.write(line + System.getProperty("line.separator")); } } writer.close(); reader.close(); file.delete(); tmp.renameTo(this.file); } }