forked from VoxeLibre/VoxeLibre
45 lines
1016 B
Lua
45 lines
1016 B
Lua
MCLEntity = class(MCLObject)
|
|
|
|
MCLEntity:__getter("meta", MCLMetadata)
|
|
|
|
local last_inv_id = 0
|
|
|
|
MCLEntity:__getter("inventory", function(self)
|
|
local info = self.inventory_info
|
|
if not info then
|
|
return
|
|
end
|
|
self.inventory_id = "mcl_entity:" .. last_inv_id
|
|
last_inv_id = last_inv_id + 1
|
|
local inv = minetest.create_detached_inventory(self.inventory_id, self.inventory_callbacks)
|
|
for list, size in pairs(data.sizes) do
|
|
inv:set_size(list, size)
|
|
end
|
|
for list, liststr in pairs(data.lists) do
|
|
inv:set_list(list, liststr)
|
|
end
|
|
return inv
|
|
end)
|
|
|
|
function MCLEntity:on_activate(staticdata)
|
|
local data = minetest.deserialize(staticdata)
|
|
if data then
|
|
self:meta():from_table(data)
|
|
self.inventory_info = data.inventory
|
|
end
|
|
end
|
|
|
|
function MCLEntity:get_staticdata()
|
|
local data = self:meta():to_table()
|
|
local inventory_info = self.inventory_info
|
|
|
|
if inventory_info then
|
|
data.inventory = {
|
|
sizes = inventory_info.sizes,
|
|
lists = self:inventory():get_lists()
|
|
}
|
|
end
|
|
|
|
return minetest.serialize(data)
|
|
end
|