fix: achievements

Added "unimplemented" achievements
Fix image renaming breaking icons
Fix "Diamonds to you" strings
Readd broken assertion - I'm not entirely sure if its fixed, and you may need to delete profile0.dat to make it not assert on older saves.
This commit is contained in:
SevenToaster509 2026-04-26 17:27:31 +01:00
parent 51dd08363f
commit ae5a86d082
14 changed files with 52 additions and 58 deletions

View file

@ -103,7 +103,7 @@ public:
*/
static const int GAME_DEFINED_PROFILE_DATA_BYTES = 2*972; // per user
#else
static const int GAME_DEFINED_PROFILE_DATA_BYTES = 972; // per user
static const int GAME_DEFINED_PROFILE_DATA_BYTES = 2*972; // per user
#endif
unsigned int uiGameDefinedDataChangedBitmask;

View file

@ -37,13 +37,13 @@ UIScene_AchievementsMenu::UIScene_AchievementsMenu(int iPad, void* _initData, UI
path = L"Graphics\\Achievements\\TROP" +
(iconStr.empty() ? L"000" : iconStr) +
L".PNG";
L".png";
byteArray ba = app.getArchiveFile(path);
registerSubstitutionTexture(path, ba.data, ba.length);
}
std::string result = "Graphics\\Achievements\\" "TROP" + Achievements::achievements->at(i)->iconInt + ".PNG"; //media\\
std::string result = "Graphics\\Achievements\\" "TROP" + Achievements::achievements->at(i)->iconInt + ".png"; //media\\
m_achievementsList.addnewItem(i+1, path);
if (Minecraft::GetInstance()->stats[Minecraft::GetInstance()->player->GetXboxPad()]->hasTaken(Achievements::achievements->at(i)))

View file

@ -906,7 +906,7 @@ void LocalPlayer::awardStat(Stat *stat, byteArray param)
wstring path = L"Graphics\\Achievements\\TROP" +
(iconStr.empty() ? L"000" : iconStr) +
L".PNG";
L".png";
byteArray ba = app.getArchiveFile(path);
//auto t = ui.GetTopScene(0);
//t->registerSubstitutionTexture(path, ba.data, ba.length);

View file

@ -212,7 +212,7 @@ void StatsCounter::save(int player, bool force)
//Check we're going to have enough room to store all possible stats
unsigned int uiTotalStatsSize = (Stats::all->size() * 4 * sizeof(unsigned short)) - (Achievements::achievements->size() * 3 * sizeof(unsigned short)) + (LARGE_STATS_COUNT*4*(sizeof(unsigned int)-sizeof(unsigned short)));
//Do change this back and fix it.
//assert( uiTotalStatsSize <= (CConsoleMinecraftApp::GAME_DEFINED_PROFILE_DATA_BYTES-sizeof(GAME_SETTINGS)) );
assert( uiTotalStatsSize <= (CConsoleMinecraftApp::GAME_DEFINED_PROFILE_DATA_BYTES-sizeof(GAME_SETTINGS)) );
//Retrieve the data pointer from the profile
#if ( defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__ )

View file

@ -155,7 +155,7 @@ void Achievements::staticCtor()
Achievements::adventuringTime = (new Achievement(eAward_adventuringTime, L"adventuringTime", 0,0, Tile::bookshelf, (Achievement*) nullptr, "031", IDS_ACHIEVE_NAME_ADVENTURING_TIME, IDS_ACHIEVE_DESC_ADVENTURING_TIME) )->setAwardLocallyOnly()->postConstruct();
Achievements::repopulation = (new Achievement(eAward_repopulation, L"repopulation", 7,-5, Tile::bookshelf, (Achievement*) nullptr, "032", IDS_ACHIEVE_NAME_REPOPULATION, IDS_ACHIEVE_DESC_REPOPULATION) )->postConstruct();
//Achievements::porkChoop // // // // // //
Achievements::diamondsToYou = (new Achievement(eAward_diamondsToYou, L"diamondsToYou", 0,0, Tile::bookshelf, (Achievement*) nullptr, "033", IDS_ACHIEVE_NAME_DIAMONDS, IDS_ACHIEVE_DESC_DIAMONDS) )->postConstruct();
Achievements::diamondsToYou = (new Achievement(eAward_diamondsToYou, L"diamondsToYou", 0,0, Tile::bookshelf, (Achievement*) nullptr, "033", IDS_ACHIEVE_NAME_DIAMONDS_TO_YOU, IDS_ACHIEVE_DESC_DIAMONDS_TO_YOU) )->postConstruct();
//Achievements::passingTheTime = (new Achievement(eAward_play100Days, L"passingTheTime", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
//Achievements::archer = (new Achievement(eAward_arrowKillCreeper, L"archer", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
Achievements::theHaggler = (new Achievement(eAward_theHaggler, L"theHaggler", 0,0, Tile::bookshelf, (Achievement*) nullptr, "037", IDS_ACHIEVE_NAME_THE_HAGGLER, IDS_ACHIEVE_DESC_THE_HAGGLER) )->setAwardLocallyOnly()->postConstruct();

