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 "Stat.h"
4#include "Stats.h"
5
6//#include "DamageSource.h"
7
8//#include "..\Minecraft.Client\Common\Console_Awards_enum.h"
9
10/**
11 4J-JEV:
12 Java version exposed the static instance of each stat.
13
14 This was inconvient for me as I needed to structure the stats/achievements differently
15 on Durango.
16
17 Using getters like this means we can use different Stats easilly on different
18 platforms and still have a convenient identifier to use to award them.
19*/
20class GenericStats
21{
22private: // Static instance.
23 static GenericStats *instance;
24
25public:
26 static void setInstance(GenericStats *newInstance) { instance = newInstance; }
27 static GenericStats *getInstance() { return instance; }
28
29 // For retrieving a stat from an id.
30 virtual Stat *get_stat(int i) = 0;
31 static Stat *stat(int i) { return instance->get_stat(i); }
32
33 // STATS - STATIC //
34
35 static Stat* walkOneM() { return instance->get_walkOneM(); }
36 static Stat* swimOneM() { return instance->get_swimOneM(); }
37 static Stat* fallOneM() { return instance->get_fallOneM(); }
38 static Stat* climbOneM() { return instance->get_climbOneM(); }
39 static Stat* minecartOneM() { return instance->get_minecartOneM(); }
40 static Stat* boatOneM() { return instance->get_boatOneM(); }
41 static Stat* pigOneM() { return instance->get_pigOneM(); }
42 static Stat* portalsCreated() { return instance->get_portalsCreated(); }
43 static Stat* cowsMilked() { return instance->get_cowsMilked(); }
44 static Stat* netherLavaCollected() { return instance->get_netherLavaCollected(); }
45
46 static Stat* killMob() { return instance->get_killMob(); }
47
48 static Stat* killsZombie() { return instance->get_killsZombie(); }
49 static Stat* killsSkeleton() { return instance->get_killsSkeleton(); }
50 static Stat* killsCreeper() { return instance->get_killsCreeper(); }
51 static Stat* killsSpider() { return instance->get_killsSpider(); }
52 static Stat* killsSpiderJockey() { return instance->get_killsSpiderJockey(); }
53 static Stat* killsZombiePigman() { return instance->get_killsZombiePigman(); }
54 static Stat* killsSlime() { return instance->get_killsSlime(); }
55 static Stat* killsGhast() { return instance->get_killsGhast(); }
56 static Stat* killsNetherZombiePigman() { return instance->get_killsNetherZombiePigman(); }
57
58 static Stat* breedEntity(eINSTANCEOF entityId) { return instance->get_breedEntity(entityId); }
59 static Stat* tamedEntity(eINSTANCEOF entityId) { return instance->get_tamedEntity(entityId); }
60 static Stat* curedEntity(eINSTANCEOF entityId) { return instance->get_curedEntity(entityId); }
61 static Stat* craftedEntity(eINSTANCEOF entityId) { return instance->get_craftedEntity(entityId); }
62 static Stat* shearedEntity(eINSTANCEOF entityId) { return instance->get_shearedEntity(entityId); }
63
64 static Stat* totalBlocksMined() { return instance->get_totalBlocksMined(); }
65 static Stat* timePlayed() { return instance->get_timePlayed(); }
66
67 static Stat* blocksPlaced(int blockId) { return instance->get_blocksPlaced(blockId); }
68 static Stat* blocksMined(int blockId) { return instance->get_blocksMined(blockId); }
69 static Stat* itemsCollected(int itemId, int itemAux) { return instance->get_itemsCollected(itemId, itemAux); }
70 static Stat* itemsCrafted(int itemId) { return instance->get_itemsCrafted(itemId); }
71 static Stat* itemsSmelted(int itemId) { return instance->get_itemsSmelted(itemId); } // 4J-JEV: Diffentiation needed, when only one type of event should be sent (eg iron smelting).
72 static Stat* itemsUsed(int itemId) { return instance->get_itemsUsed(itemId); }
73 static Stat* itemsBought(int itemId) { return instance->get_itemsBought(itemId); }
74
75 static Stat* killsEnderdragon() { return instance->get_killsEnderdragon(); }
76 static Stat* completeTheEnd() { return instance->get_completeTheEnd(); }
77
78 static Stat* changedDimension(int from, int to) { return instance->get_changedDimension(from,to); }
79 static Stat* enteredBiome(int biomeId) { return instance->get_enteredBiome(biomeId); }
80
81 // ACHIEVEMENTS - STATIC //
82
83 static Stat* achievement(eAward achievementId) { return instance->get_achievement(achievementId); }
84
85 static Stat* openInventory();
86 static Stat* mineWood();
87 static Stat* buildWorkbench();
88 static Stat* buildPickaxe();
89 static Stat* buildFurnace();
90 static Stat* acquireIron();
91 static Stat* buildHoe();
92 static Stat* makeBread();
93 static Stat* bakeCake();
94 static Stat* buildBetterPickaxe();
95 static Stat* cookFish();
96 static Stat* onARail();
97 static Stat* buildSword();
98 static Stat* killEnemy();
99 static Stat* killCow();
100 static Stat* flyPig();
101 static Stat* snipeSkeleton();
102 static Stat* diamonds();
103 static Stat* ghast();
104 static Stat* blazeRod();
105 static Stat* potion();
106 static Stat* theEnd();
107 static Stat* winGame();
108 static Stat* enchantments();
109 static Stat* overkill();
110 static Stat* bookcase();
111
112 static Stat* leaderOfThePack();
113 static Stat* MOARTools();
114 static Stat* dispenseWithThis();
115 static Stat* InToTheNether();
116
117 static Stat* socialPost();
118 static Stat* eatPorkChop();
119 static Stat* play100Days();
120 static Stat* arrowKillCreeper();
121 static Stat* mine100Blocks();
122 static Stat* kill10Creepers();
123
124 static Stat* adventuringTime(); // Requires new Stat
125 static Stat* repopulation();
126 static Stat* diamondsToYou(); // +Durango
127 static Stat* porkChop(); // Req Stat?
128 static Stat* passingTheTime(); // Req Stat
129 static Stat* archer();
130 static Stat* theHaggler(); // Req Stat
131 static Stat* potPlanter(); // Req Stat
132 static Stat* itsASign(); // Req Stat
133 static Stat* ironBelly();
134 static Stat* haveAShearfulDay();
135 static Stat* rainbowCollection(); // Requires new Stat
136 static Stat* stayinFrosty(); // +Durango
137 static Stat* chestfulOfCobblestone(); // +Durango
138 static Stat* renewableEnergy(); // +Durango
139 static Stat* musicToMyEars(); // +Durango
140 static Stat* bodyGuard();
141 static Stat* ironMan(); // +Durango
142 static Stat* zombieDoctor(); // +Durango
143 static Stat* lionTamer();
144
145 // STAT PARAMS - STATIC //
146
147 static byteArray param_walk(int distance);
148 static byteArray param_swim(int distance);
149 static byteArray param_fall(int distance);
150 static byteArray param_climb(int distance);
151 static byteArray param_minecart(int distance);
152 static byteArray param_boat(int distance);
153 static byteArray param_pig(int distance);
154
155 static byteArray param_cowsMilked();
156
157 static byteArray param_blocksPlaced(int id, int data, int count);
158 static byteArray param_blocksMined(int id, int data, int count);
159 static byteArray param_itemsCollected(int id, int aux, int count);
160 static byteArray param_itemsCrafted(int id, int aux, int count);
161 static byteArray param_itemsSmelted(int id, int aux, int cound);
162 static byteArray param_itemsUsed(shared_ptr<Player> plr, shared_ptr<ItemInstance> itm);
163 static byteArray param_itemsBought(int id, int aux, int count);
164
165 static byteArray param_mobKill(shared_ptr<Player> plr, shared_ptr<Mob> mob, DamageSource *dmgSrc);
166
167 static byteArray param_breedEntity(eINSTANCEOF mobType);
168 static byteArray param_tamedEntity(eINSTANCEOF mobType);
169 static byteArray param_curedEntity(eINSTANCEOF mobType);
170 static byteArray param_craftedEntity(eINSTANCEOF mobType);
171 static byteArray param_shearedEntity(eINSTANCEOF mobType);
172
173 static byteArray param_time(int timediff);
174
175 static byteArray param_changedDimension(int from, int to);
176 static byteArray param_enteredBiome(int biomeId);
177
178 //static byteArray param_achievement(eAward id);
179
180 //static byteArray param_ach_onARail();
181 //static byteArray param_overkill(int damage); //TODO
182 //static byteArray param_openInventory(int menuId);
183 //static byteArray param_chestfulOfCobblestone();
184 //static byteArray param_musicToMyEars(int recordId);
185
186 static byteArray param_noArgs();
187
188 // STATIC + VIRTUAL - ACHIEVEMENT - PARAMS //
189
190 static byteArray param_openInventory();
191 static byteArray param_mineWood();
192 static byteArray param_buildWorkbench();
193 static byteArray param_buildPickaxe();
194 static byteArray param_buildFurnace();
195 static byteArray param_acquireIron();
196 static byteArray param_buildHoe();
197 static byteArray param_makeBread();
198 static byteArray param_bakeCake();
199 static byteArray param_buildBetterPickaxe();
200 static byteArray param_cookFish();
201 static byteArray param_onARail(int distance);
202 static byteArray param_buildSword();
203 static byteArray param_killEnemy();
204 static byteArray param_killCow();
205 static byteArray param_flyPig();
206 static byteArray param_snipeSkeleton();
207 static byteArray param_diamonds();
208 static byteArray param_ghast();
209 static byteArray param_blazeRod();
210 static byteArray param_potion();
211 static byteArray param_theEnd();
212 static byteArray param_winGame();
213 static byteArray param_enchantments();
214 static byteArray param_overkill(int dmg);
215 static byteArray param_bookcase();
216
217 static byteArray param_leaderOfThePack();
218 static byteArray param_MOARTools();
219 static byteArray param_dispenseWithThis();
220 static byteArray param_InToTheNether();
221
222 static byteArray param_socialPost();
223 static byteArray param_eatPorkChop();
224 static byteArray param_play100Days();
225 static byteArray param_arrowKillCreeper();
226 static byteArray param_mine100Blocks();
227 static byteArray param_kill10Creepers();
228
229 static byteArray param_adventuringTime();
230 static byteArray param_repopulation();
231 static byteArray param_porkChop();
232 static byteArray param_diamondsToYou();
233 static byteArray param_passingTheTime();
234 static byteArray param_archer();
235 static byteArray param_theHaggler();
236 static byteArray param_potPlanter();
237 static byteArray param_itsASign();
238 static byteArray param_ironBelly();
239 static byteArray param_haveAShearfulDay();
240 static byteArray param_rainbowCollection();
241 static byteArray param_stayinFrosty();
242 static byteArray param_chestfulOfCobblestone(int cobbleStone);
243 static byteArray param_renewableEnergy();
244 static byteArray param_musicToMyEars(int recordId);
245 static byteArray param_bodyGuard();
246 static byteArray param_ironMan();
247 static byteArray param_zombieDoctor();
248 static byteArray param_lionTamer();
249
250protected:
251 // ACHIEVEMENTS - VIRTUAL //
252
253 virtual Stat* get_achievement(eAward achievementId);
254
255
256 // STATS - VIRTUAL //
257
258 virtual Stat* get_walkOneM();
259 virtual Stat* get_swimOneM();
260 virtual Stat* get_fallOneM();
261 virtual Stat* get_climbOneM();
262 virtual Stat* get_minecartOneM();
263 virtual Stat* get_boatOneM();
264 virtual Stat* get_pigOneM();
265 virtual Stat* get_portalsCreated();
266 virtual Stat* get_cowsMilked();
267 virtual Stat* get_netherLavaCollected();
268
269 virtual Stat* get_killMob();
270
271 virtual Stat* get_killsZombie();
272 virtual Stat* get_killsSkeleton();
273 virtual Stat* get_killsCreeper();
274 virtual Stat* get_killsSpider();
275 virtual Stat* get_killsSpiderJockey();
276 virtual Stat* get_killsZombiePigman();
277 virtual Stat* get_killsSlime();
278 virtual Stat* get_killsGhast();
279 virtual Stat* get_killsNetherZombiePigman();
280
281 virtual Stat* get_breedEntity(eINSTANCEOF entityId);
282 virtual Stat* get_tamedEntity(eINSTANCEOF entityId);
283 virtual Stat* get_curedEntity(eINSTANCEOF entityId);
284 virtual Stat* get_craftedEntity(eINSTANCEOF entityId);
285 virtual Stat* get_shearedEntity(eINSTANCEOF entityId);
286
287 virtual Stat* get_totalBlocksMined();
288 virtual Stat* get_timePlayed();
289
290 virtual Stat* get_blocksPlaced(int blockId);
291 virtual Stat* get_blocksMined(int blockId);
292 virtual Stat* get_itemsCollected(int itemId, int itemAux);
293 virtual Stat* get_itemsCrafted(int itemId);
294 virtual Stat* get_itemsSmelted(int itemId);
295 virtual Stat* get_itemsUsed(int itemId);
296 virtual Stat* get_itemsBought(int itemId);
297
298 virtual Stat* get_killsEnderdragon();
299 virtual Stat* get_completeTheEnd();
300
301 virtual Stat* get_changedDimension(int from, int to);
302 virtual Stat* get_enteredBiome(int biomeId);
303
304 // STAT PARAMS - VIRTUAL //
305
306 virtual byteArray getParam_walkOneM(int distance);
307 virtual byteArray getParam_swimOneM(int distance);
308 virtual byteArray getParam_fallOneM(int distance);
309 virtual byteArray getParam_climbOneM(int distance);
310 virtual byteArray getParam_minecartOneM(int distance);
311 virtual byteArray getParam_boatOneM(int distance);
312 virtual byteArray getParam_pigOneM(int distance);
313
314 virtual byteArray getParam_cowsMilked();
315
316 virtual byteArray getParam_blocksPlaced(int id, int data, int count);
317 virtual byteArray getParam_blocksMined(int id, int data, int count);
318 virtual byteArray getParam_itemsCollected(int id, int aux, int count);
319 virtual byteArray getParam_itemsCrafted(int id, int aux, int count);
320 virtual byteArray getParam_itemsSmelted(int id, int aux, int count);
321 virtual byteArray getParam_itemsUsed(shared_ptr<Player> plr, shared_ptr<ItemInstance> itm);
322 virtual byteArray getParam_itemsBought(int id, int aux, int count);
323
324 virtual byteArray getParam_mobKill(shared_ptr<Player> plr, shared_ptr<Mob> mob, DamageSource *dmgSrc);
325
326 virtual byteArray getParam_breedEntity(eINSTANCEOF entityId);
327 virtual byteArray getParam_tamedEntity(eINSTANCEOF entityId);
328 virtual byteArray getParam_curedEntity(eINSTANCEOF entityId);
329 virtual byteArray getParam_craftedEntity(eINSTANCEOF entityId);
330 virtual byteArray getParam_shearedEntity(eINSTANCEOF entityId);
331
332 virtual byteArray getParam_time(int timediff);
333
334 virtual byteArray getParam_changedDimension(int from, int to);
335 virtual byteArray getParam_enteredBiome(int biomeId);
336
337 virtual byteArray getParam_achievement(eAward id);
338
339 virtual byteArray getParam_onARail(int distance);
340 virtual byteArray getParam_overkill(int damage);
341 virtual byteArray getParam_openInventory(int menuId);
342 virtual byteArray getParam_chestfulOfCobblestone(int cobbleStone);
343 virtual byteArray getParam_musicToMyEars(int recordId);
344
345 virtual byteArray getParam_noArgs();
346};
347
348// Req Stats