-- internationalization boilerplate
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")

local sweet_pod_grow_time = df_farming.config.plant_growth_time * df_farming.config.sweet_pod_delay_multiplier / 6

local register_sweet_pod = function(number)
	local name = "df_farming:sweet_pod_"..tostring(number)
	local def = {
		description = S("Sweet Pod"),
		_doc_items_longdesc = df_farming.doc.sweet_pod_desc,
		_doc_items_usagehelp = df_farming.doc.sweet_pod_usage,
		drawtype = "plantlike",
		tiles = {"dfcaverns_sweet_pod_"..tostring(number)..".png"},
		inventory_image = "dfcaverns_sweet_pod_"..tostring(number)..".png",
		paramtype = "light",
		walkable = false,
		is_ground_content = false,
		buildable_to = true,
		floodable = true,
		groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11},
		sounds = default.node_sound_leaves_defaults(),
        selection_box = {
            type = "fixed",
            fixed = {
                {-8/16, -8/16, -8/16, 8/16, -8/16 + (16/6)*number/16, 8/16},
            },
        },
		
		on_timer = function(pos, elapsed)
			df_farming.grow_underground_plant(pos, name, elapsed)
		end,

		drop = {
			max_items = 2,
			items = {
				{
					items = {'df_farming:sweet_pod_seed 2', 'df_farming:sweet_pods 2'},
					rarity = 7-number,
				},
				{
					items = {'df_farming:sweet_pod_seed', 'df_farming:sweet_pods'},
					rarity = 7-number,
				},
				{
					items = {'df_farming:sweet_pod_seed'},
					rarity = 7-number,
				},
			},
		},
	}
	
	if number < 6 then
		def._dfcaverns_next_stage = "df_farming:sweet_pod_"..tostring(number+1)
		def._dfcaverns_next_stage_time = sweet_pod_grow_time
	end
	
	minetest.register_node(name, def)
end

for i = 1,6 do
	register_sweet_pod(i)
end

local place_list = {
	minetest.get_content_id("df_farming:sweet_pod_1"),
	minetest.get_content_id("df_farming:sweet_pod_2"),
	minetest.get_content_id("df_farming:sweet_pod_3"),
	minetest.get_content_id("df_farming:sweet_pod_4"),
	minetest.get_content_id("df_farming:sweet_pod_5"),
	minetest.get_content_id("df_farming:sweet_pod_6"),
}
-- doesn't set the timer running, so plants placed by this method won't grow
df_farming.spawn_sweet_pod_vm = function(vi, area, data, param2_data)
	data[vi] = place_list[math.random(1,8)]
	param2_data[vi] = 0
end

df_farming.register_seed(
	"sweet_pod_seed",
	S("Sweet Pod Spores"),
	"dfcaverns_sweet_pod_seed.png",
	"df_farming:sweet_pod_1",
	sweet_pod_grow_time,
	df_farming.doc.sweet_pod_desc,
	df_farming.doc.sweet_pod_usage)

minetest.register_craftitem("df_farming:sweet_pods", {
	description = S("Sweet Pods"),
	_doc_items_longdesc = df_farming.doc.sweet_pod_desc,
	_doc_items_usagehelp = df_farming.doc.sweet_pod_usage,
	inventory_image = "dfcaverns_sweet_pods.png",
	stack_max = 99,
})
minetest.register_craft({
	type = "fuel",
	recipe = "df_farming:sweet_pods",
	burntime = 4
})

---------------------------------------------
-- Sugar

minetest.register_craftitem("df_farming:sugar", {
	description = S("Sweet Pod Sugar"),
	_doc_items_longdesc = df_farming.doc.sweet_pod_sugar_desc,
	_doc_items_usagehelp = df_farming.doc.sweet_pod_sugar_usage,
	inventory_image = "dfcaverns_sugar.png",
	groups = {dfcaverns_cookable = 1},
})

local recipe_registered = false

if minetest.get_modpath("cottages") then
	cottages.handmill_product["df_farming:sweet_pods"] = "df_farming:sugar";
	recipe_registered = true
end

if minetest.registered_items["farming:mortar_pestle"] ~= nil then
	minetest.register_craft({
		type = "shapeless",
		output = "df_farming:sugar",
		recipe = {
			"df_farming:sweet_pods", "farming:mortar_pestle"
		},
		replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}},
	})
	recipe_registered = true
end

