-- RUBENFOOD MOD
-- A mod written by rubenwardy that adds
-- food to the minetest game
-- ======================================
-- >> rubenfood/support.lua
-- adds support for other mods
-- ======================================
-- [support]
-- ======================================

print "Food [Support] - Initialising"

--NODE_IMPLEMENT() Gets an item from another mod softly
-- modname: the name of the mod that the item will be got from
-- n_ext: the name of the item that we want to get
-- n_int: the name we want to save the item so we can load it as an ingredient
-- resultfunc: if the mod does not exist, then do this function
function node_implement(modname,n_ext,n_int,resultfunc)
         if not minetest.get_modpath(modname) then
            -- Mod is NOT installed
            resultfunc()
         else
            -- Mod IS installed
            minetest.register_alias(n_int,n_ext)
         end
end

print "Food [Support] - Vegetables and Fruit"
print "Food [Support] -  > Bread and Flour"

node_implement("farming","farming:flour","food:flour",function()
	node_implement("plantlib","plantlib:wheat","food:wheat",function()
		minetest.register_craft({
			output = '"food:wheat" 1',
			recipe = {
				{"default:dry_shrub"},
			}
		})
	end)
	minetest.register_craftitem("food:flour", {
		description = "Flour",
		inventory_image = "farming_flour.png",
	})
	minetest.register_craft({
		output = '"food:flour" 1',
		recipe = {
			{"food:wheat"},
		}
	})
end)

node_implement("farming","farming:bread","food:bread",function()
minetest.register_craftitem("food:bread", {
	description = "Bread",
	inventory_image = "food_bread.png",
	stack_max = 1,
	on_use = minetest.item_eat(10),
	groups={food=2},
})
minetest.register_craft({
	type = "cooking",
	output = "food:bread",
	recipe = "food:dough",
	cooktime = 10,
})
end)


node_implement("farming","farming:cake_mix","food:dough",function()
minetest.register_craftitem("food:dough", {
	description = "Cake Mix",
	inventory_image = "farming_cake_mix.png",
})
minetest.register_craft({
	output = "food:dough",
	type = "shapeless",
	recipe = {"food:flour", "food:flour", "food:flour", "food:flour", "bucket:bucket_water"},
	replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}},
})
end)



print "Food [Support] -  > Strawberry"

node_implement("farming_plus","farming_plus:strawberry_item","food:strawberry",function()
node_implement("plantlib","plantlib:strawberry","food:strawberry",function()
minetest.register_craftitem("food:strawberry", {
	description = "Strawberry",
	inventory_image = "farming_strawberry.png",
	on_use = minetest.item_eat(2),
})
minetest.register_craft({
	output = '"food:strawberry" 1',
	recipe = {
		{"default:apple"},
	}
})
end)
end)

print "Food [Support] -  > Carrot"

node_implement("farming_plus","farming_plus:carrot_item","food:carrot",function()
node_implement("docfarming","docfarming:carrot","food:carrot",function()
node_implement("plantlib","plantlib:carrot","food:carrot",function()
minetest.register_craftitem("food:carrot", {
	description = "Carrot",
	inventory_image = "farming_carrot.png",
	on_use = minetest.item_eat(3),
})
minetest.register_craft({
	output = '"food:carrot" 1',
	recipe = {
		{"default:apple","default:apple","default:apple"},
	}
})
end)
end)
end)


print "Food [Support] -  > Rhubarb"
node_implement("farming_plus","farming_plus:rhubarb_item","food:rhubarb",function()
minetest.register_craftitem("food:rhubarb", {
	description = "Rhubarb",
	inventory_image = "farming_rhubarb.png",
})
minetest.register_craft({
	output = '"food:rhubarb" 1',
	recipe = {
		{"default:apple"},
		{"default:apple"},
		{"default:apple"}
	}
})
end)

print "Food [Support] -  > Cocoa Bean"
node_implement("farming_plus","farming_plus:cocoa_bean","food:cocoa",function()
minetest.register_craftitem("food:cocoa", {
	description = "Cocoa Bean",
	inventory_image = "farming_cocoa_bean.png",
})
minetest.register_craft({
	output = '"food:cocoa" 1',
	recipe = {
		{"","default:apple",""},
		{"default:apple","","default:apple"},
		{"","default:apple",""}
	}
})
end)


print "Food [Support] -  > Banana"
node_implement("farming_plus","farming_plus:banana","food:banana",function()
minetest.register_node("food:banana", {
	description = "Banana",
	tiles = {"farming_banana.png"},
	inventory_image = "farming_banana.png",
	wield_image = "farming_banana.png",
	drawtype = "torchlike",
	paramtype = "light",
	sunlight_propagates = true,
	walkable = false,
	groups = {fleshy=3,dig_immediate=3,flammable=2},
	sounds = default.node_sound_defaults(),
	on_use = minetest.item_eat(6),
})
minetest.register_craft({
	output = '"food:banana" 1',
	recipe = {
		{"default:apple"},
		{"default:apple"}
	}
})
end)

