function p.__get_is_solid()
    return true
end

function p.__get_tex()
    return "block_hall"
end

function p.__main()
    set_default_block("r_hall")
    
    std.create_half_tube(3, "y_pos", "e")
    std.create_center(5, "e")
    std.create_half_tube(3, "x_neg", "e")
 
    -- Shrinkers and expanders.
    set_pos(9,5,5, "grow")
    add_bent(9,5,8, "bent_base_ring_green")
 
    -- Example blocks.
    set_pos(9,5,6, "block_lev3_seed_ex")
    set_pos(9,5,7, "block_lev3_seed_ex")
 
    local msg_str = "There are various ways to get a seed "
        .. "from the node generation input "
        .. "(the data given to a chunk when it is being created). "
        .. "The default way is by calling "
        .. "the function ^x00ff00seed_normal()^!. "
        .. "^xff0000Not setting srand is equivalent to calling "
        .. "srand(seed_normal()) at the beginning of the main function.^!\n\n"
        .. "Another seed function is ^x00ff00seed_xy()^!. "
        .. "Here is how that function works: "
        .. "The path of the chunk from the root is a list of triples "
        .. "(x,y,z).  The function seed_xy sets the seed using ONLY the "
        .. "x and y components of these triples.  The two grey blocks "
        .. "in this room are an example of how to use seed_xy "
        .. "(the \"shafts\" line up because the two chunks have the same "
        .. "x,y components in their path from the root). "
    add_bent_s(7,7,7,"bent_base_txt",msg_str)
end
