feat: blockstates

still a work in progress
This commit is contained in:
Fireblade
2026-05-02 15:14:48 -04:00
parent fc35ef155b
commit d89fadff68
80 changed files with 2249 additions and 2 deletions
+31
View File
@@ -10,6 +10,37 @@ FenceTile::FenceTile(int id, const wstring &texture, Material *material) : Tile(
this->texture = texture;
}
void FenceTile::createBlockStateDefinition()
{
if (!m_blockStateDefinition)
m_blockStateDefinition = new BlockStateDefinition(this);
}
int FenceTile::defaultBlockState()
{
return 0;
}
int FenceTile::convertBlockStateToLegacyData(BlockState *state)
{
return state ? (state->value & 0xF) : 0;
}
Tile::BlockState FenceTile::getBlockState(int data)
{
return Tile::BlockState(data & 0xF);
}
Tile::BlockState FenceTile::getBlockState(LevelSource *level, int x, int y, int z)
{
int state = 0;
if (connectsTo(level, x, y, z - 1)) state |= 0x1;
if (connectsTo(level, x, y, z + 1)) state |= 0x2;
if (connectsTo(level, x + 1, y, z)) state |= 0x4;
if (connectsTo(level, x - 1, y, z)) state |= 0x8;
return Tile::BlockState(state);
}
static const int fences[] = {
Tile::fence_Id, Tile::netherFence_Id, Tile::spruceFence_Id,
Tile::birchFence_Id, Tile::jungleFence_Id, Tile::acaciaFence_Id, Tile::darkFence_Id