cartographer/biome_api.lua
2020-06-10 19:54:28 -04:00

39 lines
1.5 KiB
Lua

local util = ...;
local biome_lookup = {};
return {
-- Register a biome with textures to display
-- name: A string containing the biome name
-- textures: A table of texture names.
-- These should correspond with detail levels,
-- any detail level past the length of the table will return the last texture
-- (Optional) min_height: The minimum Y position where this biome data should be used
-- (Optional) max_height: The maximum Y position where this biome data should be used
add = function (name, textures, min_height, max_height)
biome_lookup[#biome_lookup + 1] = {
name = name,
textures = textures,
min_height = min_height,
max_height = max_height,
};
end,
-- Get the texture name (minus index/extension) for the given biome, height, and detail level.
-- name: A string containing the biome name
-- height: A number representing the Y position of the biome
-- detail: The detail level
-- Returns a string with a texture name, or nil if no matching biome entry was found.
get_texture = function (name, height, detail)
for _,biome in ipairs(biome_lookup) do
local matches_height = (not biome.min_height or height >= biome.min_height)
and (not biome.max_height or height <= biome.max_height);
if biome.name == name and matches_height then
return util.get_clamped(biome.textures, detail);
end
end
return nil;
end,
};