diff --git a/additional_stuff/salad_pickaxe.lua b/additional_stuff/salad_pickaxe.lua index c001b844940044b965c60bed70823c62c2e554ad..3bb9c9f9dbf0ae7a2ec2e3fb2a85fffe66c816a2 100644 --- a/additional_stuff/salad_pickaxe.lua +++ b/additional_stuff/salad_pickaxe.lua @@ -16,7 +16,7 @@ minetest.register_tool("kif_custom:pick_salad", { end }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "kif_custom:pick_salad", recipe = { {"farming:potato_salad", "farming:potato_salad", "farming:potato_salad"}, diff --git a/advtrains/ignore_collisions.lua b/advtrains/ignore_collisions.lua index 21197cf89a45daa124171f77e32b54bcdfcb1359..e86b51ffb53f59e169478971b71806066d63e0a5 100644 --- a/advtrains/ignore_collisions.lua +++ b/advtrains/ignore_collisions.lua @@ -10,48 +10,47 @@ local additional_nonblocknodes={ "mesecons_pressureplates:pressure_plate_wood", "mesecons_pressureplates:pressure_plate_stone", } -minetest.after(0, function() - local mods = {"moreblocks", "bakedclay", "building_blocks", "my_door_wood", "my_sliding_doors"} - local variants = { - micro_ = nil, - slope = nil, - slab_ = {"_1", "_2", "_quarter", "_two_sides", "_three_sides"}, - stair_ = {"_alt", "_alt_1", "_alt_2", "_alt_4", "_outer"}, - panel_ = {"_1", "_2", "_4"}, - } - local to_add = {} - for i, mod in ipairs(mods) do - for variant, data in pairs(variants) do - if to_add[mod] == nil then - to_add[mod] = {} - end - to_add[mod][variant] = data + +local mods = {"moreblocks", "bakedclay", "building_blocks", "my_door_wood", "my_sliding_doors"} +local variants = { + micro_ = nil, + slope = nil, + slab_ = {"_1", "_2", "_quarter", "_two_sides", "_three_sides"}, + stair_ = {"_alt", "_alt_1", "_alt_2", "_alt_4", "_outer"}, + panel_ = {"_1", "_2", "_4"}, +} +local to_add = {} +for i, mod in ipairs(mods) do + for variant, data in pairs(variants) do + if to_add[mod] == nil then + to_add[mod] = {} end + to_add[mod][variant] = data end - for name, def in pairs(minetest.registered_nodes) do - for mod, variants in pairs(to_add) do - if string.sub(name, 1, #mod+1) == mod .. ":" then - for variant, endings in pairs(variants) do - local prefix = mod .. ":" .. variant - if string.sub(name, 1, #prefix) == prefix then - if endings then - for _, ending in ipairs(endings) do - if string.sub(name, #name - #ending + 1, #name) == ending then - table.insert(additional_nonblocknodes, name) - end +end +for name, def in pairs(minetest.registered_nodes) do + for mod, variants in pairs(to_add) do + if string.sub(name, 1, #mod+1) == mod .. ":" then + for variant, endings in pairs(variants) do + local prefix = mod .. ":" .. variant + if string.sub(name, 1, #prefix) == prefix then + if endings then + for _, ending in ipairs(endings) do + if string.sub(name, #name - #ending + 1, #name) == ending then + table.insert(additional_nonblocknodes, name) end - else - table.insert(additional_nonblocknodes, name) end + else + table.insert(additional_nonblocknodes, name) end end end end end +end - for _,name in ipairs(additional_nonblocknodes) do - if minetest.registered_nodes[name] then - minetest.registered_nodes[name].groups.not_blocking_trains=1 - end +for _,name in ipairs(additional_nonblocknodes) do + if minetest.registered_nodes[name] then + minetest.registered_nodes[name].groups.not_blocking_trains=1 end -end) +end diff --git a/advtrains/survival_recipes.lua b/advtrains/survival_recipes.lua index f854d69b8df40f11e2995da4e1413d1b2461e077..31b4bfe98be6d3ec8866a3fa29957eb8fb29850b 100644 --- a/advtrains/survival_recipes.lua +++ b/advtrains/survival_recipes.lua @@ -3,35 +3,35 @@ local greens = {"dye:green", "dye:light_green", "dye:medium_green", "dye:dark_gr -- track stuff -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains_interlocking:tcb_node", recipe = {{"default:mese_crystal_fragment"}, {"default:steel_ingot"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains_interlocking:tcb_node 9", recipe = {{"default:mese_crystal"}, {"default:steelblock"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains_line_automation:dtrack_stop_placer", recipe = {{"dye:black"}, {"default:mese_crystal_fragment"}, {"advtrains:dtrack_placer"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains_interlocking:dtrack_npr_placer", recipe = {{"advtrains_line_automation:dtrack_stop_placer"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains_interlocking:dtrack_stop_placer", recipe = {{"advtrains_line_automation:dtrack_npr_placer"}} }) --[[ -- TODO: fix crash in advtrains before adding recipe -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:dtrack_atc_placer", recipe = {{"dye:blue"}, {"default:mese_crystal_fragment"}, @@ -39,35 +39,35 @@ minetest.register_craft({ }) ]]-- for i,color in ipairs(greens) do - minetest.register_craft({ + kif.register_craft_if_items_exist({ output = "advtrains:dtrack_unload_placer", recipe = {{color}, {"default:mese_crystal_fragment"}, {"advtrains:dtrack_placer"}} }) end -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:dtrack_load_placer", recipe = {{"dye:red"}, {"default:mese_crystal_fragment"}, {"advtrains:dtrack_placer"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:dtrack_load_placer", recipe = {{"advtrains:dtrack_unload_placer"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:dtrack_unload_placer", recipe = {{"advtrains:dtrack_load_placer"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains_luaautomation:dtrack_placer", recipe = {{"dye:blue"}, {"mesecons_microcontroller:microcontroller0000"}, {"advtrains:dtrack_placer"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains_luaautomation:oppanel", recipe = { {"default:steel_ingot","dye:blue","default:steel_ingot"}, @@ -77,12 +77,12 @@ minetest.register_craft({ -- train stuff -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:engine_japan", recipe = {{"advtrains:wagon_japan"}, {"default:mese"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:wagon_japan", recipe = { {"default:steel_ingot","default:steel_ingot","default:steel_ingot"}, @@ -90,14 +90,14 @@ minetest.register_craft({ {"default:steel_ingot","default:steel_ingot","default:steel_ingot"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:engine_industrial", recipe = { {"dye:red", "advtrains:driver_cab"}, {"default:steelblock", "default:mese_crystal"}, {"advtrains:wheel", "advtrains:wheel"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:engine_industrial_big", recipe = { {"dye:red", "advtrains:driver_cab", "default:steelblock"}, @@ -105,14 +105,14 @@ minetest.register_craft({ {"advtrains:wheel", "advtrains:wheel", "advtrains:wheel"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:wagon_wood", recipe = { {"default:steel_ingot","","default:steel_ingot"}, {"default:steel_ingot","default:steel_ingot","default:steel_ingot"}, {"advtrains:wheel","advtrains:wheel","advtrains:wheel"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:wagon_tank", recipe = { {"default:steel_ingot","default:steel_ingot","default:steel_ingot"}, @@ -120,42 +120,42 @@ minetest.register_craft({ {"advtrains:wheel","advtrains:wheel","advtrains:wheel"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:engine_railbus", recipe = { {"","basic_materials:steel_bar"}, {"dye:red","advtrains:subway_wagon"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:diesel_lokomotive", recipe = { {"dye:cyan", "advtrains:driver_cab"}, {"default:steelblock", "default:mese_crystal"}, {"advtrains:wheel", "advtrains:wheel"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:wagon_track", recipe = { {"advtrains:dtrack_placer", "advtrains:dtrack_placer", "advtrains:dtrack_placer"}, {"default:stick", "default:stick", "default:stick"}, {"advtrains:wheel", "", "advtrains:wheel"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:wagon_gravel", recipe = { {"group:wood", "default:gravel", "group:wood"}, {"group:wood", "group:wood", "group:wood"}, {"advtrains:wheel", "", "advtrains:wheel"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:wagon_tree", recipe = { {"", "group:tree", ""}, {"default:stick", "default:stick", "default:stick"}, {"advtrains:wheel", "", "advtrains:wheel"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:wagon_lava", recipe = { {"default:stick", "bucket:bucket_lava", "default:stick"}, @@ -163,27 +163,27 @@ minetest.register_craft({ {"advtrains:wheel", "", "advtrains:wheel"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:SaHa_E231", recipe = { {"default:steel_ingot","default:steel_ingot","default:steel_ingot"}, {"default:steel_ingot","dye:green","default:steel_ingot"}, {"advtrains:wheel","","advtrains:wheel"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:MoHa_E230", recipe = { {"default:steel_ingot","default:steel_ingot","default:steel_ingot"}, {"default:steel_ingot","dye:green","default:steel_ingot"}, {"advtrains:wheel","default:mese","advtrains:wheel"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:MoHa_E231", recipe = { {"basic_materials:steel_bar"}, {"advtrains:MoHa_E230"}}, }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:KuHa_E231", recipe = { {"default:steel_ingot","default:steel_ingot","default:steel_ingot"}, @@ -191,14 +191,14 @@ minetest.register_craft({ {"advtrains:wheel","default:mese","advtrains:wheel"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:under_s7dm", recipe = { {"default:steel_ingot","default:steel_ingot","default:steel_ingot"}, {"default:steel_ingot","dye:red","default:steel_ingot"}, {"advtrains:wheel","dye:blue","advtrains:wheel"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:under_s7ndm", recipe = { {"default:steel_ingot","default:steel_ingot","default:steel_ingot"}, @@ -209,73 +209,73 @@ minetest.register_craft({ -- signal stuff -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains_signals_ks:mast_mast_0", recipe = {{"default:steel_ingot"}, {"default:steel_ingot"}, {"default:steel_ingot"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains_signals_ks:hs_danger_0 2", type = "shapeless", recipe = {"advtrains:signal_off", "advtrains:signal_off", "dye:white", "dye:yellow"} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains_signals_ks:ra_danger_0 2", type = "shapeless", recipe = {"advtrains:signal_off", "advtrains:signal_off", "dye:white"} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:signal_wall_l_off", recipe = {{"advtrains:signal_wall_t_off"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:signal_wall_r_off", recipe = {{"advtrains:signal_wall_l_off"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:signal_wall_t_off", recipe = {{"advtrains:signal_wall_r_off"}} }) for i,color in ipairs(greens) do - minetest.register_craft({ + kif.register_craft_if_items_exist({ output = "advtrains:signal_wall_l_off 2", recipe = {{"default:steel_ingot", "dye:red"}, {"", color}, {"default:steel_ingot", "default:steel_ingot"}} }) - minetest.register_craft({ + kif.register_craft_if_items_exist({ output = "advtrains:signal_wall_r_off 2", recipe = {{"dye:red", "default:steel_ingot"}, {color, ""}, {"default:steel_ingot", "default:steel_ingot"}} }) - minetest.register_craft({ + kif.register_craft_if_items_exist({ output = "advtrains:signal_wall_t_off 2", recipe = {{"default:steel_ingot", "", "default:steel_ingot"}, {"default:steel_ingot", color, "dye:red"}} }) end -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains_signals_ks:sign_8_0 2", type = "shapeless", recipe = {"default:sign_wall_steel", "default:sign_wall_steel", "default:steel_ingot", "dye:white", "dye:black"} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains_signals_ks:sign_8_0 2", type = "shapeless", recipe = {"basic_signs:sign_wall_steel_white_black", "default:steel_ingot"} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains_signals_ks:sign_8_0 2", recipe = {{"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, {"dye:black", "default:steel_ingot", "dye:white"}} }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains_signals_ks:sign_8_0 2", recipe = {{"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, @@ -292,7 +292,7 @@ for rot = 0, 3 do return "dye:red" end end - minetest.register_craft({ + kif.register_craft_if_items_exist({ output = "advtrains:across_off 2", recipe = { {pos(3), "", pos(2)}, @@ -303,7 +303,7 @@ end -- add recipe with normal green for signal -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "advtrains:signal_off 2", recipe = { {"", "dye:red", "default:steel_ingot"}, diff --git a/depends.txt b/depends.txt deleted file mode 100644 index 8731817e9e3f52d3ddda188b411ae64b9acf87cd..0000000000000000000000000000000000000000 --- a/depends.txt +++ /dev/null @@ -1,9 +0,0 @@ -default -digilines -xpanes -basic_materials -mesecons_luacontroller -moreblocks -advtrains_interlocking -advtrains_signals_ks -advtrains_luaautomation diff --git a/init.lua b/init.lua index bc605651008a4364c5fc06a1ef0333d41385653b..06e50e2ad4c18701095e20df6896700275596937 100644 --- a/init.lua +++ b/init.lua @@ -3,6 +3,9 @@ kif = {} local MP = minetest.get_modpath("kif_custom") +-- utilities +dofile(MP.."/util.lua") + -- some items don't have recipes. fill them in dofile(MP.."/missing_recipes.lua") diff --git a/missing_recipes.lua b/missing_recipes.lua index 83564f3ee6342aad6b372cf2e978d2aae7f1eeba..1268849bccbfbed22553420130c38c4b66862c8e 100644 --- a/missing_recipes.lua +++ b/missing_recipes.lua @@ -1,11 +1,12 @@ -minetest.register_craft({ + +kif.register_craft_if_items_exist({ output = "digilines:lightsensor", recipe = { {"basic_materials:plastic_sheet", "xpanes:pane_flat", "basic_materials:plastic_sheet"}, {"default:steel_ingot", "mesecons_luacontroller:luacontroller0000", "digilines:wire_std_00000000"} } }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "digilines:rtc", recipe = { {"basic_materials:plastic_sheet", "basic_materials:energy_crystal_simple", "basic_materials:plastic_sheet"}, @@ -13,7 +14,7 @@ minetest.register_craft({ } }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "computer:tetris_arcade", recipe = { {"basic_materials:plastic_sheet", "basic_materials:energy_crystal_simple", "basic_materials:plastic_sheet"}, @@ -21,7 +22,7 @@ minetest.register_craft({ {"basic_materials:plastic_sheet", "basic_materials:energy_crystal_simple", "basic_materials:plastic_sheet"} } }) -minetest.register_craft({ +kif.register_craft_if_items_exist({ output = "computer:3dprinter_bedflinger", recipe = { {"basic_materials:plastic_sheet", "basic_materials:empty_spool", "default:mese_crystal_fragment"}, diff --git a/mod.conf b/mod.conf new file mode 100644 index 0000000000000000000000000000000000000000..78ab3711fa8b0be05180342f7160469052e416e8 --- /dev/null +++ b/mod.conf @@ -0,0 +1,22 @@ +name = kif_custom +depends = default +optional_depends = """ + advtrains_interlocking, + advtrains_signals_ks, + advtrains_luaautomation, + bakedclay, + basic_materials, + building_blocks, + computer, + digilines, + digiterms, + dye, + farming, + homedecor, + mesecons_luacontroller, + mesecons_pressureplates, + moreblocks, + my_door_wood, + my_sliding_doors, + xpanes, +""" diff --git a/util.lua b/util.lua new file mode 100644 index 0000000000000000000000000000000000000000..753e21a4601c2b34e588aaa5f1a6b8f5e324a9b0 --- /dev/null +++ b/util.lua @@ -0,0 +1,30 @@ + +kif.register_craft_if_items_exist = function(def) + if def.output and minetest.registered_items[tostring(def.output)] == nil then + return false + end + if def.recipe then + if type(def.recipe) ~= "table" then + if minetest.registered_items[tostring(def.recipe)] == nil then + return false + end + else + for y, row in ipairs(def.recipe) do + if type(row) ~= "table" then + if row ~= "" and minetest.registered_items[tostring(row)] == nil then + return false + end + else + for x, col in ipairs(row) do + if col ~= "" and minetest.registered_items[tostring(col)] == nil then + return false + end + end + end + end + end + -- still here? recipe is fine then! + minetest.register_craft(def) + return true + end +end