View file

@ -81,7 +81,8 @@ Stat* CommonStats::get_blocksPlaced(int blockId)
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _XBOX_ONE)
return Stats::blocksPlaced[blockId];
#else
return nullptr;
return Stats::blocksPlaced[blockId];
//return nullptr;
#endif
}
@ -95,7 +96,7 @@ Stat *CommonStats::get_itemsCollected(int itemId, int itemAux)
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _XBOX_ONE)
if (itemId == Tile::wool_Id) return Stats::rainbowCollection[itemAux];
#endif
if (itemId == Tile::wool_Id) return Stats::rainbowCollection[itemAux];
if (itemId != Item::emerald_Id) return Stats::itemsCollected[itemId];
else return nullptr;
}
@ -110,8 +111,8 @@ Stat *CommonStats::get_itemsUsed(int itemId)
// 4J-JEV: I've done the same thing here, we can't place these items anyway.
if (itemId == Item::porkChop_cooked_Id) return Stats::blocksPlaced[itemId];
#endif
return nullptr;
if (itemId == Item::porkChop_cooked_Id) return Stats::blocksPlaced[itemId];
//return nullptr;
}
Stat *CommonStats::get_itemsBought(int itemId)
@ -133,7 +134,8 @@ Stat *CommonStats::get_enteredBiome(int biomeId)
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _XBOX_ONE)
return Stats::biomesVisisted[biomeId];
#else
return nullptr;
return Stats::biomesVisisted[biomeId];
//return nullptr;
#endif
}

View file

@ -94,7 +94,6 @@ shared_ptr<ItemInstance> ContainerMenu::clicked(int slotIndex, int buttonNum, in
{
shared_ptr<ItemInstance> out = AbstractContainerMenu::clicked(slotIndex, buttonNum, clickType, player, looped);
#ifdef _EXTENDED_ACHIEVEMENTS
shared_ptr<LocalPlayer> localPlayer = dynamic_pointer_cast<LocalPlayer>(player);
if (localPlayer != nullptr) // 4J-JEV: For "Chestful o'Cobblestone" achievement.
@ -119,7 +118,6 @@ shared_ptr<ItemInstance> ContainerMenu::clicked(int slotIndex, int buttonNum, in
localPlayer->awardStat(GenericStats::chestfulOfCobblestone(),GenericStats::param_chestfulOfCobblestone(cobblecount));
}
}
#endif
return out;
}

View file

