Список ресурсов

Версия Minecraft
1.7.10

ASi

21
0
В общем дело такое мне нужно получить массив всех файлов в определенной папке из ресурсов (не путать с папкой майна, именно мода) но сделать это нужно используя modid что бы можно было чекать файлы и в подключенном ресурс паке. Можно ли такое сделать и если да то как?
 

ASi

21
0
Мне нужно сделать что то типо DLC - в ресурспаке лежит модель с текстурами и json файл конфигов вот их мне все получить и прочитать надо(конфиги). может тогда есть еще какой-то вариант реализации этого? Мне вообще и скрипт несколько раз юзать надо для подтипов итема и при рендере
 
1,111
47
420
Ну допустим есть такой вариант
Java:
public static List<String> getFilenamesInDir(String dir) {
        List<String> filenames = new ArrayList<String>();
        try {
            if (dir.startsWith("/")) {
                dir = dir.substring(1);
            }
            Enumeration<URL> urls = ClassPathHelper.class.getClassLoader().getResources(dir);
            while (urls.hasMoreElements()) {
                URL url = urls.nextElement();
                String protocol = url.getProtocol();
                if (protocol.equals("file")) {
                    File dirFile = new File(url.toURI());
                    HashMap<File, String> files = listFiles(dirFile, dir);
                    if (files != null) {
                        for (Map.Entry<File, String> entry : files.entrySet()) {
                            String filename = entry.getValue() + entry.getKey().getName();
                            filenames.add("/" + filename);
                        }
                    }
                }
                if (protocol.equals("jar") || protocol.equals("zip")) {
                    String file = URLDecoder.decode(url.getFile(), "UTF-8");
                    int bangIndex = file.indexOf('!');
                    String jarPath = file.substring(bangIndex + 2);
                    file = new URL(file.substring(0, bangIndex)).getFile();
                    ZipFile zip = new ZipFile(file);
                    Enumeration<? extends ZipEntry> entries = zip.entries();
                    while (entries.hasMoreElements()) {
                        ZipEntry entry = entries.nextElement();
                        if (entry.getName().startsWith(dir.substring(1)) && !entry.isDirectory()) {
                            filenames.add("/" + entry.getName());
                        }
                    }
                    zip.close();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return filenames;
Этот код я просто скопипастил из кода ск. Мб у тебя он даже не запустится, но можешь попробовать даяда.
 
7,099
324
1,509
Через него содержимое каждого файла
getClass.getResourceAsStream(...)
А вот как список - хз. Наверное, в forge есть нужный код, в загрузчике
 
1,111
47
420
у вас глаза отвалились? я внезапно попал в чс для всего форума?

Ну допустим есть такой вариант
Java:
public static List<String> getFilenamesInDir(String dir) {
        List<String> filenames = new ArrayList<String>();
        try {
            if (dir.startsWith("/")) {
                dir = dir.substring(1);
            }
            Enumeration<URL> urls = ClassPathHelper.class.getClassLoader().getResources(dir);
            while (urls.hasMoreElements()) {
                URL url = urls.nextElement();
                String protocol = url.getProtocol();
                if (protocol.equals("file")) {
                    File dirFile = new File(url.toURI());
                    HashMap<File, String> files = listFiles(dirFile, dir);
                    if (files != null) {
                        for (Map.Entry<File, String> entry : files.entrySet()) {
                            String filename = entry.getValue() + entry.getKey().getName();
                            filenames.add("/" + filename);
                        }
                    }
                }
                if (protocol.equals("jar") || protocol.equals("zip")) {
                    String file = URLDecoder.decode(url.getFile(), "UTF-8");
                    int bangIndex = file.indexOf('!');
                    String jarPath = file.substring(bangIndex + 2);
                    file = new URL(file.substring(0, bangIndex)).getFile();
                    ZipFile zip = new ZipFile(file);
                    Enumeration<? extends ZipEntry> entries = zip.entries();
                    while (entries.hasMoreElements()) {
                        ZipEntry entry = entries.nextElement();
                        if (entry.getName().startsWith(dir.substring(1)) && !entry.isDirectory()) {
                            filenames.add("/" + entry.getName());
                        }
                    }
                    zip.close();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return filenames;
Этот код я просто скопипастил из кода ск. Мб у тебя он даже не запустится, но можешь попробовать даяда.
Вапще не видно?
 
Сверху