From f0e9065426e72c2a17b2a8ea4ed3027e425bbbbe Mon Sep 17 00:00:00 2001 From: placki Date: Sat, 29 Oct 2011 01:09:54 +0200 Subject: [PATCH] build on borders option --- minetest.conf.example | 3 ++- src/defaultsettings.cpp | 1 + src/server.cpp | 7 +++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/minetest.conf.example b/minetest.conf.example index 2cf4c6c..b706bc3 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -158,4 +158,5 @@ # 2 - teleport A works iff it points to clear area containing teleport B, and teleport B points back to teleport A # 3 or more - just like 2 but there can be 3 of more teleports in loop (warning - high value is bad for server performance) #crafted_teleports = 4 - +#are players allowed to build connecting to border/edge of hostile clan territory +#build_on_borders = false diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index ccacd37..3e1c98e 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -110,5 +110,6 @@ void set_default_settings(Settings *settings) settings->setDefault("full_block_send_enable_min_time_from_building", "2.0"); settings->setDefault("enable_experimental", "false"); settings->setDefault("crafted_teleports", "4"); + settings->setDefault("build_on_borders", "false"); } diff --git a/src/server.cpp b/src/server.cpp index 03b7161..dae146b 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -2470,8 +2470,11 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id) u16 item_i = readU16(&data[15]); //j,placki - if( ( action == 1 && !player->canModify(&m_env.clansManager,&m_env.getMap(),NULL,NULL,&p_over) ) - ||( action != 1 && !player->canModify(&m_env.clansManager,&m_env.getMap(),NULL,NULL,&p_under) ) ) + bool canModifyOver=player->canModify(&m_env.clansManager,&m_env.getMap(),NULL,NULL,&p_over); + bool canModifyUnder=player->canModify(&m_env.clansManager,&m_env.getMap(),NULL,NULL,&p_under); + bool canBoB=g_settings->getBool("build_on_borders"); + if((!canBoB && (!canModifyOver || !canModifyUnder)) + ||(canBoB && ((action == 1 && !canModifyOver) || (action != 1 && !canModifyUnder))) ) { derr_server<<"Player isn't owner of a block"<