the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#include "stdafx.h"
2#include "net.minecraft.world.entity.h"
3#include "net.minecraft.world.entity.animal.h"
4#include "OwnerHurtByTargetGoal.h"
5
6OwnerHurtByTargetGoal::OwnerHurtByTargetGoal(TamableAnimal *tameAnimal) : TargetGoal(tameAnimal, 32, false)
7{
8 this->tameAnimal = tameAnimal;
9 timestamp = 0;
10 setRequiredControlFlags(TargetGoal::TargetFlag);
11}
12
13bool OwnerHurtByTargetGoal::canUse()
14{
15 if (!tameAnimal->isTame()) return false;
16 shared_ptr<LivingEntity> owner = dynamic_pointer_cast<LivingEntity>( tameAnimal->getOwner() );
17 if (owner == NULL) return false;
18 ownerLastHurtBy = weak_ptr<LivingEntity>(owner->getLastHurtByMob());
19 int ts = owner->getLastHurtByMobTimestamp();
20
21 shared_ptr<LivingEntity> locked = ownerLastHurtBy.lock();
22 return ts != timestamp && canAttack(locked, false) && tameAnimal->wantsToAttack(locked, owner);
23}
24
25void OwnerHurtByTargetGoal::start()
26{
27 mob->setTarget(ownerLastHurtBy.lock());
28
29 shared_ptr<LivingEntity> owner = dynamic_pointer_cast<LivingEntity>( tameAnimal->getOwner() );
30 if (owner != NULL)
31 {
32 timestamp = owner->getLastHurtByMobTimestamp();
33 }
34
35 TargetGoal::start();
36}