mirror of
https://github.com/minetest-mods/drawers.git
synced 2024-11-09 16:33:44 +01:00
Fix inventorycube errur caused by animated nodes (#77)
This commit is contained in:
parent
0c4b74a744
commit
c46e246b04
@ -49,6 +49,27 @@ function drawers.gen_info_text(basename, count, factor, stack_max)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Get an image string from a tile definition
|
||||||
|
local function tile_to_image(tile, fallback_image)
|
||||||
|
if not tile then
|
||||||
|
return fallback_image
|
||||||
|
end
|
||||||
|
local tile_type = type(tile)
|
||||||
|
if tile_type == "string" then
|
||||||
|
return tile
|
||||||
|
end
|
||||||
|
assert(tile_type == "table", "Tile definition is not a string or table")
|
||||||
|
local image = tile.name or tile.image
|
||||||
|
assert(image, "Tile definition has no image file specified")
|
||||||
|
if tile.color then
|
||||||
|
local colorstr = core.colorspec_to_colorstring(tile.color)
|
||||||
|
if colorstr then
|
||||||
|
return image .. "^[multiply:" .. colorstr
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return image
|
||||||
|
end
|
||||||
|
|
||||||
function drawers.get_inv_image(name)
|
function drawers.get_inv_image(name)
|
||||||
local texture = "blank.png"
|
local texture = "blank.png"
|
||||||
local def = core.registered_items[name]
|
local def = core.registered_items[name]
|
||||||
@ -59,22 +80,10 @@ function drawers.get_inv_image(name)
|
|||||||
else
|
else
|
||||||
if not def.tiles then return texture end
|
if not def.tiles then return texture end
|
||||||
local tiles = table.copy(def.tiles)
|
local tiles = table.copy(def.tiles)
|
||||||
|
local top = tile_to_image(tiles[1])
|
||||||
for k,v in pairs(tiles) do
|
local left = tile_to_image(tiles[3], top)
|
||||||
if type(v) == "table" then
|
local right = tile_to_image(tiles[5], left)
|
||||||
tiles[k] = v.name
|
texture = core.inventorycube(top, left, right)
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- tiles: up, down, right, left, back, front
|
|
||||||
-- inventorycube: up, front, right
|
|
||||||
if #tiles <= 2 then
|
|
||||||
texture = core.inventorycube(tiles[1], tiles[1], tiles[1])
|
|
||||||
elseif #tiles <= 5 then
|
|
||||||
texture = core.inventorycube(tiles[1], tiles[3], tiles[3])
|
|
||||||
else -- full tileset
|
|
||||||
texture = core.inventorycube(tiles[1], tiles[6], tiles[3])
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return texture
|
return texture
|
||||||
|
Loading…
Reference in New Issue
Block a user