Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Fix for unloaded but active block problem
- Loading branch information
Showing
with
8 additions
and
0 deletions.
-
+8
−0
src/environment.cpp
|
@@ -796,6 +796,14 @@ class ABMHandler |
|
|
|
|
|
void ServerEnvironment::activateBlock(MapBlock *block, u32 additional_dtime) |
|
|
{ |
|
|
// Reset usage timer immediately, otherwise a block that becomes active |
|
|
// again at around the same time as it would normally be unloaded will |
|
|
// get unloaded incorrectly. (I think this still leaves a small possibility |
|
|
// of a race condition between this and server::AsyncRunStep, which only |
|
|
// some kind of synchronisation will fix, but it at least reduces the window |
|
|
// of opportunity for it to break from seconds to nanoseconds) |
|
|
block->resetUsageTimer(); |
|
|
|
|
|
// Get time difference |
|
|
u32 dtime_s = 0; |
|
|
u32 stamp = block->getTimestamp(); |
|
|