summaryrefslogtreecommitdiff
path: root/lavalamp/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lavalamp/init.lua')
-rw-r--r--lavalamp/init.lua206
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
+})