print "Food [Support] -  > Tomato"
node_implement("farming_plus","farming_plus:tomato_item","food:tomato",function()
node_implement("plantlib","plantlib:tomato","food:tomato",function()
minetest.register_craftitem("food:tomato", {
	description = "Tomato",
	inventory_image = "farming_strawberry.png",
	on_use = minetest.item_eat(2),
})
minetest.register_craft({
	output = '"food:rhubarb" 1',
	recipe = {
		{""},
		{""},
		{"default:apple"}
	}
})
end)
end)

print "Food [Support] -  > Potato"
node_implement("docfarming","docfarming:potato","food:potato",function()
minetest.register_craftitem("food:potato", {
	description = "Potato",
	inventory_image = "food_potato.png",
})
minetest.register_craft({
	output = '"food:rhubarb" 1',
	recipe = {
		{"default:apple"},
		{"default:dirt"}
	}
})
end)

node_implement("docfarming","docfarming:bakedpotato","food:potato_baked",function()
minetest.register_craftitem("food:potato_baked", {
	description = "Baked Potato",
	inventory_image = "food_baked_potato.png",
	on_use = minetest.item_eat(6),
})
minetest.register_craft({
	type = "cooking",
	output = "food:potato_baked",
	recipe = "food:potato",
	cooktime = 2,
})
end)

print "Food [Support] -  > Coffee"
node_implement("plantlib","plantlib:coffee","food:coffeebean",function()
minetest.register_craftitem("food:coffeebean",{
	description = "Raw Coffee Bean",
	tiles = {"food_coffee.png"},
	inventory_image = "food_coffee.png",
})

minetest.register_craft({
	output = '"food:coffeebean" 1',
	recipe = {
		{'""','"default:dry_shrub"','""'},
		{'""','"default:dry_shrub"','""'},
		{'""','"default:dry_shrub"','""'},
	}
})
end)

print "Food [Support] - Meats and Animal Produce"

print "Food [Support] -  > Raw Meat"
node_implement("mobs","mobs:meat_raw","food:meat_raw",function()
node_implement("animalmaterials","animalmaterials:meat_raw","food:meat_raw",function()
minetest.register_craftitem("food:meat_raw", {
	description = "Raw meat",
	image = "animalmaterials_meat_raw.png",
	on_use = minetest.item_eat(1),
	groups = { meat=1, eatable=1 },
	stack_max=25
})
minetest.register_craft({
	output = '"food:meat_raw" 1',
	recipe = {
		{"default:apple"},
		{"default:dirt"}
	}
})
end)
end)

print "Food [Support] -  > Meat"
node_implement("mobs","mobs:meat","food:meat",function()
minetest.register_craftitem("food:meat", {
	description = "Venison",
	inventory_image = "food_meat.png",
})

minetest.register_craft({
	type = "cooking",
	output = "food:meat",
	recipe = "food:meat_raw",
	cooktime = 30
})
end)

print "Food [Support] -  > Egg"
node_implement("animalmaterials","animalmaterials:egg","food:egg",function()
 minetest.register_craftitem("food:egg", {
	description = "Egg",
	image = "animalmaterials_egg.png",
	stack_max=10
})
minetest.register_craft({
	output = '"food:egg" 1',
	recipe = {
		{"default:sand"},
		{"default:apple"}
	}
})
end)

print "Food [Support] -  > Milk"
node_implement("animalmaterials","animalmaterials:milk","food:milk",function()
node_implement("my_mobs","my_mobs:milk_glass_cup","food:milk",function()
  minetest.register_craftitem("food:milk", {
	description = "Milk",
	image = "animalmaterials_milk.png",
	on_use = minetest.item_eat(1),
	groups = { eatable=1 },
	stack_max=10
})
minetest.register_craft({
	output = '"food:meat_raw" 1',
	recipe = {
		{"default:apple"},
		{"bucket:bucket_water"}
	},
	replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}},
})
end)
end)

print "Food [Support] - Vessels and Cutlery"

node_implement("vessels","vessels:drinking_glass","food:cup",function()
node_implement("animalmaterials","animalmaterials:glass","food:cup",function()
   minetest.register_craftitem("food:cup",{
	description = "Glass",
	tiles = {"food_cup.png"},
	inventory_image = "food_cup.png",
})
minetest.register_craft({
	output = '"food:cup" 1',
	recipe = {
		{"default:glass"},
		{"default:glass"}
	}
})
end)
end)