public static List<String> whoDrops(int itemid) {
        int searchid = itemid;
        List<String> retMobs = new ArrayList<String>();
        MapleData data = null;
        MapleDataProvider dataProvider = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("net.sf.odinms.wzpath") + "/" + "String.wz"));
        data = dataProvider.getData("Mob.img");
        List<Pair<Integer, String>> mobPairList = new LinkedList<Pair<Integer, String>>();
        int chance = 0;
        Connection con = DatabaseConnection.getConnection();
        ResultSet rs = null;
        PreparedStatement ps = null;
        retMobs.add("[The Elite Ninja Gang] Item " + searchid + " is dropped by the following mobs:");
        try {
            ps = con.prepareStatement("SELECT monsterid, chance FROM monsterdrops WHERE itemid = ?");
            ps.setInt(1, searchid);
            rs = ps.executeQuery();
            while (rs.next()) {
                chance = rs.getInt("chance");
                int mobn = rs.getInt("monsterid");
                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.getLeft() == (mobn) && !retMobs.contains(mobPair.getRight())) {
                        retMobs.add(mobPair.getRight() + " - 1 in " + chance + " chance per drop.");
                    }
                }
                mobPairList.clear();
            }
            rs.close();
            ps.close();
        } catch (SQLException sQLException) {
        } catch (NumberFormatException numberFormatException) {
        }
        return retMobs;
    }