Added cWorld::DoWithChunk() function.
This will be used by the blocktracers to gain direct access to chunk data.
This commit is contained in:
parent
b688ba9be8
commit
4f26f11dc7
@ -713,6 +713,21 @@ void cChunkMap::UseBlockEntity(cPlayer * a_Player, int a_BlockX, int a_BlockY, i
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
bool cChunkMap::DoWithChunk(int a_ChunkX, int a_ChunkZ, cChunkCallback & a_Callback)
|
||||||
|
{
|
||||||
|
cCSLock Lock(m_CSLayers);
|
||||||
|
cChunkPtr Chunk = GetChunkNoLoad(a_ChunkX, ZERO_CHUNK_Y, a_ChunkZ);
|
||||||
|
if (Chunk == NULL)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return a_Callback.Item(Chunk);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cChunkMap::WakeUpSimulators(int a_BlockX, int a_BlockY, int a_BlockZ)
|
void cChunkMap::WakeUpSimulators(int a_BlockX, int a_BlockY, int a_BlockZ)
|
||||||
{
|
{
|
||||||
cCSLock Lock(m_CSLayers);
|
cCSLock Lock(m_CSLayers);
|
||||||
|
@ -35,6 +35,7 @@ typedef cItemCallback<cDispenserEntity> cDispenserCallback;
|
|||||||
typedef cItemCallback<cDropperEntity> cDropperCallback;
|
typedef cItemCallback<cDropperEntity> cDropperCallback;
|
||||||
typedef cItemCallback<cDropSpenserEntity> cDropSpenserCallback;
|
typedef cItemCallback<cDropSpenserEntity> cDropSpenserCallback;
|
||||||
typedef cItemCallback<cFurnaceEntity> cFurnaceCallback;
|
typedef cItemCallback<cFurnaceEntity> cFurnaceCallback;
|
||||||
|
typedef cItemCallback<cChunk> cChunkCallback;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -79,6 +80,9 @@ public:
|
|||||||
/// a_Player rclked block entity at the coords specified, handle it
|
/// a_Player rclked block entity at the coords specified, handle it
|
||||||
void UseBlockEntity(cPlayer * a_Player, int a_X, int a_Y, int a_Z);
|
void UseBlockEntity(cPlayer * a_Player, int a_X, int a_Y, int a_Z);
|
||||||
|
|
||||||
|
/// Calls the callback for the chunk specified, with ChunkMapCS locked; returns false if the chunk doesn't exist, otherwise returns the same value as the callback
|
||||||
|
bool DoWithChunk(int a_ChunkX, int a_ChunkZ, cChunkCallback & a_Callback);
|
||||||
|
|
||||||
/// Wakes up simulators for the specified block
|
/// Wakes up simulators for the specified block
|
||||||
void WakeUpSimulators(int a_BlockX, int a_BlockY, int a_BlockZ);
|
void WakeUpSimulators(int a_BlockX, int a_BlockY, int a_BlockZ);
|
||||||
|
|
||||||
|
@ -832,6 +832,15 @@ bool cWorld::GetSignLines(int a_BlockX, int a_BlockY, int a_BlockZ, AString & a_
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
bool cWorld::DoWithChunk(int a_ChunkX, int a_ChunkZ, cChunkCallback & a_Callback)
|
||||||
|
{
|
||||||
|
return m_ChunkMap->DoWithChunk(a_ChunkX, a_ChunkZ, a_Callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cWorld::GrowTree(int a_X, int a_Y, int a_Z)
|
void cWorld::GrowTree(int a_X, int a_Y, int a_Z)
|
||||||
{
|
{
|
||||||
if (GetBlock(a_X, a_Y, a_Z) == E_BLOCK_SAPLING)
|
if (GetBlock(a_X, a_Y, a_Z) == E_BLOCK_SAPLING)
|
||||||
|
@ -405,6 +405,9 @@ public:
|
|||||||
/// a_Player is using block entity at [x, y, z], handle that:
|
/// a_Player is using block entity at [x, y, z], handle that:
|
||||||
void UseBlockEntity(cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ) {m_ChunkMap->UseBlockEntity(a_Player, a_BlockX, a_BlockY, a_BlockZ); }
|
void UseBlockEntity(cPlayer * a_Player, int a_BlockX, int a_BlockY, int a_BlockZ) {m_ChunkMap->UseBlockEntity(a_Player, a_BlockX, a_BlockY, a_BlockZ); }
|
||||||
|
|
||||||
|
/// Calls the callback for the chunk specified, with ChunkMapCS locked; returns false if the chunk doesn't exist, otherwise returns the same value as the callback
|
||||||
|
bool DoWithChunk(int a_ChunkX, int a_ChunkZ, cChunkCallback & a_Callback);
|
||||||
|
|
||||||
void GrowTree (int a_BlockX, int a_BlockY, int a_BlockZ); // tolua_export
|
void GrowTree (int a_BlockX, int a_BlockY, int a_BlockZ); // tolua_export
|
||||||
void GrowTreeFromSapling(int a_BlockX, int a_BlockY, int a_BlockZ, char a_SaplingMeta); // tolua_export
|
void GrowTreeFromSapling(int a_BlockX, int a_BlockY, int a_BlockZ, char a_SaplingMeta); // tolua_export
|
||||||
void GrowTreeByBiome (int a_BlockX, int a_BlockY, int a_BlockZ); // tolua_export
|
void GrowTreeByBiome (int a_BlockX, int a_BlockY, int a_BlockZ); // tolua_export
|
||||||
|
Loading…
Reference in New Issue
Block a user