diff options
author | 12xx12 <44411062+12xx12@users.noreply.github.com> | 2020-09-27 19:02:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-27 19:02:16 +0200 |
commit | 410d6c00453f2207ddb7a184590251b62b4769fa (patch) | |
tree | f204973b0481e4579f79077f2b5cd73dd94f6959 /src/BlockEntities | |
parent | Remove unused Temporary namespace (diff) | |
download | cuberite-410d6c00453f2207ddb7a184590251b62b4769fa.tar cuberite-410d6c00453f2207ddb7a184590251b62b4769fa.tar.gz cuberite-410d6c00453f2207ddb7a184590251b62b4769fa.tar.bz2 cuberite-410d6c00453f2207ddb7a184590251b62b4769fa.tar.lz cuberite-410d6c00453f2207ddb7a184590251b62b4769fa.tar.xz cuberite-410d6c00453f2207ddb7a184590251b62b4769fa.tar.zst cuberite-410d6c00453f2207ddb7a184590251b62b4769fa.zip |
Diffstat (limited to 'src/BlockEntities')
-rw-r--r-- | src/BlockEntities/BlockEntity.h | 2 | ||||
-rw-r--r-- | src/BlockEntities/MobSpawnerEntity.cpp | 33 |
2 files changed, 15 insertions, 20 deletions
diff --git a/src/BlockEntities/BlockEntity.h b/src/BlockEntities/BlockEntity.h index 1933ed891..c133c186c 100644 --- a/src/BlockEntities/BlockEntity.h +++ b/src/BlockEntities/BlockEntity.h @@ -122,7 +122,7 @@ public: cWorld * GetWorld() const { return m_World; } int GetChunkX() const { return FAST_FLOOR_DIV(m_Pos.x, cChunkDef::Width); } - int GetChunkZ() const { return FAST_FLOOR_DIV(m_Pos.y, cChunkDef::Width); } + int GetChunkZ() const { return FAST_FLOOR_DIV(m_Pos.z, cChunkDef::Width); } int GetRelX() const { return m_RelX; } int GetRelZ() const { return m_RelZ; } diff --git a/src/BlockEntities/MobSpawnerEntity.cpp b/src/BlockEntities/MobSpawnerEntity.cpp index d7b72714d..f5fb5c3ff 100644 --- a/src/BlockEntities/MobSpawnerEntity.cpp +++ b/src/BlockEntities/MobSpawnerEntity.cpp @@ -124,14 +124,13 @@ void cMobSpawnerEntity::ResetTimer(void) void cMobSpawnerEntity::SpawnEntity(void) { - int NearbyEntities = GetNearbyMonsterNum(m_Entity); + auto NearbyEntities = GetNearbyMonsterNum(m_Entity); if (NearbyEntities >= 6) { ResetTimer(); return; } - auto MobType = m_Entity; bool EntitiesSpawned = m_World->DoWithChunk(GetChunkX(), GetChunkZ(), [&](cChunk & a_Chunk) { auto & Random = GetRandomProvider(); @@ -144,38 +143,34 @@ void cMobSpawnerEntity::SpawnEntity(void) break; } - Vector3i spawnRelPos(GetRelPos()); - spawnRelPos += Vector3i( + auto SpawnRelPos(GetRelPos()); + SpawnRelPos += Vector3i( static_cast<int>((Random.RandReal<double>() - Random.RandReal<double>()) * 4.0), Random.RandInt(-1, 1), static_cast<int>((Random.RandReal<double>() - Random.RandReal<double>()) * 4.0) ); - auto chunk = a_Chunk.GetRelNeighborChunkAdjustCoords(spawnRelPos); - if ((chunk == nullptr) || !chunk->IsValid()) + auto Chunk = a_Chunk.GetRelNeighborChunkAdjustCoords(SpawnRelPos); + if ((Chunk == nullptr) || !Chunk->IsValid()) { continue; } - EMCSBiome Biome = chunk->GetBiomeAt(spawnRelPos.x, spawnRelPos.z); + EMCSBiome Biome = Chunk->GetBiomeAt(SpawnRelPos.x, SpawnRelPos.z); - if (cMobSpawner::CanSpawnHere(chunk, spawnRelPos, MobType, Biome)) + if (cMobSpawner::CanSpawnHere(Chunk, SpawnRelPos, m_Entity, Biome, true)) { - auto absPos = chunk->RelativeToAbsolute(spawnRelPos); - auto monster = cMonster::NewMonsterFromType(MobType); - if (monster == nullptr) + auto AbsPos = Chunk->RelativeToAbsolute(SpawnRelPos); + auto Monster = cMonster::NewMonsterFromType(m_Entity); + if (Monster == nullptr) { continue; } - monster->SetPosition(absPos); - monster->SetYaw(Random.RandReal(360.0f)); - if (chunk->GetWorld()->SpawnMobFinalize(std::move(monster)) != cEntity::INVALID_ID) + Monster->SetPosition(AbsPos); + Monster->SetYaw(Random.RandReal(360.0f)); + if (Chunk->GetWorld()->SpawnMobFinalize(std::move(Monster)) != cEntity::INVALID_ID) { HaveSpawnedEntity = true; - m_World->BroadcastSoundParticleEffect( - EffectID::PARTICLE_MOBSPAWN, - absPos, - 0 - ); + m_World->BroadcastSoundParticleEffect(EffectID::PARTICLE_MOBSPAWN, AbsPos, 0); NearbyEntities++; } } |