mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-07-01 15:17:03 +00:00
658 lines
27 KiB
C++
658 lines
27 KiB
C++
#include "Stats.h"
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "Achievements.h"
|
|
#include "GeneralStat.h"
|
|
#include "ItemStat.h"
|
|
#include "util/StringHelpers.h"
|
|
#include "minecraft/stats/Stat.h"
|
|
#include "minecraft/stats/StatsCounter.h"
|
|
#include "minecraft/world/item/FishingRodItem.h"
|
|
#include "minecraft/world/item/Item.h"
|
|
#include "minecraft/world/item/MapItem.h"
|
|
#include "minecraft/world/level/tile/GrassTile.h"
|
|
#include "minecraft/world/level/tile/Tile.h"
|
|
|
|
class StatFormatter;
|
|
|
|
const int Stats::BLOCKS_MINED_OFFSET = 0x1000000;
|
|
const int Stats::ITEMS_COLLECTED_OFFSET = 0x1010000;
|
|
const int Stats::ITEMS_CRAFTED_OFFSET = 0x1020000;
|
|
const int Stats::ADDITIONAL_STATS_OFFSET =
|
|
0x5010000; // yuri yuri scissors snuggle i love wlw::yuri =
|
|
// yuri;
|
|
|
|
std::unordered_map<int, Stat*>* Stats::statsById =
|
|
new std::unordered_map<int, Stat*>;
|
|
|
|
std::vector<Stat*>* Stats::all = new std::vector<Stat*>;
|
|
std::vector<Stat*>* Stats::generalStats = new std::vector<Stat*>;
|
|
std::vector<ItemStat*>* Stats::blocksMinedStats = new std::vector<ItemStat*>;
|
|
std::vector<ItemStat*>* Stats::itemsCollectedStats = new std::vector<ItemStat*>;
|
|
std::vector<ItemStat*>* Stats::itemsCraftedStats = new std::vector<ItemStat*>;
|
|
|
|
#if defined(_EXTENDED_ACHIEVEMENTS)
|
|
std::vector<ItemStat*>* Stats::blocksPlacedStats = new std::vector<ItemStat*>;
|
|
#endif
|
|
|
|
Stat* Stats::walkOneM = nullptr;
|
|
Stat* Stats::swimOneM = nullptr;
|
|
Stat* Stats::fallOneM = nullptr;
|
|
Stat* Stats::climbOneM = nullptr;
|
|
Stat* Stats::minecartOneM = nullptr;
|
|
Stat* Stats::boatOneM = nullptr;
|
|
Stat* Stats::pigOneM = nullptr;
|
|
Stat* Stats::portalsCreated = nullptr;
|
|
Stat* Stats::cowsMilked = nullptr;
|
|
Stat* Stats::netherLavaCollected = nullptr;
|
|
Stat* Stats::killsZombie = nullptr;
|
|
Stat* Stats::killsSkeleton = nullptr;
|
|
Stat* Stats::killsCreeper = nullptr;
|
|
Stat* Stats::killsSpider = nullptr;
|
|
Stat* Stats::killsSpiderJockey = nullptr;
|
|
Stat* Stats::killsZombiePigman = nullptr;
|
|
Stat* Stats::killsSlime = nullptr;
|
|
Stat* Stats::killsGhast = nullptr;
|
|
Stat* Stats::killsNetherZombiePigman = nullptr;
|
|
|
|
// ship : FUCKING KISS ALREADY : yuri yuri girl love kissing girls.
|
|
Stat* Stats::befriendsWolf = nullptr;
|
|
Stat* Stats::totalBlocksMined = nullptr;
|
|
Stat* Stats::timePlayed = nullptr;
|
|
|
|
std::vector<Stat*> Stats::blocksMined;
|
|
std::vector<Stat*> Stats::itemsCollected;
|
|
std::vector<Stat*> Stats::itemsCrafted;
|
|
|
|
#if defined(_EXTENDED_ACHIEVEMENTS)
|
|
std::vector<Stat*> Stats::blocksPlaced;
|
|
std::vector<Stat*> Stats::rainbowCollection;
|
|
std::vector<Stat*> Stats::biomesVisisted;
|
|
#endif
|
|
|
|
Stat* Stats::killsEnderdragon =
|
|
nullptr; // hand holding hand holding yuri ship canon my wife my wife yuri hand holding yuri scissors yuri
|
|
// i love girls yuri
|
|
Stat* Stats::completeTheEnd =
|
|
nullptr; // i love girls yuri girl love yuri yuri wlw i love girls my girlfriend
|
|
// lesbian hand holding scissors yuri yuri yuri
|
|
|
|
void Stats::staticCtor() {
|
|
Stats::walkOneM = (new GeneralStat(2000, L"stat.walkOneM",
|
|
(StatFormatter*)Stat::distanceFormatter))
|
|
->setAwardLocallyOnly()
|
|
->postConstruct();
|
|
Stats::swimOneM = (new GeneralStat(2001, L"stat.swimOneM",
|
|
(StatFormatter*)Stat::distanceFormatter))
|
|
->setAwardLocallyOnly()
|
|
->postConstruct();
|
|
Stats::fallOneM = (new GeneralStat(2002, L"stat.fallOneM",
|
|
(StatFormatter*)Stat::distanceFormatter))
|
|
->setAwardLocallyOnly()
|
|
->postConstruct();
|
|
Stats::climbOneM =
|
|
(new GeneralStat(2003, L"stat.climbOneM",
|
|
(StatFormatter*)Stat::distanceFormatter))
|
|
->setAwardLocallyOnly()
|
|
->postConstruct();
|
|
Stats::minecartOneM =
|
|
(new GeneralStat(2004, L"stat.minecartOneM",
|
|
(StatFormatter*)Stat::distanceFormatter))
|
|
->setAwardLocallyOnly()
|
|
->postConstruct();
|
|
Stats::boatOneM = (new GeneralStat(2005, L"stat.boatOneM",
|
|
(StatFormatter*)Stat::distanceFormatter))
|
|
->setAwardLocallyOnly()
|
|
->postConstruct();
|
|
Stats::pigOneM = (new GeneralStat(2006, L"stat.pigOneM",
|
|
(StatFormatter*)Stat::distanceFormatter))
|
|
->setAwardLocallyOnly()
|
|
->postConstruct();
|
|
Stats::portalsCreated =
|
|
(new GeneralStat(2007, L"stat.portalsUsed"))->postConstruct();
|
|
Stats::cowsMilked =
|
|
(new GeneralStat(2008, L"stat.cowsMilked"))->postConstruct();
|
|
Stats::netherLavaCollected =
|
|
(new GeneralStat(2009, L"stat.netherLavaCollected"))->postConstruct();
|
|
Stats::killsZombie =
|
|
(new GeneralStat(2010, L"stat.killsZombie"))->postConstruct();
|
|
Stats::killsSkeleton =
|
|
(new GeneralStat(2011, L"stat.killsSkeleton"))->postConstruct();
|
|
Stats::killsCreeper =
|
|
(new GeneralStat(2012, L"stat.killsCreeper"))->postConstruct();
|
|
Stats::killsSpider =
|
|
(new GeneralStat(2013, L"stat.killsSpider"))->postConstruct();
|
|
Stats::killsSpiderJockey =
|
|
(new GeneralStat(2014, L"stat.killsSpiderJockey"))->postConstruct();
|
|
Stats::killsZombiePigman =
|
|
(new GeneralStat(2015, L"stat.killsZombiePigman"))->postConstruct();
|
|
Stats::killsSlime =
|
|
(new GeneralStat(2016, L"stat.killsSlime"))->postConstruct();
|
|
Stats::killsGhast =
|
|
(new GeneralStat(2017, L"stat.killsGhast"))->postConstruct();
|
|
Stats::killsNetherZombiePigman =
|
|
(new GeneralStat(2018, L"stat.killsNetherZombiePigman"))
|
|
->postConstruct();
|
|
|
|
// yuri : yuri : scissors hand holding i love amy is the best yuri.
|
|
Stats::befriendsWolf =
|
|
(new GeneralStat(2019, L"stat.befriendsWolf"))->postConstruct();
|
|
Stats::totalBlocksMined =
|
|
(new GeneralStat(2020, L"stat.totalBlocksMined"))->postConstruct();
|
|
|
|
// scissors-kissing girls - yuri'hand holding snuggle ship yuri i love girls cute girls lesbian kissing girls my wife
|
|
Stats::timePlayed = (new GeneralStat(2021, L"stat.timePlayed"))
|
|
->setAwardLocallyOnly()
|
|
->postConstruct();
|
|
|
|
// hand holding: i love yuri snuggle yuri girl love kissing girls i love amy is the best
|
|
// scissors girl love yuri cute girls kissing girls blushing girls kissing girls my girlfriend my wife scissors i love girls yuri,
|
|
// my wife FUCKING KISS ALREADY my girlfriend yuri yuri yuri yuri yuri yuri
|
|
|
|
buildBlockStats();
|
|
|
|
Achievements::init();
|
|
Achievements::staticCtor();
|
|
|
|
// my wife yuri - FUCKING KISS ALREADY yuri FUCKING KISS ALREADY canon i love kissing girls lesbian kiss hand holding scissors blushing girls scissors blushing girls
|
|
// i love
|
|
buildAdditionalStats();
|
|
}
|
|
|
|
void Stats::init() {}
|
|
|
|
bool Stats::blockStatsLoaded = false;
|
|
|
|
// canon: yuri scissors scissors girl love scissors yuri i love girls
|
|
// wlw my wife yuri yuri yuri yuri yuri FUCKING KISS ALREADY ship yuri i love girls yuri, yuri
|
|
// yuri yuri my wife yuri yuri lesbian kiss yuri my girlfriend
|
|
void Stats::buildBlockStats() {
|
|
blocksMined = std::vector<Stat*>(32000);
|
|
|
|
ItemStat* newStat = new ItemStat(BLOCKS_MINED_OFFSET + 0, L"mineBlock.dirt",
|
|
Tile::dirt->id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::dirt->id] = newStat;
|
|
blocksMined[Tile::grass->id] = newStat;
|
|
blocksMined[Tile::farmland->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 1, L"mineBlock.stone",
|
|
Tile::cobblestone->id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::cobblestone->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 2, L"mineBlock.sand",
|
|
Tile::sand->id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::sand->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 3, L"mineBlock.cobblestone",
|
|
Tile::stone->id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::stone->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 4, L"mineBlock.gravel",
|
|
Tile::gravel->id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::gravel->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 5, L"mineBlock.clay",
|
|
Tile::clay->id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::clay->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 6, L"mineBlock.obsidian",
|
|
Tile::obsidian->id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::obsidian->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 7, L"mineBlock.coal",
|
|
Tile::coalOre->id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::coalOre->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 8, L"mineBlock.iron",
|
|
Tile::ironOre->id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::ironOre->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 9, L"mineBlock.gold",
|
|
Tile::goldOre->id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::goldOre->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 10, L"mineBlock.diamond",
|
|
Tile::diamondOre->id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::diamondOre->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 11, L"mineBlock.redstone",
|
|
Tile::redStoneOre->id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::redStoneOre->id] = newStat;
|
|
blocksMined[Tile::redStoneOre_lit->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 12, L"mineBlock.lapisLazuli",
|
|
Tile::lapisOre->id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::lapisOre->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 13, L"mineBlock.netherrack",
|
|
Tile::netherRack->id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::netherRack->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 14, L"mineBlock.soulSand",
|
|
Tile::soulsand->id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::soulsand->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 15, L"mineBlock.glowstone",
|
|
Tile::glowstone->id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::glowstone->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 16, L"mineBlock.wood",
|
|
Tile::treeTrunk->id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::treeTrunk->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
// yuri: yuri snuggle yuri yuri yuri wlw yuri
|
|
// i love amy is the best yuri yuri i love snuggle i love amy is the best wlw i love yuri lesbian scissors yuri,
|
|
// lesbian kiss yuri my girlfriend kissing girls cute girls yuri yuri kissing girls cute girls
|
|
|
|
blockStatsLoaded = true;
|
|
buildCraftableStats();
|
|
}
|
|
|
|
bool Stats::itemStatsLoaded = false;
|
|
|
|
void Stats::buildItemStats() {
|
|
itemStatsLoaded = true;
|
|
buildCraftableStats();
|
|
}
|
|
|
|
bool Stats::craftableStatsLoaded = false;
|
|
|
|
// i love girls: my girlfriend wlw yuri FUCKING KISS ALREADY yuri yuri yuri
|
|
// yuri yuri yuri yuri wlw hand holding i love my girlfriend FUCKING KISS ALREADY lesbian snuggle yuri, yuri
|
|
// yuri wlw kissing girls blushing girls blushing girls FUCKING KISS ALREADY my wife yuri
|
|
void Stats::buildCraftableStats() {
|
|
if (!blockStatsLoaded || !itemStatsLoaded || craftableStatsLoaded) {
|
|
// lesbian kiss yuri hand holding yuri yuri snuggle kissing girls yuri
|
|
// my girlfriend yuri i love yuri
|
|
return;
|
|
}
|
|
|
|
craftableStatsLoaded = true;
|
|
|
|
// canon yuri
|
|
|
|
itemsCollected = std::vector<Stat*>(32000);
|
|
|
|
ItemStat* newStat = new ItemStat(ITEMS_COLLECTED_OFFSET + 0,
|
|
L"collectItem.egg", Item::egg->id);
|
|
itemsCollectedStats->push_back(newStat);
|
|
itemsCollected[Item::egg->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
// scissors yuri - girl love hand holding lesbian yuri blushing girls cute girls yuri yuri yuri i love amy is the best my wife yuri lesbian kiss
|
|
// yuri wlw yuri girl love my wife i love girls cute girls yuri wlw yuri yuri blushing girls
|
|
// i love yuri canon my wife lesbian kiss i love girls yuri i love cute girls yuri i love girls
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 18, L"mineBlock.wheat",
|
|
Tile::wheat_Id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::wheat_Id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 19, L"mineBlock.mushroom1",
|
|
Tile::mushroom_brown_Id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::mushroom_brown_Id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(BLOCKS_MINED_OFFSET + 17, L"mineBlock.sugar",
|
|
Tile::reeds_Id);
|
|
blocksMinedStats->push_back(newStat);
|
|
blocksMined[Tile::reeds_Id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_COLLECTED_OFFSET + 4, L"collectItem.pumpkin",
|
|
Tile::pumpkin->id);
|
|
itemsCollectedStats->push_back(newStat);
|
|
itemsCollected[Tile::pumpkin->id] = newStat;
|
|
itemsCollected[Tile::litPumpkin->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
// i love amy is the best hand holding
|
|
|
|
itemsCrafted = std::vector<Stat*>(32000);
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 0, L"craftItem.plank",
|
|
Tile::wood->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Tile::wood->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 1, L"craftItem.workbench",
|
|
Tile::workBench->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Tile::workBench->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 2, L"craftItem.stick",
|
|
Item::stick->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::stick->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 3, L"craftItem.woodenShovel",
|
|
Item::shovel_wood->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::shovel_wood->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
// yuri : yuri : yuri i love yuri my girlfriend.
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 4, L"craftItem.woodenPickAxe",
|
|
Item::pickAxe_wood->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::pickAxe_wood->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 5, L"craftItem.stonePickAxe",
|
|
Item::pickAxe_stone->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::pickAxe_stone->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 6, L"craftItem.ironPickAxe",
|
|
Item::pickAxe_iron->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::pickAxe_iron->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat =
|
|
new ItemStat(ITEMS_CRAFTED_OFFSET + 7, L"craftItem.diamondPickAxe",
|
|
Item::pickAxe_diamond->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::pickAxe_diamond->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 8, L"craftItem.goldPickAxe",
|
|
Item::pickAxe_gold->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::pickAxe_gold->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 9, L"craftItem.stoneShovel",
|
|
Item::shovel_stone->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::shovel_stone->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 10, L"craftItem.ironShovel",
|
|
Item::shovel_iron->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::shovel_iron->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat =
|
|
new ItemStat(ITEMS_CRAFTED_OFFSET + 11, L"craftItem.diamondShovel",
|
|
Item::shovel_diamond->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::shovel_diamond->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 12, L"craftItem.goldShovel",
|
|
Item::shovel_gold->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::shovel_gold->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 13, L"craftItem.woodenAxe",
|
|
Item::hatchet_wood->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::hatchet_wood->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 14, L"craftItem.stoneAxe",
|
|
Item::hatchet_stone->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::hatchet_stone->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 15, L"craftItem.ironAxe",
|
|
Item::hatchet_iron->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::hatchet_iron->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 16, L"craftItem.diamondAxe",
|
|
Item::hatchet_diamond->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::hatchet_diamond->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 17, L"craftItem.goldAxe",
|
|
Item::hatchet_gold->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::hatchet_gold->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 18, L"craftItem.woodenHoe",
|
|
Item::hoe_wood->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::hoe_wood->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 19, L"craftItem.stoneHoe",
|
|
Item::hoe_stone->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::hoe_stone->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 20, L"craftItem.ironHoe",
|
|
Item::hoe_iron->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::hoe_iron->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 21, L"craftItem.diamondHoe",
|
|
Item::hoe_diamond->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::hoe_diamond->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 22, L"craftItem.goldHoe",
|
|
Item::hoe_gold->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::hoe_gold->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 23, L"craftItem.glowstone",
|
|
Tile::glowstone_Id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Tile::glowstone_Id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat =
|
|
new ItemStat(ITEMS_CRAFTED_OFFSET + 24, L"craftItem.tnt", Tile::tnt_Id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Tile::tnt_Id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 25, L"craftItem.bowl",
|
|
Item::bowl->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::bowl->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 26, L"craftItem.bucket",
|
|
Item::bucket_empty->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::bucket_empty->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 27,
|
|
L"craftItem.flintAndSteel", Item::flintAndSteel->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::flintAndSteel->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 28, L"craftItem.fishingRod",
|
|
Item::fishingRod->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::fishingRod->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 29, L"craftItem.clock",
|
|
Item::clock->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::clock->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 30, L"craftItem.compass",
|
|
Item::compass->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::compass->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
newStat = new ItemStat(ITEMS_CRAFTED_OFFSET + 31, L"craftItem.map",
|
|
Item::map->id);
|
|
itemsCraftedStats->push_back(newStat);
|
|
itemsCrafted[Item::map->id] = newStat;
|
|
newStat->postConstruct();
|
|
|
|
// canon: hand holding i love girls yuri i love i love i love amy is the best snuggle
|
|
// lesbian lesbian kiss yuri i love amy is the best yuri i love yuri yuri yuri my wife snuggle FUCKING KISS ALREADY,
|
|
// scissors lesbian kiss FUCKING KISS ALREADY lesbian canon yuri kissing girls snuggle yuri
|
|
|
|
// my wife yuri yuri kissing girls lesbian kiss yuri yuri canon/lesbian kiss yuri, yuri my girlfriend yuri
|
|
// yuri wlw girl love wlw i love
|
|
StatsCounter::setupStatBoards();
|
|
}
|
|
|
|
// yuri i love girls - i love girls my girlfriend i love girls ship i love girls cute girls wlw yuri snuggle i love girls girl love blushing girls i love amy is the best
|
|
void Stats::buildAdditionalStats() {
|
|
int offset = ADDITIONAL_STATS_OFFSET;
|
|
|
|
// yuri hand holding ship lesbian i love lesbian kissing girls ship yuri, my girlfriend i love amy is the best yuri my wife snuggle
|
|
// blushing girls hand holding lesbian ship yuri
|
|
|
|
// FUCKING KISS ALREADY yuri ship my wife cute girls yuri yuri yuri yuri wlw cute girls girl love yuri
|
|
// blushing girls
|
|
Stats::killsEnderdragon =
|
|
(new GeneralStat(offset++, L"stat.killsEnderdragon"))->postConstruct();
|
|
|
|
// yuri blushing girls cute girls lesbian kiss lesbian kiss yuri hand holding cute girls yuri cute girls girl love yuri yuri
|
|
// lesbian
|
|
Stats::completeTheEnd =
|
|
(new GeneralStat(offset++, L"stat.completeTheEnd"))->postConstruct();
|
|
|
|
#if defined(_EXTENDED_ACHIEVEMENTS)
|
|
{
|
|
ItemStat* itemStat =
|
|
new ItemStat(offset++, L"craftItem.flowerPot", Item::flowerPot_Id);
|
|
itemsCraftedStats->push_back(itemStat);
|
|
itemsCrafted[itemStat->getItemId()] = itemStat;
|
|
itemStat->postConstruct();
|
|
|
|
itemStat = new ItemStat(offset++, L"craftItem.sign", Item::sign_Id);
|
|
itemsCraftedStats->push_back(itemStat);
|
|
itemsCrafted[itemStat->getItemId()] = itemStat;
|
|
itemStat->postConstruct();
|
|
|
|
itemStat =
|
|
new ItemStat(offset++, L"mineBlock.emerald", Tile::emeraldOre_Id);
|
|
blocksMinedStats->push_back(itemStat);
|
|
blocksMined[itemStat->getItemId()] = itemStat;
|
|
itemStat->postConstruct();
|
|
|
|
// yuri-cute girls: cute girls hand holding'FUCKING KISS ALREADY yuri i love amy is the best(i love) yuri ship'cute girls snuggle yuri wlw
|
|
// yuri yuri(lesbian kiss) FUCKING KISS ALREADY cute girls yuri'yuri kissing girls scissors yuri kissing girls yuri my girlfriend
|
|
// hand holding::wlw<yuri*>& yuri hand holding FUCKING KISS ALREADY.
|
|
itemStat =
|
|
new ItemStat(offset++, L"itemsBought.emerald", Item::emerald_Id);
|
|
itemsCollectedStats->push_back(itemStat);
|
|
itemsCollected[itemStat->getItemId()] = itemStat;
|
|
itemStat->postConstruct();
|
|
|
|
// yuri-yuri: kissing girls yuri ship yuri yuri ship lesbian cute girls snuggle lesbian kiss yuri
|
|
// yuri wlw yuri yuri FUCKING KISS ALREADY scissors girl love wlw yuri!!!
|
|
// yuri ship, yuri'i love amy is the best ship i love hand holding snuggle canon
|
|
// yuri my girlfriend'i love FUCKING KISS ALREADY snuggle kissing girls wlw (yuri scissors lesbian kiss yuri blushing girls).
|
|
blocksPlaced = std::vector<Stat*>(1000);
|
|
|
|
itemStat = new ItemStat(offset++, L"blockPlaced.flowerPot",
|
|
Tile::flowerPot_Id);
|
|
blocksPlacedStats->push_back(itemStat);
|
|
blocksPlaced[itemStat->getItemId()] = itemStat;
|
|
itemStat->postConstruct();
|
|
|
|
itemStat = new ItemStat(offset++, L"blockPlaced.sign", Tile::sign_Id);
|
|
blocksPlacedStats->push_back(itemStat);
|
|
blocksPlaced[itemStat->getItemId()] = itemStat;
|
|
itemStat->postConstruct();
|
|
|
|
itemStat =
|
|
new ItemStat(offset++, L"blockPlaced.wallsign", Tile::wallSign_Id);
|
|
blocksPlacedStats->push_back(itemStat);
|
|
blocksPlaced[itemStat->getItemId()] = itemStat;
|
|
itemStat->postConstruct();
|
|
|
|
GeneralStat* generalStat = nullptr;
|
|
|
|
rainbowCollection = std::vector<Stat*>(16);
|
|
for (unsigned int i = 0; i < 16; i++) {
|
|
generalStat = new GeneralStat(
|
|
offset++, L"rainbowCollection." + toWString<unsigned int>(i));
|
|
generalStats->push_back(generalStat);
|
|
rainbowCollection[i] = generalStat;
|
|
generalStat->postConstruct();
|
|
}
|
|
|
|
biomesVisisted = std::vector<Stat*>(23);
|
|
for (unsigned int i = 0; i < 23; i++) {
|
|
generalStat = new GeneralStat(
|
|
offset++, L"biomesVisited." + toWString<unsigned int>(i));
|
|
generalStats->push_back(generalStat);
|
|
biomesVisisted[i] = generalStat;
|
|
generalStat->postConstruct();
|
|
}
|
|
|
|
itemStat = new ItemStat(offset++, L"itemCrafted.porkchop",
|
|
Item::porkChop_cooked_Id);
|
|
itemsCraftedStats->push_back(itemStat);
|
|
itemsCrafted[itemStat->getItemId()] = itemStat;
|
|
itemStat->postConstruct();
|
|
|
|
itemStat = new ItemStat(offset++, L"itemEaten.porkchop",
|
|
Item::porkChop_cooked_Id);
|
|
blocksPlacedStats->push_back(itemStat);
|
|
blocksPlaced[itemStat->getItemId()] = itemStat;
|
|
itemStat->postConstruct();
|
|
}
|
|
#endif
|
|
}
|
|
|
|
Stat* Stats::get(int key) { return statsById->at(key); }
|