1
0

Obsidian pillars, end fountain, not Ender dragon spawning (#4993)

* added generator for obsidian pillars and central fountain which then is used for the exit portal

* checkstyle

* checkstyle the second

* fixed clang
removed magic number
added Clamp

* make the pillars configurable

* fixed clang
added warning if there was a unknown value if the tower should have a cage or not

* forgot to cancel on unkwon value

* fixed clang this time maybe

* added new generator to generator test

* fixed test

* added prefab generation for end fountain

* fixed checkstyle and updated the prefab

* added ender dragon spawning
made the fountain positioning dynamic
removed fountain placement functions

* added enderdragon stuff to testing

* pls compile

* added changes suggested by @peterbell10

* fixed clang

* added debug for further research on the ARM build

* ok - it wasn't my tower placement

* checking in setup

* readded the fountain schematic

* removed finisher

* readded generator

* removed generator trigger - kept ini file access

* using cChunkDef function to calculate abs pos of endercrystal

* yes, I know it's unused...

* commented everything in the ComposableGenerator.cpp
 - so only the new class in compiled in but not called at all

* don't compile in the new generator at all
(removed from CMakeLists.txt)

* readded the new generator

* readded the new generator

* removed debug output

* made the towers generate acrocc chunk borders

* fixed bad merge

* fixed clang

* fixed clang

* generate the dragon 20 blocks above terrain

* trying to fixed weird undefined reference

* maybe this fixes the weird behaviour

* takes chunk width as parameter now

* added new comments with info to generated structures
removed ender dragon spawning
removed chunkwidth from parameter

* fixed linker

* maybe fixed linking. tried with gc and clang

* fixed ender crystal

* fixed test

* updated output strings

* fixed build

* fixed up test

* fixed test compile

* fixed test - cant get the tests to show up

* removed the semicolon

* maybe this is the fix?

* at this point i have no idea - in MVSC it works

* removed the ender dragon

Co-authored-by: 12xx12 <12xx12100@gmail.com>
This commit is contained in:
12xx12
2021-04-08 12:18:18 +02:00
committed by GitHub
parent b2eddbed84
commit d78bcac150
7 changed files with 986 additions and 1 deletions

View File

@@ -17,7 +17,9 @@
#include "Generating/ChunkDesc.h"
#include "DeadlockDetect.h"
#include "Entities/Entity.h"
#include "Entities/EnderCrystal.h"
#include "Mobs/Monster.h"
#include "Mobs/EnderDragon.h"
#include "Simulator/FluidSimulator.h"
#include "Simulator/FireSimulator.h"
#include "MobSpawner.h"
@@ -334,6 +336,15 @@ std::unique_ptr<cMonster> cMonster::NewMonsterFromType(eMonsterType a_Type)
void cMonster::CheckEventLostPlayer(std::chrono::milliseconds a_Dt)
{
}
bool cFluidSimulator::CanWashAway(BLOCKTYPE a_BlockType)
{
return false;
@@ -395,3 +406,637 @@ cItem::cItem(
void cItem::Empty()
{
}
cEnderCrystal::cEnderCrystal(Vector3d a_Pos, bool a_ShowBottom):
Super(etEnderCrystal, a_Pos, 1.0, 1.0)
{
}
void cEnderCrystal::SpawnOn(class cClientHandle & a_ClientHandle)
{
}
void cEnderCrystal::Tick(std::chrono::milliseconds a_Dt, class cChunk & a_Chunk)
{
}
void cEnderCrystal::KilledBy(struct TakeDamageInfo & a_TakeDamageInfo)
{
}
cEntity::cEntity(enum cEntity::eEntityType a_EntityType, class Vector3<double> a_Pos, double a_Height, double a_Width)
{
}
bool cEntity::Initialize(class std::unique_ptr<class cEntity,struct std::default_delete<class cEntity> > a_Entity,class cWorld & a_World)
{
return true;
}
void cEntity::OnAddToWorld(class cWorld & a_World)
{
}
void cEntity::OnRemoveFromWorld(class cWorld & a_World)
{
}
bool cEntity::IsA(char const * a_Type)const
{
return true;
}
char const * cEntity::GetParentClass(void) const
{
return "";
}
void cEntity::HandleSpeedFromAttachee(float a_SpeedX,float a_SpeedZ)
{
}
void cEntity::Destroy(void)
{
}
bool cEntity::DoTakeDamage(struct TakeDamageInfo & a_TakeDamageInfo)
{
return true;
}
int cEntity::GetRawDamageAgainst(class cEntity const & a_Entity)
{
return 0;
}
bool cEntity::ArmorCoversAgainst(enum eDamageType a_DamageType)
{
return true;
}
float cEntity::GetArmorCoverAgainst(class cEntity const * a_Entity,enum eDamageType a_DamageType,int a_Value)
{
return 0.0f;
}
char const * cEntity::GetClass(void) const
{
return "";
}
float cEntity::GetEnchantmentCoverAgainst(class cEntity const * a_Entity,enum eDamageType a_DamageType,int a_Value)
{
return 0.0f;
}
float cEntity::GetEnchantmentBlastKnockbackReduction(void)
{
return 0.0f;
}
double cEntity::GetKnockbackAmountAgainst(class cEntity const & a_Entity)
{
return 0.0f;
}
void cEntity::ApplyArmorDamage(int)
{
}
void cEntity::KilledBy(struct TakeDamageInfo & a_TakeDamageInfo)
{
}
void cEntity::Heal(int a_Value)
{
}
void cEntity::Tick(std::chrono::milliseconds a_Dt, class cChunk & a_Chunk)
{
}
void cEntity::HandlePhysics(std::chrono::milliseconds a_Dt, class cChunk & a_Chunk)
{
}
void cEntity::TickBurning(class cChunk & a_Chunk)
{
}
void cEntity::DetectCacti(void)
{
}
bool cEntity::DetectPortal(void)
{
return true;
}
void cEntity::TickInVoid(class cChunk & a_Chunk)
{
}
void cEntity::OnStartedBurning(void)
{
}
void cEntity::OnFinishedBurning(void)
{
}
void cEntity::TeleportToEntity(class cEntity & a_Entity)
{
}
void cEntity::TeleportToCoords(double a_XPos, double a_YPos, double a_ZPos)
{
}
void cEntity::BroadcastMovementUpdate(class cClientHandle const * a_ClientHandle)
{
}
void cEntity::AttachTo(class cEntity * a_Entity)
{
}
void cEntity::Detach(void)
{
}
void cEntity::SetSpeed(double a_XSpeed, double a_YSpeed, double a_ZSpeed)
{
}
void cEntity::DetectMagma(void)
{
}
bool cEntity::MoveToWorld(cWorld & a_World, Vector3d a_NewPosition, bool a_SetPortalCooldown, bool a_ShouldSendRespawn)
{
return false;
}
void cEntity::HandleAir(void)
{
}
void cEntity::SetSwimState(class cChunk & a_Chunk)
{
}
void cEntity::ResetPosition(class Vector3<double> a_Pos)
{
}
cPawn::cPawn(enum cEntity::eEntityType,double a_Width, double a_Height) :
cEntity(etMonster, Vector3d(), a_Height, a_Width)
{
}
bool cPawn::IsFireproof(void) const
{
return true;
}
bool cPawn::IsInvisible(void) const
{
return true;
}
void cPawn::HandleAir(void)
{
}
void cPawn::HandleFalling()
{
}
void cPawn::KilledBy(struct TakeDamageInfo & a_TakeDamageInfo)
{
}
void cPawn::OnRemoveFromWorld(cWorld & a_World)
{
}
void cPawn::ResetPosition(class Vector3<double>)
{
}
void cPawn::Tick(std::chrono::milliseconds a_Dt, cChunk & a_Chunk)
{
}
cMonster::cMonster(const AString & a_StringA, enum eMonsterType a_MonsterType, const AString & a_StringB, const AString & a_StringC, const AString & a_StringD, double a_Width, double a_Height) :
cPawn(etMonster, a_Width, a_Height),
m_PathFinder(a_Width, a_Height)
{
}
cPathFinder::cPathFinder(double a_Width, double a_Height)
{
}
void cMonster::OnRemoveFromWorld(class cWorld & a_World)
{
}
void cMonster::Tick(std::chrono::milliseconds a_Dt, class cChunk & a_Chunk)
{
}
void cMonster::EventSeePlayer(cPlayer * a_Player, cChunk & a_Chunk)
{
}
void cMonster::InStateChasing(std::chrono::milliseconds a_Dt, class cChunk & a_Chunk)
{
}
void cMonster::SpawnOn(class cClientHandle & a_ClientHandle)
{
}
bool cMonster::DoTakeDamage(struct TakeDamageInfo & a_TakeDamageInfo)
{
return true;
}
void cMonster::KilledBy(struct TakeDamageInfo & a_TakeDamageInfo)
{
}
void cMonster::OnRightClicked(class cPlayer & a_Player)
{
}
void cMonster::HandleFalling(void)
{
}
void cMonster::MoveToPosition(class Vector3<double> const & a_Pos)
{
}
void cMonster::CheckEventSeePlayer(class cChunk & a_Chunk)
{
}
bool cMonster::IsUndead(void)
{
return true;
}
void cMonster::EventLosePlayer(void)
{
}
void cMonster::InStateIdle(std::chrono::milliseconds a_Dt ,class cChunk & a_Chunk)
{
}
void cMonster::InStateEscaping(std::chrono::milliseconds a_Dt ,class cChunk & a_Chunk)
{
}
cAggressiveMonster::cAggressiveMonster(const AString & a_StringA, enum eMonsterType a_MonsterType, const AString & a_StringB, const AString & a_StringC, const AString & a_StringD, double a_Width, double a_Height) :
cMonster(a_StringA, a_MonsterType, a_StringB, a_StringC, a_StringD, a_Width, a_Height)
{
}
void cAggressiveMonster::Tick(std::chrono::milliseconds a_Dt, class cChunk & a_Chunk)
{
}
void cAggressiveMonster::InStateChasing(std::chrono::milliseconds a_Dt, class cChunk & a_Chunk)
{
}
void cAggressiveMonster::EventSeePlayer(class cPlayer *,class cChunk &)
{
}
bool cAggressiveMonster::Attack(std::chrono::milliseconds a_Dt)
{
return true;
}