Skip to content

Commit

Permalink
Add support for craftguide mod recipe registration (#174)
Browse files Browse the repository at this point in the history
Co-authored-by: sfence <sfence.software@gmail.com>

minetest-mods/technic#584
  • Loading branch information
S-S-X authored Apr 15, 2021
1 parent ce79586 commit bc9a775
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 34 deletions.
25 changes: 13 additions & 12 deletions .luacheckrc
Original file line number Diff line number Diff line change
Expand Up @@ -6,31 +6,32 @@ exclude_files = {
}

globals = {
"technic", "technic_cnc", "minetest", "wrench"
"technic", "technic_cnc", "minetest", "wrench"
}

read_globals = {
-- Lua
string = {fields = {"split", "trim"}},
table = {fields = {"copy", "getn"}},
string = {fields = {"split", "trim"}},
table = {fields = {"copy", "getn"}},

-- Minetest
"PseudoRandom", "ItemStack",
"PseudoRandom", "ItemStack",
"VoxelArea", "VoxelManip",
"Settings", "vector",

-- Mods
"default", "stairsplus",
"default", "stairsplus",
"screwdriver", "bucket",
"digilines", "pipeworks",
"mesecon", "moretrees",
"unified_inventory", "protector",
"unifieddyes", "digiline_remote",
"monitoring", "drawers", "mg",

"unified_inventory", "protector",
"unifieddyes", "digiline_remote",
"monitoring", "drawers", "mg",
"craftguide", "i3",

-- Only used in technic/machines/MV/lighting.lua (disabled)
"isprotect", "homedecor_expect_infinite_stacks",

-- TODO: Remove after translation update
"intllib"
}
15 changes: 0 additions & 15 deletions technic/depends.txt

This file was deleted.

47 changes: 41 additions & 6 deletions technic/machines/register/recipes.lua
Original file line number Diff line number Diff line change
@@ -1,17 +1,31 @@
local have_ui = minetest.get_modpath("unified_inventory")
local have_cg = minetest.get_modpath("craftguide")
local have_i3 = minetest.get_modpath("i3")

technic.recipes = { cooking = { input_size = 1, output_size = 1 } }
function technic.register_recipe_type(typename, origdata)
local data = {}
for k, v in pairs(origdata) do data[k] = v end
data.input_size = data.input_size or 1
data.output_size = data.output_size or 1
if have_ui and unified_inventory.register_craft_type and data.output_size == 1 then
unified_inventory.register_craft_type(typename, {
description = data.description,
width = data.input_size,
height = 1,
})
if data.output_size == 1 then
if have_ui and unified_inventory.register_craft_type then
unified_inventory.register_craft_type(typename, {
description = data.description,
width = data.input_size,
height = 1,
})
end
if have_cg and craftguide.register_craft_type then
craftguide.register_craft_type(typename, {
description = data.description,
})
end
if have_i3 then
i3.register_craft_type(typename, {
description = data.description,
})
end
end
data.recipes = {}
technic.recipes[typename] = data
Expand Down Expand Up @@ -59,6 +73,27 @@ local function register_recipe(typename, data)
width = 0,
})
end
if (have_cg or have_i3) and technic.recipes[typename].output_size == 1 then
local result = data.output
if (type(result)=="table") then
result = result[1]
end
local items = table.concat(data.input, ", ")
if have_cg and craftguide.register_craft then
craftguide.register_craft({
type = typename,
result = result,
items = {items},
})
end
if have_i3 then
i3.register_craft({
type = typename,
result = result,
items = {items},
})
end
end
end

function technic.register_recipe(typename, data)
Expand Down
2 changes: 1 addition & 1 deletion technic/mod.conf
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
name = technic
depends = default, pipeworks, technic_worldgen, basic_materials
optional_depends = bucket, screwdriver, mesecons, mesecons_mvps, digilines, digiline_remote, intllib, unified_inventory, vector_extras, dye, monitoring
optional_depends = bucket, screwdriver, mesecons, mesecons_mvps, digilines, digiline_remote, intllib, unified_inventory, vector_extras, dye, monitoring, craftguide,i3

0 comments on commit bc9a775

Please sign in to comment.