Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Ensure that Map::findNodesWithMetadata() reports nodes strictly withi…
…n the node-granular area
- Loading branch information
Showing
with
9 additions
and
2 deletions.
-
+9
−2
src/map.cpp
|
@@ -1898,6 +1898,8 @@ std::vector<v3s16> Map::findNodesWithMetadata(v3s16 p1, v3s16 p2) |
|
|
v3s16 bpmin = getNodeBlockPos(p1); |
|
|
v3s16 bpmax = getNodeBlockPos(p2); |
|
|
|
|
|
VoxelArea area(p1, p2); |
|
|
|
|
|
for (s16 z = bpmin.Z; z <= bpmax.Z; z++) |
|
|
for (s16 y = bpmin.Y; y <= bpmax.Y; y++) |
|
|
for (s16 x = bpmin.X; x <= bpmax.X; x++) { |
|
@@ -1917,8 +1919,13 @@ std::vector<v3s16> Map::findNodesWithMetadata(v3s16 p1, v3s16 p2) |
|
|
|
|
|
v3s16 p_base = blockpos * MAP_BLOCKSIZE; |
|
|
std::vector<v3s16> keys = block->m_node_metadata.getAllKeys(); |
|
|
for (size_t i = 0; i != keys.size(); i++) |
|
|
positions_with_meta.push_back(keys[i] + p_base); |
|
|
for (size_t i = 0; i != keys.size(); i++) { |
|
|
v3s16 p(keys[i] + p_base); |
|
|
if (!area.contains(p)) |
|
|
continue; |
|
|
|
|
|
positions_with_meta.push_back(p); |
|
|
} |
|
|
} |
|
|
|
|
|
return positions_with_meta; |
|
|