diff --git a/forge-core/src/main/java/forge/StaticData.java b/forge-core/src/main/java/forge/StaticData.java index 271063d7ce0..83885198401 100644 --- a/forge-core/src/main/java/forge/StaticData.java +++ b/forge-core/src/main/java/forge/StaticData.java @@ -54,11 +54,11 @@ public class StaticData { private static StaticData lastInstance = null; - public StaticData(CardStorageReader cardReader, String editionFolder, String blockDataFolder, boolean enableUnknownCards) { - this(cardReader, null, editionFolder, blockDataFolder, enableUnknownCards); + public StaticData(CardStorageReader cardReader, String editionFolder, String blockDataFolder, boolean enableUnknownCards, boolean loadNonLegalCards) { + this(cardReader, null, editionFolder, blockDataFolder, enableUnknownCards, loadNonLegalCards); } - public StaticData(CardStorageReader cardReader, CardStorageReader tokenReader, String editionFolder, String blockDataFolder, boolean enableUnknownCards) { + public StaticData(CardStorageReader cardReader, CardStorageReader tokenReader, String editionFolder, String blockDataFolder, boolean enableUnknownCards, boolean loadNonLegalCards) { this.cardReader = cardReader; this.tokenReader = tokenReader; this.editions = new CardEdition.Collection(new CardEdition.Reader(new File(editionFolder))); @@ -84,8 +84,8 @@ public class StaticData { variantCards = new CardDb(variantsCards, editions); //must initialize after establish field values for the sake of card image logic - commonCards.initialize(false, false, enableUnknownCards); - variantCards.initialize(false, false, enableUnknownCards); + commonCards.initialize(false, false, enableUnknownCards, loadNonLegalCards); + variantCards.initialize(false, false, enableUnknownCards, loadNonLegalCards); } { diff --git a/forge-core/src/main/java/forge/card/CardDb.java b/forge-core/src/main/java/forge/card/CardDb.java index 6703f58075b..edaa404b11f 100644 --- a/forge-core/src/main/java/forge/card/CardDb.java +++ b/forge-core/src/main/java/forge/card/CardDb.java @@ -166,7 +166,7 @@ public final class CardDb implements ICardDatabase, IDeckGenPool { reIndex(); } - public void initialize(boolean logMissingPerEdition, boolean logMissingSummary, boolean enableUnknownCards) { + public void initialize(boolean logMissingPerEdition, boolean logMissingSummary, boolean enableUnknownCards, boolean loadNonLegalCards) { Set allMissingCards = new LinkedHashSet<>(); List missingCards = new ArrayList<>(); CardEdition upcomingSet = null; @@ -184,6 +184,11 @@ public final class CardDb implements ICardDatabase, IDeckGenPool { for (CardEdition.CardInSet cis : e.getAllCardsInSet()) { CardRules cr = rulesByName.get(cis.name); + if (cr != null && !cr.getType().isBasicLand() && !loadNonLegalCards + && (e.getCode().equals("CMB1") ||e.getCode().equals("UGL") + ||e.getCode().equals("UNH")||e.getCode().equals("UND")||e.getCode().equals("UST"))) + continue; //todo sets with nonlegal cards should have tags in them so we don't need to specify the code here + if (cr != null) { addSetCard(e, cis, cr); } diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java b/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java index 09652cfddfd..fac0c973db7 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java @@ -128,6 +128,7 @@ public enum CSubmenuPreferences implements ICDoc { lstControls.add(Pair.of(view.getCbSingletons(), FPref.DECKGEN_SINGLETONS)); lstControls.add(Pair.of(view.getCbEnableAICheats(), FPref.UI_ENABLE_AI_CHEATS)); lstControls.add(Pair.of(view.getCbEnableUnknownCards(), FPref.UI_LOAD_UNKNOWN_CARDS)); + lstControls.add(Pair.of(view.getCbEnableNonLegalCards(), FPref.UI_LOAD_NONLEGAL_CARDS)); lstControls.add(Pair.of(view.getCbUseExperimentalNetworkStream(), FPref.UI_NETPLAY_COMPAT)); lstControls.add(Pair.of(view.getCbImageFetcher(), FPref.UI_ENABLE_ONLINE_IMAGE_FETCHER)); lstControls.add(Pair.of(view.getCbDisplayFoil(), FPref.UI_OVERLAY_FOIL_EFFECT)); diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java b/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java index 352d1a69a60..18a05ea23fa 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java @@ -109,6 +109,7 @@ public enum VSubmenuPreferences implements IVSubmenu { private final JCheckBox cbRemindOnPriority = new OptionsCheckBox(localizer.getMessage("cbRemindOnPriority")); private final JCheckBox cbUseSentry = new OptionsCheckBox(localizer.getMessage("cbUseSentry")); private final JCheckBox cbEnableUnknownCards = new OptionsCheckBox(localizer.getMessage("lblEnableUnknownCards")); + private final JCheckBox cbEnableNonLegalCards = new OptionsCheckBox(localizer.getMessage("lblEnableNonLegalCards")); private final JCheckBox cbUseExperimentalNetworkStream = new OptionsCheckBox(localizer.getMessage("lblExperimentalNetworkCompatibility")); private final Map shortcutFields = new HashMap<>(); @@ -297,6 +298,9 @@ public enum VSubmenuPreferences implements IVSubmenu { pnlPrefs.add(cbEnableUnknownCards, titleConstraints); pnlPrefs.add(new NoteLabel(localizer.getMessage("nlEnableUnknownCards")), descriptionConstraints); + pnlPrefs.add(cbEnableNonLegalCards, titleConstraints); + pnlPrefs.add(new NoteLabel(localizer.getMessage("nlEnableNonLegalCards")), descriptionConstraints); + pnlPrefs.add(cbUseExperimentalNetworkStream, titleConstraints); pnlPrefs.add(new NoteLabel(localizer.getMessage("nlExperimentalNetworkCompatibility")), descriptionConstraints); @@ -598,6 +602,11 @@ public enum VSubmenuPreferences implements IVSubmenu { return cbEnableUnknownCards; } + /** @return {@link javax.swing.JCheckBox} */ + public JCheckBox getCbEnableNonLegalCards() { + return cbEnableNonLegalCards; + } + /** @return {@link javax.swing.JCheckBox} */ public JCheckBox getCbUseExperimentalNetworkStream() { return cbUseExperimentalNetworkStream; diff --git a/forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/CardDatabaseHelper.java b/forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/CardDatabaseHelper.java index 10e73f4d8af..5b34a476e55 100644 --- a/forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/CardDatabaseHelper.java +++ b/forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/CardDatabaseHelper.java @@ -29,7 +29,7 @@ public class CardDatabaseHelper { private static void initialize() { final CardStorageReader reader = new CardStorageReader(ForgeConstants.CARD_DATA_DIR, null, FModel.getPreferences().getPrefBoolean(FPref.LOAD_CARD_SCRIPTS_LAZILY)); - staticData = new StaticData(reader, ForgeConstants.EDITIONS_DIR, ForgeConstants.BLOCK_DATA_DIR, FModel.getPreferences().getPrefBoolean(FPref.UI_LOAD_UNKNOWN_CARDS)); + staticData = new StaticData(reader, ForgeConstants.EDITIONS_DIR, ForgeConstants.BLOCK_DATA_DIR, FModel.getPreferences().getPrefBoolean(FPref.UI_LOAD_UNKNOWN_CARDS), FModel.getPreferences().getPrefBoolean(FPref.UI_LOAD_NONLEGAL_CARDS)); } private static boolean hasBeenInitialized() { diff --git a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java index 7fabc2f165d..f9f705b151c 100644 --- a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java +++ b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java @@ -256,8 +256,8 @@ public class SettingsPage extends TabPage { localizer.getMessage("lblLater"), new Callback() { @Override public void run(Boolean result) { - if (result) { - Forge.restart(true); + if (result) { + Forge.restart(true); } } } @@ -265,6 +265,28 @@ public class SettingsPage extends TabPage { } }, 3); + lstSettings.addItem(new BooleanSetting(FPref.UI_LOAD_NONLEGAL_CARDS, + localizer.getMessage("lblEnableNonLegalCards"), + localizer.getMessage("nlEnableNonLegalCards")) { + @Override + public void select() { + super.select(); + FOptionPane.showConfirmDialog( + localizer.getMessage("lblRestartForgeDescription"), + localizer.getMessage("lblRestartForge"), + localizer.getMessage("lblRestart"), + localizer.getMessage("lblLater"), new Callback() { + @Override + public void run(Boolean result) { + if (result) { + Forge.restart(true); + } + } + } + ); + } + }, + 3); lstSettings.addItem(new BooleanSetting(FPref.UI_NETPLAY_COMPAT, localizer.getMessage("lblExperimentalNetworkCompatibility"), localizer.getMessage("nlExperimentalNetworkCompatibility")) { diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties index 07fc7395088..18c10765136 100644 --- a/forge-gui/res/languages/de-DE.properties +++ b/forge-gui/res/languages/de-DE.properties @@ -1009,6 +1009,8 @@ lblShowFPSDisplay=FPS-Anzeige nlShowFPSDisplay=Aktiviert die Frames-per-second-Anzeige (Experimentell). lblEnableUnknownCards=Erlaube unbekannte Karten nlEnableUnknownCards=Erlaube unbekannte Karten von unbekannten Sets. (Erfordert Neustart) +lblEnableNonLegalCards=Enable Non-Legal Cards +nlEnableNonLegalCards=Enable Non-Legal Cards like Un-sets and PlayTest Cards. (Requires restart) lblExperimentalNetworkCompatibility=Experimentelle Netzwerkkompatibilität nlExperimentalNetworkCompatibility=Forge wechselt auf kompatiblen Netzwerk-Stream. (Im Zweifel bitte ausschalten) lblDisposeTextures=Texturen anordnen diff --git a/forge-gui/res/languages/en-US.properties b/forge-gui/res/languages/en-US.properties index 5ac8c59e50f..78a7aeaa2a7 100644 --- a/forge-gui/res/languages/en-US.properties +++ b/forge-gui/res/languages/en-US.properties @@ -1009,6 +1009,8 @@ lblShowFPSDisplay=Show FPS Display nlShowFPSDisplay=When enabled, show the FPS Display (Experimental). lblEnableUnknownCards=Enable Unknown Cards nlEnableUnknownCards=Enable Unknown Cards to be loaded to Unknown Set. (Requires restart) +lblEnableNonLegalCards=Enable Non-Legal Cards +nlEnableNonLegalCards=Enable Non-Legal Cards like Un-sets and PlayTest Cards. (Requires restart) lblExperimentalNetworkCompatibility=Experimental Network Compatibility nlExperimentalNetworkCompatibility=Forge switches to compatible network stream. (If unsure, turn OFF this option) lblDisposeTextures=Dispose Textures diff --git a/forge-gui/res/languages/es-ES.properties b/forge-gui/res/languages/es-ES.properties index 56f7ec389d9..532f7def623 100644 --- a/forge-gui/res/languages/es-ES.properties +++ b/forge-gui/res/languages/es-ES.properties @@ -1009,6 +1009,8 @@ lblShowFPSDisplay=Mostrar FPS nlShowFPSDisplay=Cuando está habilitado, muestra los FPS (Experimental). lblEnableUnknownCards=Habilitar cartas desconocidas nlEnableUnknownCards=Habilitar que las cartas desconocidas se carguen en el Unknown Set. (Requiere reinicio) +lblEnableNonLegalCards=Enable Non-Legal Cards +nlEnableNonLegalCards=Enable Non-Legal Cards like Un-sets and PlayTest Cards. (Requires restart) lblExperimentalNetworkCompatibility=Compatibilidad de red experimental nlExperimentalNetworkCompatibility=Forge cambia a un flujo de red compatible. (Si no estás seguro, deshabilita esta opción) lblDisposeTextures=Desechar texturas diff --git a/forge-gui/res/languages/it-IT.properties b/forge-gui/res/languages/it-IT.properties index aec2a224166..c5bcfccdf23 100644 --- a/forge-gui/res/languages/it-IT.properties +++ b/forge-gui/res/languages/it-IT.properties @@ -1009,6 +1009,8 @@ lblShowFPSDisplay=Mostra display FPS nlShowFPSDisplay=Se abilitato, mostra il display FPS (sperimentale). lblEnableUnknownCards=Enable Unknown Cards nlEnableUnknownCards=Enable Unknown Cards to be loaded to Unknown Set. (Requires restart) +lblEnableNonLegalCards=Enable Non-Legal Cards +nlEnableNonLegalCards=Enable Non-Legal Cards like Un-sets and PlayTest Cards. (Requires restart) lblExperimentalNetworkCompatibility=Experimental Network Compatibility nlExperimentalNetworkCompatibility=Forge switches to compatible network stream. (If unsure, turn OFF this option) lblDisposeTextures=Dispose Textures diff --git a/forge-gui/res/languages/ja-JP.properties b/forge-gui/res/languages/ja-JP.properties index 54e83d0c60f..92e18258ec6 100644 --- a/forge-gui/res/languages/ja-JP.properties +++ b/forge-gui/res/languages/ja-JP.properties @@ -1009,6 +1009,8 @@ lblShowFPSDisplay=FPS ディスプレイを表示 nlShowFPSDisplay=有効にすると、FPS ディスプレイ(実験的)を表示します。 lblEnableUnknownCards=未知のカードを有効にする nlEnableUnknownCards=未知のカードを未知のセットにまとめます。(再起動必須) +lblEnableNonLegalCards=Enable Non-Legal Cards +nlEnableNonLegalCards=Enable Non-Legal Cards like Un-sets and PlayTest Cards. (Requires restart) lblExperimentalNetworkCompatibility=実験的なネットワークコンパチビリティ nlExperimentalNetworkCompatibility=Forge がコンパチブルネットワークストリーミに切り替えます。 (分からない場合はオフにしてください) lblDisposeTextures=テキスチャー廃棄 diff --git a/forge-gui/res/languages/zh-CN.properties b/forge-gui/res/languages/zh-CN.properties index f5191a1b24d..6b255bb71dd 100644 --- a/forge-gui/res/languages/zh-CN.properties +++ b/forge-gui/res/languages/zh-CN.properties @@ -1008,6 +1008,8 @@ lblShowFPSDisplay=显示当前的FPS值 nlShowFPSDisplay=启用后,将在画面左上角显示当前Forge的FPS(实验性特性)。 lblEnableUnknownCards=启用未知卡牌 nlEnableUnknownCards=将未知卡牌加载到未知系列中。(需要重启) +lblEnableNonLegalCards=Enable Non-Legal Cards +nlEnableNonLegalCards=Enable Non-Legal Cards like Un-sets and PlayTest Cards. (Requires restart) lblExperimentalNetworkCompatibility=实验性网络兼容 nlExperimentalNetworkCompatibility=Forge将切换为兼容性的网络流。(如果不清楚此选项的作用,请关闭此选项) lblDisposeTextures=释放纹理 diff --git a/forge-gui/src/main/java/forge/model/FModel.java b/forge-gui/src/main/java/forge/model/FModel.java index 68a53264c9b..5638d6b17b5 100644 --- a/forge-gui/src/main/java/forge/model/FModel.java +++ b/forge-gui/src/main/java/forge/model/FModel.java @@ -164,7 +164,7 @@ public final class FModel { FModel.getPreferences().getPrefBoolean(FPref.LOAD_CARD_SCRIPTS_LAZILY)); final CardStorageReader tokenReader = new CardStorageReader(ForgeConstants.TOKEN_DATA_DIR, progressBarBridge, FModel.getPreferences().getPrefBoolean(FPref.LOAD_CARD_SCRIPTS_LAZILY)); - magicDb = new StaticData(reader, tokenReader, ForgeConstants.EDITIONS_DIR, ForgeConstants.BLOCK_DATA_DIR, FModel.getPreferences().getPrefBoolean(FPref.UI_LOAD_UNKNOWN_CARDS)); + magicDb = new StaticData(reader, tokenReader, ForgeConstants.EDITIONS_DIR, ForgeConstants.BLOCK_DATA_DIR, FModel.getPreferences().getPrefBoolean(FPref.UI_LOAD_UNKNOWN_CARDS), FModel.getPreferences().getPrefBoolean(FPref.UI_LOAD_NONLEGAL_CARDS)); CardTranslation.preloadTranslation(preferences.getPref(FPref.UI_LANGUAGE), ForgeConstants.LANG_DIR); //create profile dirs if they don't already exist diff --git a/forge-gui/src/main/java/forge/properties/ForgePreferences.java b/forge-gui/src/main/java/forge/properties/ForgePreferences.java index 1d822e338b2..876fa705140 100644 --- a/forge-gui/src/main/java/forge/properties/ForgePreferences.java +++ b/forge-gui/src/main/java/forge/properties/ForgePreferences.java @@ -148,6 +148,7 @@ public class ForgePreferences extends PreferencesStore { UI_NETPLAY_COMPAT("false"), UI_ENABLE_DISPOSE_TEXTURES("false"), UI_LOAD_UNKNOWN_CARDS("true"), + UI_LOAD_NONLEGAL_CARDS("true"), UI_AUTO_CACHE_SIZE("false"), UI_ALLOW_ORDER_GRAVEYARD_WHEN_NEEDED ("Never"), UI_DEFAULT_FONT_SIZE("12"),