} else if (sub[0].equalsIgnoreCase("search")) {
if (sub.length < 2)
{
}
if (sub.length > 2)
{
String search = joinStringFrom(sub, 2);
MapleData data = null;
MapleDataProvider dataProvider = MapleDataProviderFactory.getDataProvider(new File("wz/String.wz"));
player.dropMessage("~Searching~ <<Type: " + sub[1] + " | Search: " + search + ">>");
if (!sub[1].equalsIgnoreCase("ITEM"))
{
if (sub[1].equalsIgnoreCase("NPC"))
{
data = dataProvider.getData("Npc.img");
}
else if (sub[1].equalsIgnoreCase("MOB"))
{
List<String> retMobs = new LinkedList<String>();
data = dataProvider.getData("Mob.img");
List<Pair<Integer, String>> mobPairList = new LinkedList<Pair<Integer, String>>();
for (MapleData mobIdData : data.getChildren()) {
int mobIdFromData = Integer.parseInt(mobIdData.getName());
String mobNameFromData = MapleDataTool.getString(mobIdData.getChildByPath("name"), "NO-NAME");
mobPairList.add(new Pair<Integer, String>(mobIdFromData, mobNameFromData));
}
for (Pair<Integer, String> mobPair : mobPairList) {
if (mobPair.getRight().toLowerCase().contains(search.toLowerCase())) {
retMobs.add(mobPair.getLeft() + " - " + mobPair.getRight());
}
}
if (retMobs != null && retMobs.size() > 0) {
for (String singleRetMob : retMobs) {
player.dropMessage(singleRetMob);
}
} else {
player.dropMessage("No Mob's Found");
}
}
else if (sub[1].equalsIgnoreCase("SKILL"))
{
data = dataProvider.getData("Skill.img");
}
else if (sub[1].equalsIgnoreCase("Map"))
{
// Add methods for searching map...
player.dropMessage("start custome map searching meow~");
data = dataProvider.getData("Map.img");
List<Pair<Integer, String>> searchList = new LinkedList<>();
// load every map info in wz in to searchList, then search it one by one
for (MapleData searchData : data.getChildren()) {
for ( MapleData data_level_2 : searchData.getChildren())
{
// map_id
int searchFromData = Integer.parseInt(data_level_2.getName());
String infoFromData =
MapleDataTool.getString(data_level_2.getChildByPath("streetName"), "NO-NAME") +
" - " +
MapleDataTool.getString(data_level_2.getChildByPath("mapName"), "NO-NAME");
//MapleDataTool.getString(data_level_2.getChildByPath("name"), "NO-NAME");
searchList.add(new Pair<Integer, String>(searchFromData, infoFromData));
}
}
for (Pair<Integer, String> searched : searchList) {
if (searched.getRight().toLowerCase().contains(search.toLowerCase())) {
player.dropMessage(searched.getLeft() + " - " + searched.getRight());
}
}
}
else
{
player.dropMessage("Invalid search.\nSyntax: '/search [type] [name]', where [type] is NPC, MAP, ITEM, MOB, or SKILL.");
return true;
}
}
else //item
{
for (Pair<Integer, String> itemPair : MapleItemInformationProvider.getInstance().getAllItems()) {
if (itemPair.getRight().toLowerCase().contains(search.toLowerCase())) {
player.dropMessage(itemPair.getLeft() + " - " + itemPair.getRight());
}
}
player.dropMessage("Search Complete.");
}
}
else
{
player.dropMessage("Invalid search.\nSyntax: '/search [type] [name]', where [type] is NPC, ITEM, MOB, or SKILL.");
}