Add persistence using mod storage
parent
c57ab72207
commit
55fd576f27
25
api.lua
25
api.lua
|
@ -2,6 +2,25 @@ local _groups = {}
|
|||
local _action_by_name = {}
|
||||
local _actions = {}
|
||||
|
||||
-- Load data from MetaDataRef
|
||||
function classroom.load_from(meta)
|
||||
local groups_str = meta:get("groups")
|
||||
if not groups_str then
|
||||
return
|
||||
end
|
||||
|
||||
_groups = minetest.deserialize(groups_str)
|
||||
end
|
||||
|
||||
-- Save data to MetaDataRef
|
||||
function classroom.save_to(meta)
|
||||
meta:set_string("groups", minetest.serialize(_groups))
|
||||
end
|
||||
|
||||
function classroom.save()
|
||||
-- Overridden in init.lua
|
||||
end
|
||||
|
||||
function classroom.get_students()
|
||||
local students = {}
|
||||
for _, player in pairs(classroom.get_connected_players()) do
|
||||
|
@ -66,6 +85,8 @@ function classroom.create_group(name)
|
|||
|
||||
_groups[name] = group
|
||||
|
||||
classroom.save()
|
||||
|
||||
return group
|
||||
end
|
||||
|
||||
|
@ -79,6 +100,8 @@ function classroom.add_student_to_group(name, student)
|
|||
end
|
||||
|
||||
group.students[#group.students + 1] = student
|
||||
|
||||
classroom.save()
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -88,6 +111,8 @@ function classroom.remove_student_from_group(name, student)
|
|||
for i=1, #group.students do
|
||||
if group.students[i] == student then
|
||||
table.remove(group.students, i)
|
||||
|
||||
classroom.save()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
11
init.lua
11
init.lua
|
@ -20,3 +20,14 @@ classroom.check_player_privs = minetest.check_player_privs
|
|||
|
||||
-- Required MT version
|
||||
assert(minetest.features.formspec_version_element, "Minetest 5.1 or later is required.")
|
||||
|
||||
-- Mod storage for persistence
|
||||
local storage = minetest.get_mod_storage()
|
||||
|
||||
classroom.load_from(storage)
|
||||
|
||||
function classroom.save()
|
||||
classroom.save_to(storage)
|
||||
end
|
||||
|
||||
minetest.register_on_shutdown(classroom.save)
|
||||
|
|
Loading…
Reference in New Issue