Fix restore of banner desc after anvil rename

This commit is contained in:
Wuzzy 2018-02-04 05:52:10 +01:00
parent a7f0d8c82c
commit 2c0eee27fc
3 changed files with 31 additions and 2 deletions

View file

@ -129,8 +129,16 @@ local function update_anvil_slots(meta)
-- Don't rename if names are identical
if new_name ~= old_name then
-- Rename item
meta:set_string("description", new_name)
-- Double-save the name internally, too
if new_name == "" and name_item:get_definition()._mcl_generate_description then
-- _mcl_generate_description(itemstack): If defined, set custom item description of itemstack.
-- This function should be defined for items with an advanced description.
-- See mcl_banners for an example.
name_item:get_definition()._mcl_generate_description(name_item)
else
-- Set description
meta:set_string("description", new_name)
end
-- Save the raw name internally, too
meta:set_string("name", new_name)
new_output = name_item
elseif just_rename then

View file

@ -302,6 +302,19 @@ for colorid, colortab in pairs(mcl_banners.colors) do
return itemstack
end,
_mcl_generate_description = function(itemstack)
local meta = itemstack:get_meta()
local layers_raw = meta:get_string("layers")
if not layers_raw then
return nil
end
local layers = minetest.deserialize(layers_raw)
local desc = itemstack:get_definition().description
local newdesc = mcl_banners.make_advanced_banner_description(desc, layers)
meta:set_string("description", newdesc)
return newdesc
end,
})
if minetest.get_modpath("mcl_core") and minetest.get_modpath("mcl_wool") then