86 lines
3.2 KiB
Lua
86 lines
3.2 KiB
Lua
--[[
|
|
Everness. Never ending discovery in Everness mapgen.
|
|
Copyright (C) 2024 SaKeL
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
--]]
|
|
|
|
local function update_sfinv(name)
|
|
minetest.after(0, function()
|
|
local player = minetest.get_player_by_name(name)
|
|
|
|
if player then
|
|
if sfinv.get_page(player) == 'everness:encyclopedia' then
|
|
sfinv.set_page(player, sfinv.get_homepage_name(player))
|
|
else
|
|
sfinv.set_player_inventory_formspec(player)
|
|
end
|
|
end
|
|
end)
|
|
end
|
|
|
|
local function update_ui(name)
|
|
minetest.after(0, function()
|
|
local player = minetest.get_player_by_name(name)
|
|
|
|
if player then
|
|
if unified_inventory.current_page[name] == 'everness:encyclopedia' then
|
|
unified_inventory.current_page[name] = 'craft'
|
|
end
|
|
|
|
unified_inventory.set_inventory_formspec(player, unified_inventory.current_page[name])
|
|
end
|
|
end)
|
|
end
|
|
|
|
minetest.register_privilege('everness_encyclopedia', {
|
|
-- Privilege description
|
|
description = 'Collection of registered items and functions with some information about them. Used for testing not for gameplay. Works only with SFINV!',
|
|
|
|
-- Whether to grant the privilege to singleplayer.
|
|
give_to_singleplayer = false,
|
|
|
|
-- Whether to grant the privilege to the server admin.
|
|
-- Uses value of 'give_to_singleplayer' by default.
|
|
give_to_admin = false,
|
|
|
|
-- Called when given to player 'name' by 'granter_name'.
|
|
-- 'granter_name' will be nil if the priv was granted by a mod.
|
|
on_grant = function(name, granter_name)
|
|
if minetest.get_modpath('sfinv') and sfinv.enabled then
|
|
update_sfinv(name)
|
|
elseif minetest.get_modpath('unified_inventory') then
|
|
update_ui(name)
|
|
else
|
|
minetest.chat_send_player(name, 'Compatible inventory not found. Everness encyclopedia will not be shown.')
|
|
end
|
|
end,
|
|
|
|
-- Called when taken from player 'name' by 'revoker_name'.
|
|
-- 'revoker_name' will be nil if the priv was revoked by a mod.
|
|
|
|
-- Note that the above two callbacks will be called twice if a player is
|
|
-- responsible, once with the player name, and then with a nil player
|
|
-- name.
|
|
-- Return true in the above callbacks to stop register_on_priv_grant or
|
|
-- revoke being called.
|
|
on_revoke = function(name, revoker_name)
|
|
if minetest.get_modpath('sfinv') and sfinv.enabled then
|
|
update_sfinv(name)
|
|
elseif minetest.get_modpath('unified_inventory') then
|
|
update_ui(name)
|
|
else
|
|
minetest.chat_send_player(name, 'Compatible inventory not found. Everness encyclopedia will not be shown.')
|
|
end
|
|
end,
|
|
})
|