--==[[ Grimoire - 0.3.1 ]]==-- --==[[ MIT 2024 (c) monk ]]==-- local path = minetest.get_modpath(minetest.get_current_modname()).."/pages/" local grim_memory = { page_name = "not set" } -- wrapper function for checking priv without adding to every page file local check_player_privs = minetest.check_player_privs local function priv_check(itemstack, player, pointed_thing, overriding_function) if not check_player_privs(player, {server = true}) then return itemstack end return overriding_function(itemstack, player, pointed_thing) end local function override(methods) return minetest.override_item("grimoire:spellbook", { on_use = function(itemstack, player, pointed_thing) return priv_check(itemstack, player, pointed_thing, methods.on_use) end, on_place = function(itemstack, player, pointed_thing) return priv_check(itemstack, player, pointed_thing, methods.on_place) end, on_secondary_use = function(itemstack, player, pointed_thing) return priv_check(itemstack, player, pointed_thing, methods.on_secondary_use) end, on_drop = function(itemstack, player, pointed_thing) return priv_check(itemstack, player, pointed_thing, methods.on_drop) end, }) end -- Chat command to override tool callbacks, or invoke functions with dofile minetest.register_chatcommand("grimoire", { description = "Change Grimoire page or invoke a command", params = " []", privs = {server = true}, func = function(name, params) local action, script, vargs = params:match("^(%S+)%s+(%S+)%s*([%S%s]*)$") -- action is "page" or "invoke" -- script is the name of the lua file after the first underscore: "action"_"script".lua if not action or not script then return false, "[Grimoire] Missing parameters!