#include "NoBlock.h"

NoBlockBlockType::NoBlockBlockType(int id, const Block* defaultB)
    : BlockType(id, 0, ModelInfo("", "", 0), 0, 1, 0, ""),
      defaultB(defaultB)
{}

Block* NoBlockBlockType::createBlock(Framework::Vec3<int> position) const
{
    return 0;
}

Item* NoBlockBlockType::createItem() const
{
    return 0;
}

Block* NoBlockBlockType::loadBlock(Framework::Vec3<int> position,
    Framework::StreamReader* zReader,
    int dimensionId) const
{
    return 0;
}

void NoBlockBlockType::saveBlock(
    Block* zBlock, Framework::StreamWriter* zWriter) const
{}

Item* NoBlockBlockType::getItemFromBlock(Block* zBlock) const
{
    return 0;
}

Block* NoBlockBlockType::createBlockAt(
    Framework::Vec3<int> position, Item* zUsedItem) const
{
    return 0;
}

const Block* NoBlockBlockType::zDefault() const
{
    return defaultB;
}

NoBlock::NoBlock()
    : Block(BlockTypeEnum::NO_BLOCK, 0, {0, 0, 0}, false)
{
    transparent = 0;
    passable = 0;
    hp = 0;
    maxHP = 0;
    hardness = 0;
}

bool NoBlock::onTick(TickQueue* zQueue, int numTicks, bool& blocked)
{
    return 0;
}

void NoBlock::onPostTick() {}

const NoBlock NoBlock::INSTANCE;

AirBlock::AirBlock()
    : Block(BlockTypeEnum::AIR, 0, {0, 0, 0}, false)
{
    transparent = 1;
    passable = 1;
    hp = 0;
    maxHP = 0;
    hardness = 0;
}

bool AirBlock::onTick(TickQueue* zQueue, int numTicks, bool& blocked)
{
    return 0;
}

void AirBlock::onPostTick() {}

const AirBlock AirBlock::INSTANCE;