diff options
Diffstat (limited to 'lavalamp/init.lua')
-rw-r--r-- | lavalamp/init.lua | 206 |
1 files changed, 128 insertions, 78 deletions
diff --git a/lavalamp/init.lua b/lavalamp/init.lua index 93571c6..eec843a 100644 --- a/lavalamp/init.lua +++ b/lavalamp/init.lua @@ -1,84 +1,134 @@ -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"}, -} -for i in ipairs(lavalamps_list) do - local lavalampdesc = lavalamps_list[i][1] - local colour = lavalamps_list[i][2] +local S = homedecor_i18n.gettext - 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, - }) +lavalamp = {} - 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) +minetest.register_node("lavalamp:lavalamp", { + description = S("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 + end +}) + +minetest.register_node("lavalamp:lavalamp_off", { + description = S("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" +} - 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 + +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) + + minetest.set_node(pos, { name = "lavalamp:lavalamp", param2 = paletteidx }) + local meta = minetest.get_meta(pos) + meta:set_string("dye", "unifieddyes:"..color) + + end +}) |