diff --git a/.gitattributes b/.gitattributes
index 132534207dd..ac8db689978 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -139,6 +139,16 @@ forge-ai/src/main/java/forge/ai/ability/UntapAi.java -text
forge-ai/src/main/java/forge/ai/ability/UntapAllAi.java -text
forge-ai/src/main/java/forge/ai/ability/ZoneExchangeAi.java -text
forge-bundle/pom.xml svneol=native#text/xml
+forge-bundle/src/main/conf/cardsfolder.xml svneol=native#text/xml
+forge-bundle/src/main/conf/forge.ico -text svneol=unset#image/ico
+forge-bundle/src/main/conf/windows-linux.xml svneol=native#text/xml
+forge-bundle/src/main/resources/CHANGES.txt -text
+forge-bundle/src/main/resources/LICENSE.txt -text
+forge-bundle/src/main/resources/README.txt -text
+forge-bundle/src/main/resources/forge.bat svneol=native#text/plain
+forge-bundle/src/main/resources/forge.command svneol=native#text/x-sh
+forge-bundle/src/main/resources/forge.profile.properties.example -text
+forge-bundle/src/main/resources/forge.sh svneol=native#text/x-sh
forge-bundle/src/main/resources/res/ai/Default.ai -text
forge-bundle/src/main/resources/res/ai/Reckless.ai -text
forge-bundle/src/main/resources/res/blockdata/blocks.txt svneol=native#text/plain
@@ -15402,18 +15412,11 @@ forge-gui/.project -text
forge-gui/.settings/org.eclipse.core.resources.prefs -text
forge-gui/.settings/org.eclipse.jdt.core.prefs -text
forge-gui/.settings/org.eclipse.m2e.core.prefs -text
-forge-gui/CHANGES.txt -text
-forge-gui/LICENSE.txt -text
-forge-gui/README.txt -text
-forge-gui/forge.profile.properties.example -text
forge-gui/pom.xml -text
forge-gui/src/main/config/Forge.icns -text
forge-gui/src/main/config/backgroundImage.jpg -text svneol=unset#image/jpeg
forge-gui/src/main/config/builder/create-dmg.builder -text
forge-gui/src/main/config/create-dmg -text
-forge-gui/src/main/config/forge.command svneol=native#text/x-sh
-forge-gui/src/main/config/forge.ico -text svneol=unset#image/ico
-forge-gui/src/main/config/forge.sh svneol=native#text/x-sh
forge-gui/src/main/config/forge_checks.xml svneol=native#text/xml
forge-gui/src/main/config/support/dmg-license.py svneol=native#text/x-python
forge-gui/src/main/config/support/template.applescript -text
@@ -15955,6 +15958,18 @@ forge-gui/src/test/java/forge/gui/ListChooserTest.java svneol=native#text/plain
forge-gui/src/test/java/forge/gui/game/CardDetailPanelTest.java svneol=native#text/plain
forge-gui/src/test/java/forge/item/DeckHintsTest.java -text
forge-gui/src/test/java/forge/model/FModelTest.java -text
+forge-gui/src/test/resources/cardsfolder/acidic_slime.txt svneol=native#text/plain
+forge-gui/src/test/resources/cardsfolder/ajanis_sunstriker.txt svneol=native#text/plain
+forge-gui/src/test/resources/cardsfolder/assault_griffin.txt svneol=native#text/plain
+forge-gui/src/test/resources/cardsfolder/auramancer.txt svneol=native#text/plain
+forge-gui/src/test/resources/cardsfolder/crown_of_empires.txt svneol=native#text/plain
+forge-gui/src/test/resources/cardsfolder/griffin_rider.txt svneol=native#text/plain
+forge-gui/src/test/resources/cardsfolder/llanowar_elves.txt svneol=native#text/plain
+forge-gui/src/test/resources/cardsfolder/mwonvuli_beast_tracker.txt svneol=native#text/plain
+forge-gui/src/test/resources/cardsfolder/scepter_of_empires.txt svneol=native#text/plain
+forge-gui/src/test/resources/cardsfolder/throne_of_empires.txt svneol=native#text/plain
+forge-gui/src/test/resources/cardsfolder/unsummon.txt svneol=native#text/plain
+forge-gui/src/test/resources/cardsfolder/wurms_tooth.txt svneol=native#text/plain
forge-gui/tools/PerSetTracking.py svneol=native#text/x-python
forge-gui/tools/assignSetInfo.py svneol=native#text/x-python
forge-gui/tools/cardTemplateScript.py svneol=native#text/x-python
diff --git a/.gitignore b/.gitignore
index 3311f978187..a46f475e1dd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -81,6 +81,7 @@ forge-bundle/src/main/resources/res/skins/the_simpsons/decks
forge-bundle/src/main/resources/res/skins/the_simpsons/layouts
forge-bundle/src/main/resources/res/skins/the_simpsons/pics*
forge-bundle/src/main/resources/res/skins/the_simpsons/pics_product
+forge-bundle/target
forge-core/forge-core.iml
forge-core/target
forge-game/target
diff --git a/forge-bundle/pom.xml b/forge-bundle/pom.xml
index 79b01a1f2c4..cec6b69acce 100644
--- a/forge-bundle/pom.xml
+++ b/forge-bundle/pom.xml
@@ -55,9 +55,6 @@
forge.view.Main
true
-
- ${fullversionstring}
-
diff --git a/forge-bundle/src/main/conf/cardsfolder.xml b/forge-bundle/src/main/conf/cardsfolder.xml
new file mode 100644
index 00000000000..4376a837156
--- /dev/null
+++ b/forge-bundle/src/main/conf/cardsfolder.xml
@@ -0,0 +1,13 @@
+
+ bundle
+
+ zip
+
+ false
+
+
+ ${project.basedir}/src/main/resources/res/cardsfolder
+ /
+
+
+
\ No newline at end of file
diff --git a/forge-gui/src/main/config/forge.ico b/forge-bundle/src/main/conf/forge.ico
similarity index 100%
rename from forge-gui/src/main/config/forge.ico
rename to forge-bundle/src/main/conf/forge.ico
diff --git a/forge-bundle/src/main/conf/windows-linux.xml b/forge-bundle/src/main/conf/windows-linux.xml
new file mode 100644
index 00000000000..38b91d1e17c
--- /dev/null
+++ b/forge-bundle/src/main/conf/windows-linux.xml
@@ -0,0 +1,44 @@
+
+ bundle
+
+ tar.bz2
+
+ false
+
+
+ ${project.basedir}/src/main/resources
+
+ forge.sh
+ forge.command
+ forge.bat
+
+ /
+ true
+
+
+ ${project.basedir}/src/main/resources
+
+ res/cardsfolder/**
+ forge.sh
+ forge.command
+ forge.bat
+
+ /
+
+
+ ${project.build.directory}
+
+ cardsfolder.zip
+
+ /res/cardsfolder
+
+
+ ${project.build.directory}
+ /
+
+ forge.exe
+ ${project.build.finalName}-jar-with-dependencies.jar
+
+
+
+
\ No newline at end of file
diff --git a/forge-gui/CHANGES.txt b/forge-bundle/src/main/resources/CHANGES.txt
similarity index 100%
rename from forge-gui/CHANGES.txt
rename to forge-bundle/src/main/resources/CHANGES.txt
diff --git a/forge-gui/LICENSE.txt b/forge-bundle/src/main/resources/LICENSE.txt
similarity index 100%
rename from forge-gui/LICENSE.txt
rename to forge-bundle/src/main/resources/LICENSE.txt
diff --git a/forge-gui/README.txt b/forge-bundle/src/main/resources/README.txt
similarity index 100%
rename from forge-gui/README.txt
rename to forge-bundle/src/main/resources/README.txt
diff --git a/forge-bundle/src/main/resources/forge.bat b/forge-bundle/src/main/resources/forge.bat
new file mode 100644
index 00000000000..f5d124e6d1d
--- /dev/null
+++ b/forge-bundle/src/main/resources/forge.bat
@@ -0,0 +1,4 @@
+@echo off
+SETLOCAL
+cd %~dp0
+java -Xmx1024M -cp "%~dp0res";"%~dp0${project.build.finalName}-jar-with-dependencies.jar" forge.view.Main
\ No newline at end of file
diff --git a/forge-bundle/src/main/resources/forge.command b/forge-bundle/src/main/resources/forge.command
new file mode 100755
index 00000000000..250ace0d8da
--- /dev/null
+++ b/forge-bundle/src/main/resources/forge.command
@@ -0,0 +1,3 @@
+#!/bin/sh
+cd "`dirname \"$0\"`"
+java -Xmx1024m -cp res;${project.build.finalName}-jar-with-dependencies.jar forge.view.Main
\ No newline at end of file
diff --git a/forge-gui/forge.profile.properties.example b/forge-bundle/src/main/resources/forge.profile.properties.example
similarity index 100%
rename from forge-gui/forge.profile.properties.example
rename to forge-bundle/src/main/resources/forge.profile.properties.example
diff --git a/forge-bundle/src/main/resources/forge.sh b/forge-bundle/src/main/resources/forge.sh
new file mode 100755
index 00000000000..250ace0d8da
--- /dev/null
+++ b/forge-bundle/src/main/resources/forge.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+cd "`dirname \"$0\"`"
+java -Xmx1024m -cp res;${project.build.finalName}-jar-with-dependencies.jar forge.view.Main
\ No newline at end of file
diff --git a/forge-gui/src/main/config/forge.command b/forge-gui/src/main/config/forge.command
deleted file mode 100755
index e6068616734..00000000000
--- a/forge-gui/src/main/config/forge.command
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-cd "`dirname \"$0\"`"
-java -Xmx1024m -jar $project.build.finalName$
\ No newline at end of file
diff --git a/forge-gui/src/main/config/forge.sh b/forge-gui/src/main/config/forge.sh
deleted file mode 100755
index e6068616734..00000000000
--- a/forge-gui/src/main/config/forge.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-cd "`dirname \"$0\"`"
-java -Xmx1024m -jar $project.build.finalName$
\ No newline at end of file
diff --git a/forge-gui/src/main/java/forge/properties/NewConstants.java b/forge-gui/src/main/java/forge/properties/NewConstants.java
index 03cc6d54ad1..c932d40acac 100644
--- a/forge-gui/src/main/java/forge/properties/NewConstants.java
+++ b/forge-gui/src/main/java/forge/properties/NewConstants.java
@@ -25,7 +25,7 @@ public final class NewConstants {
public static final String PROFILE_TEMPLATE_FILE = PROFILE_FILE + ".example";
// data that is only in the program dir
- private static final String _RES_ROOT = "res/";
+ private static final String _RES_ROOT = NewConstants.class.getResource("/").getFile();
private static final String _LIST_DIR = _RES_ROOT + "lists/";
public static final String KEYWORD_LIST_FILE = _LIST_DIR + "NonStackingKWList.txt";
public static final String TYPE_LIST_FILE = _LIST_DIR + "TypeLists.txt";
diff --git a/forge-gui/src/test/java/forge/item/DeckHintsTest.java b/forge-gui/src/test/java/forge/item/DeckHintsTest.java
index ebfa7b405e8..3072bcada89 100644
--- a/forge-gui/src/test/java/forge/item/DeckHintsTest.java
+++ b/forge-gui/src/test/java/forge/item/DeckHintsTest.java
@@ -127,8 +127,7 @@ public class DeckHintsTest {
* @return the CardPrinted
*/
protected PaperCard readCard(String filename) {
- String firstLetter = filename.substring(0, 1);
- File dir = new File(NewConstants.CARD_DATA_DIR, firstLetter);
+ File dir = new File(NewConstants.CARD_DATA_DIR);
File txtFile = new File(dir, filename);
CardRules.Reader crr = new CardRules.Reader();
diff --git a/forge-gui/src/test/resources/cardsfolder/acidic_slime.txt b/forge-gui/src/test/resources/cardsfolder/acidic_slime.txt
new file mode 100644
index 00000000000..18639de4cfa
--- /dev/null
+++ b/forge-gui/src/test/resources/cardsfolder/acidic_slime.txt
@@ -0,0 +1,10 @@
+Name:Acidic Slime
+ManaCost:3 G G
+Types:Creature Ooze
+PT:2/2
+K:Deathtouch
+T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerDescription$ When CARDNAME enters the battlefield, destroy target artifact, enchantment, or land.
+SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Artifact,Enchantment,Land | TgtPrompt$ Select an artifact, enchantment, or land.
+SVar:PlayMain1:TRUE
+SVar:Picture:http://www.wizards.com/global/images/magic/general/acidic_slime.jpg
+Oracle:Deathtouch (Any amount of damage this deals to a creature is enough to destroy it.)\nWhen Acidic Slime enters the battlefield, destroy target artifact, enchantment, or land.
\ No newline at end of file
diff --git a/forge-gui/src/test/resources/cardsfolder/ajanis_sunstriker.txt b/forge-gui/src/test/resources/cardsfolder/ajanis_sunstriker.txt
new file mode 100644
index 00000000000..74d0403c534
--- /dev/null
+++ b/forge-gui/src/test/resources/cardsfolder/ajanis_sunstriker.txt
@@ -0,0 +1,7 @@
+Name:Ajani's Sunstriker
+ManaCost:W W
+Types:Creature Cat Cleric
+PT:2/2
+K:Lifelink
+SVar:Picture:http://www.wizards.com/global/images/magic/general/ajanis_sunstriker.jpg
+Oracle:Lifelink (Damage dealt by this creature also causes you to gain that much life.)
\ No newline at end of file
diff --git a/forge-gui/src/test/resources/cardsfolder/assault_griffin.txt b/forge-gui/src/test/resources/cardsfolder/assault_griffin.txt
new file mode 100644
index 00000000000..bf585a8422d
--- /dev/null
+++ b/forge-gui/src/test/resources/cardsfolder/assault_griffin.txt
@@ -0,0 +1,7 @@
+Name:Assault Griffin
+ManaCost:3 W
+Types:Creature Griffin
+PT:3/2
+K:Flying
+SVar:Picture:http://www.wizards.com/global/images/magic/general/assault_griffin.jpg
+Oracle:Flying
\ No newline at end of file
diff --git a/forge-gui/src/test/resources/cardsfolder/auramancer.txt b/forge-gui/src/test/resources/cardsfolder/auramancer.txt
new file mode 100644
index 00000000000..bf9395706c9
--- /dev/null
+++ b/forge-gui/src/test/resources/cardsfolder/auramancer.txt
@@ -0,0 +1,8 @@
+Name:Auramancer
+ManaCost:2 W
+Types:Creature Human Wizard
+PT:2/2
+T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may return target enchantment card from your graveyard to your hand.
+SVar:TrigChangeZone:AB$ChangeZone | Cost$ 0 | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Enchantment.YouCtrl
+SVar:Picture:http://www.wizards.com/global/images/magic/general/auramancer.jpg
+Oracle:When Auramancer enters the battlefield, you may return target enchantment card from your graveyard to your hand.
\ No newline at end of file
diff --git a/forge-gui/src/test/resources/cardsfolder/crown_of_empires.txt b/forge-gui/src/test/resources/cardsfolder/crown_of_empires.txt
new file mode 100644
index 00000000000..9312ef94dac
--- /dev/null
+++ b/forge-gui/src/test/resources/cardsfolder/crown_of_empires.txt
@@ -0,0 +1,13 @@
+Name:Crown of Empires
+ManaCost:2
+Types:Artifact
+A:AB$ Tap | Cost$ 3 T | ValidTgts$ Creature | TgtPrompt$ Select target creature | ConditionCheckSVar$ M12Complete | ConditionSVarCompare$ EQ0 | SubAbility$ DBControl | SpellDescription$ Tap target creature. Gain control of that creature instead if you control artifacts named Scepter of Empires and Throne of Empires.
+SVar:DBControl:DB$ GainControl | Defined$ Targeted | ConditionCheckSVar$ M12Complete
+SVar:RemRandomDeck:True
+DeckHints:Name$Scepter of Empires|Throne of Empires
+SVar:M12Complete:Count$Compare AllM12Empires GT0.1.0
+SVar:AllM12Empires:SVar$X/Times.Y
+SVar:X:Count$Valid Artifact.namedScepter of Empires+YouCtrl
+SVar:Y:Count$Valid Artifact.namedThrone of Empires+YouCtrl
+SVar:Picture:http://www.wizards.com/global/images/magic/general/crown_of_empires.jpg
+Oracle:{3}, {T}: Tap target creature. Gain control of that creature instead if you control artifacts named Scepter of Empires and Throne of Empires.
\ No newline at end of file
diff --git a/forge-gui/src/test/resources/cardsfolder/griffin_rider.txt b/forge-gui/src/test/resources/cardsfolder/griffin_rider.txt
new file mode 100644
index 00000000000..6c03a82cf92
--- /dev/null
+++ b/forge-gui/src/test/resources/cardsfolder/griffin_rider.txt
@@ -0,0 +1,11 @@
+Name:Griffin Rider
+ManaCost:1 W
+Types:Creature Human Knight
+PT:1/1
+S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 3 | AddToughness$ 3 | AddKeyword$ Flying | CheckSVar$ X | SVarCompare$ GE1 | Description$ As long as you control a Griffin, CARDNAME gets +3/+3 and has flying.
+SVar:X:Count$Valid Griffin.YouCtrl
+SVar:BuffedBy:Griffin
+SVar:RemRandomDeck:True
+DeckHints:Type$Griffin
+SVar:Picture:http://www.wizards.com/global/images/magic/general/griffin_rider.jpg
+Oracle:As long as you control a Griffin creature, Griffin Rider gets +3/+3 and has flying.
\ No newline at end of file
diff --git a/forge-gui/src/test/resources/cardsfolder/llanowar_elves.txt b/forge-gui/src/test/resources/cardsfolder/llanowar_elves.txt
new file mode 100644
index 00000000000..8df91e77e75
--- /dev/null
+++ b/forge-gui/src/test/resources/cardsfolder/llanowar_elves.txt
@@ -0,0 +1,7 @@
+Name:Llanowar Elves
+ManaCost:G
+Types:Creature Elf Druid
+PT:1/1
+A:AB$ Mana | Cost$ T | Produced$ G | SpellDescription$ Add {G} to your mana pool.
+SVar:Picture:http://resources.wizards.com/magic/cards/9ed/en-us/card83515.jpg
+Oracle:{T}: Add {G} to your mana pool.
\ No newline at end of file
diff --git a/forge-gui/src/test/resources/cardsfolder/mwonvuli_beast_tracker.txt b/forge-gui/src/test/resources/cardsfolder/mwonvuli_beast_tracker.txt
new file mode 100644
index 00000000000..df227908c14
--- /dev/null
+++ b/forge-gui/src/test/resources/cardsfolder/mwonvuli_beast_tracker.txt
@@ -0,0 +1,10 @@
+Name:Mwonvuli Beast Tracker
+ManaCost:1 G G
+Types:Creature Human Scout
+PT:2/1
+T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ ScoutSearch | TriggerDescription$ When CARDNAME enters the battlefield, search your library for a creature card with deathtouch, hexproof, reach or trample and reveal it. Shuffle your library, then put that card on top of it.
+SVar:ScoutSearch:DB$ ChangeZone | Origin$ Library | Destination$ Library | LibraryPosition$ 0 | ChangeNum$ 1 | ChangeType$ Creature.withDeathtouch+YouCtrl,Creature.withHexproof+YouCtrl,Creature.withReach+YouCtrl,Creature.withTrample+YouCtrl
+SVar:RemRandomDeck:True
+DeckHints:Keyword$Deathtouch|Hexproof|Reach|Trample
+SVar:Picture:http://www.wizards.com/global/images/magic/general/mwonvuli_beast_tracker.jpg
+Oracle:When Mwonvuli Beast Tracker enters the battlefield, search your library for a creature card with deathtouch, hexproof, reach, or trample and reveal it. Shuffle your library and put that card on top of it.
\ No newline at end of file
diff --git a/forge-gui/src/test/resources/cardsfolder/scepter_of_empires.txt b/forge-gui/src/test/resources/cardsfolder/scepter_of_empires.txt
new file mode 100644
index 00000000000..fff9fc51908
--- /dev/null
+++ b/forge-gui/src/test/resources/cardsfolder/scepter_of_empires.txt
@@ -0,0 +1,12 @@
+Name:Scepter of Empires
+ManaCost:3
+Types:Artifact
+A:AB$ DealDamage | Cost$ T | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X | References$ X,Y,Z,AllM12Empires | SpellDescription$ CARDNAME deals 1 damage to target player. It deals 3 damage to that player instead if you control artifacts named Crown of Empires and Throne of Empires.
+SVar:X:Count$Compare AllM12Empires GT0.3.1
+SVar:AllM12Empires:SVar$Z/Times.Y
+SVar:Z:Count$Valid Artifact.namedCrown of Empires+YouCtrl
+SVar:Y:Count$Valid Artifact.namedThrone of Empires+YouCtrl
+SVar:RemRandomDeck:True
+DeckHints:Name$Throne of Empires|Crown of Empires
+SVar:Picture:http://www.wizards.com/global/images/magic/general/scepter_of_empires.jpg
+Oracle:{T}: Scepter of Empires deals 1 damage to target player. It deals 3 damage to that player instead if you control artifacts named Crown of Empires and Throne of Empires.
\ No newline at end of file
diff --git a/forge-gui/src/test/resources/cardsfolder/throne_of_empires.txt b/forge-gui/src/test/resources/cardsfolder/throne_of_empires.txt
new file mode 100644
index 00000000000..9efd1d6278e
--- /dev/null
+++ b/forge-gui/src/test/resources/cardsfolder/throne_of_empires.txt
@@ -0,0 +1,12 @@
+Name:Throne of Empires
+ManaCost:4
+Types:Artifact
+A:AB$ Token | Cost$ 1 T | TokenAmount$ X | References$ X,Y,Z,AllM12Empires | TokenName$ Soldier | TokenTypes$ Creature,Soldier | TokenOwner$ You | TokenColors$ White | TokenPower$ 1 | TokenToughness$ 1 | SpellDescription$ Put a 1/1 white Soldier creature token onto the battlefield. Put five of those tokens onto the battlefield instead if you control artifacts named Crown of Empires and Scepter of Empires.
+SVar:X:Count$Compare AllM12Empires GT0.5.1
+SVar:AllM12Empires:SVar$Z/Times.Y
+SVar:Z:Count$Valid Artifact.namedCrown of Empires+YouCtrl
+SVar:Y:Count$Valid Artifact.namedScepter of Empires+YouCtrl
+SVar:RemRandomDeck:True
+DeckHints:Name$Scepter of Empires|Crown of Empires
+SVar:Picture:http://www.wizards.com/global/images/magic/general/throne_of_empires.jpg
+Oracle:{1}, {T}: Put a 1/1 white Soldier creature token onto the battlefield. Put five of those tokens onto the battlefield instead if you control artifacts named Crown of Empires and Scepter of Empires.
\ No newline at end of file
diff --git a/forge-gui/src/test/resources/cardsfolder/unsummon.txt b/forge-gui/src/test/resources/cardsfolder/unsummon.txt
new file mode 100644
index 00000000000..4ab1649b8b7
--- /dev/null
+++ b/forge-gui/src/test/resources/cardsfolder/unsummon.txt
@@ -0,0 +1,6 @@
+Name:Unsummon
+ManaCost:U
+Types:Instant
+A:SP$ ChangeZone | Cost$ U | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return target creature to its owner's hand.
+SVar:Picture:http://www.wizards.com/global/images/magic/general/unsummon.jpg
+Oracle:Return target creature to its owner's hand.
\ No newline at end of file
diff --git a/forge-gui/src/test/resources/cardsfolder/wurms_tooth.txt b/forge-gui/src/test/resources/cardsfolder/wurms_tooth.txt
new file mode 100644
index 00000000000..777a151ebfd
--- /dev/null
+++ b/forge-gui/src/test/resources/cardsfolder/wurms_tooth.txt
@@ -0,0 +1,9 @@
+Name:Wurm's Tooth
+ManaCost:2
+Types:Artifact
+T:Mode$ SpellCast | ValidCard$ Card.Green | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigGainLife | TriggerDescription$ Whenever a player casts a green spell, you may gain 1 life.
+SVar:TrigGainLife:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ 1
+SVar:RemRandomDeck:True
+DeckNeeds:Color$Green
+SVar:Picture:http://www.wizards.com/global/images/magic/general/wurms_tooth.jpg
+Oracle:Whenever a player casts a green spell, you may gain 1 life.
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index c8df2f9531f..5d47617f6fb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -173,7 +173,7 @@
forge-ai
-
+ forge-bundle
forge-core
forge-game
forge-gui