X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=builtin%2Fmisc.lua;h=fd80aacf6d23d9f5533dc9281b3360930574f7ff;hb=6cbd1b8bf739e0d776ee508708b5076b491fb638;hp=2cc76e8ec5aebdf40be6142a75ad623e180eaf34;hpb=fc5d2074b99d22022d2bf8e693351274bc3f6d09;p=dragonfireclient.git diff --git a/builtin/misc.lua b/builtin/misc.lua index 2cc76e8ec..fd80aacf6 100644 --- a/builtin/misc.lua +++ b/builtin/misc.lua @@ -14,14 +14,14 @@ minetest.register_globalstep(function(dtime) for index, timer in ipairs(minetest.timers) do timer.time = timer.time - dtime if timer.time <= 0 then - timer.func(unpack(timer.args)) + timer.func(unpack(timer.args or {})) table.remove(minetest.timers,index) end end end) function minetest.after(time, func, ...) - table.insert(minetest.timers_to_add, {time=time, func=func, args=arg}) + table.insert(minetest.timers_to_add, {time=time, func=func, args={...}}) end function minetest.check_player_privs(name, privs) @@ -40,15 +40,24 @@ function minetest.check_player_privs(name, privs) return true, "" end +local player_list = {} + +minetest.register_on_joinplayer(function(player) + player_list[player:get_player_name()] = player +end) + +minetest.register_on_leaveplayer(function(player) + player_list[player:get_player_name()] = nil +end) + function minetest.get_connected_players() - -- This could be optimized a bit, but leave that for later - local list = {} - for _, obj in pairs(minetest.env:get_objects_inside_radius({x=0,y=0,z=0}, 1000000)) do - if obj:is_player() then - table.insert(list, obj) + local temp_table = {} + for index, value in pairs(player_list) do + if value:is_player_connected() then + table.insert(temp_table, value) end end - return list + return temp_table end function minetest.hash_node_position(pos) @@ -99,10 +108,14 @@ function minetest.setting_get_pos(name) return minetest.string_to_pos(value) end -function minetest.formspec_escape(str) - str = string.gsub(str, "\\", "\\\\") - str = string.gsub(str, "%[", "\\[") - str = string.gsub(str, "%]", "\\]") - return str +-- To be overriden by protection mods +function minetest.is_protected(pos, name) + return false +end + +function minetest.record_protection_violation(pos, name) + for _, func in pairs(minetest.registered_on_protection_violation) do + func(pos, name) + end end