fix: stupid

This commit is contained in:
Tropical 2026-03-06 20:39:58 -06:00
parent 6131826226
commit 653a2c4289
68 changed files with 118 additions and 118 deletions

View file

@ -818,7 +818,7 @@ void MultiPlayerLevel::removeAllPendingEntityRemovals()
{ {
if (e->riding->removed || e->riding->rider.lock() != e) if (e->riding->removed || e->riding->rider.lock() != e)
{ {
e->riding->rider = std::<Entity>(); e->riding->rider = std::weak_ptr<Entity>();
e->riding = nullptr; e->riding = nullptr;
} }
else else

View file

@ -63,7 +63,7 @@ void ChatIntegrationLayer::InitializeChatManager(
InitializeCriticalSection(&m_csAddedUsers); InitializeCriticalSection(&m_csAddedUsers);
std::<ChatIntegrationLayer> weakPtrToThis = shared_from_this(); std::weak_ptr<ChatIntegrationLayer> weakPtrToThis = shared_from_this();
#ifdef PROFILE #ifdef PROFILE
m_chatManager->ChatSettings->PerformanceCountersEnabled = true; m_chatManager->ChatSettings->PerformanceCountersEnabled = true;

View file

@ -29,7 +29,7 @@ bool Sensing::canSee(std::shared_ptr<Entity> target)
//util.Timer.push("canSee"); //util.Timer.push("canSee");
bool canSee = mob->canSee(target); bool canSee = mob->canSee(target);
//util.Timer.pop(); //util.Timer.pop();
if (canSee) seen.push_back(std::<Entity>(target)); if (canSee) seen.push_back(std::weak_ptr<Entity>(target));
else unseen.push_back(std::<Entity>(target)); else unseen.push_back(std::weak_ptr<Entity>(target));
return canSee; return canSee;
} }

View file

@ -4,8 +4,8 @@ class Sensing
{ {
private: private:
Mob *mob; Mob *mob;
std::vector<std::<Entity> > seen; std::vector<std::weak_ptr<Entity> > seen;
std::vector<std::<Entity> > unseen; std::vector<std::weak_ptr<Entity> > unseen;
public: public:
Sensing(Mob *mob); Sensing(Mob *mob);

View file

@ -12,7 +12,7 @@
ArrowAttackGoal::ArrowAttackGoal(Mob *mob, float speed, int projectileType, int attackInterval) ArrowAttackGoal::ArrowAttackGoal(Mob *mob, float speed, int projectileType, int attackInterval)
{ {
// 4J Init // 4J Init
target = std::<Mob>(); target = std::weak_ptr<Mob>();
attackTime = 0; attackTime = 0;
seeTime = 0; seeTime = 0;
@ -28,7 +28,7 @@ bool ArrowAttackGoal::canUse()
{ {
std::shared_ptr<Mob> bestTarget = mob->getTarget(); std::shared_ptr<Mob> bestTarget = mob->getTarget();
if (bestTarget == NULL) return false; if (bestTarget == NULL) return false;
target = std::<Mob>(bestTarget); target = std::weak_ptr<Mob>(bestTarget);
return true; return true;
} }
@ -39,7 +39,7 @@ bool ArrowAttackGoal::canContinueToUse()
void ArrowAttackGoal::stop() void ArrowAttackGoal::stop()
{ {
target = std::<Mob>(); target = std::weak_ptr<Mob>();
} }
void ArrowAttackGoal::tick() void ArrowAttackGoal::tick()

View file

@ -10,7 +10,7 @@ public:
Level *level; Level *level;
Mob *mob; // Owner of this goal Mob *mob; // Owner of this goal
std::<Mob> target; std::weak_ptr<Mob> target;
int attackTime; int attackTime;
float speed; float speed;
int seeTime; int seeTime;

View file

@ -20,7 +20,7 @@ AvoidPlayerGoal::AvoidPlayerGoal(PathfinderMob *mob, const std::type_info& avoid
this->pathNav = mob->getNavigation(); this->pathNav = mob->getNavigation();
setRequiredControlFlags(Control::MoveControlFlag); setRequiredControlFlags(Control::MoveControlFlag);
toAvoid = std::<Entity>(); toAvoid = std::weak_ptr<Entity>();
path = NULL; path = NULL;
} }
@ -35,7 +35,7 @@ bool AvoidPlayerGoal::canUse()
{ {
std::shared_ptr<TamableAnimal> tamableAnimal = dynamic_pointer_cast<TamableAnimal>(mob->shared_from_this()); std::shared_ptr<TamableAnimal> tamableAnimal = dynamic_pointer_cast<TamableAnimal>(mob->shared_from_this());
if (tamableAnimal != NULL && tamableAnimal->isTame()) return false; if (tamableAnimal != NULL && tamableAnimal->isTame()) return false;
toAvoid = std::<Entity>(mob->level->getNearestPlayer(mob->shared_from_this(), maxDist)); toAvoid = std::weak_ptr<Entity>(mob->level->getNearestPlayer(mob->shared_from_this(), maxDist));
if (toAvoid.lock() == NULL) return false; if (toAvoid.lock() == NULL) return false;
} }
else else
@ -46,7 +46,7 @@ bool AvoidPlayerGoal::canUse()
delete entities; delete entities;
return false; return false;
} }
toAvoid = std::<Entity>(entities->at(0)); toAvoid = std::weak_ptr<Entity>(entities->at(0));
delete entities; delete entities;
} }
@ -75,7 +75,7 @@ void AvoidPlayerGoal::start()
void AvoidPlayerGoal::stop() void AvoidPlayerGoal::stop()
{ {
toAvoid = std::<Entity>(); toAvoid = std::weak_ptr<Entity>();
} }
void AvoidPlayerGoal::tick() void AvoidPlayerGoal::tick()

View file

