1
0

Current Mob Spawning code.

This commit is contained in:
Samuel Barney
2013-10-21 09:41:48 -06:00
parent 5174d9cbd6
commit d73a0cd8b0
3 changed files with 37 additions and 22 deletions

View File

@@ -539,14 +539,29 @@ void cChunk::SpawnMobs(cMobSpawner& a_MobSpawner)
// MG TODO: fix the "light" thing, I'm pretty sure that UnboundedRelGetBlock s not returning the right thing
// MG TODO : check that "Level" really means Y
cEntity* newMob = a_MobSpawner.TryToSpawnHere(BlockType, BlockMeta, BlockType_below, BlockMeta_below, BlockType_above, BlockMeta_above, Biome, Try_Y, MaxNbOfSuccess);
if (newMob)
NIBBLETYPE SkyLight = GetSkyLight(Try_X, Try_Y+1, Try_Z);
if (!SkyLight)
SkyLight = GetSkyLight(Try_X, Try_Y, Try_Z);
if (!SkyLight)
SkyLight = GetSkyLight(Try_X, Try_Y - 1, Try_Z);
NIBBLETYPE BlockLight = GetBlockLight(Try_X, Try_Y+1, Try_Z);
if (!BlockLight)
BlockLight = GetBlockLight(Try_X, Try_Y, Try_Z);
if (!BlockLight)
BlockLight = GetBlockLight(Try_X, Try_Y - 1, Try_Z);
if (IsLightValid())
{
int WorldX, WorldY, WorldZ;
PositionToWorldPosition(Try_X, Try_Y, Try_Z, WorldX, WorldY, WorldZ);
newMob->SetPosition(WorldX, WorldY, WorldZ);
LOGD("Spawning %s #%i at %d,%d,%d",newMob->GetClass(),newMob->GetUniqueID(),WorldX, WorldY, WorldZ);
NumberOfSuccess++;
cEntity* newMob = a_MobSpawner.TryToSpawnHere(BlockType, BlockMeta, BlockType_below, BlockMeta_below, BlockType_above, BlockMeta_above, SkyLight, BlockLight, Biome, Try_Y, MaxNbOfSuccess);
if (newMob)
{
int WorldX, WorldY, WorldZ;
PositionToWorldPosition(Try_X, Try_Y, Try_Z, WorldX, WorldY, WorldZ);
newMob->SetPosition(WorldX, WorldY, WorldZ);
LOGD("Spawning %s #%i at %d,%d,%d",newMob->GetClass(),newMob->GetUniqueID(),WorldX, WorldY, WorldZ);
NumberOfSuccess++;
}
}
}