local materials = bucket.resources.materials

bucket.liquids = {}

function bucket.register_liquid(source, flowing, itemname, inventory_image, name, groups, force_renew, level)
	level = level or 3

	local source_def = minetest.registered_items[source]
	local source_groups = table.copy(source_def.groups or {})
	source_groups[bucket.settings.liquid_group] = level
	if groups then
		futil.table.set_all(source_groups, groups)
	end
	minetest.override_item(source, {
		groups = source_groups,
		diggable = true,
		drop = source,
		sounds = bucket.resources.sounds.water_sounds,
	})

	local flowing_name = source_def.liquid_alternative_flowing
	local flowing_def = minetest.registered_items[flowing_name]
	local flowing_groups = table.copy(flowing_def.groups or {})
	flowing_groups[bucket.settings.liquid_group] = level
	minetest.override_item(flowing_name, {
		groups = flowing_groups,
		diggable = true,
		drop = "",
		sounds = bucket.resources.sounds.water_sounds,
	})

	minetest.register_alias_force(itemname, source)

	bucket.liquids[source] = {
		source = source,
		flowing = flowing,
		itemname = source,
		force_renew = force_renew,
	}
end

minetest.register_alias_force("bucket", "bucket:bucket_steel")
minetest.register_alias_force("bucket_water", "bucket:bucket_water")
minetest.register_alias_force("bucket_lava", "bucket:bucket_lava")
minetest.register_alias_force("bucket:bucket_empty", "bucket:bucket_steel")

if materials.water then
	bucket.register_liquid(materials.water, nil, "bucket:bucket_water", nil, nil, { water_bucket = 1 }, nil, 3)
else
	minetest.register_alias_force("bucket:bucket_water", "bucket:bucket_steel")
end

if materials.lava then
	bucket.register_liquid(materials.lava, nil, "bucket:bucket_lava", nil, nil, nil, nil, 3)
else
	minetest.register_alias_force("bucket:bucket_lava", "bucket:bucket_steel")
end

if materials.river_water then
	bucket.register_liquid(
		materials.river_water,
		nil,
		"bucket:bucket_river_water",
		nil,
		nil,
		{ water_bucket = 1 },
		nil,
		3
	)
else
	minetest.register_alias_force("bucket:bucket_river_water", "bucket:bucket_steel")
end
