the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at master 109 lines 2.9 kB view raw
1#pragma once 2 3#include "Monster.h" 4#include "RangedAttackMob.h" 5#include "BossMob.h" 6 7class LivingEntitySelector : public EntitySelector 8{ 9public: 10 virtual bool matches(shared_ptr<Entity> entity) const; 11}; 12 13class WitherBoss : public Monster, public RangedAttackMob, public BossMob 14{ 15public: 16 eINSTANCEOF GetType() { return eTYPE_WITHERBOSS; }; 17 static Entity *create(Level *level) { return new WitherBoss(level); } 18 19private: 20 static const int DATA_TARGET_A = 17; 21 static const int DATA_TARGET_B = 18; 22 static const int DATA_TARGET_C = 19; 23 static const int DATA_ID_INV = 20; 24 25private: 26 static const int IDLE_HEAD_UPDATES_SIZE = 2; 27 float xRotHeads[2]; 28 float yRotHeads[2]; 29 float xRotOHeads[2]; 30 float yRotOHeads[2]; 31 int nextHeadUpdate[2]; 32 int idleHeadUpdates[IDLE_HEAD_UPDATES_SIZE]; 33 int destroyBlocksTick; 34 35 static EntitySelector *livingEntitySelector; 36 37public: 38 WitherBoss(Level *level); 39 40protected: 41 virtual void defineSynchedData(); 42 43public: 44 virtual void addAdditonalSaveData(CompoundTag *entityTag); 45 virtual void readAdditionalSaveData(CompoundTag *tag); 46 virtual float getShadowHeightOffs(); 47 48protected: 49 virtual int getAmbientSound(); 50 virtual int getHurtSound(); 51 virtual int getDeathSound(); 52 53public: 54 virtual void aiStep(); 55 56protected: 57 virtual void newServerAiStep(); 58 59public: 60 virtual void makeInvulnerable(); 61 virtual void makeStuckInWeb(); 62 virtual int getArmorValue(); 63 64private: 65 virtual double getHeadX(int index); 66 virtual double getHeadY(int index); 67 virtual double getHeadZ(int index); 68 virtual float rotlerp(float a, float b, float max); 69 virtual void performRangedAttack(int head, shared_ptr<LivingEntity> target); 70 virtual void performRangedAttack(int head, double tx, double ty, double tz, bool dangerous); 71 72public: 73 virtual void performRangedAttack(shared_ptr<LivingEntity> target, float power); 74 virtual bool hurt(DamageSource *source, float dmg); 75 76protected: 77 virtual void dropDeathLoot(bool wasKilledByPlayer, int playerBonusLevel); 78 virtual void checkDespawn(); 79 80public: 81 virtual int getLightColor(float a); 82 virtual bool isPickable(); 83 84protected: 85 virtual void causeFallDamage(float distance); 86 87public: 88 virtual void addEffect(MobEffectInstance *newEffect); 89 90protected: 91 virtual bool useNewAi(); 92 virtual void registerAttributes(); 93 94public: 95 virtual float getHeadYRot(int i); 96 virtual float getHeadXRot(int i); 97 virtual int getInvulnerableTicks(); 98 virtual void setInvulnerableTicks(int invulnerableTicks); 99 virtual int getAlternativeTarget(int headIndex); 100 virtual void setAlternativeTarget(int headIndex, int entityId); 101 virtual bool isPowered(); 102 virtual MobType getMobType(); 103 virtual void ride(shared_ptr<Entity> e); 104 105 // 4J Stu - These are required for the BossMob interface 106 virtual float getMaxHealth() { return Monster::getMaxHealth(); }; 107 virtual float getHealth() { return Monster::getHealth(); }; 108 virtual wstring getAName() { return app.GetString(IDS_WITHER); }; 109};