@ -100,10 +100,9 @@ shared_ptr<ItemInstance> FurnaceMenu::quickMoveStack(shared_ptr<Player> player,
slot->onQuickCraft(stack, clicked);
// 4J-JEV, hook for Durango achievement 'Renewable Energy'.
#ifdef _EXTENDED_ACHIEVEMENTS
if ( charcoalUsed && stack->getItem()->id == Item::coal_Id && stack->getAuxValue() == CoalItem::CHAR_COAL)
player->awardStat(GenericStats::renewableEnergy(),GenericStats::param_renewableEnergy());
#endif
}
else if (slotIndex == FUEL_SLOT || slotIndex == INGREDIENT_SLOT)
{
@ -164,13 +163,11 @@ shared_ptr<ItemInstance> FurnaceMenu::clicked(int slotIndex, int buttonNum, int
shared_ptr<ItemInstance> out = AbstractContainerMenu::clicked(slotIndex, buttonNum, clickType, player, looped);
#ifdef _EXTENDED_ACHIEVEMENTS
if ( charcoalUsed && (out!=nullptr) && (buttonNum==0 || buttonNum==1) && clickType==CLICK_PICKUP
&& out->getItem()->id == Item::coal_Id && out->getAuxValue() == CoalItem::CHAR_COAL )
{
player->awardStat(GenericStats::renewableEnergy(),GenericStats::param_renewableEnergy());
}
#endif
return out;
}

View file

@ -358,7 +358,7 @@ Stat* GenericStats::overkill()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement( eAward_overkill );
#else
return nullptr;
return instance->get_achievement(eAward_overkill);
#endif
}
@ -367,7 +367,7 @@ Stat* GenericStats::bookcase()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement( eAward_bookcase );
#else
return nullptr;
return instance->get_achievement(eAward_bookcase);
#endif
}
@ -750,7 +750,7 @@ byteArray GenericStats::getParam_chestfulOfCobblestone(int cobbleStone)
#ifdef _EXTENDED_ACHIEVEMENTS
return getParam_achievement(eAward_chestfulOfCobblestone);
#else
return getParam_noArgs();
return getParam_achievement(eAward_chestfulOfCobblestone);
#endif
}
@ -759,7 +759,7 @@ byteArray GenericStats::getParam_musicToMyEars(int recordId)
#ifdef _EXTENDED_ACHIEVEMENTS
return getParam_achievement(eAward_musicToMyEars);
#else
return getParam_noArgs();
return getParam_achievement(eAward_musicToMyEars);
#endif
}
@ -1057,7 +1057,7 @@ byteArray GenericStats::param_bookcase()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_bookcase);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_bookcase);
#endif
}
@ -1116,7 +1116,7 @@ byteArray GenericStats::param_adventuringTime()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_adventuringTime);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_adventuringTime);
#endif
}
@ -1125,7 +1125,7 @@ byteArray GenericStats::param_repopulation()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_repopulation);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_repopulation);
#endif
}
@ -1143,7 +1143,7 @@ byteArray GenericStats::param_diamondsToYou()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_diamondsToYou);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_diamondsToYou);
#endif
}
@ -1152,7 +1152,7 @@ byteArray GenericStats::param_passingTheTime()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_play100Days);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_play100Days);
#endif
}
@ -1161,7 +1161,7 @@ byteArray GenericStats::param_archer()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_arrowKillCreeper);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_arrowKillCreeper);
#endif
}
@ -1170,7 +1170,7 @@ byteArray GenericStats::param_theHaggler()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_theHaggler);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_theHaggler);
#endif
}
@ -1179,7 +1179,7 @@ byteArray GenericStats::param_potPlanter()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_potPlanter);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_potPlanter);
#endif
}
@ -1188,7 +1188,7 @@ byteArray GenericStats::param_itsASign()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_itsASign);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_itsASign);
#endif
}
@ -1197,7 +1197,7 @@ byteArray GenericStats::param_ironBelly()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_ironBelly);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_ironBelly);
#endif
}
@ -1206,7 +1206,7 @@ byteArray GenericStats::param_haveAShearfulDay()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_haveAShearfulDay);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_haveAShearfulDay);
#endif
}
@ -1215,7 +1215,7 @@ byteArray GenericStats::param_rainbowCollection()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_rainbowCollection);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_rainbowCollection);
#endif
}
@ -1224,7 +1224,7 @@ byteArray GenericStats::param_stayinFrosty()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_stayinFrosty);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_stayinFrosty);
#endif
}
@ -1238,7 +1238,7 @@ byteArray GenericStats::param_renewableEnergy()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_renewableEnergy);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_renewableEnergy);
#endif
}
@ -1252,7 +1252,7 @@ byteArray GenericStats::param_bodyGuard()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_bodyGuard);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_bodyGuard);
#endif
}
@ -1261,7 +1261,7 @@ byteArray GenericStats::param_ironMan()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_ironMan);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_ironMan);
#endif
}
@ -1270,7 +1270,7 @@ byteArray GenericStats::param_zombieDoctor()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_zombieDoctor);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_zombieDoctor);
#endif
}
@ -1279,6 +1279,6 @@ byteArray GenericStats::param_lionTamer()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_lionTamer);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_lionTamer);
#endif
}

View file

