forked from Mirrorlandia_minetest/portalgun
203 lines
7.2 KiB
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
|
|
}
|
|
}
|
|
}
|
|
)
|