aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsapier <Sapier at GMX dot net>2013-04-22 00:05:47 +0200
committerPilzAdam <pilzadam@minetest.net>2013-05-06 19:05:44 +0200
commit58f036ad1d5f1928d3696730ece463ab1acb046e (patch)
tree429b0099653a08ca021a8391ccc90ed2b1ed9716
parent098692ef26d115a05c0a1e5916588c8523789556 (diff)
downloadminetest-58f036ad1d5f1928d3696730ece463ab1acb046e.tar.gz
minetest-58f036ad1d5f1928d3696730ece463ab1acb046e.tar.bz2
minetest-58f036ad1d5f1928d3696730ece463ab1acb046e.zip
fix static data not beeing stored correctly on deactivation
-rw-r--r--src/environment.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/environment.cpp b/src/environment.cpp
index 438c9ef4f..e06b032f2 100644
--- a/src/environment.cpp
+++ b/src/environment.cpp
@@ -1084,8 +1084,8 @@ void ServerEnvironment::step(float dtime)
{
v3s16 p = *i;
- /*infostream<<"Server: Block ("<<p.X<<","<<p.Y<<","<<p.Z
- <<") became inactive"<<std::endl;*/
+ /* infostream<<"Server: Block " << PP(p)
+ << " became inactive"<<std::endl; */
MapBlock *block = m_map->getBlockNoCreateNoEx(p);
if(block==NULL)
@@ -1104,9 +1104,6 @@ void ServerEnvironment::step(float dtime)
i != blocks_added.end(); ++i)
{
v3s16 p = *i;
-
- /*infostream<<"Server: Block ("<<p.X<<","<<p.Y<<","<<p.Z
- <<") became active"<<std::endl;*/
MapBlock *block = m_map->getBlockNoCreateNoEx(p);
if(block==NULL){
@@ -1117,6 +1114,8 @@ void ServerEnvironment::step(float dtime)
}
activateBlock(block);
+ /* infostream<<"Server: Block " << PP(p)
+ << " became active"<<std::endl; */
}
}
@@ -1850,17 +1849,17 @@ void ServerEnvironment::deactivateFarObjects(bool force_delete)
<<" Forcing delete."<<std::endl;
force_delete = true;
} else {
- u16 new_id = pending_delete ? id : 0;
// If static counterpart already exists, remove it first.
// This shouldn't happen, but happens rarely for some
// unknown reason. Unsuccessful attempts have been made to
// find said reason.
- if(new_id && block->m_static_objects.m_active.find(new_id) != block->m_static_objects.m_active.end()){
+ if(id && block->m_static_objects.m_active.find(id) != block->m_static_objects.m_active.end()){
infostream<<"ServerEnv: WARNING: Performing hack #83274"
<<std::endl;
- block->m_static_objects.remove(new_id);
+ block->m_static_objects.remove(id);
}
- block->m_static_objects.insert(new_id, s_obj);
+ //store static data
+ block->m_static_objects.insert(0, s_obj);
// Only mark block as modified if data changed considerably
if(shall_be_written)