#include "StaticRegistry.h"
#include "BlockType.h"
#include "ItemType.h"

int count_DimensionGenerator = 0;
int count_ItemType = 0;
int count_BlockType = 0;
int count_WorldUpdateType = 0;
int count_EntityType = 0;

#undef REGISTER
#define REGISTER(c, typ)               \
const int c::ID = count_##typ++;       \
const c *c::INSTANCE = new c(); 

// order of includes determines the ids

// block types
#include "NoBlock.h" // must be first
#include "BasicBlocks.h"
// dimensions
#include "OverworldDimension.h"
// entities
#include "Player.h"
#include "ItemEntity.h"
// item skills
#include "PlayerHand.h"
// world updates
#include "AddChunkUpdate.h"
#include "PlaceBlockUpdate.h"
#include "BlockChangedUpdate.h"
#include "BlockRemovedUpdate.h"
#include "AddEntityUpdate.h"
#include "EntityChangedUpdate.h"
#include "EntityRemovedUpdate.h"