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"},
 | 
					lavalamp = {}
 | 
				
			||||||
	{ "Orange Lava Lamp", "orange"},
 | 
					
 | 
				
			||||||
	{ "Yellow Lava Lamp", "yellow"},
 | 
					minetest.register_node("lavalamp:lavalamp", {
 | 
				
			||||||
	{ "Green Lava Lamp", "green"},
 | 
						description = "Lava Lamp",
 | 
				
			||||||
	{ "Blue Lava Lamp", "blue"},
 | 
						drawtype = "mesh",
 | 
				
			||||||
	{ "Violet Lava Lamp", "violet"},
 | 
						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
 | 
					lavalamp.old_static_nodes = {}
 | 
				
			||||||
	local lavalampdesc = lavalamps_list[i][1]
 | 
					for _, color in ipairs(colors) do
 | 
				
			||||||
	local colour = lavalamps_list[i][2]
 | 
						table.insert(lavalamp.old_static_nodes, "lavalamp:"..color)
 | 
				
			||||||
 | 
						table.insert(lavalamp.old_static_nodes, "lavalamp:"..color.."_off")
 | 
				
			||||||
	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", "", }
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
end
 | 
					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  |