diff --git a/init.lua b/init.lua index c2f75ad..772d443 100644 --- a/init.lua +++ b/init.lua @@ -654,18 +654,7 @@ end mt.register_on_mods_loaded(get_init_items) -local function get_fields(player, ...) - local args, formname, fields = {...} - if sfinv_only then - fields = args[1] - else - formname, fields = args[1], args[2] - end - - if not sfinv_only and formname ~= "craftguide" then - return - end - +local function on_receive_fields(player, fields) local player_name = player:get_player_name() local data = player_data[player_name] @@ -716,63 +705,68 @@ local function get_fields(player, ...) data.iX = data.iX - (fields.size_dec and 1 or -1) show_fs(player, player_name) - else for item in pairs(fields) do - if item:find(":") then - if item:sub(-4) == "_inv" then - item = item:sub(1,-5) + else + local item + for field in pairs(fields) do + if field:find(":") then + item = field + break end + end - local is_fuel = get_fueltime(item) > 0 - local recipes = get_recipes(item) + if not item then + return + elseif item:sub(-4) == "_inv" then + item = item:sub(1,-5) + end + + local is_fuel = get_fueltime(item) > 0 + local recipes = get_recipes(item) + if progressive_mode then + recipes = apply_progressive_filters(recipes, player) + end + + local no_recipes = not next(recipes) + if no_recipes and (progressive_mode or not is_fuel) then + return + end + + if item ~= data.input then + data.show_usage = nil + else + data.show_usage = not data.show_usage + end + + if not progressive_mode and is_fuel and no_recipes then + data.show_usage = true + end + + if data.show_usage then + data.usages = get_item_usages(item) + + if is_fuel then + data.usages[#data.usages + 1] = { + width = 1, + type = "normal", + items = {item}, + output = "BURN", + } + end if progressive_mode then - recipes = apply_progressive_filters(recipes, player) + data.usages = apply_progressive_filters(data.usages, player) end - local no_recipes = not next(recipes) - if no_recipes and (progressive_mode or not is_fuel) then - return - end - - if item ~= data.input then + if not next(data.usages) then data.show_usage = nil - else - data.show_usage = not data.show_usage end - - if not progressive_mode and is_fuel and no_recipes then - data.show_usage = true - end - - if data.show_usage then - data.usages = get_item_usages(item) - - if is_fuel then - data.usages[#data.usages + 1] = { - width = 1, - type = "normal", - items = {item}, - output = "BURN", - } - end - - if progressive_mode and next(data.usages) then - data.usages = - apply_progressive_filters(data.usages, player) - end - - if not next(data.usages) then - data.show_usage = nil - end - end - - data.input = item - data.recipes_item = recipes - data.rnum = 1 - - show_fs(player, player_name) end - end + + data.input = item + data.recipes_item = recipes + data.rnum = 1 + + show_fs(player, player_name) end end @@ -798,11 +792,15 @@ if sfinv_only then end, on_player_receive_fields = function(self, player, context, fields) - get_fields(player, fields) + on_receive_fields(player, fields) end, }) else - mt.register_on_player_receive_fields(get_fields) + mt.register_on_player_receive_fields(function(player, formname, fields) + if formname == "craftguide" then + on_receive_fields(player, fields) + end + end) local function on_use(user) local player_name = user:get_player_name()