Skip to content
This repository has been archived by the owner on Aug 9, 2023. It is now read-only.

Commit

Permalink
Some cleaning
Browse files Browse the repository at this point in the history
  • Loading branch information
kilbith committed Sep 4, 2022
1 parent 734b09b commit 8afb51d
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 63 deletions.
10 changes: 3 additions & 7 deletions src/caches.lua
Expand Up @@ -2,7 +2,7 @@ local replacements = {fuel = {}}
local http = ...

IMPORT("maxn", "copy", "insert", "sort", "match", "sub")
IMPORT("true_str", "is_table", "valid_item", "table_merge", "table_replace", "rcp_eq")
IMPORT("true_str", "is_table", "valid_item", "table_merge", "table_replace", "table_eq")
IMPORT("fmt", "reg_items", "reg_aliases", "reg_nodes", "is_cube", "get_cube", "ItemStack")
IMPORT("is_group", "extract_groups", "item_has_groups", "groups_to_items", "get_group_stereotype")

Expand Down Expand Up @@ -248,11 +248,7 @@ local old_clear_craft = core.clear_craft
core.clear_craft = function(def)
old_clear_craft(def)
if true_str(def) then
return -- TODO
elseif is_table(def) then
return -- TODO
end
-- TODO: hide in crafting guide
end
local function resolve_aliases(hash)
Expand All @@ -274,7 +270,7 @@ local function resolve_aliases(hash)
local rcp_new = copy(i3.recipes_cache[newname][j])
rcp_new.output = oldname
if rcp_eq(rcp_old, rcp_new) then
if table_eq(rcp_old, rcp_new) then
similar = true
break
end
Expand Down
24 changes: 14 additions & 10 deletions src/common.lua
Expand Up @@ -216,18 +216,22 @@ local function array_diff(t1, t2)
return diff
end

local function rcp_eq(rcp, rcp2)
if rcp.type ~= rcp2.type then return end
if rcp.width ~= rcp2.width then return end
if #rcp.items ~= #rcp2.items then return end
if rcp.output ~= rcp2.output then return end
local function table_eq(t1, t2)
local ty1, ty2 = type(t1), type(t2)
if ty1 ~= ty2 then return end

for i, item in pairs(rcp.items) do
if item ~= rcp2.items[i] then return end
if ty1 ~= "table" and ty2 ~= "table" then
return t1 == t2
end

for i, item in pairs(rcp2.items) do
if item ~= rcp.items[i] then return end
for k, v in pairs(t1) do
local v2 = t2[k]
if v2 == nil or not table_eq(v, v2) then return end
end

for k, v in pairs(t2) do
local v1 = t1[k]
if v1 == nil or not table_eq(v1, v) then return end
end

