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 "WeighedRandom.h"
4
5class BaseMobSpawner
6{
7public:
8 class SpawnData : public WeighedRandomItem
9 {
10 public:
11 CompoundTag *tag;
12 wstring type;
13
14 SpawnData(CompoundTag *base);
15 SpawnData(CompoundTag *tag, wstring type);
16 ~SpawnData();
17
18 virtual CompoundTag *save();
19 };
20
21private:
22 static const int EVENT_SPAWN = 1;
23
24public:
25 int spawnDelay;
26
27private:
28 wstring entityId;
29 vector<SpawnData *> *spawnPotentials;
30 SpawnData *nextSpawnData;
31
32public:
33 double spin, oSpin;
34
35private:
36 int minSpawnDelay;
37 int maxSpawnDelay;
38 int spawnCount;
39 shared_ptr<Entity> displayEntity;
40 int maxNearbyEntities;
41 int requiredPlayerRange;
42 int spawnRange;
43
44public:
45 BaseMobSpawner();
46 ~BaseMobSpawner();
47
48 virtual wstring getEntityId();
49 virtual void setEntityId(const wstring &entityId);
50 virtual bool isNearPlayer();
51 virtual void tick();
52 virtual shared_ptr<Entity> loadDataAndAddEntity(shared_ptr<Entity> entity);
53
54private:
55 virtual void delay();
56
57public:
58 virtual void load(CompoundTag *tag);
59 virtual void save(CompoundTag *tag);
60 virtual shared_ptr<Entity> getDisplayEntity();
61 virtual bool onEventTriggered(int id);
62 virtual SpawnData *getNextSpawnData();
63 virtual void setNextSpawnData(SpawnData *nextSpawnData);
64
65 virtual void broadcastEvent(int id) = 0;
66 virtual Level *getLevel() = 0;
67 virtual int getX() = 0;
68 virtual int getY() = 0;
69 virtual int getZ() = 0;
70};