Fix no craftgrid drop after close; fix creative

The 2nd bug in Creative Mode was that the inventory got reset each time you closed it.
This commit is contained in:
Wuzzy 2017-06-01 22:57:13 +02:00
parent 835d5592ec
commit d4d7d8792f
2 changed files with 6 additions and 15 deletions

View file

@ -335,8 +335,6 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, show, p
end end
if pagenum ~= nil then formspec = formspec .. "p"..tostring(pagenum) end if pagenum ~= nil then formspec = formspec .. "p"..tostring(pagenum) end
-- inventory marker
formspec = formspec .. "cin"
player:set_inventory_formspec(formspec) player:set_inventory_formspec(formspec)
end end

View file

@ -103,10 +103,8 @@ local function set_inventory(player, armor_change_only)
"listring[current_player;main]".. "listring[current_player;main]"..
"listring[current_player;craft]".. "listring[current_player;craft]"..
"listring[current_player;main]".. "listring[current_player;main]"..
"listring[detached:"..player_name.."_armor;armor]".. "listring[detached:"..player_name.."_armor;armor]"
-- inventory marker
"inv"
player:set_inventory_formspec(form) player:set_inventory_formspec(form)
end end
@ -124,22 +122,17 @@ local function set_workbench(player)
"image_button[8,0;1,1;craftguide_book.png;__mcl_craftguide;]".. "image_button[8,0;1,1;craftguide_book.png;__mcl_craftguide;]"..
"tooltip[__mcl_craftguide;Show crafting recipes]".. "tooltip[__mcl_craftguide;Show crafting recipes]"..
"listring[current_player;main]".. "listring[current_player;main]"..
"listring[current_player;craft]".. "listring[current_player;craft]"
-- inventory marker
"wob"
--player:set_inventory_formspec(form) --player:set_inventory_formspec(form)
minetest.show_formspec(player:get_player_name(), "main", form) minetest.show_formspec(player:get_player_name(), "main", form)
end end
--drop craf items and reset inventory on closing -- Drop items in craft grid and reset inventory on closing
minetest.register_on_player_receive_fields(function(player, formname, fields) minetest.register_on_player_receive_fields(function(player, formname, fields)
if fields.quit then if fields.quit then
local formspec = player:get_inventory_formspec() drop_fields(player,"craft")
local size = string.len(formspec) if not minetest.setting_getbool("creative_mode") and formname == "" then
local marker = string.sub(formspec,size-2)
if marker == "inv" or marker == "wob" or marker == "cin" then
drop_fields(player,"craft")
set_inventory(player) set_inventory(player)
end end
end end