@ -235,7 +235,7 @@ shared_ptr<ItemInstance> InventoryMenu::clicked(int slotIndex, int buttonNum, in
{
shared_ptr<ItemInstance> out = AbstractContainerMenu::clicked(slotIndex, buttonNum, clickType, player, looped);
#ifdef _EXTENDED_ACHIEVEMENTS
static int ironItems[4] = {Item::helmet_iron_Id,Item::chestplate_iron_Id,Item::leggings_iron_Id,Item::boots_iron_Id};
for (int i = ARMOR_SLOT_START; i < ARMOR_SLOT_END; i++)
{
@ -246,7 +246,6 @@ shared_ptr<ItemInstance> InventoryMenu::clicked(int slotIndex, int buttonNum, in
}
}
player->awardStat(GenericStats::ironMan(),GenericStats::param_ironMan());
#endif
return out;
}

View file

@ -264,7 +264,7 @@ void ItemEntity::playerTouch(shared_ptr<Player> player)
{
player->awardStat(GenericStats::diamonds(), GenericStats::param_diamonds());
#ifdef _EXTENDED_ACHIEVEMENTS
if ( getItem()->getItem()->id )
{
shared_ptr<Player> pThrower = level->getPlayerByName(getThrower());
@ -273,7 +273,7 @@ void ItemEntity::playerTouch(shared_ptr<Player> player)
pThrower->awardStat(GenericStats::diamondsToYou(), GenericStats::param_diamondsToYou());
}
}
#endif
}
if (item->id == Item::blazeRod_Id)
player->awardStat(GenericStats::blazeRod(), GenericStats::param_blazeRod());

View file

@ -2628,10 +2628,10 @@ void Player::startUsingItem(shared_ptr<ItemInstance> instance, int duration)
awardStat(GenericStats::itemsUsed(instance->getItem()->id),
GenericStats::param_itemsUsed(dynamic_pointer_cast<Player>(shared_from_this()),instance));
#if (!defined _DURANGO) && (defined _EXTENDED_ACHIEVEMENTS)
if ( (instance->getItem()->id == Item::rotten_flesh_Id) && (getFoodData()->getFoodLevel() == 0) )
awardStat(GenericStats::ironBelly(), GenericStats::param_ironBelly());
#endif
}
bool Player::mayDestroyBlockAt(int x, int y, int z)

View file

@ -23,9 +23,9 @@ vector<ItemStat *> *Stats::blocksMinedStats = new vector<ItemStat *>;
vector<ItemStat *> *Stats::itemsCollectedStats = new vector<ItemStat *>;
vector<ItemStat *> *Stats::itemsCraftedStats = new vector<ItemStat *>;
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _DURANGO)
vector<ItemStat *> *Stats::blocksPlacedStats = new vector<ItemStat *>;
#endif
Stat *Stats::walkOneM = nullptr;
Stat *Stats::swimOneM = nullptr;
@ -56,11 +56,11 @@ StatArray Stats::blocksMined;
StatArray Stats::itemsCollected;
StatArray Stats::itemsCrafted;
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _DURANGO)
StatArray Stats::blocksPlaced;
StatArray Stats::rainbowCollection;
StatArray Stats::biomesVisisted;
#endif
Stat *Stats::killsEnderdragon = nullptr; // The number of times this player has dealt the killing blow to the Enderdragon
Stat *Stats::completeTheEnd = nullptr; // The number of times this player has been present when the Enderdragon has died
@ -473,7 +473,7 @@ void Stats::buildAdditionalStats()
Stats::completeTheEnd = (new GeneralStat(offset++, L"stat.completeTheEnd"))->postConstruct();
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _DURANGO)
{
ItemStat *itemStat = new ItemStat(offset++, L"craftItem.flowerPot", Item::flowerPot_Id);
itemsCraftedStats->push_back(itemStat);
@ -547,7 +547,7 @@ void Stats::buildAdditionalStats()
blocksPlaced[itemStat->getItemId()] = itemStat;
itemStat->postConstruct();
}
#endif
}

View file

@ -25,9 +25,9 @@ public:
static vector<ItemStat *> *itemsCollectedStats;
static vector<ItemStat *> *itemsCraftedStats;
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _DURANGO)
static vector<ItemStat *> *blocksPlacedStats;
#endif
static Stat *walkOneM;
static Stat *swimOneM;
@ -60,18 +60,16 @@ public:
static StatArray itemsCollected;
static StatArray itemsCrafted;
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _DURANGO)
static StatArray blocksPlaced;
#endif
static StatArray blocksPlaced;
// Added TU9
static Stat *killsEnderdragon; // The number of times this player has dealt the killing blow to the Enderdragon
static Stat *completeTheEnd; // The number of times this player has been present when the Enderdragon has died
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _DURANGO)
static StatArray biomesVisisted;
static StatArray rainbowCollection;
#endif
static void staticCtor();