public void addDirectory(MapleDataDirectoryEntry dir) { subdirs.add(dir); entries.put(dir.getName(), dir); }
public static void dumpSkills() { StringBuilder sb = new StringBuilder(); MapleDataProvider prov = MapleDataProviderFactory.getDataProvider("Skill.wz"); MapleDataDirectoryEntry root = prov.getRoot(); start = System.currentTimeMillis(); for (MapleDataFileEntry data : root.getFiles()) { if (data.getName().length() > 8) { continue; } System.out.println("Exporting job " + data.getName().replaceAll(".img", "")); for (MapleData sub : prov.getData(data.getName())) { if (!sub.getName().equals("skill")) { continue; } for (MapleData sub2 : sub.getChildren()) { for (MapleData sub3 : sub2.getChildren()) { boolean found = false; for (String s : opt) { if (s.equals(sub3.getName())) { found = true; } } if (!found) { System.out.println("New information type found: " + sub3.getName()); } for (MapleData sub4 : sub3.getChildren()) { String tab = ""; String name = sub3.getName() + "/" + sub4.getName(); name += ":"; for (int i = 4; i > name.length() / 8; i--) { tab += "\t"; } String info = ""; try { if (sub4.getData() instanceof String || sub4.getData() instanceof Integer) { info = MapleDataTool.getString(sub4, "0"); for (char c : info.toCharArray()) { if (Character.isAlphabetic(c) && name.contains("common")) { if (!b.contains(c)) { a.add(new Pair<>(Integer.parseInt(sub2.getName()), c)); b.add(c); } } } } else if (sub4.getData() instanceof Point) { info = MapleDataTool.getPoint(sub4).toString(); } else if (sub4.getData() instanceof MapleCanvas) { // info = MapleDataTool.getImage(sub4).toString(); info = "image"; } } catch (NumberFormatException ex) { System.out.println("0"); if (!exceptions.contains(ex)) { exceptions.add(ex); } continue; } if (!info.isEmpty()) { sb.append(name).append(tab); sb.append(info).append("\r\n"); } } } if (!sb.toString().isEmpty()) { try { if (saveSkillFile(Integer.parseInt(sub2.getName()), sb)) { saveReadme(); } } catch (NumberFormatException ex) { if (!exceptions.contains(ex)) { exceptions.add(ex); } System.out.println("Failed to get information of " + sub2.getName()); } sb = new StringBuilder(); } } } } end = System.currentTimeMillis(); long total = end - start; long minutes = (total / (60 * 1000)); long seconds = (total % (60 * 1000) / 1000); long milliseconds = (total % 1000); System.out.println( "Total time: " + minutes + " minute(s), " + seconds + " second(s), " + milliseconds + " millisecond(s)."); }