Skip to content

Creating Plugins

andburn edited this page Jul 14, 2015 · 25 revisions

(v0.10.0+, plugins are still a work in progress)

Creating a Plugin:

  1. Create new Class Library
  2. Add a reference to Hearthstone Deck Tracker.exe
  3. Implement Plugins.IPlugin (you can have multiple plugins in a single library)
  4. ?
  5. Profit. (Also: place "YourPlugin.dll" in HDT/Plugins or a subfolder of that)

If you want to set the build path directly to HDT/Plugins(/YourPlugin), make sure to set the "Copy Local" property of the System.Windows.Interactivity reference in your project to "False".

IPlugin: (the maybe not so obvious things)

  • ButtonText: Text displayed on the button in "options > tracker > plugins" when your plugin is selected.
  • MenuItem: The MenuItem added to the "Plugins" main menu. Return null to not add one.
  • OnUpdate(): Currently called every ~100ms.

Basics: API

  • API.GameEvents: All sorts of draw, play, game start/end events.
  • API.DeckManagerEvents: Events related to deck creation, deletion, etc.
  • These will be more added over time.

Basics: Where to start

  • Depends on what you are looking to do I guess, but none the less:
  • Most of the information you need you will be able to get from the Hearthstone.Game class.
  • Hearthstone.Game.Entities has information about everything in a game, from card locations (hand, board) to health and what card a card was last affected by. You may want to have a look at Enums.Hearthstone.GAME_TAGfor this.
  • The Debug Window: access via options > tracker > logging > debugwindow (you may have to enable show log in options > tracker > settings). This window displays the properties of Game and contents of Game.Entities live.

Basics: Example

  • A simple plugin to help you get started is available here. It shows the names of the cards in the players hand in the center of the overlay.