mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 09:15:29 +01:00 
			
		
		
		
	Fix chest not working after walked away and came back
This commit is contained in:
		
							
								
								
									
										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 "log.h"
 | 
			
		||||
 | 
			
		||||
#define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
	SQLite format specification:
 | 
			
		||||
	- Initially only replaces sectors/ and sectors2/
 | 
			
		||||
@@ -1819,9 +1821,14 @@ NodeMetadata* Map::getNodeMetadata(v3s16 p)
 | 
			
		||||
	v3s16 blockpos = getNodeBlockPos(p);
 | 
			
		||||
	v3s16 p_rel = p - blockpos*MAP_BLOCKSIZE;
 | 
			
		||||
	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;
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
@@ -1834,7 +1841,12 @@ void Map::setNodeMetadata(v3s16 p, NodeMetadata *meta)
 | 
			
		||||
	v3s16 blockpos = getNodeBlockPos(p);
 | 
			
		||||
	v3s16 p_rel = p - blockpos*MAP_BLOCKSIZE;
 | 
			
		||||
	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"
 | 
			
		||||
				<<std::endl;
 | 
			
		||||
 
 | 
			
		||||
@@ -157,6 +157,10 @@ public:
 | 
			
		||||
	// Returns NULL if not found
 | 
			
		||||
	MapBlock * getBlockNoCreateNoEx(v3s16 p);
 | 
			
		||||
	
 | 
			
		||||
	/* Server overrides */
 | 
			
		||||
	virtual MapBlock * emergeBlock(v3s16 p, bool allow_generate=true)
 | 
			
		||||
	{ return getBlockNoCreateNoEx(p); }
 | 
			
		||||
 | 
			
		||||
	// Returns InvalidPositionException if not found
 | 
			
		||||
	bool isNodeUnderground(v3s16 p);
 | 
			
		||||
	
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user