From a3bbb3694c572786ea815289cb852a87550bcc45 Mon Sep 17 00:00:00 2001 From: codiac Date: Thu, 27 Jul 2023 21:27:51 +1000 Subject: [PATCH 1/2] Allow villager to claim filled cauldrons. Fixes #3733 --- mods/ENTITIES/mobs_mc/villager.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index 8fc18ccab..7db8a8306 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -351,7 +351,7 @@ local professions = { leatherworker = { name = N("Leatherworker"), texture = "mobs_mc_villager_leatherworker.png", - jobsite = "mcl_cauldrons:cauldron", + jobsite = "group:cauldron", trades = { { { { "mcl_mobitems:leather", 9, 12 }, E1 }, @@ -1007,8 +1007,9 @@ end ----- JOBSITE LOGIC local function get_profession_by_jobsite(js) + local is_cauldron = string.find(js, "mcl_cauldrons:cauldron") for k,v in pairs(professions) do - if v.jobsite == js then return k end + if v.jobsite == js or (is_cauldron and v.jobsite == "group:cauldron") then return k end end end From 4f2cb955b895f2e265da222986c3a5a227e76145 Mon Sep 17 00:00:00 2001 From: codiac Date: Fri, 4 Aug 2023 11:24:07 +1000 Subject: [PATCH 2/2] Use minetest.get_item_group for more flexibility --- mods/ENTITIES/mobs_mc/villager.lua | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index 7db8a8306..96c5c7233 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -1007,9 +1007,16 @@ end ----- JOBSITE LOGIC local function get_profession_by_jobsite(js) - local is_cauldron = string.find(js, "mcl_cauldrons:cauldron") for k,v in pairs(professions) do - if v.jobsite == js or (is_cauldron and v.jobsite == "group:cauldron") then return k end + if v.jobsite == js then + return k + -- Catch Nitwit doesn't have a jobsite + elseif v.jobsite and v.jobsite:find("^group:") then + local group = v.jobsite:gsub("^group:", "") + if minetest.get_item_group(js, group) > 0 then + return k + end + end end end