mirror of
https://github.com/minetest-mods/moreblocks.git
synced 2024-09-27 14:50:30 +02:00
Wrong version previously commited, fixed.
This commit is contained in:
parent
5611133d6f
commit
8f2ba48e09
24
itemlist.lua
24
itemlist.lua
|
@ -46,11 +46,6 @@ local modname = minetest.get_current_modname()
|
||||||
|
|
||||||
local contexts = {}
|
local contexts = {}
|
||||||
|
|
||||||
minetest.register_on_leaveplayer(function(player)
|
|
||||||
local playername = get_player_name(player)
|
|
||||||
if playername then contexts[playername] = nil end
|
|
||||||
end)
|
|
||||||
|
|
||||||
local function get_player_name(player)
|
local function get_player_name(player)
|
||||||
if type(player) == 'string' then return player end
|
if type(player) == 'string' then return player end
|
||||||
if type(player) == 'userdata' and player.get_player_name then
|
if type(player) == 'userdata' and player.get_player_name then
|
||||||
|
@ -59,6 +54,11 @@ local function get_player_name(player)
|
||||||
minetest.log('warning', '['..modname..'] get_player_name could not identify player.')
|
minetest.log('warning', '['..modname..'] get_player_name could not identify player.')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
minetest.register_on_leaveplayer(function(player)
|
||||||
|
local playername = get_player_name(player)
|
||||||
|
if playername then contexts[playername] = nil end
|
||||||
|
end)
|
||||||
|
|
||||||
local function new_context(player, context)
|
local function new_context(player, context)
|
||||||
local playername = get_player_name(player)
|
local playername = get_player_name(player)
|
||||||
if playername then
|
if playername then
|
||||||
|
@ -95,6 +95,7 @@ end
|
||||||
|
|
||||||
local function show_node_formspec(player, pos)
|
local function show_node_formspec(player, pos)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
|
local playername = get_player_name(player)
|
||||||
|
|
||||||
-- Decontextualize formspec
|
-- Decontextualize formspec
|
||||||
local fs = meta:get_string('formspec')
|
local fs = meta:get_string('formspec')
|
||||||
|
@ -115,14 +116,15 @@ local function show_node_formspec(player, pos)
|
||||||
until s == nil
|
until s == nil
|
||||||
|
|
||||||
-- Find node on_receive_fields
|
-- Find node on_receive_fields
|
||||||
local ndef = mintest.registered_nodes[minetest.get_node(pos)]
|
local ndef = minetest.registered_nodes[minetest.get_node(pos).name]
|
||||||
|
|
||||||
if ndef and ndef.on_receive_fields then
|
if ndef and ndef.on_receive_fields then
|
||||||
update_context(player, { on_receive_fields = ndef.on_receive_fields } )
|
update_context(player, { on_receive_fields = ndef.on_receive_fields } )
|
||||||
end
|
end
|
||||||
update_context(player, { node_pos = pos } )
|
update_context(player, { node_pos = pos } )
|
||||||
|
|
||||||
-- Show formspec
|
-- Show formspec
|
||||||
minetest.show_formspec(context.playername, modname..':context_formspec', fs)
|
minetest.show_formspec(playername, modname..':context_formspec', fs)
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
|
@ -134,7 +136,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
context.on_receive_fields(context.node_pos, '', fields, player)
|
context.on_receive_fields(context.node_pos, '', fields, player)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end)
|
||||||
|
|
||||||
-- Specific functions
|
-- Specific functions
|
||||||
|
|
||||||
|
@ -145,7 +147,7 @@ end
|
||||||
local function item_list_prepare(item_list)
|
local function item_list_prepare(item_list)
|
||||||
local list = {}
|
local list = {}
|
||||||
for _, name in ipairs(item_list) do
|
for _, name in ipairs(item_list) do
|
||||||
ndef = minetest.registered_items[name]
|
local ndef = minetest.registered_items[name]
|
||||||
if ndef then
|
if ndef then
|
||||||
list[#list+1] = ndef
|
list[#list+1] = ndef
|
||||||
end
|
end
|
||||||
|
@ -205,9 +207,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
show_fs(context.playername)
|
show_fs(context.playername)
|
||||||
end
|
end
|
||||||
if fields.quit == 'true' then
|
if fields.quit == 'true' then
|
||||||
if context.caller_pos then
|
if context.node_pos then
|
||||||
-- Using after to avoid the "double close" bug
|
-- Using after to avoid the "double close" bug
|
||||||
minetest.after(0, show_node_formspec, player, pos)
|
minetest.after(0, show_node_formspec, player, context.node_pos)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user