973 lines
32 KiB
Lua
973 lines
32 KiB
Lua
minetest.register_node("ma_pops_furniture:smoke_detector", {
|
|
description = "Smoke Detector",
|
|
tiles = {
|
|
"mp_t.png",
|
|
"mp_b.png",
|
|
"mp_si.png",
|
|
"mp_si.png",
|
|
"mp_si.png",
|
|
"mp_si.png"
|
|
},
|
|
groups = {cracky = 3, oddly_breakable_by_hand = 3},
|
|
on_timer = function(pos,elapsed)
|
|
if minetest.find_node_near(pos, 20, {"fire:basic_flame"}, false) then
|
|
local node = minetest.get_node(pos)
|
|
node.name = "ma_pops_furniture:smoke_detector_on"
|
|
minetest.remove_node(pos)
|
|
minetest.add_node(pos, node)
|
|
minetest.get_node_timer(pos):start(0.0)
|
|
else
|
|
-- Update every 10 seconds.
|
|
minetest.get_node_timer(pos):start(10.0)
|
|
end
|
|
end,
|
|
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
|
minetest.get_node_timer(pos):start(0.0)
|
|
end,
|
|
drawtype = "nodebox",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.375, 0.375, -0.375, 0.375, 0.5, 0.375}, -- NodeBox1
|
|
{-0.3125, 0.3125, -0.3125, 0.3125, 0.375, 0.3125}, -- NodeBox2
|
|
}
|
|
}
|
|
})
|
|
|
|
minetest.register_node("ma_pops_furniture:smoke_detector_on", {
|
|
description = "Smoke Detector",
|
|
tiles = {
|
|
"mp_t.png",
|
|
"mp_b.png",
|
|
"mp_si.png",
|
|
"mp_si.png",
|
|
"mp_si.png",
|
|
"mp_si.png"
|
|
},
|
|
on_destruct = function(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
if meta then
|
|
local tmp = meta:to_table()
|
|
if tmp then
|
|
if tmp.fields.sound_handle then
|
|
minetest.sound_stop(tmp.fields.sound_handle)
|
|
tmp.fields.sound_handle = nil
|
|
meta:from_table(tmp)
|
|
end
|
|
end
|
|
end
|
|
end,
|
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
|
local meta = minetest.get_meta(pos)
|
|
if meta then
|
|
local tmp = meta:to_table()
|
|
if tmp then
|
|
if tmp.fields.sound_handle then
|
|
minetest.sound_stop(tmp.fields.sound_handle)
|
|
tmp.fields.sound_handle = nil
|
|
minetest.get_node_timer(pos):start(3.0)
|
|
meta:from_table(tmp)
|
|
end
|
|
end
|
|
end
|
|
end,
|
|
drop = 'ma_pops_furniture:smoke_detector',
|
|
groups = {cracky = 3, oddly_breakable_by_hand = 3, not_in_creative_inventory= 1},
|
|
on_timer = function(pos,elapsed)
|
|
if minetest.find_node_near(pos, 20, {"fire:basic_flame"}, false) then
|
|
-- Play sound.
|
|
local meta = minetest.get_meta(pos)
|
|
if meta then
|
|
local tmp = meta:to_table()
|
|
if tmp then
|
|
if not tmp.fields.sound_handle then
|
|
local handle = minetest.sound_play("mp_smoke_detector", {pos = pos, gain = 2.1,max_hear_distance = 96,loop = true})
|
|
tmp.fields.sound_handle = handle
|
|
end
|
|
end
|
|
meta:from_table(tmp)
|
|
end
|
|
-- Update every 1.0 second.
|
|
minetest.get_node_timer(pos):start(1.0)
|
|
else
|
|
local meta = minetest.get_meta(pos)
|
|
if meta then
|
|
local tmp = meta:to_table()
|
|
if tmp then
|
|
minetest.sound_stop(tmp.fields.sound_handle)
|
|
if tmp.fields.sound_handle then
|
|
tmp.fields.sound_handle = nil
|
|
meta:from_table(tmp)
|
|
end
|
|
end
|
|
end
|
|
local node = minetest.get_node(pos)
|
|
node.name = "ma_pops_furniture:smoke_detector"
|
|
minetest.remove_node(pos)
|
|
minetest.add_node(pos, node)
|
|
minetest.get_node_timer(pos):start(0.0)
|
|
end
|
|
end,
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
light_source = light,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.375, 0.375, -0.375, 0.375, 0.5, 0.375}, -- NodeBox1
|
|
{-0.3125, 0.3125, -0.3125, 0.3125, 0.375, 0.3125}, -- NodeBox2
|
|
}
|
|
}
|
|
})
|
|
|
|
minetest.register_lbm({
|
|
label = "Replace all smoke detector's that are turned on.",
|
|
name = "ma_pops_furniture:replace_smoke_detector_on",
|
|
nodenames = {"ma_pops_furniture:smoke_detector_on"},
|
|
run_at_every_load = true,
|
|
action = function(pos, node)
|
|
node.name = "ma_pops_furniture:smoke_detector"
|
|
minetest.remove_node(pos)
|
|
minetest.add_node(pos, node)
|
|
minetest.get_node_timer(pos):start(0.0)
|
|
end
|
|
})
|
|
|
|
minetest.register_node("ma_pops_furniture:barrel", {
|
|
description = "Barrel",
|
|
paramtype2 = "facedir",
|
|
place_param2 = 0,
|
|
tiles = {
|
|
"mp_barrel.png", --top
|
|
"mp_barrel.png", --bottom
|
|
"mp_barrel.png^[transformR90", --right
|
|
"mp_barrel.png^[transformR90", --left
|
|
"mp_barrel_top.png", --back
|
|
"mp_barrel_top.png" --front
|
|
},
|
|
is_ground_content = false,
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
|
|
on_construct = function(pos)
|
|
local meta = minetest.env:get_meta(pos)
|
|
local inv = meta:get_inventory()
|
|
inv:set_size('main', 8*4)
|
|
inv:set_size('storage', 9*3)
|
|
meta:set_string('formspec',
|
|
'size [9,9]'..
|
|
'bgcolor[#080808BB;false]'..
|
|
'list[current_name;storage;0,0.2;9,3;]'..
|
|
'list[current_player;main;0.5,5;8,4;]')
|
|
end,
|
|
can_dig = function(pos,player)
|
|
local meta = minetest.get_meta(pos);
|
|
local inv = meta:get_inventory()
|
|
return inv:is_empty('storage') and inv:is_empty('storage1')
|
|
end,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
|
|
}
|
|
}
|
|
})
|
|
|
|
minetest.register_node("ma_pops_furniture:blinds", {
|
|
description = "Blinds",
|
|
tiles = {"mp_blinds.png"},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, furniture = 1},
|
|
sunlight_propagates = true;
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, 0.5, 0.5, 0.5, 0.4, 0.4},
|
|
{-0.5, 0.3, 0.5, 0.5, 0.2, 0.4},
|
|
{-0.5, 0.1, 0.5, 0.5, 0.0, 0.4},
|
|
{-0.5, -0.1, 0.5, 0.5, -0.2, 0.4},
|
|
{-0.5, -0.3, 0.5, 0.5, -0.4, 0.4},
|
|
},
|
|
}
|
|
})
|
|
|
|
minetest.register_node("ma_pops_furniture:light", {
|
|
description = "Ceiling Light",
|
|
tiles = {
|
|
"default_coral_skeleton.png",
|
|
"mp_ceiling_light_bottom.png",
|
|
"mp_ceiling_light_side.png",
|
|
"mp_ceiling_light_side.png",
|
|
"mp_ceiling_light_side.png",
|
|
"mp_ceiling_light_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
|
|
node.name = "ma_pops_furniture:light_on"
|
|
minetest.set_node(pos, node)
|
|
end,
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.25, 0.4375, -0.25, 0.25, 0.5, 0.25}, -- NodeBox1
|
|
{-0.125, 0.3125, -0.125, 0.125, 0.4375, 0.125}, -- NodeBox2
|
|
{-0.1875, -0.0625, -0.1875, 0.1875, 0.3125, 0.1875}, -- NodeBox3
|
|
},
|
|
}
|
|
})
|
|
|
|
minetest.register_node("ma_pops_furniture:light_on", {
|
|
description = "Ceiling Light",
|
|
tiles = {
|
|
"default_coral_skeleton.png",
|
|
"mp_ceiling_light_bottom.png",
|
|
"mp_ceiling_light_side.png",
|
|
"mp_ceiling_light_side.png",
|
|
"mp_ceiling_light_side.png",
|
|
"mp_ceiling_light_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
drop = "ma_pops_furniture:light",
|
|
light_source = 14,
|
|
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
|
|
node.name = "ma_pops_furniture:light"
|
|
minetest.set_node(pos, node)
|
|
end,
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, not_in_creative_inventory = 1},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.25, 0.4375, -0.25, 0.25, 0.5, 0.25}, -- NodeBox1
|
|
{-0.125, 0.3125, -0.125, 0.125, 0.4375, 0.125}, -- NodeBox2
|
|
{-0.1875, -0.0625, -0.1875, 0.1875, 0.3125, 0.1875}, -- NodeBox3
|
|
},
|
|
}
|
|
})
|
|
|
|
minetest.register_node("ma_pops_furniture:ceiling_lamp", {
|
|
description = "Ceiling Lamp",
|
|
tiles = {
|
|
"default_stone.png",
|
|
"default_stone.png^mp_light_off.png",
|
|
"default_stone.png",
|
|
"default_stone.png",
|
|
"default_stone.png",
|
|
"default_stone.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
|
|
node.name = "ma_pops_furniture:ceiling_lamp_on"
|
|
minetest.set_node(pos, node)
|
|
end,
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.050, 0.5, -0.050, 0.050, -0.2, 0.050},
|
|
{-0.1, -0.0, -0.1, 0.1, -0.2, 0.1},
|
|
{-0.2, -0.1, -0.2, 0.2, -0.2, 0.2},
|
|
{-0.3, -0.2, -0.3, 0.3, -0.5, 0.3},
|
|
},
|
|
}
|
|
})
|
|
|
|
minetest.register_node("ma_pops_furniture:ceiling_lamp_on", {
|
|
description = "Ceiling Lamp On",
|
|
tiles = {
|
|
"default_stone.png",
|
|
"default_stone.png^mp_light_on.png",
|
|
"default_stone.png",
|
|
"default_stone.png",
|
|
"default_stone.png",
|
|
"default_stone.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
light_source = 14,
|
|
drop = 'ma_pops_furniture:ceiling_lamp',
|
|
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
|
|
node.name = "ma_pops_furniture:ceiling_lamp"
|
|
minetest.set_node(pos, node)
|
|
end,
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, not_in_creative_inventory = 1},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.050, 0.5, -0.050, 0.050, -0.2, 0.050},
|
|
{-0.1, -0.0, -0.1, 0.1, -0.2, 0.1},
|
|
{-0.2, -0.1, -0.2, 0.2, -0.2, 0.2},
|
|
{-0.3, -0.2, -0.3, 0.3, -0.5, 0.3},
|
|
},
|
|
}
|
|
})
|
|
|
|
minetest.register_node("ma_pops_furniture:fan_on", {
|
|
description = "Fan (on)",
|
|
tiles = {
|
|
"default_coral_skeleton.png",
|
|
"default_coral_skeleton.png",
|
|
"default_coral_skeleton.png",
|
|
"default_coral_skeleton.png",
|
|
{
|
|
name = "mp_fan_on.png",
|
|
animation = {
|
|
type = "vertical_frames",
|
|
aspect_w = 16,
|
|
aspect_h = 16,
|
|
length = 0.3
|
|
},
|
|
},
|
|
},
|
|
drawtype = "nodebox",
|
|
drop = 'ma_pops_furniture:fan_off',
|
|
paramtype2 = "facedir",
|
|
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
|
|
node.name = "ma_pops_furniture:fan_off"
|
|
minetest.set_node(pos, node)
|
|
end,
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, not_in_creative_inventory = 1},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, 0.5, 0.2, 0.5, -0.5, -0.2},
|
|
},
|
|
}
|
|
})
|
|
minetest.register_node("ma_pops_furniture:fan_off", {
|
|
description = "Fan",
|
|
tiles = {
|
|
"default_coral_skeleton.png",
|
|
"default_coral_skeleton.png",
|
|
"default_coral_skeleton.png",
|
|
"default_coral_skeleton.png",
|
|
"mp_fan_off.png",
|
|
"mp_fan_off.png",
|
|
},
|
|
drawtype = "nodebox",
|
|
drop = 'ma_pops_furniture:fan_off',
|
|
paramtype2 = "facedir",
|
|
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
|
|
node.name = "ma_pops_furniture:fan_on"
|
|
minetest.set_node(pos, node)
|
|
end,
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, 0.5, 0.2, 0.5, -0.5, -0.2},
|
|
},
|
|
}
|
|
})
|
|
|
|
minetest.register_node("ma_pops_furniture:ac", {
|
|
description = "AC",
|
|
tiles = {
|
|
"mp_ac_top.png",
|
|
"mp_ac_top.png",
|
|
"mp_ac_top.png",
|
|
"mp_ac_top.png",
|
|
"mp_ac_b.png",
|
|
"mp_ac_f.png",
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
drop = 'ma_pops_furniture:ac',
|
|
paramtype2 = "facedir",
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{0.5, 0.5, 0.5, -0.5, -0.5, -0.4},
|
|
{0.5, 0.2, -0.5, -0.5, -0.5, -0.4},
|
|
},
|
|
}
|
|
})
|
|
|
|
-- Define a table for lamp colors
|
|
local lamp_table = {
|
|
{'Black', 'black', 'black:225'},
|
|
{'Blue', 'blue', 'blue:225'},
|
|
{'Brown', 'brown', 'brown:225'},
|
|
{'Cyan', 'cyan', 'cyan:200'},
|
|
{'Dark Green', 'dark_green', 'green:225'},
|
|
{'Dark Grey', 'dark_grey', 'black:200'},
|
|
{'Green', 'green', '#32cd32:150'},
|
|
{'Grey', 'grey', 'black:100'},
|
|
{'Magenta', 'magenta', 'magenta:200'},
|
|
{'Orange', 'orange', 'orange:225'},
|
|
{'Pink', 'pink', 'pink:225'},
|
|
{'Red', 'red', 'red:225'},
|
|
{'Violet', 'violet', 'violet:225'},
|
|
{'White', 'white', 'white:1'},
|
|
{'Yellow', 'yellow', 'yellow:225'}
|
|
}
|
|
|
|
-- Create a lookup table for dye names and corresponding lamp colors
|
|
local dye_to_color = {
|
|
['dye:black'] = 'black',
|
|
['dye:white'] = 'white',
|
|
['dye:grey'] = 'grey',
|
|
['dye:dark_grey'] = 'dark_grey',
|
|
['dye:violet'] = 'violet',
|
|
['dye:blue'] = 'blue',
|
|
['dye:cyan'] = 'cyan',
|
|
['dye:dark_green'] = 'dark_green',
|
|
['dye:green'] = 'green',
|
|
['dye:yellow'] = 'yellow',
|
|
['dye:orange'] = 'orange',
|
|
['dye:red'] = 'red',
|
|
['dye:magenta'] = 'magenta',
|
|
['dye:pink'] = 'pink',
|
|
['dye:brown'] = 'brown'
|
|
}
|
|
|
|
-- Register lamps for each color
|
|
for _, lamp in ipairs(lamp_table) do
|
|
local name = lamp[1]
|
|
local color = lamp[2]
|
|
local hex = lamp[3]
|
|
|
|
-- Register the "on" version of the lamp
|
|
minetest.register_node("ma_pops_furniture:lamp_"..color, {
|
|
description = name .. " Lamp",
|
|
tiles = {
|
|
"mp_lt.png",
|
|
"mp_lb_middle.png^[colorize:" .. hex .. "^mp_lb.png",
|
|
"mp_ls.png^[colorize:" .. hex .. "^mp_ls_top.png",
|
|
"mp_ls.png^[colorize:" .. hex .. "^mp_ls_top.png",
|
|
"mp_ls.png^[colorize:" .. hex .. "^mp_ls_top.png",
|
|
"mp_ls.png^[colorize:" .. hex .. "^mp_ls_top.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
light_source = 14,
|
|
paramtype = "facedir",
|
|
drop = 'ma_pops_furniture:lamp_off_'..color,
|
|
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
|
node.name = "ma_pops_furniture:lamp_off_"..color
|
|
minetest.set_node(pos, node)
|
|
end,
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, not_in_creative_inventory = 1, furniture = 1},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.25, -0.4375, -0.25, 0.25, -0.0625, 0.25},
|
|
{-0.375, -0.0625, -0.375, 0.375, 0.5, 0.375},
|
|
{-0.1875, -0.4375, -0.1875, 0.1875, -0.5, 0.1875}
|
|
}
|
|
},
|
|
on_punch = function(pos, node, clicker)
|
|
local item = clicker:get_wielded_item():get_name()
|
|
local new_color = dye_to_color[item]
|
|
if new_color then
|
|
node.name = "ma_pops_furniture:lamp_" .. new_color
|
|
minetest.set_node(pos, node)
|
|
end
|
|
end
|
|
})
|
|
|
|
-- Register the "off" version of the lamp
|
|
minetest.register_node("ma_pops_furniture:lamp_off_"..color, {
|
|
description = name .. " Lamp",
|
|
tiles = {
|
|
"mp_lt.png",
|
|
"mp_lb_middle.png^[colorize:" .. hex .. "^mp_lb.png",
|
|
"mp_ls.png^[colorize:" .. hex .. "^mp_ls_top.png",
|
|
"mp_ls.png^[colorize:" .. hex .. "^mp_ls_top.png",
|
|
"mp_ls.png^[colorize:" .. hex .. "^mp_ls_top.png",
|
|
"mp_ls.png^[colorize:" .. hex .. "^mp_ls_top.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "facedir",
|
|
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
|
node.name = "ma_pops_furniture:lamp_"..color
|
|
minetest.set_node(pos, node)
|
|
end,
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, furniture = 1},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.25, -0.4375, -0.25, 0.25, -0.0625, 0.25},
|
|
{-0.375, -0.0625, -0.375, 0.375, 0.5, 0.375},
|
|
{-0.1875, -0.4375, -0.1875, 0.1875, -0.5, 0.1875}
|
|
}
|
|
},
|
|
on_punch = function(pos, node, clicker)
|
|
local item = clicker:get_wielded_item():get_name()
|
|
local new_color = dye_to_color[item]
|
|
if new_color then
|
|
node.name = "ma_pops_furniture:lamp_off_" .. new_color
|
|
minetest.set_node(pos, node)
|
|
end
|
|
end
|
|
})
|
|
end
|
|
|
|
|
|
local curtain_table = {
|
|
{'Black', 'black', 'black:225'},
|
|
{'Blue', 'blue', 'blue:225'},
|
|
{'Brown', 'brown', 'brown:225'},
|
|
{'Cyan', 'cyan', 'cyan:200'},
|
|
{'Dark Green', 'dark_green', 'green:225'},
|
|
{'Dark Grey', 'dark_grey', 'black:200'},
|
|
{'Green', 'green', '#32cd32:150'},
|
|
{'Grey', 'grey', 'black:100'},
|
|
{'Magenta', 'magenta', 'magenta:200'},
|
|
{'Orange', 'orange', 'orange:225'},
|
|
{'Pink', 'pink', 'pink:225'},
|
|
{'Red', 'red', 'red:225'},
|
|
{'Violet', 'violet', 'violet:225'},
|
|
{'White', 'white', 'white:1'},
|
|
{'Yellow', 'yellow', 'yellow:225'},
|
|
}
|
|
|
|
for i in ipairs(curtain_table) do
|
|
local name = curtain_table[i][1]
|
|
local color = curtain_table[i][2]
|
|
local hex = curtain_table[i][3]
|
|
|
|
-- Small Curtains
|
|
minetest.register_node("ma_pops_furniture:curtains_"..color, {
|
|
description = name.." Curtains",
|
|
tiles = {"default_acacia_tree.png","wool_"..color..".png^mp_curtainb.png","wool_"..color..".png^mp_curtains.png","wool_"..color..".png^mp_curtains.png","wool_"..color..".png^mp_curtains.png","wool_"..color..".png^mp_curtains.png"},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, furniture = 1},
|
|
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
|
node.name = "ma_pops_furniture:curtains_closed_"..color
|
|
minetest.set_node(pos, node)
|
|
end,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, -0.3, 0.5, -0.2, 0.5, 0.4},
|
|
{-0.5, -0.5, 0.5, -0.3, -0.3, 0.4},
|
|
{-0.5, 0.5, 0.5, 0.5, 0.2, 0.4},
|
|
{-0.5, 0.5, 0.5, 0.5, 0.440, 0.350},
|
|
{0.5, -0.3, 0.5, 0.2, 0.5, 0.4},
|
|
{0.5, -0.5, 0.5, 0.3, -0.3, 0.4},
|
|
},
|
|
},
|
|
on_punch = function(pos, node, clicker)
|
|
local item = clicker:get_wielded_item():get_name()
|
|
local color_map = {
|
|
["dye:black"] = "black",
|
|
["dye:white"] = "white",
|
|
["dye:grey"] = "grey",
|
|
["dye:dark_grey"] = "dark_grey",
|
|
["dye:violet"] = "violet",
|
|
["dye:blue"] = "blue",
|
|
["dye:cyan"] = "cyan",
|
|
["dye:dark_green"] = "dark_green",
|
|
["dye:green"] = "green",
|
|
["dye:yellow"] = "yellow",
|
|
["dye:orange"] = "orange",
|
|
["dye:red"] = "red",
|
|
["dye:magenta"] = "magenta",
|
|
["dye:pink"] = "pink",
|
|
["dye:brown"] = "brown",
|
|
}
|
|
local new_color = color_map[item]
|
|
if new_color then
|
|
node.name = "ma_pops_furniture:curtains_"..new_color
|
|
minetest.set_node(pos, node)
|
|
end
|
|
end,
|
|
})
|
|
|
|
-- Closed Small Curtains
|
|
minetest.register_node("ma_pops_furniture:curtains_closed_"..color, {
|
|
description = name.." Closed Curtains",
|
|
tiles = {"default_acacia_tree.png","wool_"..color..".png^mp_curtainb.png","wool_"..color..".png^mp_curtains.png","wool_"..color..".png^mp_curtains.png","wool_"..color..".png^mp_curtains.png","wool_"..color..".png^mp_curtains.png"},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, not_in_creative_inventory = 1, furniture = 1},
|
|
drop = "ma_pops_furniture:curtains_"..color,
|
|
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
|
node.name = "ma_pops_furniture:curtains_"..color
|
|
minetest.set_node(pos, node)
|
|
end,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, -0.5, 0.5, 0.5, 0.5, 0.4},
|
|
{-0.5, 0.5, 0.5, 0.5, 0.440, 0.350},
|
|
},
|
|
},
|
|
on_punch = function(pos, node, clicker)
|
|
local item = clicker:get_wielded_item():get_name()
|
|
local color_map = {
|
|
["dye:black"] = "black",
|
|
["dye:white"] = "white",
|
|
["dye:grey"] = "grey",
|
|
["dye:dark_grey"] = "dark_grey",
|
|
["dye:violet"] = "violet",
|
|
["dye:blue"] = "blue",
|
|
["dye:cyan"] = "cyan",
|
|
["dye:dark_green"] = "dark_green",
|
|
["dye:green"] = "green",
|
|
["dye:yellow"] = "yellow",
|
|
["dye:orange"] = "orange",
|
|
["dye:red"] = "red",
|
|
["dye:magenta"] = "magenta",
|
|
["dye:pink"] = "pink",
|
|
["dye:brown"] = "brown",
|
|
}
|
|
local new_color = color_map[item]
|
|
if new_color then
|
|
node.name = "ma_pops_furniture:curtains_closed_"..new_color
|
|
minetest.set_node(pos, node)
|
|
end
|
|
end,
|
|
})
|
|
|
|
-- Tall Curtains
|
|
minetest.register_node("ma_pops_furniture:curtains_2_tall_"..color, {
|
|
description = name.." Tall Curtains",
|
|
tiles = {"wool_"..color..".png"},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, furniture = 1},
|
|
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
|
node.name = "ma_pops_furniture:curtains_2_tall_closed_"..color
|
|
minetest.set_node(pos, node)
|
|
end,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, -0.3, 0.5, -0.2, 0.5, 0.4},
|
|
{-0.5, -0.5, 0.5, -0.3, -0.3, 0.4},
|
|
{-0.5, 0.5, 0.5, 0.5, 0.2, 0.4},
|
|
{0.5, -0.3, 0.5, 0.2, 0.5, 0.4},
|
|
{0.5, -0.5, 0.5, 0.3, -0.3, 0.4},
|
|
{-0.5, -0.5, 0.5, -0.3, -1.2, 0.4},
|
|
{0.5, -0.5, 0.5, 0.3, -1.2, 0.4},
|
|
},
|
|
},
|
|
on_punch = function(pos, node, clicker)
|
|
local item = clicker:get_wielded_item():get_name()
|
|
local color_map = {
|
|
["dye:black"] = "black",
|
|
["dye:white"] = "white",
|
|
["dye:grey"] = "grey",
|
|
["dye:dark_grey"] = "dark_grey",
|
|
["dye:violet"] = "violet",
|
|
["dye:blue"] = "blue",
|
|
["dye:cyan"] = "cyan",
|
|
["dye:dark_green"] = "dark_green",
|
|
["dye:green"] = "green",
|
|
["dye:yellow"] = "yellow",
|
|
["dye:orange"] = "orange",
|
|
["dye:red"] = "red",
|
|
["dye:magenta"] = "magenta",
|
|
["dye:pink"] = "pink",
|
|
["dye:brown"] = "brown",
|
|
}
|
|
local new_color = color_map[item]
|
|
if new_color then
|
|
node.name = "ma_pops_furniture:curtains_2_tall_"..new_color
|
|
minetest.set_node(pos, node)
|
|
end
|
|
end,
|
|
})
|
|
|
|
-- Closed Tall Curtains
|
|
minetest.register_node("ma_pops_furniture:curtains_2_tall_closed_"..color, {
|
|
description = name.." Closed Tall Curtains",
|
|
tiles = {"wool_"..color..".png"},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, not_in_creative_inventory = 1, furniture = 1},
|
|
drop = "ma_pops_furniture:curtains_2_tall_"..color,
|
|
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
|
node.name = "ma_pops_furniture:curtains_2_tall_"..color
|
|
minetest.set_node(pos, node)
|
|
end,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, -0.5, 0.5, 0.5, 0.5, 0.4},
|
|
{-0.5, -1.2, 0.5, 0.5, -0.5, 0.4},
|
|
},
|
|
},
|
|
})
|
|
end
|
|
|
|
-- On placement check if there is a small curtain directly below
|
|
minetest.register_on_placenode(function(pos, new_node, placer, itemstack, pointed_thing)
|
|
if new_node.name:match("ma_pops_furniture:curtains_") then
|
|
local node_below = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z})
|
|
if node_below.name:match("ma_pops_furniture:curtains_") and node_below.name ~= new_node.name then
|
|
local color = new_node.name:match("_(%w+)$")
|
|
local tall_node_name = "ma_pops_furniture:curtains_2_tall_"..color
|
|
minetest.set_node(pos, {name = tall_node_name})
|
|
minetest.set_node({x=pos.x, y=pos.y-1, z=pos.z}, {name = "air"})
|
|
end
|
|
end
|
|
end)
|
|
|
|
|
|
minetest.register_node("ma_pops_furniture:computer", {
|
|
description = "Computer",
|
|
tiles = {
|
|
"mp_s.png^mp_top.png",
|
|
"mp_s.png",
|
|
"mp_s.png",
|
|
"mp_s.png",
|
|
"mp_s.png",
|
|
"mp_s.png^mp_f.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
groups = {snappy=2, oddly_breakable_by_hand=2, furniture=1, flammable=1},
|
|
sounds = moditems.WOOD_SOUNDS,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, -0.5, -0.1875, 0.5, -0.25, 0.5},
|
|
{-0.5, -0.5, -0.5, 0.1875, -0.375, -0.25},
|
|
{0.25, -0.5, -0.5, 0.4375, -0.375, -0.25},
|
|
{-0.125, -0.25, 0.0625, 0.125, -0.0625, 0.25},
|
|
{-0.3125, -0.125, -0.25, 0.3125, 0.5, 0.3125},
|
|
{-0.25, 0, 0.3125, 0.25, 0.375, 0.5},
|
|
}
|
|
}
|
|
})
|
|
|
|
-- Define the stool color table
|
|
local stool_table = {
|
|
{'Black', 'black', 'black:225'},
|
|
{'Blue', 'blue', 'blue:150'},
|
|
{'Brown', 'brown', 'brown:100'},
|
|
{'Cyan', 'cyan', 'cyan:150'},
|
|
{'Dark Green', 'dark_green', 'green:200'},
|
|
{'Green', 'green', '#32cd32:150'},
|
|
{'Magenta', 'magenta', 'magenta:200'},
|
|
{'Orange', 'orange', 'orange:150'},
|
|
{'Pink', 'pink', 'pink:150'},
|
|
{'Red', 'red', 'red:150'},
|
|
{'Violet', 'violet', 'violet:150'},
|
|
{'White', 'white', 'white:150'},
|
|
{'Yellow', 'yellow', 'yellow:150'}
|
|
}
|
|
|
|
-- Create a lookup table for dye names and corresponding stool colors
|
|
local dye_to_stool = {
|
|
['dye:black'] = 'black',
|
|
['dye:white'] = 'white',
|
|
['dye:grey'] = 'grey',
|
|
['dye:dark_grey'] = 'dark_grey',
|
|
['dye:violet'] = 'violet',
|
|
['dye:blue'] = 'blue',
|
|
['dye:cyan'] = 'cyan',
|
|
['dye:dark_green'] = 'dark_green',
|
|
['dye:green'] = 'green',
|
|
['dye:yellow'] = 'yellow',
|
|
['dye:orange'] = 'orange',
|
|
['dye:red'] = 'red',
|
|
['dye:magenta'] = 'magenta',
|
|
['dye:pink'] = 'pink',
|
|
['dye:brown'] = 'brown'
|
|
}
|
|
|
|
-- Register each stool color
|
|
for _, stool in ipairs(stool_table) do
|
|
local name = stool[1]
|
|
local color = stool[2]
|
|
local hex = stool[3]
|
|
|
|
minetest.register_node("ma_pops_furniture:stool_"..color, {
|
|
description = name.." Stool",
|
|
tiles = {
|
|
"mp_stool_top1.png^mp_stool_top.png^[colorize:"..hex.."^mp_stool_top1.png",
|
|
"default_coral_skeleton.png",
|
|
"default_coral_skeleton.png",
|
|
"default_coral_skeleton.png",
|
|
"default_coral_skeleton.png",
|
|
"default_coral_skeleton.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, furniture = 1},
|
|
can_dig = ma_pops_furniture.sit_dig,
|
|
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
|
pos.y = pos.y + 0 -- Sitting position
|
|
ma_pops_furniture.sit(pos, node, clicker, pointed_thing)
|
|
return itemstack
|
|
end,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.375, -0.5, -0.375, -0.1875, 0.375, -0.1875},
|
|
{-0.375, -0.5, 0.1875, -0.1875, 0.375, 0.375},
|
|
{0.1875, -0.5, 0.1875, 0.375, 0.375, 0.375},
|
|
{0.1875, -0.5, -0.375, 0.375, 0.375, -0.1875},
|
|
{-0.375, 0.1875, -0.375, 0.375, 0.375, 0.375},
|
|
{0.25, -0.375, -0.1875, 0.3125, -0.3125, 0.1875},
|
|
{-0.1875, -0.375, -0.3125, 0.1875, -0.3125, -0.25},
|
|
{-0.1875, -0.375, 0.25, 0.1875, -0.3125, 0.3125},
|
|
{-0.3125, -0.375, -0.1875, -0.25, -0.3125, 0.1875},
|
|
{-0.3125, 0.375, -0.3125, 0.3125, 0.4375, 0.3125}
|
|
}
|
|
},
|
|
on_punch = function(pos, node, clicker)
|
|
local item = clicker:get_wielded_item():get_name()
|
|
local new_color = dye_to_stool[item]
|
|
if new_color then
|
|
node.name = "ma_pops_furniture:stool_"..new_color
|
|
minetest.set_node(pos, node)
|
|
else
|
|
ma_pops_furniture.sit(pos, node, clicker)
|
|
end
|
|
end
|
|
})
|
|
end
|
|
|
|
|
|
minetest.register_node("ma_pops_furniture:stairs", {
|
|
description= "Stairs",
|
|
tiles = {
|
|
"default_coral_skeleton.png",
|
|
"default_coral_skeleton.png",
|
|
"default_coral_skeleton.png^mp_stairs_side.png",
|
|
"default_coral_skeleton.png^mp_stairs_side.png^[transformFX",
|
|
"default_coral_skeleton.png^mp_stairs_back.png",
|
|
"default_coral_skeleton.png^mp_stairs_front.png"
|
|
},
|
|
drawtype = "mesh",
|
|
mesh= "stairs.obj",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
groups = {cracky = 3, oddly_breakable_by_hand = 3},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, 0.375, 0, 0.5, 0.5, 0.5}, -- NodeBox18
|
|
{-0.5, -0.125, -0.5, 0.5, 0, 0}, -- NodeBox19
|
|
{-0.0625, -0.375, -0.3125, 0.0625, -0.125, -0.1875}, -- NodeBox20
|
|
{-0.0625, -0.25, 0.1875, 0.0625, 0.375, 0.3125}, -- NodeBox21
|
|
{-0.0625, -0.375, -0.1875, 0.0625, -0.25, 0.3125}, -- NodeBox23
|
|
{-0.0625, -0.25, 0.0625, 0.0625, -0.125, 0.1875}, -- NodeBox24
|
|
}
|
|
}
|
|
})
|
|
|
|
-- Register the base lamp
|
|
minetest.register_node("ma_pops_furniture:lamp_1", {
|
|
description = "Floor Lamp",
|
|
tiles = {
|
|
"default_stone.png",
|
|
"default_stone.png",
|
|
"default_stone.png",
|
|
"default_stone.png",
|
|
"default_stone.png",
|
|
"default_stone.png"
|
|
},
|
|
groups = {cracky=2, oddly_breakable_by_hand=3},
|
|
on_construct = function(pos)
|
|
if minetest.get_node(vector.add(pos, vector.new(0, 1, 0))).name == "air" then
|
|
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z}, {name = "ma_pops_furniture:lamp_2_off"})
|
|
end
|
|
|
|
if minetest.get_node(vector.add(pos, vector.new(0, 1, 0))).name ~= "air" and
|
|
minetest.get_node(vector.add(pos, vector.new(0, 1, 0))).name ~= "ma_pops_furniture:lamp_2_off" then
|
|
minetest.set_node({x = pos.x, y = pos.y, z = pos.z},{name = "air"})
|
|
end
|
|
end,
|
|
on_dig = function(pos, node, player)
|
|
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z}, {name = "air"})
|
|
minetest.set_node({x = pos.x, y = pos.y, z = pos.z}, {name = "air"})
|
|
end,
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.25, -0.5, -0.25, 0.25, -0.375, 0.25}, -- NodeBox16
|
|
{-0.0625, -0.375, -0.0625, 0.0625, 0.5, 0.0625} -- NodeBox17
|
|
}
|
|
}
|
|
})
|
|
|
|
-- Register the "on" version of the lamp
|
|
minetest.register_node("ma_pops_furniture:lamp_2_on", {
|
|
description = "Floor Lamp 2",
|
|
tiles = {
|
|
"mp_lt.png",
|
|
"mp_lt.png",
|
|
"default_stone.png^mp_ls_top.png",
|
|
"default_stone.png^mp_ls_top.png",
|
|
"default_stone.png^mp_ls_top.png",
|
|
"default_stone.png^mp_ls_top.png"
|
|
},
|
|
groups = {cracky=2, oddly_breakable_by_hand=3, not_in_creative_inventory = 1},
|
|
drop = "test:node_1",
|
|
on_dig = function(pos, node, player)
|
|
minetest.set_node({x = pos.x, y = pos.y - 1, z = pos.z}, {name = "air"})
|
|
minetest.set_node({x = pos.x, y = pos.y, z = pos.z}, {name = "air"})
|
|
end,
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
light_source = 14,
|
|
drop = 'ma_pops_furniture:lamp_2_off',
|
|
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
|
|
node.name = "ma_pops_furniture:lamp_2_off"
|
|
minetest.set_node(pos, node)
|
|
end,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.375, -0.0625, -0.375, 0.375, 0.5, 0.375}, -- NodeBox16
|
|
{-0.0625, -0.5, -0.0625, 0.0625, 0.1875, 0.0625} -- NodeBox17
|
|
}
|
|
},
|
|
})
|
|
|
|
-- Register the "off" version of the lamp
|
|
minetest.register_node("ma_pops_furniture:lamp_2_off", {
|
|
description = "Floor Lamp 2",
|
|
tiles = {
|
|
"mp_lt.png",
|
|
"mp_lt.png",
|
|
"default_stone.png^mp_ls_top.png",
|
|
"default_stone.png^mp_ls_top.png",
|
|
"default_stone.png^mp_ls_top.png",
|
|
"default_stone.png^mp_ls_top.png"
|
|
},
|
|
groups = {cracky=2, oddly_breakable_by_hand=3, not_in_creative_inventory = 1},
|
|
drop = "test:node_1",
|
|
on_dig = function(pos, node, player)
|
|
minetest.set_node({x = pos.x, y = pos.y - 1, z = pos.z}, {name = "air"})
|
|
minetest.set_node({x = pos.x, y = pos.y, z = pos.z}, {name = "air"})
|
|
end,
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
|
|
node.name = "ma_pops_furniture:lamp_2_on"
|
|
minetest.set_node(pos, node)
|
|
end,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.375, -0.0625, -0.375, 0.375, 0.5, 0.375}, -- NodeBox16
|
|
{-0.0625, -0.5, -0.0625, 0.0625, 0.1875, 0.0625} -- NodeBox17
|
|
}
|
|
},
|
|
on_punch = function(pos, node, clicker)
|
|
change_lamp_color(pos, node, clicker)
|
|
end
|
|
})
|