local S = minetest.get_translator(minetest.get_current_modname())

local mese_nodename = minetest.registered_aliases["mesecons_gamecompat:mese"]
if mese_nodename then
	-- Convert placeholders.
	minetest.register_alias("mesecons_extrawires:mese", mese_nodename)
else
	-- Register placeholder.
	mese_nodename = "mesecons_extrawires:mese"
	minetest.register_node("mesecons_extrawires:mese", {
		description = S("Mese Wire"),
		tiles = {"mesecons_wire_off.png"},
		paramtype = "light",
		light_source = 3,
		groups = {cracky = 1},
		sounds = mesecon.node_sound.stone,
	})
end

local mesewire_rules =
{
	{x = 1, y = 0, z = 0},
	{x =-1, y = 0, z = 0},
	{x = 0, y = 1, z = 0},
	{x = 0, y =-1, z = 0},
	{x = 0, y = 0, z = 1},
	{x = 0, y = 0, z =-1},
}

minetest.override_item(mese_nodename, {
	mesecons = {conductor = {
		state = mesecon.state.off,
		onstate = "mesecons_extrawires:mese_powered",
		rules = mesewire_rules
	}}
})

-- Copy node definition of powered mese from normal mese
-- and brighten texture tiles to indicate mese is powered
local unpowered_def = minetest.registered_nodes[mese_nodename]
local powered_def = mesecon.merge_tables(unpowered_def, {
	drop = mese_nodename,
	paramtype = "light",
	light_source = math.min(unpowered_def.light_source + 2, minetest.LIGHT_MAX),
	mesecons = {conductor = {
		state = mesecon.state.on,
		offstate = mese_nodename,
		rules = mesewire_rules
	}},
	groups = mesecon.merge_tables(unpowered_def.groups or {}, {not_in_creative_inventory = 1}),
	on_blast = mesecon.on_blastnode,
})

for i, v in pairs(powered_def.tiles) do
	powered_def.tiles[i] = v .. "^[brighten"
end

minetest.register_node("mesecons_extrawires:mese_powered", powered_def)
