#include "stdafx.h" #include "net.minecraft.world.level.h" #include "net.minecraft.world.h" #include "HalfTransparentTile.h" #include "Facing.h" HalfTransparentTile::HalfTransparentTile(int id, const wstring &tex, Material *material, bool allowSame) : Tile(id,material,isSolidRender()) { this->allowSame = allowSame; this->texture = tex; } bool HalfTransparentTile::isSolidRender(bool isServerLevel) { return false; } bool HalfTransparentTile::shouldRenderFace(LevelSource *level, int x, int y, int z, int face) { int id = level->getTile(x, y, z); if (this->id == Tile::stained_glass_Id) { bool isBlocking = level->isTopSolidBlocking(x, y, z); if (face == Facing::DOWN && level->isSolidBlockingTile(x, y + 1, z) != isBlocking) return true; else if (face == Facing::UP && level->isTopSolidBlocking(x, y - 1, z) != isBlocking) return true; else if (face == Facing::NORTH && level->isSolidBlockingTile(x, y, z + 1) != isBlocking) return true; else if (face == Facing::SOUTH && level->isSolidBlockingTile(x, y, z - 1) != isBlocking) return true; else if (face == Facing::WEST && level->isSolidBlockingTile(x + 1, y, z) != isBlocking) return true; else if (face == Facing::EAST && level->isSolidBlockingTile(x - 1, y, z) != isBlocking) return true; //else if (face == 6 && level->isSolidBlockingTile(x, y, z) != isBlocking) return true; // not really a direction? is this supposed to be here? } if (!allowSame && id == this->id) { return false; } return Tile::shouldRenderFace(level, x, y, z, face); } bool HalfTransparentTile::blocksLight() { return false; } void HalfTransparentTile::registerIcons(IconRegister *iconRegister) { icon = iconRegister->registerIcon(texture); }