#define STAINED_GLASS 1
#define SINGLE_PLANT 133
#define DOUBLE_PLANT_LOWER 134
#define DOUBLE_PLANT_UPPER 135
#define NON_VOXELIZED 0
#define LAVA 87
#define WATER 89

#define LEAVES 132

#define EMISSIVES 81
#define CONCRETE_POWDER 82
#define BLACKBODIES 88
#define SOUL_LIGHTS 91
#define END_RODS_START 75
#define END_RODS_END 77

#define PORTAL 83

bool isSpherical(int id) {
    return (id >= 88 && id <= 91);
}

float getEmission(int id) {
    #ifdef CONCRETE_POWDER_EMISSIVES
    return float(id == EMISSIVES || id == CONCRETE_POWDER || id == LAVA || id == PORTAL || (id >= END_RODS_START && id <= END_RODS_END) || isSpherical(id));
    #else
    return float(id == EMISSIVES || id == LAVA || id == PORTAL || (id >= END_RODS_START && id <= END_RODS_END) || isSpherical(id));
    #endif
}

bool isTorch(int id) {
    return id == BLACKBODIES;
}

bool isSoulLight(int id) {
    return id == SOUL_LIGHTS;
}

bool hasSubsurface(int id) {
    return id == LEAVES || id == DOUBLE_PLANT_LOWER || id == DOUBLE_PLANT_UPPER || id == SINGLE_PLANT;
}