the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
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};