From 832ed150606bb9d42fe0b1790c1891a23bfbce44 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Tue, 2 Dec 2014 19:18:37 -0500 Subject: [PATCH] Finished text parser --- .../AlchemicalWizardry.java | 176 +++++++++++++++++- .../book/classes/guide/GuiIndex.java | 13 +- .../book/entries/EntryText.java | 2 +- .../book/interfaces/StringEntry.java | 14 ++ .../book/registries/EntryRegistry.java | 35 +++- .../common/book/BUEntries.java | 18 +- .../assets/alchemicalwizardryBooks/books.txt | 12 ++ .../alchemicalwizardryBooks/books/book.txt | 13 ++ .../alchemicalwizardryBooks/lang/en_US.lang | 51 +++++ .../assets/bloodutils/lang/en_US.lang | 73 -------- .../assets/bloodutils/lang/zh_CN.lang | 43 ----- 11 files changed, 323 insertions(+), 127 deletions(-) create mode 100644 src/main/java/WayofTime/alchemicalWizardry/book/interfaces/StringEntry.java create mode 100644 src/main/resources/assets/alchemicalwizardryBooks/books.txt create mode 100644 src/main/resources/assets/alchemicalwizardryBooks/books/book.txt create mode 100644 src/main/resources/assets/alchemicalwizardryBooks/lang/en_US.lang delete mode 100644 src/main/resources/assets/bloodutils/lang/en_US.lang delete mode 100644 src/main/resources/assets/bloodutils/lang/zh_CN.lang diff --git a/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java b/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java index 250f6786..75e2282a 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java +++ b/src/main/java/WayofTime/alchemicalWizardry/AlchemicalWizardry.java @@ -1,14 +1,21 @@ package WayofTime.alchemicalWizardry; +import java.io.BufferedReader; +import java.io.DataInputStream; import java.io.File; +import java.io.FileNotFoundException; import java.io.FileOutputStream; +import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.PrintWriter; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; +import net.minecraft.client.Minecraft; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; import net.minecraft.init.Items; @@ -254,6 +261,8 @@ import cpw.mods.fml.common.registry.GameRegistry; public class AlchemicalWizardry { + public static boolean parseTextFiles = true; + public static boolean doMeteorsDestroyBlocks = true; public static String[] diamondMeteorArray; public static int diamondMeteorRadius; @@ -399,7 +408,9 @@ public class AlchemicalWizardry @EventHandler public void preInit(FMLPreInitializationEvent event) - { + { + + File bmDirectory = new File("config/BloodMagic/schematics"); if (!bmDirectory.exists() && bmDirectory.mkdirs()) @@ -1089,6 +1100,9 @@ public class AlchemicalWizardry BloodMagicConfiguration.loadBlacklist(); BloodMagicConfiguration.blacklistRituals(); + + if(parseTextFiles) + this.parseTextFile(); } public static void initAlchemyPotionRecipes() @@ -1316,4 +1330,164 @@ public class AlchemicalWizardry CompressionRegistry.registerItemThreshold(new ItemStack(Blocks.cobblestone), 64); } + + public void parseTextFile() + { + File textFiles = new File("config/BloodMagic/bookDocs"); + //if(textFiles.exists()) + { + try { + System.out.println("I am in an island of files!"); + + InputStream input = AlchemicalWizardry.class.getResourceAsStream("/assets/alchemicalwizardryBooks/books/book.txt"); + + Minecraft.getMinecraft().fontRenderer.setUnicodeFlag(true); + + if(input != null) + { + DataInputStream in = new DataInputStream(input); + BufferedReader br = new BufferedReader(new InputStreamReader(in)); + String strLine; + //Read File Line By Line + + int maxWidth = 25; + int maxLines = 16; + + int currentPage = 0; + + int pageIndex = 1; + + String currentTitle = "aw.entry.Magnus"; + + String[] strings = new String[1]; + strings[0] = ""; + + while ((strLine = br.readLine()) != null) + { + if(strLine.trim().isEmpty()) + { + continue; + } + + if(strLine.startsWith("//TITLE ")) + { + String[] newStrings = new String[currentPage + 1 + 1]; //Just to show that it is increasing + for(int i=0; i maxWidth) +// { +// currentLine++; +// currentWidth = 0; +// } + //if(currentLine > maxLines) + if(list.size() > maxLines) + { + changePage = true; + } + if(changePage) + { + String[] newStrings = new String[currentPage + 1 + 1]; //Just to show that it is increasing + for(int i=0; i 3L) +// { +// +// }else + { + PrintWriter writer = new PrintWriter(file); + for(String stri : strings) + { + writer.println(stri); + } + writer.close(); + } + +// + } + + Minecraft.getMinecraft().fontRenderer.setUnicodeFlag(false); + + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } } diff --git a/src/main/java/WayofTime/alchemicalWizardry/book/classes/guide/GuiIndex.java b/src/main/java/WayofTime/alchemicalWizardry/book/classes/guide/GuiIndex.java index 7ea11061..f96670ac 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/book/classes/guide/GuiIndex.java +++ b/src/main/java/WayofTime/alchemicalWizardry/book/classes/guide/GuiIndex.java @@ -79,8 +79,9 @@ public class GuiIndex extends GuiScreen{ if(entries != null && !entries.isEmpty()){ int j = 0; - for(int i = 0; i < entries.size(); i++){ - Entry entry = (Entry)entries.values().toArray()[i]; + Entry[] entryList = EntryRegistry.getEntriesInOrderForCategory(category); + for(int i = 0; i < entryList.length; i++){ + Entry entry = entryList[i]; if(entry != null && entry.indexPage == this.currPage){ x = this.left + gwidth / 2 - 75; y = (top + 15) + (10*j); @@ -125,11 +126,13 @@ public class GuiIndex extends GuiScreen{ } public void registerButtons(){ - HashMap entries = EntryRegistry.entries.get(this.category); + HashMap entries = EntryRegistry.entries.get(this.category); + if(entries != null && !entries.isEmpty()){ + Entry[] entryList = EntryRegistry.getEntriesInOrderForCategory(category); int j = 0; - for(int i = 0; i < entries.size(); i++){ - Entry entry = (Entry)entries.values().toArray()[i]; + for(int i = 0; i < entryList.length; i++){ + Entry entry = entryList[i]; if(entry != null && entry.indexPage == this.currPage){ String title = entry.name; diff --git a/src/main/java/WayofTime/alchemicalWizardry/book/entries/EntryText.java b/src/main/java/WayofTime/alchemicalWizardry/book/entries/EntryText.java index 81545eda..1e8a687f 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/book/entries/EntryText.java +++ b/src/main/java/WayofTime/alchemicalWizardry/book/entries/EntryText.java @@ -25,7 +25,7 @@ public class EntryText implements IEntry{ if(this.entryName == null) this.entryName = key; - String s = StatCollector.translateToLocal("bu.entry." + this.entryName + "." + page); + String s = StatCollector.translateToLocal("aw.entry." + this.entryName + "." + page); x = left + width / 2 - 58; y = (top + 15); diff --git a/src/main/java/WayofTime/alchemicalWizardry/book/interfaces/StringEntry.java b/src/main/java/WayofTime/alchemicalWizardry/book/interfaces/StringEntry.java new file mode 100644 index 00000000..cf891e5a --- /dev/null +++ b/src/main/java/WayofTime/alchemicalWizardry/book/interfaces/StringEntry.java @@ -0,0 +1,14 @@ +package WayofTime.alchemicalWizardry.book.interfaces; + +import WayofTime.alchemicalWizardry.book.compact.Entry; + +public class StringEntry +{ + public String str; + public Entry entry; + public StringEntry(String str, Entry ent) + { + this.str = str; + this.entry = ent; + } +} \ No newline at end of file diff --git a/src/main/java/WayofTime/alchemicalWizardry/book/registries/EntryRegistry.java b/src/main/java/WayofTime/alchemicalWizardry/book/registries/EntryRegistry.java index 86c16a99..fe76eb0b 100644 --- a/src/main/java/WayofTime/alchemicalWizardry/book/registries/EntryRegistry.java +++ b/src/main/java/WayofTime/alchemicalWizardry/book/registries/EntryRegistry.java @@ -2,24 +2,31 @@ package WayofTime.alchemicalWizardry.book.registries; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import WayofTime.alchemicalWizardry.book.compact.Category; import WayofTime.alchemicalWizardry.book.compact.Entry; -public class EntryRegistry { - public static void registerCategories(Category category){ +public class EntryRegistry +{ + public static void registerCategories(Category category) + { categories.add(category); categoryMap.put(category.name, category); + entryOrder.put(category, new ArrayList()); categoryCount++; } public static ArrayList categories = new ArrayList(); + public static HashMap> entryOrder = new HashMap(); public static HashMap categoryMap = new HashMap(); public static int categoryCount = 0; - public static void registerEntry(Category category, HashMap entryMap, Entry entry){ + public static void registerEntry(Category category, HashMap entryMap, Entry entry) + { entryMap.put(entry.name, entry); entries.put(category, entryMap); + entryOrder.get(category).add(entry.name); if(maxEntries.containsKey(category) && entry.indexPage > maxEntries.get(category)) maxEntries.put(category, entry.indexPage); @@ -36,4 +43,26 @@ public class EntryRegistry { public static HashMap rituals = new HashMap(); public static HashMap bloodUtils = new HashMap(); + public static Entry[] getEntriesInOrderForCategory(Category category) + { + HashMap entries = EntryRegistry.entries.get(category); + List nameList = entryOrder.get(category); + + ArrayList list = new ArrayList(); + + for(String str : nameList) + { + list.add(entries.get(str)); + } + + Object[] entriesList = list.toArray(); + Entry[] entryList = new Entry[entriesList.length]; + + for(int i=0; i