From 0b01f1c4678fa81c61b7cf4e7cd91dad4406282f Mon Sep 17 00:00:00 2001 From: KoalaTrapLord Date: Sun, 5 Apr 2026 16:47:54 +0000 Subject: [PATCH] fix: pass bare deck names to Forge sim (not full paths) Forge's sim mode looks up decks by NAME in its own %APPDATA%/Forge/decks/commander/ directory. Passing a full path like D:\...\precon-decks\Counterpunch.dck causes 'Could not load deck'. Now strips the path and .dck extension so Forge sees just the bare name (e.g. 'Counterpunch') and finds it in its deck folder. Precon .dck files must be copied to %APPDATA%/Forge/decks/commander/ for Forge to find them. --- .../commanderailab/batch/BatchRunner.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/main/java/commanderailab/batch/BatchRunner.java b/src/main/java/commanderailab/batch/BatchRunner.java index a5c7526..063bf36 100644 --- a/src/main/java/commanderailab/batch/BatchRunner.java +++ b/src/main/java/commanderailab/batch/BatchRunner.java @@ -443,13 +443,25 @@ public class BatchRunner { cmd.add("sim"); - // Pass each deck as a full absolute path so Forge can find the .dck file - // regardless of its working directory. + // Forge's sim mode looks up decks by NAME inside its own + // decks/commander/ directory (%APPDATA%/Forge/decks/commander/). + // It does NOT accept full paths — passing a path like + // D:\...\precon-decks\Counterpunch.dck causes "Could not load deck". + // + // Strip the path and .dck extension so Forge sees just the bare + // name (e.g. "Counterpunch") and finds it in its own folder. cmd.add("-d"); for (DeckInfo deck : decks) { String resolvedPath = resolveFullDeckPath(deck.deckFile); - cmd.add(resolvedPath); - System.out.println("[DECK] Resolved deck path: " + resolvedPath); + // Extract just the deck name: "Counterpunch" from full path + String deckName = resolvedPath; + int lastSep = Math.max(deckName.lastIndexOf('/'), deckName.lastIndexOf('\\')); + if (lastSep >= 0) deckName = deckName.substring(lastSep + 1); + if (deckName.toLowerCase().endsWith(".dck")) { + deckName = deckName.substring(0, deckName.length() - 4); + } + cmd.add(deckName); + System.out.println("[DECK] Resolved: " + resolvedPath + " → Forge name: " + deckName); } cmd.add("-f");