diff --git a/src/main/java/com/volmit/iris/core/loader/ObjectResourceLoader.java b/src/main/java/com/volmit/iris/core/loader/ObjectResourceLoader.java index 5f1be6ee0..bc1f1e9b5 100644 --- a/src/main/java/com/volmit/iris/core/loader/ObjectResourceLoader.java +++ b/src/main/java/com/volmit/iris/core/loader/ObjectResourceLoader.java @@ -68,33 +68,26 @@ public class ObjectResourceLoader extends ResourceLoader { if(possibleKeys != null) { return possibleKeys; } - Iris.debug("Building " + resourceTypeName + " Possibility Lists"); KSet m = new KSet<>(); - for(File i : getFolders()) { - for(File j : i.listFiles()) { - if(j.isFile() && j.getName().endsWith(".iob")) { - m.add(j.getName().replaceAll("\\Q.iob\\E", "")); - } else if(j.isDirectory()) { - for(File k : j.listFiles()) { - if(k.isFile() && k.getName().endsWith(".iob")) { - m.add(j.getName() + "/" + k.getName().replaceAll("\\Q.iob\\E", "")); - } else if(k.isDirectory()) { - for(File l : k.listFiles()) { - if(l.isFile() && l.getName().endsWith(".iob")) { - m.add(j.getName() + "/" + k.getName() + "/" + l.getName().replaceAll("\\Q.iob\\E", "")); - } - } - } - } - } + m.addAll(getFiles(i, ".iob", true)); + } + possibleKeys = m.toArray(new String[0]); + return possibleKeys; + } + + private KList getFiles(File dir, String ext, boolean skipDirName) { + KList paths = new KList<>(); + String name = skipDirName ? "" : dir.getName() + "/"; + for(File f : dir.listFiles()) { + if(f.isFile() && f.getName().endsWith(ext)) { + paths.add(name + f.getName().replaceAll("\\Q" + ext + "\\E", "")); + } else if(f.isDirectory()) { + getFiles(f, ext, false).forEach(e -> paths.add(name + e)); } } - - KList v = new KList<>(m); - possibleKeys = v.toArray(new String[0]); - return possibleKeys; + return paths; } public File findFile(String name) {