1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Revert "Improve (re)spawn, add cache_block_before_spawn and max_spawn_height settings"

The commit didn't work because the blocks weren't loaded yet.

This reverts commit 22dbbf0a6f.

Conflicts:
	minetest.conf.example
This commit is contained in:
ShadowNinja 2014-01-06 21:17:19 -05:00
parent c46574f30f
commit 0fd5c61c00
5 changed files with 40 additions and 55 deletions

View file

@ -3185,56 +3185,48 @@ void ServerMap::prepareBlock(MapBlock *block) {
}
}
/**
* Get the ground level by searching for a non CONTENT_AIR node in a column from top to bottom
*/
s16 ServerMap::findGroundLevel(v2s16 p2d, bool cacheBlocks)
s16 ServerMap::findGroundLevel(v2s16 p2d)
{
s16 level;
// The reference height is the original mapgen height
s16 referenceHeight = m_emerge->getGroundLevelAtPoint(p2d);
s16 maxSearchHeight = 63 + referenceHeight;
s16 minSearchHeight = -63 + referenceHeight;
v3s16 probePosition(p2d.X, maxSearchHeight, p2d.Y);
v3s16 blockPosition = getNodeBlockPos(probePosition);
v3s16 prevBlockPosition = blockPosition;
// Cache the block to be inspected.
if(cacheBlocks) {
emergeBlock(blockPosition, true);
}
// Probes the nodes in the given column
for(; probePosition.Y > minSearchHeight; probePosition.Y--)
#if 0
/*
Uh, just do something random...
*/
// Find existing map from top to down
s16 max=63;
s16 min=-64;
v3s16 p(p2d.X, max, p2d.Y);
for(; p.Y>min; p.Y--)
{
if(cacheBlocks) {
// Calculate the block position of the given node
blockPosition = getNodeBlockPos(probePosition);
// If the node is in an different block, cache it
if(blockPosition != prevBlockPosition) {
emergeBlock(blockPosition, true);
prevBlockPosition = blockPosition;
}
}
MapNode node = getNodeNoEx(probePosition);
if (node.getContent() != CONTENT_IGNORE &&
node.getContent() != CONTENT_AIR) {
MapNode n = getNodeNoEx(p);
if(n.getContent() != CONTENT_IGNORE)
break;
}
}
if(p.Y == min)
goto plan_b;
// If this node is not air, go to plan b
if(getNodeNoEx(p).getContent() != CONTENT_AIR)
goto plan_b;
// Search existing walkable and return it
for(; p.Y>min; p.Y--)
{
MapNode n = getNodeNoEx(p);
if(content_walkable(n.d) && n.getContent() != CONTENT_IGNORE)
return p.Y;
}
// Could not determine the ground. Use map generator noise functions.
if(probePosition.Y == minSearchHeight) {
level = referenceHeight;
} else {
level = probePosition.Y;
}
// Move to plan b
plan_b:
#endif
/*
Determine from map generator noise functions
*/
s16 level = m_emerge->getGroundLevelAtPoint(p2d);
return level;
//double level = base_rock_level_2d(m_seed, p2d) + AVERAGE_MUD_AMOUNT;
//return (s16)level;
}
bool ServerMap::loadFromFolders() {