···257257 Map<String, AssetHandle> fileMap = new HashMap<>();
258258 TreeSet<String> subdirSet = new TreeSet<>();
259259260260+ TreeSet<String> ignoredPaths = new TreeSet<>();
261261+ ignoredPaths.add(project.engine.Engine.PROJECT_ENGINE_PATH);
262262+260263 for (File stackDir : Environment.assetDirectories) {
261264 Path dir = stackDir.toPath().resolve(relativePath);
262265···266269 try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
267270 for (Path entry : stream) {
268271 String name = entry.getFileName().toString();
272272+ if (name.startsWith("."))
273273+ continue;
269274270275 String relPath = relativePath + name;
276276+ if (ignoredPaths.contains(relPath))
277277+ continue;
278278+271279 AssetHandle ah = new AssetHandle(stackDir, relPath);
272280 AssetHandle upgraded = AssetHandle.upgrade(ah);
273281 if (upgraded != null)
+4-1
src/main/java/project/engine/Engine.java
···2020 private static final String BASEROM_PATH = "ver/us/baserom.z64";
2121 private static final String DUMP_PATH = "ver/us/build/star-rod-dump";
22222323+ /** If a project provides a custom engine, it should be a git repo at this directory. */
2424+ public static final String PROJECT_ENGINE_PATH = "papermario-dx";
2525+2326 private final File directory; // the worktree or submodule directory
2427 private final String ref;
2528 private final boolean isSubmodule;
···5659 String ref = project.getManifest().getEngineRef();
57605861 // Check for submodule first
5959- File submoduleDir = new File(project.getDirectory(), "papermario-dx");
6262+ File submoduleDir = new File(project.getDirectory(), PROJECT_ENGINE_PATH);
6063 if (isGitRepo(submoduleDir))
6164 return new Engine(submoduleDir, ref, true, buildEnv);
6265