int TileSource::getIndirectPowerLevelTo(int x, int y, int z, int side) { int id = getTile(x, y, z).id; if(Tile::solid[id] && id != 152) return getBlockPowerInput(x, y, z); if(id == 0) return 0; int (*getDirectSignal)(Tile*, TileSource*, int, int, int, int) = (int (*)(Tile*, TileSource*, int, int, int, int)) Tile::tiles[id]->vtable[VT_TILE_GETDIRECT]; return getDirectSignal(Tile::tiles[id], this, x, y, z, side); }
int RedstoneWireTile::getSignal(TileSource* region, int x, int y, int z, int side) { if(!wiresProvidePower) return 0; return getDirectSignal(region, x, y, z, side); }
int NotGateTile::getSignal(NotGateTile* tile, TileSource* region, int x, int y, int z, int side) { if(side == 0) return getDirectSignal(tile, region, x, y, z, side); return 0; }