Packages 
Package Description
com.hiddenswitch.spellsource
The core multiplayer code for Spellsource.
net.demilich.metastone.game
The core engine code for Spellsource.
net.demilich.metastone.game.actions
Game actions are things players can do.
net.demilich.metastone.game.behaviour
Behaviours describe how a player should respond to events in the game.
net.demilich.metastone.game.behaviour.heuristic
The features and the heuristic used to evaluate game states.
net.demilich.metastone.game.behaviour.mcts
An incomplete Monte Carlo Tree Search based implementation of a behaviour.
net.demilich.metastone.game.cards
Cards contains important enums, deserialization code, the card catalogue and the card entity.
net.demilich.metastone.game.cards.costmodifier
Card cost modifiers change the cost of specific or multiple cards, living on the player entity, on a card or an in-play entity.
net.demilich.metastone.game.cards.desc
This package contains classes that help deserialize the card JSON into objects.
net.demilich.metastone.game.cards.dynamicdescription
Dynamic descriptions on cards allow values to be embedded into a card's description text.
net.demilich.metastone.game.decks
Decks contains code to define a collection of cards for play.
net.demilich.metastone.game.decks.validation
This package has various deck validation functions.
net.demilich.metastone.game.entities
Entities are the various classes that live inside a match, like a card, hero, minion, and weapon.
net.demilich.metastone.game.entities.heroes
Hero entity related code.
net.demilich.metastone.game.entities.minions
Minion entity related code.
net.demilich.metastone.game.entities.weapons
Weapon entity related code.
net.demilich.metastone.game.environment
The environment holds ephemeral data (variables) during the course of a game.
net.demilich.metastone.game.events
Events correspond to things that happen inside the game that other rules can react to.
net.demilich.metastone.game.fibers
Utilities to run a game context where its state is managed by the native Java call stack.
net.demilich.metastone.game.logic
This package contains the game logic, the rules of the game of Spellsource.
net.demilich.metastone.game.services
Interfaces for multiplayer cross-context gameplay.
net.demilich.metastone.game.spells
Spells contain all the functional pieces of the card JSON (Click on description to learn more about how to use this).
net.demilich.metastone.game.spells.aura
Code related to auras.
net.demilich.metastone.game.spells.custom
Custom spells that are used to implement game effects that are too complex for card JSON.
net.demilich.metastone.game.spells.desc
Subcomponents of a spell that help implement functionality like filtering cards and retrieving values.
net.demilich.metastone.game.spells.desc.aura
Aura deserialization code.
net.demilich.metastone.game.spells.desc.condition
Conditions encode a true or false evaluation of a piece of game state.
net.demilich.metastone.game.spells.desc.filter
Filters include/exclude targets from a list of entities generated by an entity reference or a card source.
net.demilich.metastone.game.spells.desc.manamodifier
Card cost modification deserialization code.
net.demilich.metastone.game.spells.desc.source
Card sources generate lists of cards.
net.demilich.metastone.game.spells.desc.trigger
Trigger and enchantment deserialization code.
net.demilich.metastone.game.spells.desc.valueprovider
Value providers read the game state and provide values for spells, conditions, filters, etc.
net.demilich.metastone.game.spells.trigger
This package contains all the classes that react to game events.
net.demilich.metastone.game.spells.trigger.secrets
The secret and quest entity code.
net.demilich.metastone.game.statistics
This package collects statistics about the game as it plays out.
net.demilich.metastone.game.targeting
Targeting contains the types used to describe various targets of effects.
net.demilich.metastone.game.utils
Various utility classes for doing math and loading resources.