local S = minetest.get_translator(minetest.get_current_modname()) minetest.register_privilege("maphack", { description = S("Can place and use advanced blocks like mob spawners, command blocks and barriers."), }) minetest.register_on_joinplayer(function(player) local name = player:get_player_name() local meta = player:get_meta() if meta:get_int("fly_changed") == 1 then return end local fly = nil if minetest.is_creative_enabled(name) then fly = true end local player_privs = minetest.get_player_privs(name) player_privs.fly = fly minetest.set_player_privs(name, player_privs) end) for _, action in pairs({"grant", "revoke"}) do minetest["register_on_priv_" .. action](function(name, _, priv) local player = minetest.get_player_by_name(name) if player then local meta = player:get_meta() if priv == "fly" then meta:set_int("fly_changed", 1) end --[[ so e.g. hackers who have been revoked of the interact privilege will not automatically get the interact privilege through the mcl shields code back ]] if priv == "interact" then if action == "revoke" then meta:set_int("ineract_revoked", 1) else meta:set_int("ineract_revoked", 0) end end end end) end