return true
Expand Down Expand Up @@ -764,7 +768,7 @@ local _ = {
is_table = is_table,
table_merge = table_merge,
table_replace = table_replace,
rcp_eq = rcp_eq,
table_eq = table_eq,
array_diff = array_diff,

-- Math
Expand Down
99 changes: 53 additions & 46 deletions tests/test_custom_recipes.lua
Expand Up @@ -11,32 +11,39 @@ mt3:get_meta():set_string("description", "Worn Pick")
mt3:get_meta():set_string("color", "yellow")
mt3:set_wear(10000)

minetest.register_craft({
minetest.register_craft {
output = mt:to_string(),
type = "shapeless",
recipe = {
"default:wood",
mt2:to_string(),
},
})
}

minetest.register_craft({
minetest.register_craft {
output = mt3:to_string(),
type = "shapeless",
recipe = {
"default:pick_mese",
"default:diamond",
},
})
}

minetest.clear_craft {
recipe = {
{"default:sand", "default:sand"},
{"default:sand", "default:sand"},
},
}

i3.register_craft {
url = "https://raw.githubusercontent.com/minetest-mods/i3/main/tests/test_online_recipe.json"
}

i3.register_craft({
i3.register_craft {
result = "default:ladder_wood 2",
items = {"default:copper_ingot 7, default:tin_ingot, default:steel_ingot 2"},
})
}

i3.register_craft {
result = "default:tree",
Expand All @@ -56,7 +63,7 @@ i3.register_craft {
}
}

i3.register_craft({
i3.register_craft {
grid = {
"X",
"#",
Expand All @@ -68,9 +75,9 @@ i3.register_craft({
['X'] = "default:glass 2",
},
result = "default:mese 3",
})
}

i3.register_craft({
i3.register_craft {
grid = {
"X",
"#X",
Expand All @@ -82,9 +89,9 @@ i3.register_craft({
['X'] = "default:glass 2",
},
result = "default:mese 3",
})
}

i3.register_craft({
i3.register_craft {
grid = {
"X",
},
Expand All @@ -93,10 +100,10 @@ i3.register_craft({
['X'] = "default:glass 2",
},
result = "default:mese 3",
})
}


i3.register_craft({
i3.register_craft {
grid = {
"X#",
},
Expand All @@ -105,9 +112,9 @@ i3.register_craft({
['X'] = "default:glass 2",
},
result = "default:mese 3",
})
}

i3.register_craft({
i3.register_craft {
grid = {
"X#X",
},
Expand All @@ -116,9 +123,9 @@ i3.register_craft({
['X'] = "default:glass 2",
},
result = "default:mese 3",
})
}

i3.register_craft({
i3.register_craft {
grid = {
"X#XX",
},
Expand All @@ -127,9 +134,9 @@ i3.register_craft({
['X'] = "default:glass 2",
},
result = "default:mese 3",
})
}

i3.register_craft({
i3.register_craft {
grid = {
"X#XX",
"X#X",
Expand All @@ -139,9 +146,9 @@ i3.register_craft({
['X'] = "default:glass 2",
},
result = "default:mese 3",
})
}

i3.register_craft({
i3.register_craft {
grid = {
"X#XX",
"X#X",
Expand All @@ -152,9 +159,9 @@ i3.register_craft({
['X'] = "default:glass 2",
},
result = "default:mese 3",
})
}

i3.register_craft({
i3.register_craft {
grid = {
"X##XX",
},
Expand All @@ -163,9 +170,9 @@ i3.register_craft({
['X'] = "default:glass 2",
},
result = "default:mese 3",
})
}

i3.register_craft({
i3.register_craft {
grid = {
"X##X#X",
},
Expand All @@ -174,9 +181,9 @@ i3.register_craft({
['X'] = "default:glass 2",
},
result = "default:mese 3",
})
}

i3.register_craft({
i3.register_craft {
grid = {
"X##X#X",
"",
Expand All @@ -187,9 +194,9 @@ i3.register_craft({
['X'] = "default:glass 2",
},
result = "default:mese 3",
})
}

i3.register_craft({
i3.register_craft {
grid = {
"X #",
" ## ",
Expand All @@ -201,9 +208,9 @@ i3.register_craft({
['X'] = "default:glass 2",
},
result = "default:mese 3",
})
}

i3.register_craft({
i3.register_craft {
grid = {
"X #",
" ## ",
Expand All @@ -215,9 +222,9 @@ i3.register_craft({
['X'] = "default:glass",
},
result = "default:mese 3",
})
}

i3.register_craft({
i3.register_craft {
grid = {
"X #",
" ## ",
Expand All @@ -230,9 +237,9 @@ i3.register_craft({
['X'] = "default:glass",
},
result = "default:mese 3",
})
}

i3.register_craft({
i3.register_craft {
grid = {
"X #",
" ## ",
Expand All @@ -245,10 +252,10 @@ i3.register_craft({
['X'] = "default:glass",
},
result = "default:mese 3",
})
}


i3.register_craft({
i3.register_craft {
grid = {
"X #",
" ## ",
Expand All @@ -262,9 +269,9 @@ i3.register_craft({
['X'] = "default:glass",
},
result = "default:mese 3",
})
}

i3.register_craft({
i3.register_craft {
grid = {
"X #",
" ## ",
Expand All @@ -278,9 +285,9 @@ i3.register_craft({
['X'] = "default:glass",
},
result = "default:mese 3",
})
}

i3.register_craft({
i3.register_craft {
grid = {
"X #",
" ## ",
Expand All @@ -294,9 +301,9 @@ i3.register_craft({
['X'] = "default:glass",
},
result = "default:mese 3",
})
}

i3.register_craft({
i3.register_craft {
grid = {
"X #",
" ## ",
Expand All @@ -310,9 +317,9 @@ i3.register_craft({
['X'] = "default:glass",
},
result = "default:mese 3",
})
}

i3.register_craft({
i3.register_craft {
grid = {
"X #",
" ## ",
Expand All @@ -328,4 +335,4 @@ i3.register_craft({
['X'] = "default:glass",
},
result = "default:mese 3",
})
}

0 comments on commit 8afb51d

Please sign in to comment.