local materials = xcompat.materials
local S = core.get_translator("pipeworks")

local straight = function(pos, node, velocity, stack) return {velocity} end
local steel_tex = "[combine:16x16^[noalpha^[colorize:#D3D3D3"
if core.get_modpath("default") then steel_tex = "default_steel_block.png" end

-- register an embedded tube
function pipeworks.register_embedded_tube(nodename, opts)
	core.register_node(nodename, {
		description = opts.description,
		tiles = {
			opts.base_texture,
			opts.base_texture,
			opts.base_texture,
			opts.base_texture,
			opts.base_texture .. "^pipeworks_tube_connection_metallic.png",
			opts.base_texture .. "^pipeworks_tube_connection_metallic.png",
		},
		paramtype = "light",
		paramtype2 = "facedir",
		groups = {
			cracky = 1,
			oddly_breakable_by_hand = 1,
			tubedevice = 1,
			dig_glass = 2,
			pickaxey=1,
			handy=1
		},
		is_ground_content = false,
		_mcl_hardness = 0.8,
		legacy_facedir_simple = true,
		_sound_def = {
			key = "node_sound_stone_defaults",
		},
		tube = {
			connect_sides = {
				front = 1,
				back = 1
			},
			priority = 50,
			can_go = straight,
			can_insert = function(pos, node, stack, direction)
				local dir = core.facedir_to_dir(node.param2)
				return vector.equals(dir, direction) or vector.equals(vector.multiply(dir, -1), direction)
			end
		},
		after_place_node = pipeworks.after_place,
		after_dig_node = pipeworks.after_dig,
		on_rotate = pipeworks.on_rotate,
	})

	core.register_craft( {
		output = nodename .. " 1",
		recipe = {
			{ opts.base_ingredient, opts.base_ingredient, opts.base_ingredient },
			{ opts.base_ingredient, "pipeworks:tube_1", opts.base_ingredient },
			{ opts.base_ingredient, opts.base_ingredient, opts.base_ingredient }
		},
	})
	pipeworks.ui_cat_tube_list[#pipeworks.ui_cat_tube_list+1] = nodename
end

-- steelblock embedded tube
pipeworks.register_embedded_tube("pipeworks:steel_block_embedded_tube", {
	description = S("Airtight steelblock embedded tube"),
	base_texture = steel_tex,
	base_ingredient = materials.steel_ingot
})
