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 _action_by_name = {}
|
||||||
local _actions = {}
|
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()
|
function classroom.get_students()
|
||||||
local students = {}
|
local students = {}
|
||||||
for _, player in pairs(classroom.get_connected_players()) do
|
for _, player in pairs(classroom.get_connected_players()) do
|
||||||
|
@ -66,6 +85,8 @@ function classroom.create_group(name)
|
||||||
|
|
||||||
_groups[name] = group
|
_groups[name] = group
|
||||||
|
|
||||||
|
classroom.save()
|
||||||
|
|
||||||
return group
|
return group
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -79,6 +100,8 @@ function classroom.add_student_to_group(name, student)
|
||||||
end
|
end
|
||||||
|
|
||||||
group.students[#group.students + 1] = student
|
group.students[#group.students + 1] = student
|
||||||
|
|
||||||
|
classroom.save()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -88,6 +111,8 @@ function classroom.remove_student_from_group(name, student)
|
||||||
for i=1, #group.students do
|
for i=1, #group.students do
|
||||||
if group.students[i] == student then
|
if group.students[i] == student then
|
||||||
table.remove(group.students, i)
|
table.remove(group.students, i)
|
||||||
|
|
||||||
|
classroom.save()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
11
init.lua
11
init.lua
|
@ -20,3 +20,14 @@ classroom.check_player_privs = minetest.check_player_privs
|
||||||
|
|
||||||
-- Required MT version
|
-- Required MT version
|
||||||
assert(minetest.features.formspec_version_element, "Minetest 5.1 or later is required.")
|
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