From 0f6bdc99212160b30b63aa9a14b556dc610e3422 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 14 Feb 2017 17:17:49 +0100 Subject: [PATCH] Add proper tooltip for repair recipes --- mods/mcl_core/crafting.lua | 2 +- mods/mcl_core/init.lua | 3 +++ mods/mcl_craftguide/init.lua | 43 +++++++++++++++++++++++++++--------- 3 files changed, 37 insertions(+), 11 deletions(-) diff --git a/mods/mcl_core/crafting.lua b/mods/mcl_core/crafting.lua index 5470da70..c180b689 100644 --- a/mods/mcl_core/crafting.lua +++ b/mods/mcl_core/crafting.lua @@ -693,7 +693,7 @@ minetest.register_craft({ -- minetest.register_craft({ type = "toolrepair", - additional_wear = -0.05, + additional_wear = -mcl_core.repair, }) -- diff --git a/mods/mcl_core/init.lua b/mods/mcl_core/init.lua index f75a4518..d1654432 100644 --- a/mods/mcl_core/init.lua +++ b/mods/mcl_core/init.lua @@ -10,6 +10,9 @@ mcl_core.gui_bg_img = "" mcl_core.inventory_header = mcl_core.gui_slots .. mcl_core.gui_bg +-- Repair percentage for toolrepair +mcl_core.repair = 0.05 + minetest.nodedef_default.stack_max = 64 minetest.craftitemdef_default.stack_max = 64 diff --git a/mods/mcl_craftguide/init.lua b/mods/mcl_craftguide/init.lua index 2cbb6c55..ea0465df 100644 --- a/mods/mcl_craftguide/init.lua +++ b/mods/mcl_craftguide/init.lua @@ -83,7 +83,19 @@ local function get_fueltime(item) end function craftguide:get_tooltip(item, recipe_type, cooktime, groups) - local tooltip, item_desc = "tooltip["..item..";", "" + local raw = self:get_tooltip_raw(item, recipe_type, cooktime, groups) + if raw == "" then + return raw + else + local tooltip = "tooltip["..item..";" + tooltip = tooltip .. raw + tooltip = tooltip .. "]" + return tooltip + end +end + +function craftguide:get_tooltip_raw(item, recipe_type, cooktime, groups) + local tooltip, item_desc = "", "" local fueltime = get_fueltime(item) local has_extras = groups or recipe_type == "cooking" or fueltime > 0 @@ -107,19 +119,20 @@ function craftguide:get_tooltip(item, recipe_type, cooktime, groups) end tooltip = tooltip..groupstr end + tooltip = tooltip .. item_desc if recipe_type == "cooking" then - tooltip = tooltip..item_desc.."\nCooking time: ".. + tooltip = tooltip.."\nCooking time: ".. colorize(cooktime) end if fueltime > 0 then - tooltip = tooltip..item_desc.."\nBurning time: ".. + tooltip = tooltip.."\nBurning time: ".. colorize(fueltime) end - return has_extras and tooltip.."]" or "" + return tooltip end -function craftguide:get_recipe(iY, xoffset, tooltip, item, recipe_num, recipes) +function craftguide:get_recipe(iY, xoffset, tooltip_raw, item, recipe_num, recipes) local formspec, recipes_total = "", #recipes if recipes_total > 1 then formspec = formspec.. @@ -190,11 +203,16 @@ function craftguide:get_recipe(iY, xoffset, tooltip, item, recipe_num, recipes) end end local output = recipes[recipe_num].output + local label = "" + if recipes[recipe_num]._is_toolrepair then + tooltip_raw = tooltip_raw .. "\n" .. core.colorize("#00FF00", string.format("Repaired by %.0f%%", (mcl_core.repair*100))) + label = "\nR" + end return formspec.. "image["..(xoffset-1)..","..(iY+2).. ".12;0.9,0.7;craftguide_arrow.png]".. "item_image_button["..(xoffset)..","..(iY+2)..";1,1;".. - output..";"..item..";]"..tooltip + output..";"..item.."_out"..";"..label.."]".."tooltip["..item.."_out"..";"..minetest.formspec_escape(tooltip_raw).."]" end function craftguide:get_formspec(player_name, is_fuel) @@ -250,7 +268,11 @@ function craftguide:get_formspec(player_name, is_fuel) end if data.item and reg_items[data.item] then - local tooltip = self:get_tooltip(data.item) + local tooltip_raw = self:get_tooltip_raw(data.item) + local tooltip = "" + if tooltip_raw ~= "" then + tooltip = "tooltip["..data.item..";"..minetest.formspec_escape(tooltip_raw).."]" + end if not data.recipes_item or (is_fuel and not get_recipe(data.item).items) then formspec = formspec.. @@ -258,11 +280,12 @@ function craftguide:get_formspec(player_name, is_fuel) ".12;0.9,0.7;craftguide_arrow.png]".. "item_image_button["..(xoffset-2)..","..(iY+2).. ";1,1;"..data.item..";"..data.item..";]".. - tooltip.."image["..(xoffset)..",".. + tooltip.. + "image["..(xoffset)..",".. (iY+1.98)..";1,1;craftguide_fire.png]" else formspec = formspec..self:get_recipe( - iY, xoffset, tooltip, data.item, + iY, xoffset, tooltip_raw, data.item, data.recipe_num, data.recipes_item) end end @@ -407,7 +430,7 @@ mt.register_on_player_receive_fields(function(player, formname, fields) craftguide:get_formspec(player_name) else for item in pairs(fields) do if item:find(":") then - if item:sub(-4) == "_inv" then + if item:sub(-4) == "_inv" or item:sub(-4) == "_out" then item = item:sub(1,-5) end