116 lines
2.9 KiB
Lua
116 lines
2.9 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_restore_mobs.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 tabdata.selected_entry == nil then
|
|
tabdata.selected_entry = 0
|
|
end
|
|
|
|
local tablehead = "Mobtype,Reason,Owner,"
|
|
|
|
local content = ""
|
|
|
|
for n=1,#mobf.current_preserve_list, 1 do
|
|
if mobf.current_preserve_list[n].owner == tabdata.playername or
|
|
tabdata.is_admin then
|
|
content = content ..
|
|
mobf.current_preserve_list[n].modname .. ":" ..
|
|
mobf.current_preserve_list[n].name .. "," ..
|
|
mobf.current_preserve_list[n].reason .. "," ..
|
|
mobf.current_preserve_list[n].owner
|
|
|
|
if n ~= #mobf.current_preserve_list then
|
|
content = content .. ","
|
|
end
|
|
end
|
|
end
|
|
|
|
local retval =
|
|
"tablecolumns[text,width=16;text,width=25;text,width=6]" ..
|
|
"table[0.25,0.25;11.25,8;tbl_lost_and_found;" .. tablehead .. content .. ";"
|
|
.. tabdata.selected_entry .. "]"
|
|
|
|
if tabdata.selected_entry ~= 0 then
|
|
|
|
retval = retval ..
|
|
"button[0.25,8.5;3.75,0.5;btn_restore_mob;" .. fgettext("Take") .. "]"
|
|
end
|
|
|
|
return retval
|
|
end
|
|
|
|
local function handle_settings_buttons(self, fields, tabname, tabdata)
|
|
|
|
if fields["tbl_lost_and_found"] then
|
|
|
|
local event = core.explode_table_event(fields["tbl_lost_and_found"])
|
|
|
|
if event.type == "CHG" then
|
|
tabdata.selected_entry = event.row
|
|
end
|
|
|
|
return true;
|
|
end
|
|
|
|
if fields["btn_restore_mob"] then
|
|
|
|
local elementcount = 0
|
|
local player = core.get_player_by_name(tabdata.playername)
|
|
|
|
if not player then
|
|
return true
|
|
end
|
|
|
|
for i=1,#mobf.current_preserve_list,1 do
|
|
mobf_assert_backtrace(tabdata ~= nil)
|
|
mobf_assert_backtrace(mobf.current_preserve_list[i] ~= nil)
|
|
|
|
if mobf.current_preserve_list[i].owner == tabdata.playername or
|
|
tabdata.isadmin then
|
|
elementcount = elementcount +1
|
|
end
|
|
|
|
if elementcount == (tabdata.selected_entry-1) then
|
|
--ADD to inventory
|
|
local inventory_add_result = player:get_inventory():add_item("main",
|
|
mobf.current_preserve_list[i].modname ..":"..
|
|
mobf.current_preserve_list[i].name.." 1")
|
|
|
|
--remove from list
|
|
if inventory_add_result:is_empty() then
|
|
table.remove(mobf.current_preserve_list,i)
|
|
mobf_set_world_setting("mobf_preserve_mobs",
|
|
core.serialize(mobf.current_preserve_list))
|
|
end
|
|
return true
|
|
end
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
|
|
return false
|
|
end
|
|
|
|
mobf_settings_tab_preserve = {
|
|
name = "preserve",
|
|
caption = fgettext("Lost mobs"),
|
|
cbf_formspec = get_formspec,
|
|
cbf_button_handler = handle_settings_buttons,
|
|
tabsize = {width=12,height=9}
|
|
} |