the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 68 lines 1.8 kB view raw
1#include "stdafx.h" 2#include "net.minecraft.world.entity.h" 3#include "net.minecraft.world.entity.ai.control.h" 4#include "net.minecraft.world.level.h" 5#include "net.minecraft.world.phys.h" 6#include "LookAtPlayerGoal.h" 7 8LookAtPlayerGoal::LookAtPlayerGoal(Mob *mob, const type_info& lookAtType, float lookDistance) : lookAtType(lookAtType) 9{ 10 this->mob = mob; 11 this->lookDistance = lookDistance; 12 probability = 0.02f; 13 setRequiredControlFlags(Control::LookControlFlag); 14 15 lookTime = 0; 16} 17 18LookAtPlayerGoal::LookAtPlayerGoal(Mob *mob, const type_info& lookAtType, float lookDistance, float probability) : lookAtType(lookAtType) 19{ 20 this->mob = mob; 21 this->lookDistance = lookDistance; 22 this->probability = probability; 23 setRequiredControlFlags(Control::LookControlFlag); 24 25 lookTime = 0; 26} 27 28bool LookAtPlayerGoal::canUse() 29{ 30 if (mob->getRandom()->nextFloat() >= probability) return false; 31 32 if (mob->getTarget() != NULL) 33 { 34 lookAt = mob->getTarget(); 35 } 36 if (lookAtType == typeid(Player)) 37 { 38 lookAt = mob->level->getNearestPlayer(mob->shared_from_this(), lookDistance); 39 } 40 else 41 { 42 lookAt = weak_ptr<Entity>(mob->level->getClosestEntityOfClass(lookAtType, mob->bb->grow(lookDistance, 3, lookDistance), mob->shared_from_this())); 43 } 44 return lookAt.lock() != NULL; 45} 46 47bool LookAtPlayerGoal::canContinueToUse() 48{ 49 if (lookAt.lock() == NULL || !lookAt.lock()->isAlive()) return false; 50 if (mob->distanceToSqr(lookAt.lock()) > lookDistance * lookDistance) return false; 51 return lookTime > 0; 52} 53 54void LookAtPlayerGoal::start() 55{ 56 lookTime = 40 + mob->getRandom()->nextInt(40); 57} 58 59void LookAtPlayerGoal::stop() 60{ 61 lookAt = weak_ptr<Entity>(); 62} 63 64void LookAtPlayerGoal::tick() 65{ 66 mob->getLookControl()->setLookAt(lookAt.lock()->x, lookAt.lock()->y + lookAt.lock()->getHeadHeight(), lookAt.lock()->z, 10, mob->getMaxHeadXRot()); 67 --lookTime; 68}