- added shareable code with default proxy, headers and other settings for download tasks like images, symbols, mtgjson, etc;
- use XmageURLConnection.downloadText for text resources
- use XmageURLConnection.downloadBinary for any file resources
- added user agent with app version for all requests;
- added http logs and improved error messages;
* add types and subtypes
* add startingDefense attribute
* [MOM] Implement Invasion of Ravnica / Guildpact Paragon
* fix two small errors
* refactor various instances of "any target"
* fully implement defense counters
* battles can now be attacked
* [MOM] Implement Invasion of Dominaria / Serra Faithkeeper
* [MOM] Implement Invasion of Innistrad / Deluge of the Dead
* [MOM] Implement Invasion of Kaladesh / Aetherwing, Golden-Scale Flagship
* [MOM] Implement Invasion of Kamigawa / Rooftop Saboteurs
* [MOM] Implement Invasion of Karsus / Refraction Elemental
* [MOM] Implement Invasion of Tolvada / The Broken Sky
* simplify battle info ability
* fix verify failure
* some more fixes for attacking battles
* [MOM] Implement Invasion of Kaldheim / Pyre of the World Tree
* [MOM] Implement Invasion of Lorwyn / Winnowing Forces
* [MOM] Implement Invasion of Moag / Bloomwielder Dryads
* [MOM] Implement Invasion of Shandalar / Leyline Surge
* [MOM] Implement Invasion of Belenon / Belenon War Anthem
* [MOM] Implement Invasion of Pyrulea / Gargantuan Slabhorn
* [MOM] Implement Invasion of Vryn / Overloaded Mage-Ring
* [MOM] Implement Marshal of Zhalfir
* [MOM] Implement Sunfall
* implement protectors for sieges
* partially implement siege defeated trigger
* fix verify failure
* some updates to blocking
* [MOM] Implement Invasion of Mercadia / Kyren Flamewright
* [MOM] Implement Invasion of Theros / Ephara, Ever-Sheltering
* [MOM] Implement Invasion of Ulgrotha / Grandmother Ravi Sengir
* [MOM] Implement Invasion of Xerex / Vertex Paladin
* add initial battle test
* fix verify failure
* [MOM] Implement Invasion of Amonkhet / Lazotep Convert
* [MOM] update spoiler
* update how protectors are chosen
* update text
* battles can't block
* add control change test
* rename battle test for duel
* add multiplayer test
* [MOM] Implement Invasion of Alara / Awaken the Maelstrom
* [MOM] Implement Invasion of Eldraine
* [MOM] Implement Invasion of Ergamon / Truga Cliffhanger
* [MOM] Implement Invasion of Ixalan / Belligerent Regisaur
* battles now cast transformed (this is super hacky but we need to refactor TDFCs anyway)
* add TODO
* add ignore for randomly failing test
* a few small fixes
* add defense to MtgJsonCard (unused like loyalty)
* implement ProtectorIdPredicate
* small fixes
* check wrong card numbers in sets;
* check missing cards from set;
* check wrong full art settings;
* check missing and unknown sets in scryfall download settings;
* check missing and unknown direct download links in scryfall download settings;
* improved ability text check results;
* removed unused tests for word checks;
* fixed https://sonarcloud.io/project/issues?id=org.xmage%3Amage-root&issues=AWIlv32RgrzAwlaaQ7rP&open=AWIlv32RgrzAwlaaQ7rP
* ensure closing of scanner if it was opened
* Refactored method in EmpyrialArchAngel to not always return same value.
* Refactored method in FalkenrathAristocrat to not always return same value.
* Refactored method in GilderBairn to not always return the same value.
* fixed left open resources, ensured quiet closing of the streams
* Refactored method in IceCave to not always return same value.
* Refactored method in KjeldoranRoyalGuard to not always return same value.
* Refactored method in LegionsInitiative to not always return same value.
* Refactored method in NaturesWill to not always return same value.
* added quiet closing method in new streamutils class, used to clean up the connectdialog
* Fix small typo
* added quiet closing to saveobjectutil
* closed resources in savegame method of gamecontroller
* properly close resources in loadGame method of GameReplay class
* further proper resource closing in ServerMessagesUtil
* fixed unclosed resources in copy method in mage framework Copier
* closed unclosed resources in copyCompressed method in Copier
* ensure closing of filewriter in manasymbols
* ensure proper closing of Stream in arcane UI
* ensure closing of datagram socket in arcane Util
* ensure resource closing in deckimport from clipboard
* ensure closing of plugin classloader
* ensured closing of zipinputstream resource
* ensure closing of fileoutputstream in ScryfallSymbolsSource
* ensure closing resources after finishing/canceling download of pictures
* remove commented code
* move locks to try block to ensure unlocking along all execution paths
* remove dangerous instance of double-checked locking
* removed dangerous instance of double checked locking in settingsmanager
* Removed dangerous instance of double-checked locking in ThemePluginImpl
* close resource which did not happen certainly
* close another stream
* ensure closing of inputstream