package mekanism.common; 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 mekanism.api.MekanismAPI; import net.minecraft.block.Block; public final class BoxBlacklistParser { public static File mekanismDir = new File(Mekanism.proxy.getMinecraftDir(), "config/mekanism"); public static File boxBlacklistFile = new File(mekanismDir, "BoxBlacklist.txt"); public static void load() { try { generateFiles(); readBlacklist(); } catch(Exception e) { e.printStackTrace(); } } private static void generateFiles() throws IOException { mekanismDir.mkdirs(); if(!boxBlacklistFile.exists()) { boxBlacklistFile.createNewFile(); writeExamples(); } } private static boolean isInteger(String s) { try { Integer.parseInt(s); return true; } catch(Exception e) { return false; } } private static void readBlacklist() throws IOException { BufferedReader reader = new BufferedReader(new FileReader(boxBlacklistFile)); int entries = 0; String readingLine; int line = 0; while((readingLine = reader.readLine()) != null) { line++; if(readingLine.startsWith("#") || readingLine.trim().isEmpty()) { continue; } String[] split = readingLine.split(" "); if(split.length != 2 || !isInteger(split[split.length-1])) { Mekanism.logger.error("BoxBlacklist.txt: Couldn't parse blacklist data on line " + line); continue; } String blockName = split[0].trim(); Block block = Block.getBlockFromName(blockName); if(block == null) { Mekanism.logger.error("BoxBlacklist.txt: Couldn't find specified block on line " + line); continue; } MekanismAPI.addBoxBlacklist(block, Integer.parseInt(split[split.length-1])); entries++; } reader.close(); Mekanism.logger.info("Finished loading Cardboard Box blacklist (loaded " + entries + " entries)"); } private static void writeExamples() throws IOException { BufferedWriter writer = new BufferedWriter(new FileWriter(boxBlacklistFile)); writer.append("# Use this file to tell Mekanism which blocks should not be picked up by a cardboard box."); writer.newLine(); writer.append("# Proper syntax is \"NAME META\". Example (for stone):"); writer.newLine(); writer.append("# minecraft:stone 0"); writer.flush(); writer.close(); } }