mirror of
https://github.com/minetest/minetest.git
synced 2024-11-27 18:13:46 +01:00
Fix chest not working after walked away and came back
This commit is contained in:
parent
5f39885975
commit
b0481b9db1
18
src/map.cpp
18
src/map.cpp
@ -35,6 +35,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
|
#define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
SQLite format specification:
|
SQLite format specification:
|
||||||
- Initially only replaces sectors/ and sectors2/
|
- Initially only replaces sectors/ and sectors2/
|
||||||
@ -1819,9 +1821,14 @@ NodeMetadata* Map::getNodeMetadata(v3s16 p)
|
|||||||
v3s16 blockpos = getNodeBlockPos(p);
|
v3s16 blockpos = getNodeBlockPos(p);
|
||||||
v3s16 p_rel = p - blockpos*MAP_BLOCKSIZE;
|
v3s16 p_rel = p - blockpos*MAP_BLOCKSIZE;
|
||||||
MapBlock *block = getBlockNoCreateNoEx(blockpos);
|
MapBlock *block = getBlockNoCreateNoEx(blockpos);
|
||||||
if(block == NULL)
|
if(!block){
|
||||||
|
infostream<<"Map::getNodeMetadata(): Need to emerge "
|
||||||
|
<<PP(blockpos)<<std::endl;
|
||||||
|
block = emergeBlock(blockpos, false);
|
||||||
|
}
|
||||||
|
if(!block)
|
||||||
{
|
{
|
||||||
infostream<<"WARNING: Map::setNodeMetadata(): Block not found"
|
infostream<<"WARNING: Map::getNodeMetadata(): Block not found"
|
||||||
<<std::endl;
|
<<std::endl;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -1834,7 +1841,12 @@ void Map::setNodeMetadata(v3s16 p, NodeMetadata *meta)
|
|||||||
v3s16 blockpos = getNodeBlockPos(p);
|
v3s16 blockpos = getNodeBlockPos(p);
|
||||||
v3s16 p_rel = p - blockpos*MAP_BLOCKSIZE;
|
v3s16 p_rel = p - blockpos*MAP_BLOCKSIZE;
|
||||||
MapBlock *block = getBlockNoCreateNoEx(blockpos);
|
MapBlock *block = getBlockNoCreateNoEx(blockpos);
|
||||||
if(block == NULL)
|
if(!block){
|
||||||
|
infostream<<"Map::setNodeMetadata(): Need to emerge "
|
||||||
|
<<PP(blockpos)<<std::endl;
|
||||||
|
block = emergeBlock(blockpos, false);
|
||||||
|
}
|
||||||
|
if(!block)
|
||||||
{
|
{
|
||||||
infostream<<"WARNING: Map::setNodeMetadata(): Block not found"
|
infostream<<"WARNING: Map::setNodeMetadata(): Block not found"
|
||||||
<<std::endl;
|
<<std::endl;
|
||||||
|
@ -157,6 +157,10 @@ public:
|
|||||||
// Returns NULL if not found
|
// Returns NULL if not found
|
||||||
MapBlock * getBlockNoCreateNoEx(v3s16 p);
|
MapBlock * getBlockNoCreateNoEx(v3s16 p);
|
||||||
|
|
||||||
|
/* Server overrides */
|
||||||
|
virtual MapBlock * emergeBlock(v3s16 p, bool allow_generate=true)
|
||||||
|
{ return getBlockNoCreateNoEx(p); }
|
||||||
|
|
||||||
// Returns InvalidPositionException if not found
|
// Returns InvalidPositionException if not found
|
||||||
bool isNodeUnderground(v3s16 p);
|
bool isNodeUnderground(v3s16 p);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user