master
BuckarooBanzay 2019-10-03 08:10:44 +02:00
parent e343b23b0f
commit 624c6919b0
4 changed files with 61 additions and 4 deletions

View File

@ -1,6 +1,7 @@
globals = {
"minetest"
"minetest",
"travelnet"
}
read_globals = {
@ -15,5 +16,4 @@ read_globals = {
-- deps
"default",
"stairsplus"
}

View File

@ -7,4 +7,11 @@ minetest.override_item("default:ice", {
dofile(MP.."/disable_mobs_spawning.lua")
dofile(MP.."/moreblocks.lua")
if minetest.get_modpath("moreblocks") then
dofile(MP.."/moreblocks.lua")
end
if minetest.get_modpath("travelnet") then
dofile(MP.."/travelnet.lua")
end

View File

@ -1,2 +1,3 @@
name = damocles_custom
depends = moreblocks, default
depends =default
optional_depends = moreblocks,travelnet

49
travelnet.lua Normal file
View File

@ -0,0 +1,49 @@
-- who can attach to which network
travelnet.allow_attach = function(player_name, owner_name, network_name)
local is_moderator = minetest.check_player_privs(player_name, { ban=true })
if owner_name == "admin" and network_name == "moderator" and is_moderator then
-- public moderator network
return true
end
end
-- basic travelling stuff
travelnet.allow_travel = function( player_name, owner_name, network_name, _, station_name_target )
local has_override_priv = minetest.check_player_privs(player_name, { protection_bypass=true })
if has_override_priv then
-- admin can go everywhere...
return true
end
-- extracted target pos
local target_pos
-- sanity check
if travelnet.targets[owner_name] and travelnet.targets[owner_name][network_name] and
travelnet.targets[owner_name][network_name][station_name_target] then
target_pos = travelnet.targets[owner_name][network_name][station_name_target].pos
else
-- error!
return false
end
-- protected target with "(P) name"
if station_name_target and string.sub(station_name_target, 1, 3) == "(P)" then
if travelnet.targets[owner_name] and travelnet.targets[owner_name][network_name] and
travelnet.targets[owner_name][network_name][station_name_target] then
minetest.load_area(target_pos)
if minetest.is_protected(target_pos, player_name) then
minetest.chat_send_player(player_name, "This station is protected!")
return false
end
end
end
return true
end