if not recipe_registered then
minetest.register_craft({
	type = "cooking",
	cooktime = 3,
	output = "df_farming:sugar",
	recipe = "df_farming:sweet_pods",
})
end

----------------------------------------------
-- Syrup

if minetest.get_modpath("bucket") then
	minetest.register_node("df_farming:dwarven_syrup_source", {
		description = S("Dwarven Syrup Source"),
		_doc_items_longdesc = df_farming.doc.sweet_pod_syrup_desc,
		_doc_items_usagehelp = df_farming.doc.sweet_pod_syrup_usage,
		drawtype = "liquid",
		tiles = {
			{
				name = "dfcaverns_dwarven_syrup_source_animated.png",
				animation = {
					type = "vertical_frames",
					aspect_w = 16,
					aspect_h = 16,
					length = 2.0,
				},
			},
		},
		special_tiles = {
			{
				name = "dfcaverns_dwarven_syrup_source_animated.png",
				animation = {
					type = "vertical_frames",
					aspect_w = 16,
					aspect_h = 16,
					length = 2.0,
				},
				backface_culling = false,
			},
		},
		alpha = 204,
		paramtype = "light",
		walkable = false,
		pointable = false,
		diggable = false,
		buildable_to = true,
		is_ground_content = false,
		drop = "",
		drowning = 1,
		liquidtype = "source",
		liquid_alternative_flowing = "df_farming:dwarven_syrup_flowing",
		liquid_alternative_source = "df_farming:dwarven_syrup_source",
		liquid_viscosity = 7,
		liquid_renewable = false,
		liquid_range = 2,
		post_effect_color = {a = 204, r = 179, g = 131, b = 88},
		groups = {liquid = 3, flammable = 2},
		sounds = default.node_sound_water_defaults(),
	})
	
	minetest.register_node("df_farming:dwarven_syrup_flowing", {
		description = S("Flowing Dwarven Syrup"),
		_doc_items_longdesc = df_farming.doc.sweet_pod_syrup_desc,
		_doc_items_usagehelp = df_farming.doc.sweet_pod_syrup_usage,
		drawtype = "flowingliquid",
		tiles = {"dfcaverns_dwarven_syrup.png"},
		special_tiles = {
			{
				name = "dfcaverns_dwarven_syrup_flowing_animated.png",
				backface_culling = false,
				animation = {
					type = "vertical_frames",
					aspect_w = 16,
					aspect_h = 16,
					length = 0.8,
				},
			},
			{
				name = "dfcaverns_dwarven_syrup_flowing_animated.png",
				backface_culling = true,
				animation = {
					type = "vertical_frames",
					aspect_w = 16,
					aspect_h = 16,
					length = 0.8,
				},
			},
		},
		alpha = 204,
		paramtype = "light",
		paramtype2 = "flowingliquid",
		walkable = false,
		pointable = false,
		diggable = false,
		buildable_to = true,
		is_ground_content = false,
		drop = "",
		drowning = 1,
		liquidtype = "flowing",
		liquid_alternative_flowing = "df_farming:dwarven_syrup_flowing",
		liquid_alternative_source = "df_farming:dwarven_syrup_source",
		liquid_viscosity = 7,
		liquid_renewable = false,
		liquid_range = 2,
		post_effect_color = {a = 204, r = 179, g = 131, b = 88},
		groups = {liquid = 3, flammable = 2, not_in_creative_inventory = 1},
		sounds = default.node_sound_water_defaults(),
	})

	bucket.register_liquid(
		"df_farming:dwarven_syrup_source",
		"df_farming:dwarven_syrup_flowing",
		"df_farming:dwarven_syrup_bucket",
		"dfcaverns_bucket_dwarven_syrup.png",
		S("Dwarven Syrup Bucket")
	)
	
	if minetest.get_modpath("crafting") then
		simplecrafting_lib.register("furnace", {
			input = {
				["bucket:bucket_empty"] = 1,
				["df_farming:sugar"] = 3,
				["simplecrafting_lib:heat"] = 5,
			},
			output = "df_farming:dwarven_syrup_bucket",
		})
	else
		minetest.register_craft({
			type = "shapeless",
			output = "df_farming:dwarven_syrup_bucket",
			recipe = {"bucket:bucket_empty", "df_farming:sugar", "df_farming:sugar", "df_farming:sugar"},
		})
	end
	
	if minetest.get_modpath("dynamic_liquid") then
		dynamic_liquid.liquid_abm("df_farming:dwarven_syrup_source", "df_farming:dwarven_syrup_flowing", 5)
	end
end