portalgun/scripts/signs.lua

203 lines
7.2 KiB
Lua

stone_sounds = {}
stone_sounds.footstep = {name = "stone_walk", gain = 1.0}
stone_sounds.dug = {name = "stone_break", gain = 1.0}
stone_sounds.place = {name = "block_place", gain = 1.0}
glass_sounds = {}
glass_sounds.footstep = {name = "glass_walk", gain = 1.0}
glass_sounds.dug = {name = "glass_break", gain = 1.0}
glass_sounds.place = {name = "block_place", gain = 1.0}
wood_sounds = {}
wood_sounds.footstep = {name = "wood_walk", gain = 1.0}
wood_sounds.dug = {name = "wood_break", gain = 1.0}
wood_sounds.place = {name = "block_place", gain = 1.0}
local snuma = 1
for ii = 0, 9, 1 do
if ii == 1 then
snuma = 0
end
minetest.register_node(
"portalgun:sign_numa" .. ii,
{
description = "Sign number (" .. ii .. ")",
tiles = {"portalgun_snum" .. ii .. ".png"},
drop = "portalgun:sign_numa1",
drawtype = "nodebox",
groups = {mesecon = 2, portalnuma = 1, dig_immediate = 3, not_in_creative_inventory = snuma},
sounds = wood_sounds,
is_ground_content = false,
paramtype2 = "facedir",
paramtype = "light",
light_source = 3,
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, 0.4375, 0, 0.5, 0.5}
}
},
after_place_node = function(pos, placer, itemstack)
local param2 = minetest.get_node(pos).param2
local pos2 = portalgun_param2(pos, param2)
if minetest.get_node(pos2) and minetest.get_node(pos2).name == "air" then
minetest.set_node(pos2, {name = "portalgun:sign_numb1", param2 = param2})
minetest.swap_node(pos, {name = "portalgun:sign_numa0", param2 = minetest.get_node(pos).param2})
end
end,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
if not minetest.is_protected(pos, clicker:get_player_name()) then
local iin = ii + 1
if iin == 10 then
iin = 0
end
minetest.swap_node(
pos,
{name = "portalgun:sign_numa" .. iin, param2 = minetest.get_node(pos).param2}
)
end
end,
on_punch = function(pos, node, player, pointed_thing)
local param2 = minetest.get_node(pos).param2
local pos2 = portalgun_param2(pos, param2)
local node = minetest.get_node(pos2)
if node and minetest.get_node_group(node.name, "portalnumb") > 0 then
minetest.set_node(pos2, {name = "air"})
end
end
}
)
if snuma == 0 then
snuma = 1
end
minetest.register_node(
"portalgun:sign_numb" .. ii,
{
description = "Sign number",
tiles = {"portalgun_snum" .. ii .. ".png"},
drop = "portalgun:sign_numa1",
drawtype = "nodebox",
groups = {mesecon = 2, portalnumb = 1, dig_immediate = 3, not_in_creative_inventory = 1},
sounds = wood_sounds,
is_ground_content = false,
paramtype2 = "facedir",
paramtype = "light",
light_source = 3,
node_box = {
type = "fixed",
fixed = {
{-1, -0.5, 0.4375, -0.5, 0.5, 0.5}
}
},
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
if not minetest.is_protected(pos, clicker:get_player_name()) then
local iin = ii + 1
if iin == 10 then
iin = 0
end
minetest.swap_node(
pos,
{name = "portalgun:sign_numb" .. iin, param2 = minetest.get_node(pos).param2}
)
end
end,
on_punch = function(pos, node, player, pointed_thing)
local param2 = minetest.get_node(pos).param2
local pos2 = portalgun_param2(pos, param2, true)
local node = minetest.get_node(pos2)
if node and minetest.get_node_group(node.name, "portalnuma") > 0 then
minetest.set_node(pos2, {name = "air"})
end
end
}
)
end
minetest.register_node(
"portalgun:sign1",
{
description = "Portal sign blue",
tiles = {"portalgun_testblock.png^portalgun_sign1.png"},
inventory_image = "portalgun_testblock.png^portalgun_sign1.png",
drawtype = "nodebox",
groups = {snappy = 3, not_in_creative_inventory = 0},
sounds = wood_sounds,
is_ground_content = false,
paramtype2 = "facedir",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0.45, 0.5, 0.5, 0.5}
}
}
)
minetest.register_node(
"portalgun:sign2",
{
description = "Portal sign orange",
tiles = {"portalgun_testblock.png^portalgun_sign2.png"},
inventory_image = "portalgun_testblock.png^portalgun_sign2.png",
drawtype = "nodebox",
groups = {snappy = 3, not_in_creative_inventory = 0},
sounds = wood_sounds,
is_ground_content = false,
paramtype2 = "facedir",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0.45, 0.5, 0.5, 0.5}
}
}
)
minetest.register_node(
"portalgun:sign_v",
{
description = "Sign V",
tiles = {"portalgun_v.png"},
inventory_image = "portalgun_v.png",
drop = "portalgun:sign_x",
drawtype = "nodebox",
groups = {mesecon = 2, snappy = 3, not_in_creative_inventory = 1},
sounds = wood_sounds,
is_ground_content = false,
paramtype2 = "facedir",
paramtype = "light",
light_source = 5,
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0.45, 0.5, 0.5, 0.5}
},
mesecons = {
effector = {
action_off = function(pos, node)
minetest.swap_node(pos, {name = "portalgun:sign_x", param2 = minetest.get_node(pos).param2})
end
}
}
}
)
minetest.register_node(
"portalgun:sign_x",
{
description = "Sign X",
tiles = {"portalgun_x.png"},
inventory_image = "portalgun_x.png",
drawtype = "nodebox",
groups = {mesecon = 2, snappy = 3, not_in_creative_inventory = 0},
sounds = wood_sounds,
is_ground_content = false,
paramtype2 = "facedir",
paramtype = "light",
light_source = 3,
node_box = {
type = "fixed",
fixed = {-0.5, -0.5, 0.45, 0.5, 0.5, 0.5}
},
mesecons = {
effector = {
action_on = function(pos, node)
minetest.swap_node(pos, {name = "portalgun:sign_v", param2 = minetest.get_node(pos).param2})
end
}
}
}
)