@ -11,7 +11,7 @@ class AvoidPlayerGoal : public Goal
private: private:
PathfinderMob *mob; // Owner of this goal PathfinderMob *mob; // Owner of this goal
float walkSpeed, sprintSpeed; float walkSpeed, sprintSpeed;
std::<Entity> toAvoid; std::weak_ptr<Entity> toAvoid;
float maxDist; float maxDist;
Path *path; Path *path;
PathNavigation *pathNav; PathNavigation *pathNav;

View file

@ -8,7 +8,7 @@
BegGoal::BegGoal(Wolf *wolf, float lookDistance) BegGoal::BegGoal(Wolf *wolf, float lookDistance)
{ {
player = std::<Player>(); player = std::weak_ptr<Player>();
lookTime = 0; lookTime = 0;
this->wolf = wolf; this->wolf = wolf;
@ -19,7 +19,7 @@ BegGoal::BegGoal(Wolf *wolf, float lookDistance)
bool BegGoal::canUse() bool BegGoal::canUse()
{ {
player = std::<Player>(level->getNearestPlayer(wolf->shared_from_this(), lookDistance)); player = std::weak_ptr<Player>(level->getNearestPlayer(wolf->shared_from_this(), lookDistance));
if (player.lock() == NULL) return false; if (player.lock() == NULL) return false;
wolf->setDespawnProtected(); wolf->setDespawnProtected();
return playerHoldingInteresting(player.lock()); return playerHoldingInteresting(player.lock());
@ -42,7 +42,7 @@ void BegGoal::start()
void BegGoal::stop() void BegGoal::stop()
{ {
wolf->setIsInterested(false); wolf->setIsInterested(false);
player = std::<Player>(); player = std::weak_ptr<Player>();
} }
void BegGoal::tick() void BegGoal::tick()

View file

@ -8,7 +8,7 @@ class BegGoal : public Goal
{ {
private: private:
Wolf *wolf; // Owner of this goal Wolf *wolf; // Owner of this goal
std::<Player> player; std::weak_ptr<Player> player;
Level *level; Level *level;
float lookDistance; float lookDistance;
int lookTime; int lookTime;

View file

@ -11,7 +11,7 @@
BreedGoal::BreedGoal(Animal *animal, float speed) BreedGoal::BreedGoal(Animal *animal, float speed)
{ {
partner = std::<Animal>(); partner = std::weak_ptr<Animal>();
loveTime = 0; loveTime = 0;
this->animal = animal; this->animal = animal;
@ -23,7 +23,7 @@ BreedGoal::BreedGoal(Animal *animal, float speed)
bool BreedGoal::canUse() bool BreedGoal::canUse()
{ {
if (!animal->isInLove()) return false; if (!animal->isInLove()) return false;
partner = std::<Animal>(getFreePartner()); partner = std::weak_ptr<Animal>(getFreePartner());
return partner.lock() != NULL; return partner.lock() != NULL;
} }
@ -34,7 +34,7 @@ bool BreedGoal::canContinueToUse()
void BreedGoal::stop() void BreedGoal::stop()
{ {
partner = std::<Animal>(); partner = std::weak_ptr<Animal>();
loveTime = 0; loveTime = 0;
} }

View file

@ -10,7 +10,7 @@ class BreedGoal : public Goal
private: private:
Animal *animal; // Owner of this goal Animal *animal; // Owner of this goal
Level *level; Level *level;
std::<Animal> partner; std::weak_ptr<Animal> partner;
int loveTime; int loveTime;
float speed; float speed;

View file

@ -13,7 +13,7 @@ bool DefendVillageTargetGoal::canUse()
{ {
std::shared_ptr<Village> village = golem->getVillage(); std::shared_ptr<Village> village = golem->getVillage();
if (village == NULL) return false; if (village == NULL) return false;
potentialTarget = std::<Mob>(village->getClosestAggressor(dynamic_pointer_cast<Mob>(golem->shared_from_this()))); potentialTarget = std::weak_ptr<Mob>(village->getClosestAggressor(dynamic_pointer_cast<Mob>(golem->shared_from_this())));
return canAttack(potentialTarget.lock(), false); return canAttack(potentialTarget.lock(), false);
} }

View file

@ -8,7 +8,7 @@ class DefendVillageTargetGoal : public TargetGoal
{ {
private: private:
VillagerGolem *golem; // Owner of this goal VillagerGolem *golem; // Owner of this goal
std::<Mob> potentialTarget; std::weak_ptr<Mob> potentialTarget;
public: public:
DefendVillageTargetGoal(VillagerGolem *golem); DefendVillageTargetGoal(VillagerGolem *golem);

View file

@ -9,7 +9,7 @@
FollowOwnerGoal::FollowOwnerGoal(TamableAnimal *tamable, float speed, float startDistance, float stopDistance) FollowOwnerGoal::FollowOwnerGoal(TamableAnimal *tamable, float speed, float startDistance, float stopDistance)
{ {
owner = std::<Mob>(); owner = std::weak_ptr<Mob>();
timeToRecalcPath = 0; timeToRecalcPath = 0;
oldAvoidWater = false; oldAvoidWater = false;
@ -28,7 +28,7 @@ bool FollowOwnerGoal::canUse()
if (owner == NULL) return false; if (owner == NULL) return false;
if (tamable->isSitting()) return false; if (tamable->isSitting()) return false;
if (tamable->distanceToSqr(owner) < startDistance * startDistance) return false; if (tamable->distanceToSqr(owner) < startDistance * startDistance) return false;
this->owner = std::<Mob>(owner); this->owner = std::weak_ptr<Mob>(owner);
return true; return true;
} }
@ -46,7 +46,7 @@ void FollowOwnerGoal::start()
void FollowOwnerGoal::stop() void FollowOwnerGoal::stop()
{ {
owner = std::<Mob>(); owner = std::weak_ptr<Mob>();
navigation->stop(); navigation->stop();
tamable->getNavigation()->setAvoidWater(oldAvoidWater); tamable->getNavigation()->setAvoidWater(oldAvoidWater);
} }

View file

@ -12,7 +12,7 @@ public:
private: private:
TamableAnimal *tamable; // Owner of this goal TamableAnimal *tamable; // Owner of this goal
std::<Mob> owner; std::weak_ptr<Mob> owner;
Level *level; Level *level;
float speed; float speed;
PathNavigation *navigation; PathNavigation *navigation;

View file

@ -35,7 +35,7 @@ bool FollowParentGoal::canUse()
if (closest == NULL) return false; if (closest == NULL) return false;
if (closestDistSqr < 3 * 3) return false; if (closestDistSqr < 3 * 3) return false;
parent = std::<Animal>(closest); parent = std::weak_ptr<Animal>(closest);
return true; return true;
} }
@ -54,7 +54,7 @@ void FollowParentGoal::start()
void FollowParentGoal::stop() void FollowParentGoal::stop()
{ {
parent = std::<Animal>(); parent = std::weak_ptr<Animal>();
} }
void FollowParentGoal::tick() void FollowParentGoal::tick()

View file

@ -8,7 +8,7 @@ class FollowParentGoal : public Goal
{ {
private: private:
Animal *animal; // Owner of this goal Animal *animal; // Owner of this goal
std::<Animal> parent; std::weak_ptr<Animal> parent;
float speed; float speed;
int timeToRecalcPath; int timeToRecalcPath;

View file

@ -5,7 +5,7 @@
LeapAtTargetGoal::LeapAtTargetGoal(Mob *mob, float yd) LeapAtTargetGoal::LeapAtTargetGoal(Mob *mob, float yd)
{ {
target = std::<Mob>(); target = std::weak_ptr<Mob>();
this->mob = mob; this->mob = mob;
this->yd = yd; this->yd = yd;
@ -14,7 +14,7 @@ LeapAtTargetGoal::LeapAtTargetGoal(Mob *mob, float yd)
bool LeapAtTargetGoal::canUse() bool LeapAtTargetGoal::canUse()
{ {
target = std::<Mob>(mob->getTarget()); target = std::weak_ptr<Mob>(mob->getTarget());
if (target.lock() == NULL) return false; if (target.lock() == NULL) return false;
double d = mob->distanceToSqr(target.lock()); double d = mob->distanceToSqr(target.lock());
if (d < 2 * 2 || d > 4 * 4) return false; if (d < 2 * 2 || d > 4 * 4) return false;

View file

@ -6,7 +6,7 @@ class LeapAtTargetGoal : public Goal
{ {
private: private:
Mob *mob; // Owner of this goal Mob *mob; // Owner of this goal
std::<Mob> target; std::weak_ptr<Mob> target;
float yd; float yd;
public: public:

View file

@ -29,7 +29,7 @@ bool LookAtPlayerGoal::canUse()
{ {
if (mob->getRandom()->nextFloat() >= probability) return false; if (mob->getRandom()->nextFloat() >= probability) return false;
if (lookAtType == typeid(Player)) lookAt = mob->level->getNearestPlayer(mob->shared_from_this(), lookDistance); if (lookAtType == typeid(Player)) lookAt = mob->level->getNearestPlayer(mob->shared_from_this(), lookDistance);
else lookAt = std::<Entity>(mob->level->getClosestEntityOfClass(lookAtType, mob->bb->grow(lookDistance, 3, lookDistance), mob->shared_from_this())); else lookAt = std::weak_ptr<Entity>(mob->level->getClosestEntityOfClass(lookAtType, mob->bb->grow(lookDistance, 3, lookDistance), mob->shared_from_this()));
return lookAt.lock() != NULL; return lookAt.lock() != NULL;
} }
@ -47,7 +47,7 @@ void LookAtPlayerGoal::start()
void LookAtPlayerGoal::stop() void LookAtPlayerGoal::stop()
{ {
lookAt = std::<Entity>(); lookAt = std::weak_ptr<Entity>();
} }
void LookAtPlayerGoal::tick() void LookAtPlayerGoal::tick()

View file

@ -11,7 +11,7 @@ private:
Mob *mob; // Owner of this goal Mob *mob; // Owner of this goal
protected: protected:
std::<Entity> lookAt; std::weak_ptr<Entity> lookAt;
private: private:
float lookDistance; float lookDistance;

View file

@ -12,7 +12,7 @@ bool LookAtTradingPlayerGoal::canUse()
{ {
if (villager->isTrading()) if (villager->isTrading())
{ {
lookAt = std::<Entity>(dynamic_pointer_cast<Entity>(villager->getTradingPlayer())); lookAt = std::weak_ptr<Entity>(dynamic_pointer_cast<Entity>(villager->getTradingPlayer()));
return true; return true;
} }
return false; return false;

View file

@ -10,8 +10,8 @@
MakeLoveGoal::MakeLoveGoal(Villager *villager) MakeLoveGoal::MakeLoveGoal(Villager *villager)
{ {
village = std::<Village>(); village = std::weak_ptr<Village>();
partner = std::<Villager>(); partner = std::weak_ptr<Villager>();
loveMakingTime = 0; loveMakingTime = 0;
this->villager = villager; this->villager = villager;
@ -32,7 +32,7 @@ bool MakeLoveGoal::canUse()
std::shared_ptr<Entity> mate = level->getClosestEntityOfClass(typeid(Villager), villager->bb->grow(8, 3, 8), villager->shared_from_this()); std::shared_ptr<Entity> mate = level->getClosestEntityOfClass(typeid(Villager), villager->bb->grow(8, 3, 8), villager->shared_from_this());
if (mate == NULL) return false; if (mate == NULL) return false;
partner = std::<Villager>(dynamic_pointer_cast<Villager>(mate)); partner = std::weak_ptr<Villager>(dynamic_pointer_cast<Villager>(mate));
if (partner.lock()->getAge() != 0) return false; if (partner.lock()->getAge() != 0) return false;
return true; return true;
@ -46,8 +46,8 @@ void MakeLoveGoal::start()
void MakeLoveGoal::stop() void MakeLoveGoal::stop()
{ {
village = std::<Village>(); village = std::weak_ptr<Village>();
partner = std::<Villager>(); partner = std::weak_ptr<Villager>();
villager->setInLove(false); villager->setInLove(false);
} }

View file

@ -9,10 +9,10 @@ class MakeLoveGoal : public Goal
{ {
private: private:
Villager *villager; // Owner of this goal Villager *villager; // Owner of this goal
std::<Villager> partner; std::weak_ptr<Villager> partner;
Level *level; Level *level;
int loveMakingTime; int loveMakingTime;
std::<Village> village; std::weak_ptr<Village> village;
public: public:
MakeLoveGoal(Villager *villager); MakeLoveGoal(Villager *villager);

View file

@ -45,7 +45,7 @@ bool MeleeAttackGoal::canUse()
if (bestTarget == NULL) return false; if (bestTarget == NULL) return false;
if(!bestTarget->isAlive()) return false; if(!bestTarget->isAlive()) return false;
if (attackType != eTYPE_NOTSET && (attackType & bestTarget->GetType()) != attackType) return false; if (attackType != eTYPE_NOTSET && (attackType & bestTarget->GetType()) != attackType) return false;
target = std::<Mob>(bestTarget); target = std::weak_ptr<Mob>(bestTarget);
delete path; delete path;
path = mob->getNavigation()->createPath(target.lock()); path = mob->getNavigation()->createPath(target.lock());
return path != NULL; return path != NULL;
@ -70,7 +70,7 @@ void MeleeAttackGoal::start()
void MeleeAttackGoal::stop() void MeleeAttackGoal::stop()
{ {
target = std::<Mob>(); target = std::weak_ptr<Mob>();
mob->getNavigation()->stop(); mob->getNavigation()->stop();
} }

View file

@ -11,7 +11,7 @@ class MeleeAttackGoal : public Goal
private: private:
Level *level; Level *level;
Mob *mob; // Owner of this goal Mob *mob; // Owner of this goal
std::<Mob> target; std::weak_ptr<Mob> target;
int attackTime; int attackTime;
float speed; float speed;

View file

@ -39,7 +39,7 @@ void MoveIndoorsGoal::start()
std::shared_ptr<DoorInfo> _doorInfo = doorInfo.lock(); std::shared_ptr<DoorInfo> _doorInfo = doorInfo.lock();
if( _doorInfo == NULL ) if( _doorInfo == NULL )
{ {
doorInfo = std::<DoorInfo>(); doorInfo = std::weak_ptr<DoorInfo>();
return; return;
} }
if (mob->distanceToSqr(_doorInfo->getIndoorX(), _doorInfo->y, _doorInfo->getIndoorZ()) > 16 * 16) if (mob->distanceToSqr(_doorInfo->getIndoorX(), _doorInfo->y, _doorInfo->getIndoorZ()) > 16 * 16)
@ -55,11 +55,11 @@ void MoveIndoorsGoal::stop()
std::shared_ptr<DoorInfo> _doorInfo = doorInfo.lock(); std::shared_ptr<DoorInfo> _doorInfo = doorInfo.lock();
if( _doorInfo == NULL ) if( _doorInfo == NULL )
{ {
doorInfo = std::<DoorInfo>(); doorInfo = std::weak_ptr<DoorInfo>();
return; return;
} }
insideX = _doorInfo->getIndoorX(); insideX = _doorInfo->getIndoorX();
insideZ = _doorInfo->getIndoorZ(); insideZ = _doorInfo->getIndoorZ();
doorInfo = std::<DoorInfo>(); doorInfo = std::weak_ptr<DoorInfo>();
} }

View file

@ -9,7 +9,7 @@ class MoveIndoorsGoal : public Goal
{ {
private: private:
PathfinderMob *mob; PathfinderMob *mob;
std::<DoorInfo> doorInfo; std::weak_ptr<DoorInfo> doorInfo;
int insideX, insideZ; int insideX, insideZ;
public: public:

View file

@ -12,7 +12,7 @@
MoveThroughVillageGoal::MoveThroughVillageGoal(PathfinderMob *mob, float speed, bool onlyAtNight) MoveThroughVillageGoal::MoveThroughVillageGoal(PathfinderMob *mob, float speed, bool onlyAtNight)
{ {
path = NULL; path = NULL;
doorInfo = std::<DoorInfo>(); doorInfo = std::weak_ptr<DoorInfo>();
this->mob = mob; this->mob = mob;
this->speed = speed; this->speed = speed;

View file

@ -12,9 +12,9 @@ private:
PathfinderMob *mob; PathfinderMob *mob;
float speed; float speed;
Path *path; Path *path;
std::<DoorInfo> doorInfo; std::weak_ptr<DoorInfo> doorInfo;
bool onlyAtNight; bool onlyAtNight;
std::vector< std::<DoorInfo> > visited; std::vector< std::weak_ptr<DoorInfo> > visited;
public: public:
MoveThroughVillageGoal(PathfinderMob *mob, float speed, bool onlyAtNight); MoveThroughVillageGoal(PathfinderMob *mob, float speed, bool onlyAtNight);

View file

@ -16,7 +16,7 @@ MoveTowardsTargetGoal::MoveTowardsTargetGoal(PathfinderMob *mob, float speed, fl
bool MoveTowardsTargetGoal::canUse() bool MoveTowardsTargetGoal::canUse()
{ {
target = std::<Mob>(mob->getTarget()); target = std::weak_ptr<Mob>(mob->getTarget());
if (target.lock() == NULL) return false; if (target.lock() == NULL) return false;
if (target.lock()->distanceToSqr(mob->shared_from_this()) > within * within) return false; if (target.lock()->distanceToSqr(mob->shared_from_this()) > within * within) return false;
Vec3 *pos = RandomPos::getPosTowards(dynamic_pointer_cast<PathfinderMob>(mob->shared_from_this()), 16, 7, Vec3::newTemp(target.lock()->x, target.lock()->y, target.lock()->z)); Vec3 *pos = RandomPos::getPosTowards(dynamic_pointer_cast<PathfinderMob>(mob->shared_from_this()), 16, 7, Vec3::newTemp(target.lock()->x, target.lock()->y, target.lock()->z));
@ -34,7 +34,7 @@ bool MoveTowardsTargetGoal::canContinueToUse()
void MoveTowardsTargetGoal::stop() void MoveTowardsTargetGoal::stop()
{ {
target = std::<Mob>(); target = std::weak_ptr<Mob>();
} }
void MoveTowardsTargetGoal::start() void MoveTowardsTargetGoal::start()

View file

@ -6,7 +6,7 @@ class MoveTowardsTargetGoal : public Goal
{ {
private: private:
PathfinderMob *mob; PathfinderMob *mob;
std::<Mob> target; std::weak_ptr<Mob> target;
double wantedX, wantedY, wantedZ; double wantedX, wantedY, wantedZ;
float speed, within; float speed, within;

View file

@ -41,7 +41,7 @@ bool NearestAttackableTargetGoal::canUse()
std::shared_ptr<Mob> potentialTarget = mob->level->getNearestAttackablePlayer(mob->shared_from_this(), within); std::shared_ptr<Mob> potentialTarget = mob->level->getNearestAttackablePlayer(mob->shared_from_this(), within);
if (canAttack(potentialTarget, false)) if (canAttack(potentialTarget, false))
{ {
target = std::<Mob>(potentialTarget); target = std::weak_ptr<Mob>(potentialTarget);
return true; return true;
} }
} }
@ -55,7 +55,7 @@ bool NearestAttackableTargetGoal::canUse()
std::shared_ptr<Mob> potTarget = dynamic_pointer_cast<Mob>(*it); std::shared_ptr<Mob> potTarget = dynamic_pointer_cast<Mob>(*it);
if (canAttack(potTarget, false)) if (canAttack(potTarget, false))
{ {
target = std::<Mob>(potTarget); target = std::weak_ptr<Mob>(potTarget);
return true; return true;
} }
} }

View file

@ -17,7 +17,7 @@ public:
}; };
private: private:
std::<Mob> target; std::weak_ptr<Mob> target;
const std::type_info& targetType; const std::type_info& targetType;
int randomInterval; int randomInterval;
DistComp *distComp; DistComp *distComp;

View file

@ -8,7 +8,7 @@
OzelotAttackGoal::OzelotAttackGoal(Mob *mob) OzelotAttackGoal::OzelotAttackGoal(Mob *mob)
{ {
target = std::<Mob>(); target = std::weak_ptr<Mob>();
attackTime = 0; attackTime = 0;
speed = 0; speed = 0;
trackTarget = false; trackTarget = false;
@ -22,7 +22,7 @@ bool OzelotAttackGoal::canUse()
{ {
std::shared_ptr<Mob> bestTarget = mob->getTarget(); std::shared_ptr<Mob> bestTarget = mob->getTarget();
if (bestTarget == NULL) return false; if (bestTarget == NULL) return false;
target = std::<Mob>(bestTarget); target = std::weak_ptr<Mob>(bestTarget);
return true; return true;
} }
@ -35,7 +35,7 @@ bool OzelotAttackGoal::canContinueToUse()
void OzelotAttackGoal::stop() void OzelotAttackGoal::stop()
{ {
target = std::<Mob>(); target = std::weak_ptr<Mob>();
mob->getNavigation()->stop(); mob->getNavigation()->stop();
} }

View file

@ -7,7 +7,7 @@ class OzelotAttackGoal : public Goal
private: private:
Level *level; Level *level;
Mob *mob; Mob *mob;
std::<Mob> target; std::weak_ptr<Mob> target;
int attackTime; int attackTime;
float speed; float speed;
bool trackTarget; bool trackTarget;

View file

@ -16,7 +16,7 @@ bool OfferFlowerGoal::canUse()
{ {
if (!golem->level->isDay()) return false; if (!golem->level->isDay()) return false;
if (golem->getRandom()->nextInt(8000) != 0) return false; if (golem->getRandom()->nextInt(8000) != 0) return false;
villager = std::<Villager>(dynamic_pointer_cast<Villager>( golem->level->getClosestEntityOfClass(typeid(Villager), golem->bb->grow(6, 2, 6), golem->shared_from_this()) )); villager = std::weak_ptr<Villager>(dynamic_pointer_cast<Villager>( golem->level->getClosestEntityOfClass(typeid(Villager), golem->bb->grow(6, 2, 6), golem->shared_from_this()) ));
return villager.lock() != NULL; return villager.lock() != NULL;
} }
@ -34,7 +34,7 @@ void OfferFlowerGoal::start()
void OfferFlowerGoal::stop() void OfferFlowerGoal::stop()
{ {
golem->offerFlower(false); golem->offerFlower(false);
villager = std::<Villager>(); villager = std::weak_ptr<Villager>();
} }
void OfferFlowerGoal::tick() void OfferFlowerGoal::tick()

View file

@ -11,7 +11,7 @@ public:
private: private:
VillagerGolem *golem; VillagerGolem *golem;
std::<Villager> villager; std::weak_ptr<Villager> villager;
int _tick; int _tick;
public: public:

View file

@ -14,7 +14,7 @@ bool OwnerHurtByTargetGoal::canUse()
if (!tameAnimal->isTame()) return false; if (!tameAnimal->isTame()) return false;
std::shared_ptr<Mob> owner = tameAnimal->getOwner(); std::shared_ptr<Mob> owner = tameAnimal->getOwner();
if (owner == NULL) return false; if (owner == NULL) return false;
ownerLastHurtBy = std::<Mob>(owner->getLastHurtByMob()); ownerLastHurtBy = std::weak_ptr<Mob>(owner->getLastHurtByMob());
return canAttack(ownerLastHurtBy.lock(), false); return canAttack(ownerLastHurtBy.lock(), false);
} }

View file

@ -8,7 +8,7 @@ class OwnerHurtByTargetGoal : public TargetGoal
{ {
private: private:
TamableAnimal *tameAnimal; // Owner of this goal TamableAnimal *tameAnimal; // Owner of this goal
std::<Mob> ownerLastHurtBy; std::weak_ptr<Mob> ownerLastHurtBy;
public: public:
OwnerHurtByTargetGoal(TamableAnimal *tameAnimal); OwnerHurtByTargetGoal(TamableAnimal *tameAnimal);

View file

@ -14,7 +14,7 @@ bool OwnerHurtTargetGoal::canUse()
if (!tameAnimal->isTame()) return false; if (!tameAnimal->isTame()) return false;
std::shared_ptr<Mob> owner = tameAnimal->getOwner(); std::shared_ptr<Mob> owner = tameAnimal->getOwner();
if (owner == NULL) return false; if (owner == NULL) return false;
ownerLastHurt = std::<Mob>(owner->getLastHurtMob()); ownerLastHurt = std::weak_ptr<Mob>(owner->getLastHurtMob());
return canAttack(ownerLastHurt.lock(), false); return canAttack(ownerLastHurt.lock(), false);
} }

View file

@ -8,7 +8,7 @@ class OwnerHurtTargetGoal : public TargetGoal
{ {
private: private:
TamableAnimal *tameAnimal; // Owner of this goal TamableAnimal *tameAnimal; // Owner of this goal
std::<Mob> ownerLastHurt; std::weak_ptr<Mob> ownerLastHurt;
public: public:
OwnerHurtTargetGoal(TamableAnimal *tameAnimal); OwnerHurtTargetGoal(TamableAnimal *tameAnimal);

View file

@ -11,7 +11,7 @@
PlayGoal::PlayGoal(Villager *mob, float speed) PlayGoal::PlayGoal(Villager *mob, float speed)
{ {
followFriend = std::<Mob>(); followFriend = std::weak_ptr<Mob>();
wantedX = wantedY = wantedZ = 0.0; wantedX = wantedY = wantedZ = 0.0;
playTime = 0; playTime = 0;
@ -38,7 +38,7 @@ bool PlayGoal::canUse()
double distSqr = friendV->distanceToSqr(mob->shared_from_this()); double distSqr = friendV->distanceToSqr(mob->shared_from_this());
if (distSqr > closestDistSqr) continue; if (distSqr > closestDistSqr) continue;
closestDistSqr = distSqr; closestDistSqr = distSqr;
followFriend = std::<Mob>(friendV); followFriend = std::weak_ptr<Mob>(friendV);
} }
delete children; delete children;
@ -64,7 +64,7 @@ void PlayGoal::start()
void PlayGoal::stop() void PlayGoal::stop()
{ {
mob->setChasing(false); mob->setChasing(false);
followFriend = std::<Mob>(); followFriend = std::weak_ptr<Mob>();
} }
void PlayGoal::tick() void PlayGoal::tick()

View file

@ -6,7 +6,7 @@ class PlayGoal : public Goal
{ {
private: private:
Villager *mob; Villager *mob;
std::<Mob> followFriend; std::weak_ptr<Mob> followFriend;
float speed; float speed;
double wantedX, wantedY, wantedZ; double wantedX, wantedY, wantedZ;
int playTime; int playTime;

View file

@ -39,7 +39,7 @@ void RestrictOpenDoorGoal::stop()
{ {
mob->getNavigation()->setCanOpenDoors(true); mob->getNavigation()->setCanOpenDoors(true);
mob->getNavigation()->setCanPassDoors(true); mob->getNavigation()->setCanPassDoors(true);
doorInfo = std::<DoorInfo>(); doorInfo = std::weak_ptr<DoorInfo>();
} }
void RestrictOpenDoorGoal::tick() void RestrictOpenDoorGoal::tick()

View file

@ -9,7 +9,7 @@ class RestrictOpenDoorGoal : public Goal
{ {
private: private:
PathfinderMob *mob; PathfinderMob *mob;
std::<DoorInfo> doorInfo; std::weak_ptr<DoorInfo> doorInfo;
public: public:
RestrictOpenDoorGoal(PathfinderMob *mob); RestrictOpenDoorGoal(PathfinderMob *mob);

View file

@ -7,7 +7,7 @@
SwellGoal::SwellGoal(Creeper *creeper) SwellGoal::SwellGoal(Creeper *creeper)
{ {
target = std::<Mob>(); target = std::weak_ptr<Mob>();
this->creeper = creeper; this->creeper = creeper;
setRequiredControlFlags(Control::MoveControlFlag); setRequiredControlFlags(Control::MoveControlFlag);
@ -22,12 +22,12 @@ bool SwellGoal::canUse()
void SwellGoal::start() void SwellGoal::start()
{ {
creeper->getNavigation()->stop(); creeper->getNavigation()->stop();
target = std::<Mob>(creeper->getTarget()); target = std::weak_ptr<Mob>(creeper->getTarget());
} }
void SwellGoal::stop() void SwellGoal::stop()
{ {
target = std::<Mob>(); target = std::weak_ptr<Mob>();
} }
void SwellGoal::tick() void SwellGoal::tick()

View file

@ -8,7 +8,7 @@ class SwellGoal : public Goal
{ {
private: private:
Creeper *creeper; Creeper *creeper;
std::<Mob> target; std::weak_ptr<Mob> target;
public: public:
SwellGoal(Creeper *creeper); SwellGoal(Creeper *creeper);

View file

@ -12,7 +12,7 @@ TakeFlowerGoal::TakeFlowerGoal(Villager *villager)
{ {
takeFlower = false; takeFlower = false;
pickupTick = 0; pickupTick = 0;
golem = std::<VillagerGolem>(); golem = std::weak_ptr<VillagerGolem>();
this->villager = villager; this->villager = villager;
setRequiredControlFlags(Control::MoveControlFlag | Control::LookControlFlag); setRequiredControlFlags(Control::MoveControlFlag | Control::LookControlFlag);
@ -36,7 +36,7 @@ bool TakeFlowerGoal::canUse()
std::shared_ptr<VillagerGolem> vg = dynamic_pointer_cast<VillagerGolem>(*it); std::shared_ptr<VillagerGolem> vg = dynamic_pointer_cast<VillagerGolem>(*it);
if (vg->getOfferFlowerTick() > 0) if (vg->getOfferFlowerTick() > 0)
{ {
golem = std::<VillagerGolem>(vg); golem = std::weak_ptr<VillagerGolem>(vg);
break; break;
} }
} }
@ -58,7 +58,7 @@ void TakeFlowerGoal::start()
void TakeFlowerGoal::stop() void TakeFlowerGoal::stop()
{ {
golem = std::<VillagerGolem>(); golem = std::weak_ptr<VillagerGolem>();
villager->getNavigation()->stop(); villager->getNavigation()->stop();
} }

View file

@ -6,7 +6,7 @@ class TakeFlowerGoal : public Goal
{ {
private: private:
Villager *villager; Villager *villager;
std::<VillagerGolem> golem; std::weak_ptr<VillagerGolem> golem;
int pickupTick; int pickupTick;
bool takeFlower; bool takeFlower;

View file

@ -9,7 +9,7 @@
TemptGoal::TemptGoal(PathfinderMob *mob, float speed, int itemId, bool canScare) TemptGoal::TemptGoal(PathfinderMob *mob, float speed, int itemId, bool canScare)
{ {
px = py = pz = pRotX = pRotY = 0.0; px = py = pz = pRotX = pRotY = 0.0;
player = std::<Player>(); player = std::weak_ptr<Player>();
calmDown = 0; calmDown = 0;
_isRunning = false; _isRunning = false;
oldAvoidWater = false; oldAvoidWater = false;
@ -28,7 +28,7 @@ bool TemptGoal::canUse()
--calmDown; --calmDown;
return false; return false;
} }
player = std::<Player>(mob->level->getNearestPlayer(mob->shared_from_this(), 10)); player = std::weak_ptr<Player>(mob->level->getNearestPlayer(mob->shared_from_this(), 10));
if (player.lock() == NULL) return false; if (player.lock() == NULL) return false;
mob->setDespawnProtected(); // If we've got a nearby player, then consider this mob as something we'd miss if it despawned mob->setDespawnProtected(); // If we've got a nearby player, then consider this mob as something we'd miss if it despawned
std::shared_ptr<ItemInstance> item = player.lock()->getSelectedItem(); std::shared_ptr<ItemInstance> item = player.lock()->getSelectedItem();
@ -71,7 +71,7 @@ void TemptGoal::start()
void TemptGoal::stop() void TemptGoal::stop()
{ {
player = std::<Player>(); player = std::weak_ptr<Player>();
mob->getNavigation()->stop(); mob->getNavigation()->stop();
calmDown = 100; calmDown = 100;
_isRunning = false; _isRunning = false;

View file

@ -8,7 +8,7 @@ private:
PathfinderMob *mob; PathfinderMob *mob;
float speed; float speed;
double px, py, pz, pRotX, pRotY; double px, py, pz, pRotX, pRotY;
std::<Player> player; std::weak_ptr<Player> player;
int calmDown ; int calmDown ;
bool _isRunning; bool _isRunning;
int itemId; int itemId;

View file

@ -158,10 +158,10 @@ void ChestTileEntity::checkNeighbors()
if (hasCheckedNeighbors) return; if (hasCheckedNeighbors) return;
hasCheckedNeighbors = true; hasCheckedNeighbors = true;
n = std::<ChestTileEntity>(); n = std::weak_ptr<ChestTileEntity>();
e = std::<ChestTileEntity>(); e = std::weak_ptr<ChestTileEntity>();
w = std::<ChestTileEntity>(); w = std::weak_ptr<ChestTileEntity>();
s = std::<ChestTileEntity>(); s = std::weak_ptr<ChestTileEntity>();
if (level->getTile(x - 1, y, z) == Tile::chest_Id) if (level->getTile(x - 1, y, z) == Tile::chest_Id)
{ {

View file

@ -28,10 +28,10 @@ private:
public: public:
bool isBonusChest; // 4J added bool isBonusChest; // 4J added
bool hasCheckedNeighbors; bool hasCheckedNeighbors;
std::<ChestTileEntity> n; std::weak_ptr<ChestTileEntity> n;
std::<ChestTileEntity> e; std::weak_ptr<ChestTileEntity> e;
std::<ChestTileEntity> w; std::weak_ptr<ChestTileEntity> w;
std::<ChestTileEntity> s; std::weak_ptr<ChestTileEntity> s;
float openness, oOpenness; float openness, oOpenness;
int openCount; int openCount;

View file

@ -257,7 +257,7 @@ void Entity::_init(bool useSmallId)
viewScale = 1.0; viewScale = 1.0;
blocksBuilding = false; blocksBuilding = false;
rider = std::<Entity>(); rider = std::weak_ptr<Entity>();
riding = nullptr; riding = nullptr;
//level = NULL; // Level is assigned to in the original c_tor code //level = NULL; // Level is assigned to in the original c_tor code
@ -1571,14 +1571,14 @@ void Entity::ride(std::shared_ptr<Entity> e)
{ {
// 4J Stu - Position should already be updated before the SetRidingPacket comes in // 4J Stu - Position should already be updated before the SetRidingPacket comes in
if(!level->isClientSide) moveTo(riding->x, riding->bb->y0 + riding->bbHeight, riding->z, yRot, xRot); if(!level->isClientSide) moveTo(riding->x, riding->bb->y0 + riding->bbHeight, riding->z, yRot, xRot);
riding->rider = std::<Entity>(); riding->rider = std::weak_ptr<Entity>();
} }
riding = nullptr; riding = nullptr;
return; return;
} }
if (riding != NULL) if (riding != NULL)
{ {
riding->rider = std::<Entity>(); riding->rider = std::weak_ptr<Entity>();
} }
riding = e; riding = e;
e->rider = shared_from_this(); e->rider = shared_from_this();

View file

@ -52,7 +52,7 @@ public:
double viewScale; double viewScale;
bool blocksBuilding; bool blocksBuilding;
std::<Entity> rider; // Changed to weak to avoid circular dependency between rider/riding entity std::weak_ptr<Entity> rider; // Changed to weak to avoid circular dependency between rider/riding entity
std::shared_ptr<Entity> riding; std::shared_ptr<Entity> riding;
Level *level; Level *level;

View file

@ -13,7 +13,7 @@ private:
// int inLove; // 4J removed - now synched data // int inLove; // 4J removed - now synched data
int loveTime; int loveTime;
std::<Player> loveCause; std::weak_ptr<Player> loveCause;
public: public:
Animal(Level *level); Animal(Level *level);

View file

@ -434,7 +434,7 @@ void Boat::tick()
if (rider.lock() != NULL) if (rider.lock() != NULL)
{ {
if (rider.lock()->removed) rider = std::<Entity>(); if (rider.lock()->removed) rider = std::weak_ptr<Entity>();
} }
} }

View file

@ -696,7 +696,7 @@ void Minecart::tick()
{ {
rider.lock()->riding = nullptr; rider.lock()->riding = nullptr;
} }
rider = std::<Entity>(); rider = std::weak_ptr<Entity>();
} }
} }

View file

@ -36,9 +36,9 @@ void Villager::_init(int profession)
villageUpdateInterval = 0; villageUpdateInterval = 0;
inLove = false; inLove = false;
chasing = false; chasing = false;
village = std::<Village>(); village = std::weak_ptr<Village>();
tradingPlayer = std::<Player>(); tradingPlayer = std::weak_ptr<Player>();
offers = NULL; offers = NULL;
updateMerchantTimer = 0; updateMerchantTimer = 0;
addRecipeOnUpdate = false; addRecipeOnUpdate = false;
@ -341,7 +341,7 @@ void Villager::die(DamageSource *source)
void Villager::setTradingPlayer(std::shared_ptr<Player> player) void Villager::setTradingPlayer(std::shared_ptr<Player> player)
{ {
tradingPlayer = std::<Player>(player); tradingPlayer = std::weak_ptr<Player>(player);
} }
std::shared_ptr<Player> Villager::getTradingPlayer() std::shared_ptr<Player> Villager::getTradingPlayer()

View file

@ -32,9 +32,9 @@ private:
bool inLove; bool inLove;
bool chasing; bool chasing;
std::<Village> village; std::weak_ptr<Village> village;
std::<Player> tradingPlayer; std::weak_ptr<Player> tradingPlayer;
MerchantRecipeList *offers; MerchantRecipeList *offers;
int updateMerchantTimer; int updateMerchantTimer;
bool addRecipeOnUpdate; bool addRecipeOnUpdate;

View file

@ -28,7 +28,7 @@ VillagerGolem::VillagerGolem(Level *level) : Golem(level)
health = getMaxHealth(); health = getMaxHealth();
villageUpdateInterval = 0; villageUpdateInterval = 0;
village = std::<Village>(); village = std::weak_ptr<Village>();
attackAnimationTick = 0; attackAnimationTick = 0;
offerFlowerTick = 0; offerFlowerTick = 0;

View file

@ -16,7 +16,7 @@ protected:
private: private:
int villageUpdateInterval; int villageUpdateInterval;
std::<Village> village; std::weak_ptr<Village> village;
int attackAnimationTick; int attackAnimationTick;
int offerFlowerTick; int offerFlowerTick;

View file

@ -11,7 +11,7 @@ VillageSiege::VillageSiege(Level *level)
siegeState = SIEGE_NOT_INITED; siegeState = SIEGE_NOT_INITED;
siegeCount = 0; siegeCount = 0;
nextSpawnTime = 0; nextSpawnTime = 0;
village = std::<Village>(); village = std::weak_ptr<Village>();
spawnX = spawnY = spawnZ = 0; spawnX = spawnY = spawnZ = 0;
this->level = level; this->level = level;

View file

@ -8,7 +8,7 @@ private:
int siegeState; int siegeState;
int siegeCount; int siegeCount;
int nextSpawnTime; int nextSpawnTime;
std::<Village> village; std::weak_ptr<Village> village;
int spawnX, spawnY, spawnZ; int spawnX, spawnY, spawnZ;
static const int SIEGE_NOT_INITED = -1; static const int SIEGE_NOT_INITED = -1;

View file

@ -2273,7 +2273,7 @@ void Level::tickEntities()
{ {
if (e->riding->removed || e->riding->rider.lock() != e) if (e->riding->removed || e->riding->rider.lock() != e)
{ {
e->riding->rider = std::<Entity>(); e->riding->rider = std::weak_ptr<Entity>();
e->riding = nullptr; e->riding = nullptr;
} }
else else
@ -2521,7 +2521,7 @@ void Level::tick(std::shared_ptr<Entity> e, bool actual)
if (e->rider.lock()->removed || e->rider.lock()->riding != e) if (e->rider.lock()->removed || e->rider.lock()->riding != e)
{ {
e->rider.lock()->riding = nullptr; e->rider.lock()->riding = nullptr;
e->rider = std::<Entity>(); e->rider = std::weak_ptr<Entity>();
} }
else else
{ {

View file

@ -603,7 +603,7 @@ void Player::ride(std::shared_ptr<Entity> e)
if (riding != NULL) if (riding != NULL)
{ {
riding->rider = std::<Entity>(); riding->rider = std::weak_ptr<Entity>();
} }
riding = nullptr; riding = nullptr;