diff options
| author | qwasdrizzel <145519042+qwasdrizzel@users.noreply.github.com> | 2026-03-05 17:17:45 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-05 17:17:45 -0600 |
| commit | 0666959d312dc74903f55d1071488a90239330f1 (patch) | |
| tree | 5c6886f7ec65a7828bc6e34a469514e418bcf78b /Minecraft.World/TakeFlowerGoal.cpp | |
| parent | 9370cbc7d878df1615d8ce76bc459e8b414d0f19 (diff) | |
| parent | eed770b121aa4ce38f002db042d0137c24c6d344 (diff) | |
Merge branch 'smartcmd:main' into main
Diffstat (limited to 'Minecraft.World/TakeFlowerGoal.cpp')
| -rw-r--r-- | Minecraft.World/TakeFlowerGoal.cpp | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/Minecraft.World/TakeFlowerGoal.cpp b/Minecraft.World/TakeFlowerGoal.cpp index feb87093..48db34d3 100644 --- a/Minecraft.World/TakeFlowerGoal.cpp +++ b/Minecraft.World/TakeFlowerGoal.cpp @@ -24,24 +24,31 @@ bool TakeFlowerGoal::canUse() if (!villager->level->isDay()) return false; vector<shared_ptr<Entity> > *golems = villager->level->getEntitiesOfClass(typeid(VillagerGolem), villager->bb->grow(6, 2, 6)); - if (golems->size() == 0) + if ( golems == nullptr ) + return false; + + if ( golems->size() == 0) { delete golems; return false; } - //for (Entity e : golems) - for(AUTO_VAR(it,golems->begin()); it != golems->end(); ++it) - { - shared_ptr<VillagerGolem> vg = dynamic_pointer_cast<VillagerGolem>(*it); - if (vg->getOfferFlowerTick() > 0) + for (auto entity : *golems ) + { + if ( entity == nullptr ) + continue; + + // safe to call std::static_pointer_cast because of getEntitiesOfClass(typeid(VillagerGolem), ...) makes sure we do not have entities of any other type. + auto vg = std::static_pointer_cast<VillagerGolem>(entity); + if ( vg && vg->getOfferFlowerTick() > 0) { - golem = weak_ptr<VillagerGolem>(vg); - break; + golem = vg; + delete golems; + return true; } } delete golems; - return golem.lock() != NULL; + return false; } bool TakeFlowerGoal::canContinueToUse() |
