the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 36 lines 1.1 kB view raw
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}