/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package dropspider; import java.io.File; import java.util.ArrayList; import java.util.HashSet; import java.util.LinkedList; import provider.MapleData; import provider.MapleDataDirectoryEntry; import provider.MapleDataFileEntry; import provider.MapleDataProvider; import provider.MapleDataProviderFactory; import provider.MapleDataTool; import server.MapleItemInformationProvider; import tools.Pair; /** * * @author Simon */ public class DataTool { private static ArrayList> npc_list = null; private static LinkedList> mob_pairs = null; private static MapleDataProvider data = MapleDataProviderFactory.getDataProvider(MapleDataProviderFactory.fileInWZPath("Mob.wz")); private static HashSet bosses = null; public static ArrayList monsterIdsFromName(String name) { MapleData data = null; MapleDataProvider dataProvider = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")); ArrayList ret = new ArrayList<>(); data = dataProvider.getData("Mob.img"); if (mob_pairs == null) { mob_pairs = new LinkedList<>(); for (MapleData mobIdData : data.getChildren()) { int mobIdFromData = Integer.parseInt(mobIdData.getName()); String mobNameFromData = MapleDataTool.getString(mobIdData.getChildByPath("name"), "NO-NAME"); mob_pairs.add(new Pair<>(mobIdFromData, mobNameFromData)); } } for (Pair mobPair : mob_pairs) { if (mobPair.getRight().toLowerCase().equals(name.toLowerCase())) { ret.add(mobPair.getLeft()); } } return ret; } private static void populateBossList() { bosses = new HashSet<>(); MapleDataDirectoryEntry mob_data = data.getRoot(); for (MapleDataFileEntry mdfe : mob_data.getFiles()) { MapleData boss_candidate = data.getData(mdfe.getName()); MapleData monsterInfoData = boss_candidate.getChildByPath("info"); int mid = Integer.valueOf(boss_candidate.getName().replaceAll("[^0-9]", "")); boolean boss = MapleDataTool.getIntConvert("boss", monsterInfoData, 0) > 0 || mid == 8810018 || mid == 9410066; if (boss) { bosses.add(mid); } } } public static boolean isBoss(int mid) { if (bosses == null) { populateBossList(); } return bosses.contains(mid); } public static ArrayList itemIdsFromName(String name) { ArrayList ret = new ArrayList<>(); for (Pair itemPair : MapleItemInformationProvider.getInstance().getAllItems()) { String item_name = itemPair.getRight().toLowerCase().replaceAll("\\"", ""); item_name = item_name.replaceAll("'", ""); item_name = item_name.replaceAll("\\'", ""); name = name.toLowerCase().replaceAll("\\"", ""); name = name.replaceAll("'", ""); name = name.replaceAll("\\'", ""); if (item_name.equals(name)) { ret.add(itemPair.getLeft()); return ret; } } return ret; } public static ArrayList npcIdsFromName(String name) { MapleDataProvider dataProvider = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")); ArrayList ret = new ArrayList<>(); if (npc_list == null) { ArrayList> searchList = new ArrayList<>(); for (MapleData searchData : dataProvider.getData("Npc.img").getChildren()) { int searchFromData = Integer.parseInt(searchData.getName()); String infoFromData = MapleDataTool.getString(searchData.getChildByPath("name"), "NO-NAME"); searchList.add(new Pair<>(searchFromData, infoFromData)); } npc_list = searchList; } for (Pair searched : npc_list) { if (searched.getRight().toLowerCase().contains(name.toLowerCase())) { ret.add(searched.getLeft()); } } return ret; } }