convert lavalamps to use param2 coloring
Side effect: Now all of Unified Dyes' colors can be applied.
| @@ -1,84 +1,135 @@ | ||||
| local lavalamps_list = { | ||||
| 	{ "Red Lava Lamp", "red"}, | ||||
| 	{ "Orange Lava Lamp", "orange"}, | ||||
| 	{ "Yellow Lava Lamp", "yellow"}, | ||||
| 	{ "Green Lava Lamp", "green"}, | ||||
| 	{ "Blue Lava Lamp", "blue"}, | ||||
| 	{ "Violet Lava Lamp", "violet"}, | ||||
|  | ||||
| lavalamp = {} | ||||
|  | ||||
| minetest.register_node("lavalamp:lavalamp", { | ||||
| 	description = "Lava Lamp", | ||||
| 	drawtype = "mesh", | ||||
| 	mesh = "lavalamp.obj", | ||||
| 	tiles = { | ||||
| 		 { name = "lavalamp_metal.png", color = 0xffffffff}, | ||||
| 		{ | ||||
| 			name="lavalamp_lamp_anim.png", | ||||
| 			animation={ | ||||
| 				type="vertical_frames", | ||||
| 				aspect_w=40, | ||||
| 				aspect_h=40, | ||||
| 				length=6.0, | ||||
| 			}, | ||||
| 		}, | ||||
| 	}, | ||||
| 	inventory_image = "lavalamp_lamp_inv.png", | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "color", | ||||
| 	palette = "unifieddyes_palette.png", | ||||
| 	sunlight_propagates = true, | ||||
| 	walkable = false, | ||||
| 	light_source = 14, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.25, -0.5, -0.25, 0.25,0.5, 0.25 }, | ||||
| 	}, | ||||
| 	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, | ||||
| 	sounds = default.node_sound_glass_defaults(), | ||||
| 	after_dig_node = unifieddyes.after_dig_node, | ||||
| 	on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) | ||||
| 		local itemname = itemstack:get_name() | ||||
| 		if string.find(itemname, "dye:") or string.find(itemname, "unifieddyes:") then | ||||
| 			unifieddyes.on_rightclick(pos, node, clicker, | ||||
| 			  itemstack, pointed_thing, "lavalamp:lavalamp", false) | ||||
| 		else | ||||
| 			node.name = "lavalamp:lavalamp_off" | ||||
| 			minetest.swap_node(pos, node) | ||||
| 			return itemstack | ||||
| 		end | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| minetest.register_node("lavalamp:lavalamp_off", { | ||||
| 	description = "Lava Lamp (off)", | ||||
| 	drawtype = "mesh", | ||||
| 	mesh = "lavalamp.obj", | ||||
| 	tiles = { | ||||
| 		{ name = "lavalamp_metal.png", color = 0xffffffff }, | ||||
| 		"lavalamp_lamp_off.png", | ||||
| 	}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "color", | ||||
| 	palette = "unifieddyes_palette.png", | ||||
| 	sunlight_propagates = true, | ||||
| 	walkable = false, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.25, -0.5, -0.25, 0.25,0.5, 0.25 }, | ||||
| 	}, | ||||
| 	groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1}, | ||||
| 	sounds = default.node_sound_glass_defaults(), | ||||
| 	drop = "lavalamp:lavalamp", | ||||
| 	after_dig_node = unifieddyes.after_dig_node, | ||||
| 	on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) | ||||
| 		node.name = "lavalamp:lavalamp" | ||||
| 		minetest.swap_node(pos, node) | ||||
| 		return itemstack | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "lavalamp:lavalamp", | ||||
| 	recipe = { | ||||
| 		{"", "wool:white", "", }, | ||||
| 		{"", "bucket:bucket_water", "", }, | ||||
| 		{"", "wool:black", "", } | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| -- convert to param2 coloring | ||||
|  | ||||
| local colors = { | ||||
| 	"red", | ||||
| 	"orange", | ||||
| 	"yellow", | ||||
| 	"green", | ||||
| 	"blue", | ||||
| 	"violet" | ||||
| } | ||||
|  | ||||
| for i in ipairs(lavalamps_list) do | ||||
| 	local lavalampdesc = lavalamps_list[i][1] | ||||
| 	local colour = lavalamps_list[i][2] | ||||
|  | ||||
| 	minetest.register_node("lavalamp:"..colour, { | ||||
| 	    description = lavalampdesc, | ||||
| 		drawtype = "mesh", | ||||
| 		mesh = "lavalamp.obj", | ||||
| 	    tiles = { | ||||
| 	        "lavalamp_metal.png", | ||||
| 	        { | ||||
| 	            name="lavalamp_lamp_anim_"..colour..".png", | ||||
| 	            animation={ | ||||
| 	                type="vertical_frames", | ||||
| 	                aspect_w=40, | ||||
| 	                aspect_h=40, | ||||
| 	                length=6.0, | ||||
| 	            }, | ||||
| 	        }, | ||||
| 	    }, | ||||
| 		inventory_image = "lavalamp_lamp_"..colour.."_inv.png", | ||||
| 	    paramtype = "light", | ||||
| 	    paramtype2 = "facedir", | ||||
| 	    sunlight_propagates = true, | ||||
| 	    walkable = false, | ||||
| 	    light_source = 14, | ||||
| 	    selection_box = { | ||||
| 	        type = "fixed", | ||||
| 	        fixed = { -0.25, -0.5, -0.25, 0.25,0.5, 0.25 }, | ||||
| 	    }, | ||||
| 		groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, | ||||
| 		sounds = default.node_sound_glass_defaults(), | ||||
| 		on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) | ||||
| 	        node.name = "lavalamp:"..colour.."_off" | ||||
| 	        minetest.set_node(pos, node) | ||||
| 			return itemstack | ||||
| 	    end, | ||||
| 	}) | ||||
|  | ||||
| 	minetest.register_node("lavalamp:"..colour.."_off", { | ||||
| 	    description = lavalampdesc.." off", | ||||
| 	    drawtype = "mesh", | ||||
| 		mesh = "lavalamp.obj", | ||||
| 	    tiles = { | ||||
| 	        "lavalamp_metal.png", | ||||
| 	        "lavalamp_lamp_off.png", | ||||
| 	    }, | ||||
| 	    paramtype = "light", | ||||
| 	    paramtype2 = "facedir", | ||||
| 	    sunlight_propagates = true, | ||||
| 	    walkable = false, | ||||
| 	    selection_box = { | ||||
| 	        type = "fixed", | ||||
| 	        fixed = { -0.25, -0.5, -0.25, 0.25,0.5, 0.25 }, | ||||
| 	    }, | ||||
| 		groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1}, | ||||
| 		sounds = default.node_sound_glass_defaults(), | ||||
| 		drop = "lavalamp:"..colour, | ||||
| 		on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) | ||||
| 	        node.name = "lavalamp:"..colour | ||||
| 	        minetest.set_node(pos, node) | ||||
| 			return itemstack | ||||
| 	    end, | ||||
| 	}) | ||||
|  | ||||
| 	minetest.register_craft({ | ||||
| 		output = "lavalamp:"..colour, | ||||
| 		recipe = { | ||||
| 			{"", "wool:"..colour, "", }, | ||||
| 			{"", "bucket:bucket_water", "", }, | ||||
| 			{"", "wool:black", "", } | ||||
| 		} | ||||
| 	}) | ||||
|  | ||||
| lavalamp.old_static_nodes = {} | ||||
| for _, color in ipairs(colors) do | ||||
| 	table.insert(lavalamp.old_static_nodes, "lavalamp:"..color) | ||||
| 	table.insert(lavalamp.old_static_nodes, "lavalamp:"..color.."_off") | ||||
| end | ||||
|  | ||||
| print(dump(lavalamp.old_static_nodes)) | ||||
|  | ||||
| minetest.register_lbm({ | ||||
| 	name = "lavalamp:convert", | ||||
| 	label = "Convert lava lamps to use param2 color", | ||||
| 	run_at_every_load = true, | ||||
| 	nodenames = lavalamp.old_static_nodes, | ||||
| 	action = function(pos, node) | ||||
| 		local name = node.name | ||||
| 		local newname | ||||
| 		local color | ||||
|  | ||||
| 		if string.find(name, "red") then | ||||
| 			color = "red" | ||||
| 		elseif string.find(name, "orange") then | ||||
| 			color = "orange" | ||||
| 		elseif string.find(name, "yellow") then | ||||
| 			color = "yellow" | ||||
| 		elseif string.find(name, "green") then | ||||
| 			color = "green" | ||||
| 		elseif string.find(name, "blue") then | ||||
| 			color = "blue" | ||||
| 		elseif string.find(name, "violet") then | ||||
| 			color = "violet" | ||||
| 		end | ||||
|  | ||||
| 		local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, false) | ||||
| 		print("LAVALAMP: "..node.name..", "..color.." ("..paletteidx..")") | ||||
|  | ||||
| 		minetest.set_node(pos, { name = "lavalamp:lavalamp", param2 = paletteidx }) | ||||
| 		local meta = minetest.get_meta(pos) | ||||
| 		meta:set_string("dye", "unifieddyes:"..color) | ||||
|  | ||||
| 	end | ||||
| }) | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								lavalamp/textures/lavalamp_lamp_anim.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 4.7 KiB | 
| Before Width: | Height: | Size: 5.0 KiB | 
| Before Width: | Height: | Size: 5.1 KiB | 
| Before Width: | Height: | Size: 5.1 KiB | 
| Before Width: | Height: | Size: 5.3 KiB | 
| Before Width: | Height: | Size: 5.1 KiB | 
| Before Width: | Height: | Size: 5.2 KiB | 
| Before Width: | Height: | Size: 2.7 KiB | 
| Before Width: | Height: | Size: 2.8 KiB | 
| Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB | 
| Before Width: | Height: | Size: 82 B After Width: | Height: | Size: 86 B | 
| Before Width: | Height: | Size: 2.8 KiB | 
| Before Width: | Height: | Size: 2.8 KiB | 
| Before Width: | Height: | Size: 2.9 KiB |