287 lines
12 KiB
Lua
287 lines
12 KiB
Lua
function default.router_off_formspec(pos)
|
|
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
|
|
local formspec = "size[10,10]"..
|
|
"label[2,2;Powered Off...]"
|
|
return formspec
|
|
end
|
|
|
|
function default.router_formspec(pos)
|
|
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
|
|
local formspec = "size[10,10]"..
|
|
"label[1,0;Powered On...]"..
|
|
"label[2,0.5;Computers:]"..
|
|
"label[2,0.8;Active: "..#active_computers.."]"..
|
|
"label[2,1;Inactive: "..#inactive_computers.."]"..
|
|
"label[4,0.5;Routers:]"..
|
|
"label[4,0.8;Active: "..#active_routers.."]"..
|
|
"label[4,1;Inactive: "..#inactive_routers.."]"..
|
|
"label[6,0.5;ISP:]"..
|
|
"label[6,0.8;Active: "..#active_isp.."]"..
|
|
"label[6,1;Inactive: "..#inactive_isp.."]"..
|
|
"button_exit[4,7;2,1;exit;Exit]"
|
|
return formspec
|
|
end
|
|
|
|
function default.router_error_formspec(pos)
|
|
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
|
|
local formspec = "size[10,10]"..
|
|
"label[2,2;No Networks Available...]"
|
|
return formspec
|
|
end
|
|
|
|
function default.find_network(pos)
|
|
active_computers = minetest.find_nodes_in_area({x=pos.x-30, y=pos.y-30, z=pos.z-30}, {x=pos.x+30, y=pos.y+30, z=pos.z+30}, {"mycoins:home_computer_active","mycoins:game_computer_active","mycoins:alien_computer_active"})
|
|
inactive_computers = minetest.find_nodes_in_area({x=pos.x-30, y=pos.y-30, z=pos.z-30}, {x=pos.x+30, y=pos.y+30, z=pos.z+30}, {"mycoins:home_computer","mycoins:game_computer","mycoins:alien_computer"})
|
|
active_routers = minetest.find_nodes_in_area({x=pos.x-30, y=pos.y-30, z=pos.z-30}, {x=pos.x+30, y=pos.y+30, z=pos.z+30}, {"mycoins:router_on"})
|
|
inactive_routers = minetest.find_nodes_in_area({x=pos.x-30, y=pos.y-30, z=pos.z-30}, {x=pos.x+30, y=pos.y+30, z=pos.z+30}, {"mycoins:router"})
|
|
active_isp = minetest.find_nodes_in_area({x=pos.x-30, y=pos.y-30, z=pos.z-30}, {x=pos.x+30, y=pos.y+30, z=pos.z+30}, {"mycoins:isp_on"})
|
|
inactive_isp = minetest.find_nodes_in_area({x=pos.x-30, y=pos.y-30, z=pos.z-30}, {x=pos.x+30, y=pos.y+30, z=pos.z+30}, {"mycoins:isp"})
|
|
end
|
|
|
|
local function router_owner(meta, player)
|
|
if player:get_player_name() ~= meta:get_string("owner") then
|
|
return false
|
|
end
|
|
return true
|
|
end
|
|
|
|
--WIFI Router
|
|
minetest.register_node("mycoins:router_on", {
|
|
description = "WIFI Router",
|
|
tiles = {"mycoins_router_t.png","mycoins_router_bt.png","mycoins_router_l.png","mycoins_router_r.png","mycoins_router_b.png",
|
|
{name="mycoins_router_f_animated.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.0}},}, --"mycoins_router_f.png"},
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
walkable = false,
|
|
is_ground_content = true,
|
|
groups = {snappy=3, not_in_creative_inventory = 1},
|
|
sound = default.node_sound_wood_defaults(),
|
|
drop = "mycoins:router",
|
|
drawtype = "nodebox",
|
|
light_source = 4,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.25, -0.5, -0.0625, 0.25, -0.375, 0.3125},
|
|
{-0.1875, -0.4375, 0.3125, -0.125, -0.1875, 0.375},
|
|
{0.125, -0.4375, 0.3125, 0.1875, -0.1875, 0.375},
|
|
{-0.0625, -0.4375, 0.3125, 0.0625, -0.25, 0.375},
|
|
},
|
|
},
|
|
on_punch = function(pos)
|
|
local node = minetest.get_node(pos)
|
|
minetest.swap_node(pos, {name = 'mycoins:router', param2 = node.param2})
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_string("formspec", default.router_off_formspec(pos))
|
|
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
|
|
end,
|
|
on_timer = function(pos)
|
|
default.find_network(pos)
|
|
local isp = minetest.find_node_near(pos, 30, {"mycoins:isp_on"})
|
|
if isp == nil then
|
|
local timer = minetest.get_node_timer(pos)
|
|
local node = minetest.get_node(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
minetest.swap_node(pos, {name = 'mycoins:router_error', param2 = node.param2})
|
|
meta:set_string("formspec", default.router_error_formspec(pos))
|
|
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
|
|
timer:start(10)
|
|
else
|
|
local timer = minetest.get_node_timer(pos)
|
|
local node = minetest.get_node(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
|
|
meta:set_string("formspec", default.router_formspec(pos))
|
|
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
|
|
timer:start(10)
|
|
end
|
|
end,
|
|
after_place_node = function(pos, placer)
|
|
local meta = minetest.get_meta(pos)
|
|
local timer = minetest.get_node_timer(pos)
|
|
meta:set_string("formspec", default.router_formspec(pos))
|
|
meta:set_string("owner", placer:get_player_name() or "")
|
|
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
|
|
timer:start(10)
|
|
end,
|
|
on_construct = function(pos)
|
|
default.find_network(pos)
|
|
local isp = minetest.find_node_near(pos, 30, {"mycoins:isp_on"})
|
|
if isp == nil then
|
|
local node = minetest.get_node(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
minetest.swap_node(pos, {name = 'mycoins:router_error', param2 = node.param2})
|
|
meta:set_string("formspec", default.router_error_formspec(pos))
|
|
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
|
|
else
|
|
local node = minetest.get_node(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
|
|
meta:set_string("formspec", default.router_formspec(pos))
|
|
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
|
|
end
|
|
end,
|
|
can_dig = function(pos, player)
|
|
local meta = minetest.get_meta(pos);
|
|
return router_owner(meta, player)
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("mycoins:router", {
|
|
description = "WIFI Router",
|
|
tiles = {"mycoins_router_t.png","mycoins_router_bt.png","mycoins_router_l.png","mycoins_router_r.png","mycoins_router_b.png", "mycoins_router_f.png"},
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
walkable = false,
|
|
is_ground_content = true,
|
|
groups = {snappy=3},
|
|
sound = default.node_sound_wood_defaults(),
|
|
drop = "mycoins:router",
|
|
drawtype = "nodebox",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.25, -0.5, -0.0625, 0.25, -0.375, 0.3125},
|
|
{-0.1875, -0.4375, 0.3125, -0.125, -0.1875, 0.375},
|
|
{0.125, -0.4375, 0.3125, 0.1875, -0.1875, 0.375},
|
|
{-0.0625, -0.4375, 0.3125, 0.0625, -0.25, 0.375},
|
|
},
|
|
},
|
|
on_punch = function(pos)
|
|
local isp = minetest.find_node_near(pos, 30, {"mycoins:isp_on"})
|
|
default.find_network(pos)
|
|
if isp == nil then
|
|
local timer = minetest.get_node_timer(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
local node = minetest.get_node(pos)
|
|
minetest.swap_node(pos, {name = 'mycoins:router_error', param2 = node.param2})
|
|
meta:set_string("formspec", default.router_error_formspec(pos))
|
|
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
|
|
timer:start(10)
|
|
else
|
|
local timer = minetest.get_node_timer(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
local node = minetest.get_node(pos)
|
|
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
|
|
meta:set_string("formspec", default.router_formspec(pos))
|
|
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
|
|
timer:start(10)
|
|
end
|
|
end,
|
|
on_timer = function(pos)
|
|
default.find_network(pos)
|
|
local timer = minetest.get_node_timer(pos)
|
|
local node = minetest.get_node(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
minetest.swap_node(pos, {name = 'mycoins:router', param2 = node.param2})
|
|
meta:set_string("formspec", default.router_off_formspec(pos))
|
|
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
|
|
timer:stop()
|
|
end,
|
|
after_place_node = function(pos, placer)
|
|
local timer = minetest.get_node_timer(pos)
|
|
local node = minetest.get_node(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_string("formspec", default.router_formspec(pos))
|
|
meta:set_string("owner", placer:get_player_name() or "")
|
|
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
|
|
timer:start(10)
|
|
end,
|
|
on_construct = function(pos)
|
|
default.find_network(pos)
|
|
local isp = minetest.find_node_near(pos, 30, {"mycoins:isp_on"})
|
|
if isp == nil then
|
|
local node = minetest.get_node(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
minetest.swap_node(pos, {name = 'mycoins:router_error', param2 = node.param2})
|
|
meta:set_string("formspec", default.router_error_formspec(pos))
|
|
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
|
|
else
|
|
local node = minetest.get_node(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
|
|
meta:set_string("formspec", default.router_formspec(pos))
|
|
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
|
|
end
|
|
end,
|
|
can_dig = function(pos, player)
|
|
local meta = minetest.get_meta(pos);
|
|
return isp_owner(meta, player)
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("mycoins:router_error", {
|
|
description = "WIFI Router",
|
|
tiles = {"mycoins_router_t.png","mycoins_router_bt.png","mycoins_router_l.png","mycoins_router_r.png","mycoins_router_b.png",
|
|
{name="mycoins_router_f_error.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.0}},}, --"mycoins_router_f.png"},
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
walkable = false,
|
|
is_ground_content = true,
|
|
groups = {snappy=3, not_in_creative_inventory = 1},
|
|
sound = default.node_sound_wood_defaults(),
|
|
drop = "mycoins:router",
|
|
drawtype = "nodebox",
|
|
light_source = 4,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.25, -0.5, -0.0625, 0.25, -0.375, 0.3125},
|
|
{-0.1875, -0.4375, 0.3125, -0.125, -0.1875, 0.375},
|
|
{0.125, -0.4375, 0.3125, 0.1875, -0.1875, 0.375},
|
|
{-0.0625, -0.4375, 0.3125, 0.0625, -0.25, 0.375},
|
|
},
|
|
},
|
|
on_punch = function(pos)
|
|
local node = minetest.get_node(pos)
|
|
minetest.swap_node(pos, {name = 'mycoins:router', param2 = node.param2})
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_string("formspec", default.router_off_formspec(pos))
|
|
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
|
|
end,
|
|
on_timer = function(pos)
|
|
default.find_network(pos)
|
|
local isp = minetest.find_node_near(pos, 30, {"mycoins:isp_on"})
|
|
if isp == nil then
|
|
local timer = minetest.get_node_timer(pos)
|
|
local node = minetest.get_node(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
minetest.swap_node(pos, {name = 'mycoins:router_error', param2 = node.param2})
|
|
meta:set_string("formspec", default.router_error_formspec(pos))
|
|
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
|
|
timer:start(10)
|
|
else
|
|
local timer = minetest.get_node_timer(pos)
|
|
local node = minetest.get_node(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
|
|
meta:set_string("formspec", default.router_formspec(pos))
|
|
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
|
|
timer:start(10)
|
|
end
|
|
|
|
end,
|
|
on_construct = function(pos)
|
|
local isp = minetest.find_node_near(pos, 30, {"mycoins:isp_on"})
|
|
if isp == nil then
|
|
local node = minetest.get_node(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
minetest.swap_node(pos, {name = 'mycoins:router_error', param2 = node.param2})
|
|
meta:set_string("formspec", default.router_error_formspec(pos))
|
|
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
|
|
else
|
|
local node = minetest.get_node(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2})
|
|
meta:set_string("formspec", default.router_formspec(pos))
|
|
meta:set_string("infotext", "Router (owner "..meta:get_string("owner")..")")
|
|
end
|
|
end,
|
|
can_dig = function(pos, player)
|
|
local meta = minetest.get_meta(pos);
|
|
return isp_owner(meta, player)
|
|
end,
|
|
})
|
|
|
|
|