diff options
Diffstat (limited to 'Minecraft.World/TamableAnimal.cpp')
| -rw-r--r-- | Minecraft.World/TamableAnimal.cpp | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/Minecraft.World/TamableAnimal.cpp b/Minecraft.World/TamableAnimal.cpp index b065d7bd..2a3ea037 100644 --- a/Minecraft.World/TamableAnimal.cpp +++ b/Minecraft.World/TamableAnimal.cpp @@ -68,6 +68,7 @@ void TamableAnimal::readAdditionalSaveData(CompoundTag *tag) setTame(true); } sitGoal->wantToSit(tag->getBoolean(L"Sitting")); + setSitting(tag->getBoolean(L"Sitting")); } void TamableAnimal::spawnTamingParticles(bool success) @@ -148,7 +149,7 @@ void TamableAnimal::setOwnerUUID(const wstring &name) entityData->set(DATA_OWNERUUID_ID, name); } -shared_ptr<Mob> TamableAnimal::getOwner() +shared_ptr<Entity> TamableAnimal::getOwner() { return level->getPlayerByUUID(getOwnerUUID()); } @@ -156,4 +157,39 @@ shared_ptr<Mob> TamableAnimal::getOwner() SitGoal *TamableAnimal::getSitGoal() { return sitGoal; +} + +bool TamableAnimal::wantsToAttack(shared_ptr<LivingEntity> target, shared_ptr<LivingEntity> owner) +{ + return true; +} + +Team *TamableAnimal::getTeam() +{ + if (isTame()) + { + shared_ptr<LivingEntity> owner = dynamic_pointer_cast<LivingEntity>(getOwner()); + if (owner != NULL) + { + return owner->getTeam(); + } + } + return Animal::getTeam(); +} + +bool TamableAnimal::isAlliedTo(shared_ptr<LivingEntity> other) +{ + if (isTame()) + { + shared_ptr<LivingEntity> owner = dynamic_pointer_cast<LivingEntity>(getOwner()); + if (other == owner) + { + return true; + } + if (owner != NULL) + { + return owner->isAlliedTo(other); + } + } + return Animal::isAlliedTo(other); }
\ No newline at end of file |
