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:
parent
c46574f30f
commit
0fd5c61c00
5 changed files with 40 additions and 55 deletions
78
src/map.cpp
78
src/map.cpp
|
@ -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() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue