122 lines
3.5 KiB
Lua
122 lines
3.5 KiB
Lua
--------------------------------------------------------------------------------
|
|
-- Mob Framework Settings Mod by Sapier
|
|
--
|
|
-- You may copy, use, modify or do nearly anything except removing this
|
|
-- copyright notice.
|
|
-- And of course you are NOT allowed to pretend you have written it.
|
|
--
|
|
--! @file tab_feature_config.lua
|
|
--! @brief settings gui for mobf
|
|
--! @copyright Sapier
|
|
--! @author Sapier
|
|
--! @date 2014-05-30
|
|
--
|
|
-- Contact sapier a t gmx net
|
|
--------------------------------------------------------------------------------
|
|
|
|
local function get_formspec(tabview, name, tabdata)
|
|
|
|
if not tabdata.is_admin then
|
|
return "label[0.75,0.25;" ..
|
|
fgettext("Insufficient permissions to view this tab.")
|
|
.. "]"
|
|
end
|
|
|
|
local retval = ""
|
|
|
|
if tabdata.lastselected ~= nil then
|
|
local mobdef = minetest.registered_entities[tabdata.lastselected]
|
|
|
|
if mobdef ~= nil and mobdef.data ~= nil then
|
|
|
|
retval = retval ..
|
|
"label[2.25,0.25;Name:]label[4,0.25;" .. mobdef.data.name .. "]" ..
|
|
"label[2.25,0.75;Mod:]label[4,0.75;" .. mobdef.data.modname .. "]" ..
|
|
"label[2.25,1.25;Description:]label[4,1.25;" .. mobdef.data.generic.description .. "]" ..
|
|
"image[0.25,0.25;2,2;" .. mobdef.data.modname .. "_" .. mobdef.data.name .. "_item.png]"
|
|
end
|
|
end
|
|
|
|
retval = retval ..
|
|
"label[0.5,2;Mobs:]"
|
|
.. "label[0.5,8.5;doubleclick to change!]"
|
|
.. "label[4,8.5;green=enabled, red=disabled]"
|
|
.. "textlist[0.5,2.5;7,6;tl_mobs_moblist;"
|
|
|
|
local mobf_mob_blacklist_string = minetest.world_setting_get("mobf_blacklist")
|
|
local mobf_mobs_blacklisted = nil
|
|
if mobf_mob_blacklist_string ~= nil then
|
|
mobf_mobs_blacklisted = core.deserialize(mobf_mob_blacklist_string)
|
|
end
|
|
|
|
local toadd = ""
|
|
|
|
for i,val in ipairs(mobf_rtd.registred_mob) do
|
|
if toadd ~= "" then
|
|
toadd = toadd .. ","
|
|
end
|
|
if contains(mobf_mobs_blacklisted,val) then
|
|
toadd = toadd .. COLOR_RED .. val
|
|
else
|
|
toadd = toadd .. COLOR_GREEN .. val
|
|
end
|
|
end
|
|
|
|
retval = retval .. toadd .. ";]"
|
|
return retval
|
|
end
|
|
|
|
local function handle_settings_buttons(self, fields, tabname, tabdata)
|
|
|
|
if not tabdata.is_admin then
|
|
core.log("error", "MOBF_Settings: someone managed to press a button " ..
|
|
"she/he shouldn't even see!")
|
|
return false
|
|
end
|
|
|
|
if fields["tl_mobs_moblist"] then
|
|
local tl_event = core.explode_textlist_event(fields["tl_mobs_moblist"])
|
|
if tl_event.type == "DCL" and
|
|
tl_event.index <= #mobf_rtd.registred_mob then
|
|
local clicked_mob = mobf_rtd.registred_mob[tl_event.index]
|
|
|
|
local mobf_mob_blacklist_string = minetest.world_setting_get("mobf_blacklist")
|
|
local mobf_mobs_blacklisted = nil
|
|
if mobf_mob_blacklist_string ~= nil then
|
|
mobf_mobs_blacklisted = core.deserialize(mobf_mob_blacklist_string)
|
|
else
|
|
mobf_mobs_blacklisted = {}
|
|
end
|
|
|
|
local new_blacklist = {}
|
|
|
|
if contains(mobf_mobs_blacklisted,clicked_mob) then
|
|
for i=1,#mobf_mobs_blacklisted,1 do
|
|
if mobf_mobs_blacklisted[i] ~= clicked_mob then
|
|
table.insert(new_blacklist,mobf_mobs_blacklisted[i])
|
|
end
|
|
end
|
|
else
|
|
new_blacklist = mobf_mobs_blacklisted
|
|
table.insert(mobf_mobs_blacklisted,clicked_mob)
|
|
end
|
|
|
|
minetest.world_setting_set("mobf_blacklist",core.serialize(new_blacklist))
|
|
end
|
|
|
|
if tl_event.type == "CHG" and
|
|
tl_event.index <= #mobf_rtd.registred_mob then
|
|
tabdata.lastselected = mobf_rtd.registred_mob[tl_event.index]
|
|
end
|
|
return true
|
|
end
|
|
|
|
return false
|
|
end
|
|
|
|
mobf_settings_tab_mobs = {
|
|
name = "mobs",
|
|
caption = fgettext("Mobs"),
|
|
cbf_formspec = get_formspec,
|
|
cbf_button_handler = handle_settings_buttons
|
|
} |