46 lines
1.4 KiB
Lua
46 lines
1.4 KiB
Lua
local storage = minetest.get_mod_storage()
|
|
local spawnpoints = minetest.deserialize(storage:get("player_spawns")) or {}
|
|
|
|
minetest.register_on_joinplayer(function(player)
|
|
local name = player:get_player_name()
|
|
if spawnpoints[name] == nil then
|
|
spawnpoints[name] = player:get_pos()
|
|
end
|
|
end)
|
|
|
|
minetest.register_on_respawnplayer(function(player)
|
|
local name = player:get_player_name()
|
|
if spawnpoints[name] ~= nil then
|
|
player:set_pos(spawnpoints[name])
|
|
return true
|
|
end
|
|
end)
|
|
|
|
local function save_data()
|
|
storage:set_string("player_spawns", minetest.serialize(spawnpoints))
|
|
end
|
|
|
|
minetest.register_on_shutdown(save_data)
|
|
PyuTest.register_interval(save_data, 10)
|
|
|
|
PyuTest.make_node("pyutest_spawnpoints:spawnpoint", "Spawnpoint", {
|
|
choppy = PyuTest.BLOCK_FAST
|
|
}, { "pyutest-spawnpoint.png" }, {
|
|
on_rightclick = function(pos, node, clicker)
|
|
if clicker == nil then return end
|
|
if not clicker:is_player() then return end
|
|
|
|
local name = clicker:get_player_name()
|
|
spawnpoints[name] = pos
|
|
end
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "pyutest_spawnpoints:spawnpoint",
|
|
recipe = {
|
|
{ "pyutest_blocks:stone_block", "pyutest_blocks:stone_block", "pyutest_blocks:stone_block" },
|
|
{ "pyutest_blocks:stone_block", "pyutest_blocks:stone_block", "pyutest_blocks:stone_block" },
|
|
{ "pyutest_blocks:stone_block", "pyutest_blocks:stone_block", "pyutest_blocks:stone_block" },
|
|
}
|
|
})
|