# Harmonious material-role vocabularies shared by every composition.
WALLS = {
    'stone': ('andesite', 'andesite', 'stone', 'cobblestone'),
    'masonry': ('stone_bricks', 'stone_bricks', 'andesite', 'mossy_stone_bricks'),
    'plaster': ('calcite',) * 12 + ('smooth_sandstone',),
    'white': ('smooth_quartz', 'smooth_quartz', 'calcite'),
    'blue': ('light_blue_concrete', 'light_blue_concrete', 'light_blue_terracotta'),
    'timber': ('oak_planks', 'oak_planks', 'stripped_oak_wood'),
    'earth': ('tuff', 'mossy_cobblestone', 'andesite'),
}
# Full backing, stair, slab: real vanilla block names, never synthesized stone plurals.
ROOFS = {
    'pale_stone': ('andesite', 'andesite_stairs', 'andesite_slab'),
    'sandstone': ('smooth_sandstone', 'smooth_sandstone_stairs', 'smooth_sandstone_slab'),
    'slate': ('deepslate_tiles', 'deepslate_tile_stairs', 'deepslate_tile_slab'),
    'gray': ('stone_bricks', 'stone_brick_stairs', 'stone_brick_slab'),
    'red': ('mangrove_planks', 'mangrove_stairs', 'mangrove_slab'),
    'tile': ('bricks', 'brick_stairs', 'brick_slab'),
    'dark_wood': ('dark_oak_planks', 'dark_oak_stairs', 'dark_oak_slab'),
}
WOODS = ('oak', 'spruce', 'dark_oak', 'birch', 'jungle', 'acacia', 'mangrove', 'cherry', 'warped')
COLORS = ('white', 'light_gray', 'gray', 'black', 'brown', 'red', 'orange', 'yellow', 'lime', 'green', 'cyan', 'light_blue', 'blue', 'purple', 'magenta', 'pink')
FUNCTIONS = ('living', 'kitchen', 'sleeping', 'storage', 'workshop', 'study', 'enchanting', 'brewing', 'trading', 'fishing')
DIRECTIONS = {'north': (0, -1), 'south': (0, 1), 'west': (-1, 0), 'east': (1, 0)}
OPPOSITE = {'north': 'south', 'south': 'north', 'east': 'west', 'west': 'east'}


def log(wood):
    """Resolve the timber role including nether stems."""
    return 'stripped_warped_stem' if wood == 'warped' else f'stripped_{wood}_log'
