feat: achievements, minecraft store, languages, auto lb sendStats, more Language Strings

This commit is contained in:
Byte
2026-06-23 20:40:27 +02:00
parent 658849b427
commit 028dcdce41
58 changed files with 1649 additions and 375 deletions
+1 -1
View File
@@ -152,7 +152,7 @@ void AchievementScreen::renderLabels()
// font.draw(xScrollP + ", " + yScrollP, xo + 5, yo + 5 + BIGMAP_HEIGHT + 18, 0x404040);
// font.drawWordWrap("Ride a pig off a cliff.", xo + 5, yo + 5 + BIGMAP_HEIGHT + 16, BIGMAP_WIDTH, 0x404040);
}
void AchievementScreen::renderBg(int xm, int ym, float a)
+1 -1
View File
@@ -23,7 +23,7 @@ set(MINECRAFT_CLIENT_SOURCES
${SOURCES_COMMON}
)
add_executable(Minecraft.Client ${MINECRAFT_CLIENT_SOURCES})
add_executable(Minecraft.Client ${MINECRAFT_CLIENT_SOURCES} "Common/UI/UIScene_AchievementsMenu.cpp" "Common/UI/UIScene_AchievementsMenu.h" "Common/UI/UIControl_AchievementsList.cpp" "Common/UI/UIControl_AchievementsList.h")
# Only define executable on windows
if(PLATFORM_NAME STREQUAL "Windows64")
@@ -23,18 +23,18 @@ enum eAward
eAward_DispenseWithThis,
eAward_InToTheNether,
eAward_mine100Blocks,
eAward_kill10Creepers,
//eAward_mine100Blocks,
//eAward_kill10Creepers,
eAward_eatPorkChop,
eAward_play100Days,
eAward_arrowKillCreeper,
eAward_socialPost,
//eAward_socialPost,
#ifndef _XBOX
// 4J Stu - Does not map to any Xbox achievements
eAward_snipeSkeleton,
eAward_diamonds,
eAward_portal,
//eAward_portal,
eAward_ghast,
eAward_blazeRod,
eAward_potion,
@@ -45,7 +45,6 @@ enum eAward
eAward_bookcase,
#endif
#ifdef _EXTENDED_ACHIEVEMENTS
eAward_adventuringTime,
eAward_repopulation,
//eAward_porkChop,
@@ -66,7 +65,6 @@ enum eAward
eAward_ironMan,
eAward_zombieDoctor,
eAward_lionTamer,
#endif
eAward_Max,
};
+11 -4
View File
@@ -839,6 +839,11 @@ void CMinecraftApp::InitGameSettings()
memset(pProfileSettings,0,sizeof(C_4JProfile::PROFILESETTINGS));
SetDefaultOptions(pProfileSettings,i);
Win64_LoadSettings(GameSettingsA[i]);
app.DebugPrintf("Loaded language: %d\n", GameSettingsA[i]->ucLanguage);
app.SetMinecraftLanguage(i, GameSettingsA[i]->ucLanguage);
app.SetMinecraftLocale(i, GameSettingsA[i]->ucLocale);
app.loadStringTable();
ApplyGameSettingsChanged(i);
#elif defined __PS3__ || defined __ORBIS__ || defined _DURANGO || defined __PSVITA__
C4JStorage::PROFILESETTINGS *pProfileSettings=StorageManager.GetDashboardProfileSettings(i);
@@ -855,6 +860,7 @@ int CMinecraftApp::SetDefaultOptions(C4JStorage::PROFILESETTINGS *pSettings,cons
int CMinecraftApp::SetDefaultOptions(C_4JProfile::PROFILESETTINGS *pSettings,const int iPad)
#endif
{
app.DebugPrintf("SetDefaultOptions language BEFORE: %d\n", GameSettingsA[iPad]->ucLanguage);
SetGameSettings(iPad,eGameSetting_MusicVolume,DEFAULT_VOLUME_LEVEL);
SetGameSettings(iPad,eGameSetting_SoundFXVolume,DEFAULT_VOLUME_LEVEL);
SetGameSettings(iPad,eGameSetting_RenderDistance,16);
@@ -939,6 +945,7 @@ int CMinecraftApp::SetDefaultOptions(C_4JProfile::PROFILESETTINGS *pSettings,con
if (!app.GetGameStarted())
{
GameSettingsA[iPad]->ucLanguage = MINECRAFT_LANGUAGE_DEFAULT; // use the system language
app.DebugPrintf("SetDefaultOptions language AFTER: %d\n", GameSettingsA[iPad]->ucLanguage);
GameSettingsA[iPad]->ucLocale = MINECRAFT_LANGUAGE_DEFAULT; // use the system locale
}
@@ -6469,7 +6476,7 @@ int CMinecraftApp::GetHTMLFontSize(EHTMLFontSize size)
return s_iHTMLFontSizesA[size];
}
wstring CMinecraftApp::FormatHTMLString(int iPad, const wstring &desc, int shadowColour /*= 0xFFFFFFFF*/)
wstring CMinecraftApp::FormatHTMLString(int iPad, const wstring &desc, int shadowColour /*= 0xFFFFFFFF*/, bool override)
{
wstring text(desc);
@@ -6552,7 +6559,7 @@ wstring CMinecraftApp::FormatHTMLString(int iPad, const wstring &desc, int shado
text = replaceAll(text, L"{*CONTROLLER_VK_A*}", GetVKReplacement(VK_PAD_A) );
text = replaceAll(text, L"{*CONTROLLER_VK_B*}", GetVKReplacement(VK_PAD_B) );
text = replaceAll(text, L"{*CONTROLLER_VK_X*}", GetVKReplacement(VK_PAD_X) );
text = replaceAll(text, L"{*CONTROLLER_VK_Y*}", GetVKReplacement(VK_PAD_Y) );
text = replaceAll(text, L"{*CONTROLLER_VK_Y*}", GetVKReplacement(VK_PAD_Y, override) );
text = replaceAll(text, L"{*CONTROLLER_VK_LB*}", GetVKReplacement(VK_PAD_LSHOULDER) );
text = replaceAll(text, L"{*CONTROLLER_VK_RB*}", GetVKReplacement(VK_PAD_RSHOULDER) );
text = replaceAll(text, L"{*CONTROLLER_VK_LS*}", GetVKReplacement(VK_PAD_LTHUMB_UP) );
@@ -6790,7 +6797,7 @@ wstring CMinecraftApp::GetActionReplacement(int iPad, unsigned char ucAction)
#endif
}
wstring CMinecraftApp::GetVKReplacement(unsigned int uiVKey)
wstring CMinecraftApp::GetVKReplacement(unsigned int uiVKey, bool override)
{
#ifdef _XBOX
switch(uiVKey)
@@ -6908,7 +6915,7 @@ wstring CMinecraftApp::GetVKReplacement(unsigned int uiVKey)
int size = 30;
#elif defined _WIN64
int size = 45;
if(ui.getScreenHeight() < 1080) size = 30;
if(ui.getScreenHeight() < 1080 || override == true) size = 30;
#else
int size = 45;
#endif
+3 -3
View File
@@ -97,7 +97,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;
@@ -564,11 +564,11 @@ public:
int GetHTMLColour(eMinecraftColour colour);
int GetHTMLColor(eMinecraftColour colour) { return GetHTMLColour(colour); }
int GetHTMLFontSize(EHTMLFontSize size);
wstring FormatHTMLString(int iPad, const wstring& desc, int shadowColour = 0xFFFFFFFF);
wstring FormatHTMLString(int iPad, const wstring& desc, int shadowColour = 0xFFFFFFFF, bool override = false);
wstring EscapeHTMLString(const wstring &desc);
wstring FormatChatMessage(const wstring& desc, bool applyStyling = true);
wstring GetActionReplacement(int iPad, unsigned char ucAction);
wstring GetVKReplacement(unsigned int uiVKey);
wstring GetVKReplacement(unsigned int uiVKey, bool override = false);
wstring GetIconReplacement(unsigned int uiIcon);
float getAppTime() { return m_Time.fAppTime; }
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -868,7 +868,10 @@ void CPlatformNetworkManagerStub::SearchForGames()
info->sessionId = static_cast<uint64_t>(inet_addr(lanSessions[i].hostIP)) |
static_cast<uint64_t>(lanSessions[i].hostPort) << 32;
friendsSessions[0].push_back(info);
//Fix null crash? I think its here...
if (info) {
friendsSessions[0].push_back(info);
}
}
m_searchResultsCount[0] = static_cast<int>(friendsSessions[0].size());
@@ -70,12 +70,61 @@ void UIComponent_PressStartToPlay::handleReload()
m_controlPressStartPanel.setVisible(showPressStart);
}
void UIComponent_PressStartToPlay::ShowAchievementToast(string achievementName, string achievementDescription, string achT)
{
/*IggyStringUTF8 stringVal;
stringVal.string = (char*)label.c_str();
stringVal.length = static_cast<S32>(label.length());
value[0].type = IGGY_DATATYPE_string_UTF8;
value[0].string8 = stringVal;*/
IggyDataValue result;
IggyDataValue value[3];
IggyStringUTF8 stringVal1;
value[0].type = IGGY_DATATYPE_string_UTF8;
stringVal1.string = (char*)achievementName.c_str();
stringVal1.length = static_cast<S32>(achievementName.length());
value[0].string8 = stringVal1;
IggyStringUTF8 stringVal2;
stringVal2.string = (char*)achievementDescription.c_str();
stringVal2.length = static_cast<S32>(achievementDescription.length());
value[1].type = IGGY_DATATYPE_string_UTF8;
value[1].string8 = stringVal2;
IggyStringUTF8 stringVal3;
stringVal3.string = (char*)achT.c_str();
stringVal3.length = static_cast<S32>(achT.length()+3);
value[2].type = IGGY_DATATYPE_string_UTF8;
value[2].string8 = stringVal3;
IggyResult out = IggyPlayerCallMethodRS(getMovie(), &result, IggyPlayerRootPath(getMovie()), m_funcShowAchToast, 3, value);
addTimer(1, 5000);
}
void UIComponent_PressStartToPlay::HideAchievementToast()
{
IggyDataValue result;
IggyResult out = IggyPlayerCallMethodRS(getMovie(), &result, IggyPlayerRootPath(getMovie()), m_funcHideAchToast, 0, nullptr);
Minecraft::GetInstance()->achID = 0;
}
void UIComponent_PressStartToPlay::handleTimerComplete(int id)
{
m_controlPressStartPanel.setVisible(false);
for(unsigned int i = 0; i < XUSER_MAX_COUNT; ++i)
{
m_showingPressStart[i] = false;
if (id == 1) {
HideAchievementToast();
killTimer(id);
ui.toastOn = false;
}
}
ui.ClearPressStart();
}
@@ -1,6 +1,7 @@
#pragma once
#include "UIScene.h"
#include "UIControl_Label.h"
class UIComponent_PressStartToPlay : public UIScene
{
@@ -15,7 +16,7 @@ private:
protected:
UIControl_Label m_labelTrialTimer, m_labelPressStart, m_playerDisplayName;
UIControl m_controlSaveIcon, m_controlPressStartPanel;
IggyName m_funcShowController;
IggyName m_funcShowController, m_funcShowAchToast, m_funcHideAchToast;
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
UI_MAP_ELEMENT(m_labelTrialTimer, "TrialTimer")
UI_MAP_ELEMENT(m_controlSaveIcon, "SaveIcon")
@@ -26,6 +27,8 @@ protected:
UI_END_MAP_CHILD_ELEMENTS()
UI_MAP_NAME(m_funcShowController, L"ShowController");
UI_MAP_NAME(m_funcShowAchToast, L"ShowAchievementToast");
UI_MAP_NAME(m_funcHideAchToast, L"HideAchievementToast");
UI_END_MAP_ELEMENTS_AND_NAMES()
public:
@@ -47,6 +50,9 @@ public:
// Returns true if lower scenes in this scenes layer, or in any layer below this scenes layers should be hidden
virtual bool hidesLowerScenes() { return false; }
void ShowAchievementToast(string achievementName, string achievementDescription, string achT = "");
void HideAchievementToast();
virtual void handleReload();
virtual void handleTimerComplete(int id);
+2 -1
View File
@@ -31,6 +31,7 @@ public:
eTexturePackList,
eBitmapIcon,
eTouchControl,
eAchievementList,
};
protected:
eUIControlType m_eControlType;
@@ -63,7 +64,7 @@ public:
UIControl();
virtual bool setupControl(UIScene *scene, IggyValuePath *parent, const string &controlName);
void UpdateControl();
virtual void UpdateControl();
void setHidden(bool bHidden) {m_bHidden=bHidden;}
bool getHidden(void) {return m_bHidden;}
@@ -0,0 +1,104 @@
#include "UIControl_AchievementsList.h"
#include "stdafx.h"
#include "UI.h"
#include "../../../Minecraft.World/JavaMath.h"
UIControl_AchievementsList::UIControl_AchievementsList()
{
}
void UIControl_AchievementsList::init(int id)
{
m_id = id;
IggyDataValue result;
IggyDataValue value[1];
value[0].type = IGGY_DATATYPE_number;
value[0].number = id;
IggyResult out = IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_initFunc, 1, value);
//Hardcoded from SWF since it techinically won't ever change, and getting the x and y just doesnt work through the intended way
m_x = 221;
m_y = 204;
}
void UIControl_AchievementsList::setCurrentSelection(int iSelection)
{
IggyDataValue result;
IggyDataValue value[1];
value[0].type = IGGY_DATATYPE_number;
value[0].number = iSelection;
IggyResult out = IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcHighlightItem, 1, value);
}
bool UIControl_AchievementsList::setupControl(UIScene* scene, IggyValuePath* parent, const string& controlName)
{
UIControl::setControlType(UIControl::eAchievementList);
bool success = UIControl_Base::setupControl(scene, parent, controlName);
//Label specific initialisers
m_funcAddNewItem = registerFastName(L"addNewItem");
m_funcHighlightItem = registerFastName(L"HighlightItem");
m_funcSetTouchFocus = registerFastName(L"SetTouchFocus");
m_funcEnableButton = registerFastName(L"EnableButton");
return success;
}
void UIControl_AchievementsList::UpdateControl()
{
F64 fwidth, fheight;
IggyValueGetF64RS(getIggyValuePath(), m_nameWidth, nullptr, &fwidth);
IggyValueGetF64RS(getIggyValuePath(), m_nameHeight, nullptr, &fheight);
m_width = static_cast<S32>(Math::round(fwidth));
m_height = static_cast<S32>(Math::round(fheight));
}
void UIControl_AchievementsList::SetTouchFocus(S32 iX, S32 iY, bool bRepeat)
{
IggyDataValue result;
IggyDataValue value[3];
value[0].type = IGGY_DATATYPE_number;
value[0].number = iX;
value[1].type = IGGY_DATATYPE_number;
value[1].number = iY;
value[2].type = IGGY_DATATYPE_boolean;
value[2].boolval = bRepeat;
IggyResult out = IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcSetTouchFocus, 3, value);
}
void UIControl_AchievementsList::addnewItem(int id, wstring textureName)
{
IggyDataValue result;
IggyDataValue value[2];
value[0].type = IGGY_DATATYPE_number;
value[0].number = id;
value[1].type = IGGY_DATATYPE_string_UTF16;
IggyStringUTF16 stringVal;
stringVal.string = (IggyUTF16*)textureName.c_str();
stringVal.length = textureName.length();
value[1].string16 = stringVal;
IggyResult out = IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcAddNewItem, 2, value);
++m_itemCount;
}
void UIControl_AchievementsList::EnableButton(int id, bool bEnable) {
IggyDataValue result;
IggyDataValue value[2];
value[0].type = IGGY_DATATYPE_number;
value[0].number = id;
value[1].type = IGGY_DATATYPE_boolean;
value[1].boolval = bEnable;
IggyResult out = IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcEnableButton, 2, value);
}
void UIControl_AchievementsList::updateChildFocus(int iChild)
{
m_iCurrentSelection = iChild;
}
@@ -0,0 +1,22 @@
#pragma once
#include "UIControl_Base.h"
class UIControl_AchievementsList : public UIControl_Base
{
private:
IggyName m_funcAddNewItem, m_funcHighlightItem, m_funcSetTouchFocus, m_funcEnableButton;
public:
UIControl_AchievementsList();
void init(int id);
int m_itemCount;
int m_iCurrentSelection = 0;
void SetTouchFocus(S32 iX, S32 iY, bool bRepeat);
void UpdateControl();
void EnableButton(int id, bool bEnable);
void updateChildFocus(int iChild);
void setCurrentSelection(int iSelection);
virtual bool setupControl(UIScene* scene, IggyValuePath* parent, const string& controlName);
void UIControl_AchievementsList::addnewItem(int id, wstring textureName);
//virtual void ReInit();
};
+42 -5
View File
@@ -5,6 +5,8 @@
#include "UIScene.h"
#include "UIControl_Slider.h"
#include "UIControl_TexturePackList.h"
#include "UIControl_AchievementsList.h"
#include "UIScene_AchievementsMenu.h"
#include "../../../Minecraft.World/StringHelpers.h"
#include "../../LocalPlayer.h"
#include "../../DLCTexturePack.h"
@@ -581,6 +583,11 @@ void UIController::loadSkins()
m_iggyLibraries[eLibrary_Tooltips] = loadSkin(L"skinHDTooltips.swf", L"skinHDTooltips.swf");
m_iggyLibraries[eLibrary_Default] = loadSkin(L"skinHD.swf", L"skinHD.swf");
//Load skins specifcally edited for use on achievements, if we
//used these as skin.swf and skinInGame.swf it breaks some other things
m_iggyLibraries[eLibrary_LCDefault] = loadSkin(L"skinLC.swf", L"skinLC.swf");
m_iggyLibraries[eLibrary_LCInGame] = loadSkin(L"skinInGameLC.swf", L"skinInGameLC.swf");
#elif defined _DURANGO
m_iggyLibraries[eLibrary_Platform] = loadSkin(L"skinHDDurango.swf", L"platformskinHD.swf");
@@ -924,7 +931,7 @@ void UIController::tickInput()
UIControl::eUIControlType type = ctrl->getControlType();
if (type != UIControl::eButton && type != UIControl::eTextInput &&
type != UIControl::eCheckBox && type != UIControl::eSlider &&
type != UIControl::eButtonList && type != UIControl::eTexturePackList)
type != UIControl::eButtonList && type != UIControl::eTexturePackList && type != UIControl::eAchievementList)
continue;
// If the scene has an active panel (e.g. tab menus),
@@ -958,6 +965,18 @@ void UIController::tickInput()
hitCtrl = NULL;
break; // ButtonList takes priority
}
if (type == UIControl::eAchievementList)
{
auto t = (UIScene_AchievementsMenu*)pScene;
static_cast<UIControl_AchievementsList*>(ctrl)->SetTouchFocus(
static_cast<S32>(sceneMouseX - cx), static_cast<S32>(sceneMouseY - cy), false);
/*static_cast<UIControl_AchievementsList*>(ctrl)->SetTouchFocus(
static_cast<S32>(t->aX), static_cast<S32>(t->aY), false);*/
hitControlId = -1;
hitArea = INT_MAX;
hitCtrl = NULL;
break;
}
if (type == UIControl::eTexturePackList)
{
// TexturePackList expects coords relative to its origin.
@@ -1830,6 +1849,10 @@ GDrawTexture * RADLINK UIController::TextureSubstitutionCreateCallback ( void *
Textures *t = Minecraft::GetInstance()->textures;
int id = t->getTexture(&image,C4JRender::TEXTURE_FORMAT_RxGyBzAw,false);
std::string result(texture_name, texture_name + wcslen(texture_name));
bool isSub = result.find("sub") != std::string::npos;
// 4J Stu - All our flash controls that allow replacing textures use a special 64x64 symbol
// Force this size here so that our images don't get scaled wildly
#if (defined __ORBIS__ || defined _DURANGO )
@@ -1843,11 +1866,15 @@ GDrawTexture * RADLINK UIController::TextureSubstitutionCreateCallback ( void *
#if defined _WINDOWS64
// Only set the size to 96x96 for 1080p on Windows
UIScene *scene = uiController->GetTopScene(0);
if (scene->getSceneResolution() == UIScene::eSceneResolution_1080)
{
*width = 96;
*height = 96;
//Fix for icon size changing on Achievements
if (scene) {
if (scene->getSceneResolution() == UIScene::eSceneResolution_1080 && (scene->getSceneType() != eUIScene_PauseMenu && scene->getSceneType() != eUIScene_MainMenu && scene->getSceneType() != eUIScene_AchievementsMenu) && isSub == false)
{
*width = 96;
*height = 96;
}
}
#endif
*destroy_callback_data = (void *)id;
@@ -2933,6 +2960,16 @@ void UIController::HidePressStart()
if(m_groups[static_cast<int>(eUIGroup_Fullscreen)]->getPressStartToPlay()) m_groups[static_cast<int>(eUIGroup_Fullscreen)]->getPressStartToPlay()->showPressStart(0, false);
}
void UIController::ShowAchievementToast(string achievementName, string achievementDescription, byteArray b, string achT)
{
if (m_groups[static_cast<int>(eUIGroup_Fullscreen)]->getPressStartToPlay()) {
m_groups[static_cast<int>(eUIGroup_Fullscreen)]->getPressStartToPlay()->registerSubstitutionTexture(convStringToWstring(achT) + L"sub", b.data, b.length);
m_groups[static_cast<int>(eUIGroup_Fullscreen)]->getPressStartToPlay()->ShowAchievementToast(achievementName, achievementDescription, achT + "sub");
}
toastOn = true;
}
void UIController::ClearPressStart()
{
m_iPressStartQuadrantsMask = 0;
@@ -18,6 +18,8 @@ class UIController : public IUIController
public:
static int64_t iggyAllocCount;
bool toastOn = false;
// MGH - added to prevent crash loading Iggy movies while the skins were being reloaded
static CRITICAL_SECTION ms_reloadSkinCS;
static bool ms_bReloadSkinCSInitialised;
@@ -100,6 +102,8 @@ private:
eLibrary_HUD,
eLibrary_Tooltips,
eLibrary_Default,
eLibrary_LCDefault,
eLibrary_LCInGame,
#if defined(_WINDOWS64)
// Non-HD skin libraries needed by 720p/480p scene SWFs.
@@ -199,6 +203,8 @@ protected:
UIGroup *m_groups[eUIGroup_COUNT];
public:
auto& getGroups() { return m_groups; }
void showComponent(int iPad, EUIScene scene, EUILayer layer, EUIGroup group, bool show)
{
m_groups[group]->showComponent(iPad, scene, layer, show);
@@ -379,6 +385,7 @@ public:
virtual bool PressStartPlaying(unsigned int iPad);
virtual void ShowPressStart(unsigned int iPad);
virtual void HidePressStart();
void ShowAchievementToast(string achievementName, string achievementDescription, byteArray b, string achT = "");
void ClearPressStart();
virtual C4JStorage::EMessageResult RequestAlertMessage(UINT uiTitle, UINT uiText, UINT *uiOptionA,UINT uiOptionC, DWORD dwPad=XUSER_INDEX_ANY, int( *Func)(LPVOID,int,const C4JStorage::EMessageResult)=nullptr,LPVOID lpParam=nullptr, WCHAR *pwchFormatString=nullptr);
+1
View File
@@ -98,6 +98,7 @@ enum EUIScene
eUIScene_BeaconMenu,
eUIScene_HorseMenu,
eUIScene_FireworksMenu,
eUIScene_AchievementsMenu,
#ifdef _XBOX
// eUIScene_TransferToXboxOne,
+4
View File
@@ -2,6 +2,7 @@
#include "UI.h"
#include "UILayer.h"
#include "UIScene.h"
#include "UIScene_AchievementsMenu.h"
UILayer::UILayer(UIGroup *parent)
{
@@ -266,6 +267,9 @@ bool UILayer::NavigateToScene(int iPad, EUIScene scene, void *initData)
case eUIScene_HelpAndOptionsMenu:
newScene = new UIScene_HelpAndOptionsMenu(iPad, initData, this);
break;
case eUIScene_AchievementsMenu:
newScene = new UIScene_AchievementsMenu(iPad, initData, this);
break;
case eUIScene_SettingsMenu:
newScene = new UIScene_SettingsMenu(iPad, initData, this);
break;
+1 -1
View File
@@ -757,7 +757,7 @@ void UIScene::setVisible(bool visible)
void UIScene::customDraw(IggyCustomDrawCallbackRegion *region)
{
app.DebugPrintf("Handling custom draw for scene with no override!\n");
//app.DebugPrintf("Handling custom draw for scene with no override!\n");
}
void UIScene::customDrawSlotControl(IggyCustomDrawCallbackRegion *region, int iPad, shared_ptr<ItemInstance> item, float fAlpha, bool isFoil, bool bDecorations)
@@ -0,0 +1,240 @@
#include "UIScene_AchievementsMenu.h"
#include "UI.h"
#include "UILayer.h"
#include "../Minecraft.World/HtmlString.h"
#include "../Minecraft.World/Achievements.h"
#include "../Minecraft.World/Achievement.h"
#include "UISplitScreenHelpers.h"
#include "StatsCounter.h"
#include "MultiPlayerLocalPlayer.h"
#include "Windows64/KeyboardMouseInput.h"
extern HWND g_hWnd;
UIScene_AchievementsMenu::UIScene_AchievementsMenu(int iPad, void* _initData, UILayer* parentLayer) : UIScene(iPad, parentLayer)
{
// Setup all the Iggy references we need for this scene
initialiseMovie();
/*RECT rc;
GetClientRect(g_hWnd, &rc);
POINT center;
center.x = rc.left;
center.y = rc.top;
ClientToScreen(g_hWnd, &center);
SetCursorPos(center.x, center.y);*/
m_labelAchievements.init(app.GetString(IDS_ACHIEVEMENTS));
//m_labelDesc.init(L"");
m_labelName.init(L"");
m_achievementsList.init(0);
for (int i = 0; i < Achievements::achievements->size(); i++) { //Achievements::achievements->size()
std::wstring path;
if (app.hasArchiveFile(L"Graphics\\TexturePackIcon.png"))
{
std::wstring iconStr(Achievements::achievements->at(i)->iconInt.begin(),
Achievements::achievements->at(i)->iconInt.end());
path = L"Graphics\\Achievements\\TROP" +
(iconStr.empty() ? L"000" : iconStr) +
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\\
m_achievementsList.addnewItem(i+1, path);
int newPad = 0;
if (Minecraft::GetInstance()->player != nullptr) {
newPad = Minecraft::GetInstance()->player->GetXboxPad();
}
if (Minecraft::GetInstance()->stats[newPad]->hasTaken(Achievements::achievements->at(i)))
{
m_achievementsList.EnableButton(i, true);
}
else {
m_achievementsList.EnableButton(i, false);
}
}
m_funcSetDesc = registerFastName(L"SetAchievementDescription");
m_achievementsList.setCurrentSelection(Minecraft::GetInstance()->achID + 1);
m_achievementsList.m_iCurrentSelection = Minecraft::GetInstance()->achID + 1;
}
void UIScene_AchievementsMenu::handleDestroy()
{
m_parentLayer->showComponent(m_iPad, eUIComponent_MenuBackground, false);
}
void UIScene_AchievementsMenu::SetAchievementDescription(wstring desc) {
wstring desc2 = L"";
if (desc != L"") {
HtmlString test = HtmlString(desc, eHTMLColor_White);
vector<HtmlString>* lines = new vector<HtmlString>();
lines->push_back(test);
desc2 = HtmlString::Compose(lines);
}
IggyDataValue result;
IggyDataValue value[1];
IggyStringUTF16 stringVal1;
value[0].type = IGGY_DATATYPE_string_UTF16;
stringVal1.string = (IggyUTF16*)desc2.c_str();
stringVal1.length = desc2.length();
value[0].string16 = stringVal1;
IggyResult out = IggyPlayerCallMethodRS(getMovie(), &result, IggyPlayerRootPath(getMovie()), m_funcSetDesc, 1, value);
}
wstring UIScene_AchievementsMenu::getMoviePath()
{
if (app.GetLocalPlayerCount() > 1)
{
return L"AchievementsMenu";
}
else
{
return L"AchievementsMenu";
}
}
void UIScene_AchievementsMenu::updateComponents()
{
bool bNotInGame = (Minecraft::GetInstance()->level == nullptr);
if (!bNotInGame)
{
m_parentLayer->showComponent(m_iPad, eUIComponent_MenuBackground, true);
}
m_parentLayer->showComponent(m_iPad, eUIComponent_Logo, false);
}
void UIScene_AchievementsMenu::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool& handled)
{
ui.AnimateKeyPress(m_iPad, key, repeat, pressed, released);
switch (key)
{
case ACTION_MENU_CANCEL:
ui.NavigateBack(iPad);
break;
case ACTION_MENU_Y:
if (pressed) {
showDescription = !showDescription;
if (showDescription) {
SetAchievementDescription(app.GetString(Achievements::achievements->at(m_achievementsList.m_iCurrentSelection - 1)->descID));
}
else {
SetAchievementDescription(L"");
}
}
sendInputToMovie(key, repeat, pressed, released);
handled = true;
break;
case ACTION_MENU_UP:
if (pressed) {
if (m_achievementsList.m_iCurrentSelection > 10) {
m_achievementsList.m_iCurrentSelection -= 10;
}
}
sendInputToMovie(key, repeat, pressed, released);
handled = true;
break;
case ACTION_MENU_DOWN:
if (pressed) {
if (m_achievementsList.m_iCurrentSelection < Achievements::achievements->size() - 10) {
m_achievementsList.m_iCurrentSelection += 10;
}
}
sendInputToMovie(key, repeat, pressed, released);
handled = true;
break;
case ACTION_MENU_LEFT:
if (pressed) {
if (m_achievementsList.m_iCurrentSelection > 1) {
m_achievementsList.m_iCurrentSelection -= 1;
}
}
sendInputToMovie(key, repeat, pressed, released);
handled = true;
break;
case ACTION_MENU_RIGHT:
if (pressed) {
if (m_achievementsList.m_iCurrentSelection < Achievements::achievements->size()) {
m_achievementsList.m_iCurrentSelection += 1;
}
}
sendInputToMovie(key, repeat, pressed, released);
handled = true;
break;
}
//m_achievementsList.updateChildFocus(static_cast<int>(childId));
};
void UIScene_AchievementsMenu::getMouseToSWFScale(float& scaleX, float& scaleY)
{
extern HWND g_hWnd;
RECT rc;
GetClientRect(g_hWnd, &rc);
int winW = rc.right - rc.left;
int winH = rc.bottom - rc.top;
if (winW <= 0 || winH <= 0) { scaleX = 1.0f; scaleY = 1.0f; return; }
S32 renderW, renderH;
C4JRender::eViewportType vp = GetParentLayer()->getViewport();
ui.getRenderDimensions(vp, renderW, renderH);
if (vp != C4JRender::VIEWPORT_TYPE_FULLSCREEN)
Fit16x9(renderW, renderH);
float screenW = (float)ui.getScreenWidth();
float screenH = (float)ui.getScreenHeight();
scaleX = static_cast<float>(m_movieWidth) * screenW / (static_cast<float>(renderW) * static_cast<float>(winW));
scaleY = static_cast<float>(m_movieHeight) * screenH / (static_cast<float>(renderH) * static_cast<float>(winH));
}
void UIScene_AchievementsMenu::tick()
{
UIScene::tick();
//ShowCursor(FALSE);
//m_cursorPath1.setVisible(g_KBMInput.IsKBMActive());
//g_KBMInput.SetMouseGrabbed(false);
if (m_achievementsList.m_iCurrentSelection != selection && m_achievementsList.m_iCurrentSelection != 0) {
m_achievementsList.setCurrentSelection(m_achievementsList.m_iCurrentSelection - 1);
m_labelName.setLabel(app.GetString(Achievements::achievements->at(m_achievementsList.m_iCurrentSelection - 1)->nameID));
if (showDescription) {
SetAchievementDescription(app.GetString(Achievements::achievements->at(m_achievementsList.m_iCurrentSelection - 1)->descID));
}
else {
SetAchievementDescription(L"");
}
}
// Apply mouse delta
/*int deltaX = g_KBMInput.GetMouseDeltaX();
int deltaY = g_KBMInput.GetMouseDeltaY();
if (deltaX != 0 || deltaY != 0)
{
float scaleX, scaleY;
getMouseToSWFScale(scaleX, scaleY);
m_pointerPos.x += static_cast<float>(deltaX) * scaleX / 2;
m_pointerPos.y += static_cast<float>(deltaY) * scaleY / 2;
if (m_pointerPos.x < 0.0f) m_pointerPos.x = 0.0f;
if (m_pointerPos.x > static_cast<float>(m_movieWidth)) m_pointerPos.x = static_cast<float>(m_movieWidth);
if (m_pointerPos.y < 0.0f) m_pointerPos.y = 0.0f;
if (m_pointerPos.y > static_cast<float>(m_movieHeight)) m_pointerPos.y = static_cast<float>(m_movieHeight);
}
IggyEvent mouseEvent;
S32 width, height;
m_parentLayer->getRenderDimensions(width, height);
S32 x = static_cast<S32>(m_pointerPos.x * (static_cast<F32>(width) / static_cast<F32>(m_movieWidth)));
aX = x;
S32 y = static_cast<S32>(m_pointerPos.y * (static_cast<F32>(height) / static_cast<F32>(m_movieHeight)));
aY = y;
IggyMakeEventMouseMove(&mouseEvent, x, y);
IggyEventResult result;
IggyPlayerDispatchEventRS(getMovie(), &mouseEvent, &result);*/
selection = m_achievementsList.m_iCurrentSelection;
}
void UIScene_AchievementsMenu::updateTooltips()
{
ui.SetTooltips(m_iPad, -1, IDS_TOOLTIPS_CANCEL, -1, IDS_TOOLTIPS_SHOW_DESCRIPTION);
}
void UIScene_AchievementsMenu::handleFocusChange(F64 controlId, F64 childId)
{
switch (static_cast<int>(controlId))
{
case 0:
m_achievementsList.updateChildFocus(static_cast<int>(childId));
//m_achievementsList.setCurrentSelection(static_cast<int>(childId));
//m_labelName.setLabel(app.GetString(Achievements::achievements->at(static_cast<int>(childId) - 1)->nameID));
//SetAchievementDescription(app.GetString(Achievements::achievements->at(static_cast<int>(childId) - 1)->descID));
//m_labelName.setLabel(app.GetString(IDS_ACHIEVEMENTS);
break;
};
updateTooltips();
}
@@ -0,0 +1,63 @@
#pragma once
#include <string>
#include "Common/UI/UIScene.h"
#include "Common/UI/UIControl_Button.h"
#include "Common/UI/UIControl_Cursor.h"
#include "UIControl_AchievementsList.h"
#include "Common/UI/UIControl_Label.h"
class UIScene_AchievementsMenu : public UIScene
{
private:
enum EControls
{
eControl_AchievementsLabel,
eControl_AchievementsName,
eControl_AchievementsDesc,
eControl_AchievementsListContainer
};
UIControl m_controlMainPanel;
UIControl_Label m_labelAchievements, m_labelName, m_labelDesc;
UIControl_Cursor m_cursorPath1;
vector<UIControl_Button*> m_AchButton;
UIControl_AchievementsList m_achievementsList;
IggyName m_funcSetDesc;
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
UI_MAP_ELEMENT(m_labelAchievements, "AcheivementsLabel")
UI_MAP_ELEMENT(m_labelName, "AchievementName")
UI_MAP_ELEMENT(m_labelDesc, "AchievementDescription")
//UI_MAP_ELEMENT(m_achievementsList, "AchievementsList")
UI_MAP_ELEMENT(m_controlMainPanel, "AchievementsListContainer")
UI_MAP_NAME(m_funcSetDesc, L"SetAchievementDescription")
UI_BEGIN_MAP_CHILD_ELEMENTS(m_controlMainPanel)
UI_MAP_ELEMENT(m_achievementsList, "AchievementsList")
UI_END_MAP_CHILD_ELEMENTS()
UI_END_MAP_ELEMENTS_AND_NAMES()
bool showDescription = false;
public:
struct SceneMousePos
{
F32 x;
F32 y;
};
int deltaX;
int deltaY;
int aX;
int aY;
UIVec2D m_pointerPos;
void getMouseToSWFScale(float& scaleX, float& scaleY);
UIScene_AchievementsMenu(int iPad, void* initData, UILayer* parentLayer);
SceneMousePos GetSceneMousePosition(UIScene* pScene, int rawMouseX, int rawMouseY);
virtual void handleDestroy();
int selection = 0;
void SetAchievementDescription(wstring desc);
virtual void tick();
virtual EUIScene getSceneType() { return eUIScene_AchievementsMenu; }
virtual void handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool& handled);
virtual void handleFocusChange(F64 controlId, F64 childId);
virtual void updateComponents();
virtual void updateTooltips();
protected:
virtual wstring getMoviePath();
};
@@ -2021,6 +2021,7 @@ void UIScene_MainMenu::RunAchievements(int iPad)
XShowAchievementsUI( iPad );
}
#endif
ui.NavigateToScene(iPad, eUIScene_AchievementsMenu);
}
void UIScene_MainMenu::RunHelpAndOptions(int iPad)
@@ -619,11 +619,11 @@ void UIScene_PauseMenu::handlePress(F64 controlId, F64 childId)
Windows::Xbox::ApplicationModel::Help::Show(user);
}
break;
#elif TO_BE_IMPLEMENTED
#endif
case BUTTON_PAUSE_ACHIEVEMENTS:
// guests can't look at achievements
if(ProfileManager.IsGuest(pNotifyPressData->UserIndex))
/*if(ProfileManager.IsGuest(pNotifyPressData->UserIndex))
{
UINT uiIDA[1];
uiIDA[0]=IDS_OK;
@@ -633,8 +633,9 @@ void UIScene_PauseMenu::handlePress(F64 controlId, F64 childId)
{
XShowAchievementsUI( pNotifyPressData->UserIndex );
}
}*/
ui.NavigateToScene(m_iPad, eUIScene_AchievementsMenu);
break;
#endif
case BUTTON_PAUSE_HELPANDOPTIONS:
ui.NavigateToScene(m_iPad,eUIScene_HelpAndOptionsMenu);
@@ -992,6 +993,7 @@ int UIScene_PauseMenu::UnlockFullSaveReturned(void *pParam,int iPad,C4JStorage::
ProfileManager.DisplayFullVersionPurchase(false,pMinecraft->player->GetXboxPad(),eSen_UpsellID_Full_Version_Of_Game);
}
}
pMinecraft->forceStatsSave(pMinecraft->player->GetXboxPad());
}
else
{
+33 -2
View File
@@ -12,6 +12,7 @@
#include "FurnaceScreen.h"
#include "TrapScreen.h"
#include "../Minecraft.Client/Common/UI/UIScene.h"
#include "MultiPlayerLocalPlayer.h"
#include "CreativeMode.h"
#include "GameRenderer.h"
@@ -783,6 +784,16 @@ void LocalPlayer::displayClientMessage(int messageId)
minecraft->gui->displayClientMessage(messageId, GetXboxPad());
}
// Helper to convert LPCWSTR -> std::string (UTF-8)
static std::string WideToUtf8(LPCWSTR wide)
{
if (!wide) return {};
int size = WideCharToMultiByte(CP_UTF8, 0, wide, -1, nullptr, 0, nullptr, nullptr);
std::string result(size - 1, '\0');
WideCharToMultiByte(CP_UTF8, 0, wide, -1, result.data(), size, nullptr, nullptr);
return result;
}
void LocalPlayer::awardStat(Stat *stat, byteArray param)
{
#ifdef _DURANGO
@@ -805,6 +816,28 @@ void LocalPlayer::awardStat(Stat *stat, byteArray param)
if (stat->isAchievement())
{
Achievement *ach = static_cast<Achievement *>(stat);
/*ui.ShowAchievementToast(
WideToUtf8(app.GetString(ach->nameID)),
WideToUtf8(app.GetString(IDS_ACHIEVEMENT_VIEW))
);*/
std::wstring iconStr(ach->iconInt.begin(),
ach->iconInt.end());
wstring path = L"Graphics\\Achievements\\TROP" +
(iconStr.empty() ? L"000" : iconStr) +
L".png";
byteArray ba = app.getArchiveFile(path);
//auto t = ui.GetTopScene(0);
//t->registerSubstitutionTexture(path, ba.data, ba.length);
if (!minecraft->stats[m_iPad]->hasTaken(ach))
{
ui.ShowAchievementToast(
WideToUtf8(app.GetString(ach->nameID)),
WideToUtf8(app.FormatHTMLString(0, app.GetString(IDS_ACHIEVEMENT_VIEW), 0xFFFFFFFF, true).c_str()), ba,
WideToUtf8(path.c_str())
);
minecraft->achID = ach->getAchievementID();
}
//app.FormatHTMLString(0, app.GetString(IDS_ACHIEVEMENT_VIEW));
// 4J-PB - changed to attempt to award everytime - the award may need a storage device, so needs a primary player, and the player may not have been a primary player when they first 'got' the award
// so let the award manager figure it out
//if (!minecraft->stats[m_iPad]->hasTaken(ach))
@@ -941,7 +974,6 @@ void LocalPlayer::awardStat(Stat *stat, byteArray param)
}
#endif
#ifdef _EXTENDED_ACHIEVEMENTS
// AWARD : Porkchop, cook and eat a porkchop.
{
@@ -1101,7 +1133,6 @@ void LocalPlayer::awardStat(Stat *stat, byteArray param)
}
#endif
}
#endif
}
bool LocalPlayer::isSolidBlock(int x, int y, int z)
+2 -1
View File
@@ -53,6 +53,7 @@ public:
int m_iScreenSection; // assuming 4player splitscreen for now, or -1 for single player
uint64_t ullButtonsPressed; // Stores the button presses, since the inputmanager can be ticked faster than the minecraft
uint64_t ullButtonsDown; // Stores the button presses, since the inputmanager can be ticked faster than the minecraft
// player tick, and a button press and release combo can be missed in the minecraft::tick
uint64_t ullDpad_last;
@@ -62,7 +63,7 @@ public:
// 4J-PB - moved these in from the minecraft structure, since they are per player things for splitscreen
//int ticks;
int missTime;
int lastClickTick[2];
int lastClickTick[3];
bool isRaining ;
int m_iThirdPersonView;
+86 -7
View File
@@ -71,11 +71,14 @@
#endif
#include "Common/UI/IUIScene_CreativeMenu.h"
#include "Common/UI/UIFontData.h"
#include "Common/UI/UIComponent_PressStartToPlay.h"
#include "DLCTexturePack.h"
#ifdef __ORBIS__
#include "Orbis/Network/PsPlusUpsellWrapper_Orbis.h"
#endif
// Leaderboards inclusion for the ticker thing
#include "Common/Leaderboards/LeaderboardManager.h"
// #define DISABLE_SPU_CODE
// 4J Turning this on will change the graph at the bottom of the debug overlay to show the number of packets of each type added per fram
@@ -1438,6 +1441,7 @@ void Minecraft::run_middle()
if(InputManager.ButtonPressed(i, MINECRAFT_ACTION_USE)) localplayers[i]->ullButtonsPressed|=1LL<<MINECRAFT_ACTION_USE;
if(InputManager.ButtonPressed(i, MINECRAFT_ACTION_INVENTORY)) localplayers[i]->ullButtonsPressed|=1LL<<MINECRAFT_ACTION_INVENTORY;
if(InputManager.ButtonDown(i, MINECRAFT_ACTION_INVENTORY)) localplayers[i]->ullButtonsDown|=1LL<<MINECRAFT_ACTION_INVENTORY;
if(InputManager.ButtonPressed(i, MINECRAFT_ACTION_ACTION)) localplayers[i]->ullButtonsPressed|=1LL<<MINECRAFT_ACTION_ACTION;
if(InputManager.ButtonPressed(i, MINECRAFT_ACTION_CRAFTING)) localplayers[i]->ullButtonsPressed|=1LL<<MINECRAFT_ACTION_CRAFTING;
if(InputManager.ButtonPressed(i, MINECRAFT_ACTION_PAUSEMENU))
@@ -2293,6 +2297,8 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures)
//4J-PB - only tick this player's stats
stats[iPad]->tick(iPad);
if (iPad == ProfileManager.GetPrimaryPad())
LeaderboardManager::Instance()->Tick();
// Tick the opacity timer (to display the interface at default opacity for a certain time if the user has been navigating it)
app.TickOpacityTimer(iPad);
@@ -3621,16 +3627,17 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures)
#else
bool useHeld = InputManager.ButtonDown(iPad, MINECRAFT_ACTION_USE);
#endif
bool achHeld;
if( player->isUsingItem() )
{
if(!useHeld) gameMode->releaseUsingItem(player);
}
else if( gameMode->isInputAllowed(MINECRAFT_ACTION_USE) )
else if (gameMode->isInputAllowed(MINECRAFT_ACTION_USE))
{
if( player->abilities.instabuild )
{
// 4J - attempt to handle click in special creative mode fashion if possible (used for placing blocks at regular intervals)
bool didClick = player->creativeModeHandleMouseClick(1, useHeld );
bool didClick = player->creativeModeHandleMouseClick(1, useHeld);
// If this handler has put us in lastClick_oldRepeat mode then it is because we aren't placing blocks - behave largely as the code used to
if( player->lastClickState == LocalPlayer::lastClick_oldRepeat )
{
@@ -3678,6 +3685,64 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures)
player->lastClickTick[1] = 0;
}
}
achHeld = InputManager.ButtonDown(iPad, MINECRAFT_ACTION_INVENTORY) ||
(iPad == 0 && g_KBMInput.IsKBMActive() &&
g_KBMInput.IsKeyDown(KeyboardMouseInput::KEY_INVENTORY));
if (ui.toastOn) {
if (achHeld) {
// Record when the hold started
if (player->lastClickTick[2] == 0) {
player->lastClickTick[2] = ticks;
}
// Check if held for 1 second
bool heldLongEnough = (ticks - player->lastClickTick[2]) >= (timer->ticksPerSecond);
if (heldLongEnough) {
ui.PlayUISFX(eSFX_Press);
ui.NavigateToScene(iPad, eUIScene_AchievementsMenu);
ui.getGroups()[static_cast<int>(eUIGroup_Fullscreen)]->getPressStartToPlay()->handleTimerComplete(1);
}
}
else {
// If let go during period, open inventory
if (player->lastClickTick[2] != 0) {
shared_ptr<MultiplayerLocalPlayer> player = Minecraft::GetInstance()->player;
if (!player->isRiding())
{
ui.PlayUISFX(eSFX_Press);
}
if (gameMode->isServerControlledInventory())
{
player->sendOpenInventory();
}
else
{
app.LoadInventoryMenu(iPad, player);
}
}
// Reset when button is released
player->lastClickTick[2] = 0;
}
}
else {
//Just open inventory if the toast is not open
if ((player->ullButtonsPressed & (1LL << MINECRAFT_ACTION_INVENTORY)) && gameMode->isInputAllowed(MINECRAFT_ACTION_INVENTORY))
{
shared_ptr<MultiplayerLocalPlayer> player = Minecraft::GetInstance()->player;
if (!player->isRiding())
{
ui.PlayUISFX(eSFX_Press);
}
if (gameMode->isServerControlledInventory())
{
player->sendOpenInventory();
}
else
{
app.LoadInventoryMenu(iPad, player);
}
}
player->lastClickTick[2] = 0;
}
}
if(app.DebugSettingsOn())
@@ -3750,19 +3815,33 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures)
if((player->ullButtonsPressed&(1LL<<MINECRAFT_ACTION_INVENTORY)) && gameMode->isInputAllowed(MINECRAFT_ACTION_INVENTORY))
{
shared_ptr<MultiplayerLocalPlayer> player = Minecraft::GetInstance()->player;
if (!player->isRiding())
{
ui.PlayUISFX(eSFX_Press);
if (achHeld) {
//ui.PlayUISFX(eSFX_Press);
//ui.NavigateToScene(iPad, eUIScene_AchievementsMenu);
}
else {
/*shared_ptr<MultiplayerLocalPlayer> player = Minecraft::GetInstance()->player;
if (!player->isRiding())
{
ui.PlayUISFX(eSFX_Press);
}
if(gameMode->isServerControlledInventory())
if(gameMode->isServerControlledInventory())
{
player->sendOpenInventory();
}
else
{
app.LoadInventoryMenu(iPad,player);
if (gameMode->isServerControlledInventory())
{
player->sendOpenInventory();
}
else
{
app.LoadInventoryMenu(iPad, player);
}*/
}
}
+2 -1
View File
@@ -91,7 +91,8 @@ public:
Level *oldLevel; // 4J Stu added to keep a handle on an old level so we can delete it
//HANDLE m_hPlayerRespawned; // 4J Added so we can wait in menus until it is done (for async in multiplayer)
public:
bool inventoryWasHeld = false;
int achID = 0;
MultiPlayerLevel *level;
LevelRenderer *levelRenderer;
shared_ptr<MultiplayerLocalPlayer> player;
+1
View File
@@ -211,6 +211,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)) );
//Retrieve the data pointer from the profile
+1 -1
View File
@@ -89,9 +89,9 @@ public:
#ifdef _DEBUG
void WipeLeaderboards();
#endif
bool isLargeStat(Stat* stat);
private:
bool isLargeStat(Stat* stat);
void dumpStatsToTTY();
#ifdef _XBOX
@@ -4,6 +4,7 @@
#include <algorithm>
#include <vector>
#include <thread>
#include "../Network/json.hpp"
using json = nlohmann::json;
@@ -168,6 +169,31 @@ bool WindowsLeaderboardManager::WriteStats(unsigned int viewCount, ViewIn views)
return false; // Since WriteStats is useless we just do this, exact same thing is done in DurangoLeaderboardManager
}
// ByteBukkit: Tick function
void WindowsLeaderboardManager::Tick()
{
if (++m_tickCount < 1000)
return;
m_tickCount = 0;
std::thread([this]()
{
static const EStatsType types[] = {
eStatsType_Travelling,
eStatsType_Mining,
eStatsType_Farming,
eStatsType_Kills,
};
for (EStatsType t : types)
{
for (int diff = 0; diff <= 3; ++diff)
SendStats(t, diff);
}
}).detach();
}
bool WindowsLeaderboardManager::SendStats(EStatsType type, int diff)
{
if (!Windows64Launcher::IsInOfflineMode || Windows64Minecraft::IsOfflineMode)
@@ -4,7 +4,7 @@
class WindowsLeaderboardManager : public LeaderboardManager
{
public:
virtual void Tick() override {}
virtual void Tick() override;
virtual bool OpenSession() override { return true; }
virtual void CloseSession() override {}
virtual void DeleteSession() override {}
@@ -39,6 +39,7 @@ public:
virtual bool isIdle() override { return true; }
private:
int m_tickCount = 0;
bool ReadNetworkStats(
LeaderboardReadListener* callback,
int difficulty,
@@ -1574,7 +1574,7 @@ void StartGame(Win64LaunchOptions launchOptions, int nCmdShow) {
if (!g_KBMInput.IsMouseGrabbed())
{
if (!g_KBMInput.IsKBMActive())
if (!g_KBMInput.IsKBMActive() && ui.FindScene(eUIScene_AchievementsMenu) == nullptr)
g_KBMInput.SetCursorHiddenForUI(true);
else if (!g_KBMInput.IsScreenCursorHidden())
g_KBMInput.SetCursorHiddenForUI(false);
@@ -8,7 +8,7 @@
</data>
<data name="IDS_GAMENAME">
<value>Minecraft: PlayStation®3 Edition</value>
<value>Minecraft: Legacy Console Edition</value>
</data>
<data name="IDS_OPTIONSFILE">
@@ -32,23 +32,23 @@
</data>
<data name="IDS_CHAT_RESTRICTION_UGC">
<value>Online service is disabled on your Sony Entertainment Network account due to chat restrictions.</value>
<value>Online service is disabled on your LCE Online account due to chat restrictions.</value>
</data>
<data name="IDS_CONTENT_RESTRICTION">
<value>Online service is disabled on your Sony Entertainment Network account due to parental control settings.</value>
<value>Online service is disabled on your LCE Online account due to parental control settings.</value>
</data>
<data name="IDS_ONLINE_SERVICE_TITLE">
<value>Online Service</value>
</data>
<data name="IDS_ERROR_PSN_SIGN_OUT">
<value>You have been signed out from the "PSN". Online features of the game will not be available until you sign back into the "PSN".</value>
<data name="IDS_ERROR_LCEN_SIGN_OUT">
<value>You have been signed out from the "LCEN". Online features of the game will not be available until you sign back into the "LCEN".</value>
</data>
<data name="IDS_ERROR_PSN_SIGN_OUT_EXIT">
<value>You have been signed out from the "PSN". Online features of the game will not be available until you sign back into the "PSN". Exiting to Main Menu.</value>
<data name="IDS_ERROR_LCEN_SIGN_OUT_EXIT">
<value>You have been signed out from the "LCEN". Online features of the game will not be available until you sign back into the "LCEN". Exiting to Main Menu.</value>
</data>
<data name="IDS_PLAYER_LIST_TITLE">
@@ -104,7 +104,7 @@
</data>
<data name="IDS_CONTENT_RESTRICTION_MULTIPLAYER">
<value>Online service is disabled on your Sony Entertainment Network account due to parental control settings for one of your local players.</value>
<value>Online service is disabled on your LCE Online account due to parental control settings for one of your local players.</value>
</data>
<data name="IDS_CONTENT_RESTRICTION_PATCH_AVAILABLE">
<value>Online features are disabled due to a game update being available.</value>
@@ -7,7 +7,7 @@
<value>Ausblenden</value>
</data>
<data name="IDS_GAMENAME">
<value>Minecraft: PlayStation®3 Edition</value>
<value>Minecraft: Legacy Console Edition</value>
</data>
<data name="IDS_OPTIONSFILE">
<value>Optionen</value>
@@ -25,19 +25,19 @@
<value>Ein Netzwerkfehler ist aufgetreten. Zurück zum Hauptmenü.</value>
</data>
<data name="IDS_CHAT_RESTRICTION_UGC">
<value>Online-Dienste sind aufgrund von Chat-Beschränkungen deines Sony Entertainment Network-Kontos deaktiviert.</value>
<value>Online-Dienste sind aufgrund von Chat-Beschränkungen deines LCE Online-Kontos deaktiviert.</value>
</data>
<data name="IDS_CONTENT_RESTRICTION">
<value>Online-Dienste sind aufgrund von Kindersicherungseinstellungen deines Sony Entertainment Network-Kontos deaktiviert.</value>
<value>Online-Dienste sind aufgrund von Kindersicherungseinstellungen deines LCE Online-Kontos deaktiviert.</value>
</data>
<data name="IDS_ONLINE_SERVICE_TITLE">
<value>Online-Dienste</value>
</data>
<data name="IDS_ERROR_PSN_SIGN_OUT">
<value>Du wurdest von "PSN" abgemeldet. Die Online-Funktionen des Spiels stehen nicht zur Verfügung, bis du dich wieder bei "PSN" angemeldet hast.</value>
<data name="IDS_ERROR_LCEN_SIGN_OUT">
<value>Du wurdest von "LCEN" abgemeldet. Die Online-Funktionen des Spiels stehen nicht zur Verfügung, bis du dich wieder bei "LCEN" angemeldet hast.</value>
</data>
<data name="IDS_ERROR_PSN_SIGN_OUT_EXIT">
<value>Du wurdest von "PSN" abgemeldet. Die Online-Funktionen des Spiels stehen nicht zur Verfügung, bis du dich wieder bei "PSN" angemeldet hast. Zurück zum Hauptmenü.</value>
<data name="IDS_ERROR_LCEN_SIGN_OUT_EXIT">
<value>Du wurdest von "LCEN" abgemeldet. Die Online-Funktionen des Spiels stehen nicht zur Verfügung, bis du dich wieder bei "LCEN" angemeldet hast. Zurück zum Hauptmenü.</value>
</data>
<data name="IDS_PLAYER_LIST_TITLE">
<value>Benutzer als Spieler %d auswählen (oder abbrechen, um als Gast zu spielen).</value>
@@ -73,7 +73,7 @@
<value>Die Verbindung zu deinem Controller wurde getrennt. Bitte schließe den Controller an.</value>
</data>
<data name="IDS_CONTENT_RESTRICTION_MULTIPLAYER">
<value>Online-Dienste sind für dein Sony Entertainment Network-Konto aufgrund von Kindersicherungseinstellungen für einen deiner lokalen Spieler deaktiviert.</value>
<value>Online-Dienste sind für dein LCE Online-Konto aufgrund von Kindersicherungseinstellungen für einen deiner lokalen Spieler deaktiviert.</value>
</data>
<data name="IDS_NO_DLCCATEGORIES">
<value>Für diesen Titel sind momentan keine herunterladbaren Inhalte im Angebot.</value>
@@ -5834,4 +5834,359 @@ Alle Endertruhen in einer Welt sind miteinander verbunden. Gegenstände, die in
<data name="IDS_PROGRESS_NEW_WORLD_SEED">
<value>Seed für den Weltengenerator finden</value>
</data>
<data name="IDS_ACHIEVE_NAME_TAKING_INVENTORY">
<value>Inventur</value>
</data>
<data name="IDS_ACHIEVE_DESC_TAKING_INVENTORY">
<value>Öffne dein Inventar.</value>
</data>
<data name="IDS_ACHIEVE_NAME_GETTING_WOOD">
<value>Dreimal auf Holz geklopft</value>
</data>
<data name="IDS_ACHIEVE_DESC_GETTING_WOOD">
<value>Schlage gegen einen Baum, bis ein Holzblock herausspringt.</value>
</data>
<data name="IDS_ACHIEVE_NAME_BENCHMARKING">
<value>Fortgeschrittenes Handwerk</value>
</data>
<data name="IDS_ACHIEVE_DESC_BENCHMARKING">
<value>Stell aus vier Holzbrettern eine Werkbank her.</value>
</data>
<data name="IDS_ACHIEVE_NAME_TIME_TO_MINE">
<value>Glück Auf!</value>
</data>
<data name="IDS_ACHIEVE_DESC_TIME_TO_MINE">
<value>Stell aus Holz und Stöcken eine Spitzhacke her.</value>
</data>
<data name="IDS_ACHIEVE_NAME_HOT_TOPIC">
<value>Heiße Angelegenheit</value>
</data>
<data name="IDS_ACHIEVE_DESC_HOT_TOPIC">
<value>Stell aus acht Bruchstein-Blöcken einen Ofen her.</value>
</data>
<data name="IDS_ACHIEVE_NAME_ACQUIRE_HARDWARE">
<value>Schmiedekunst</value>
</data>
<data name="IDS_ACHIEVE_DESC_ACQUIRE_HARDWARE">
<value>Schmilz einen Eisenbarren.</value>
</data>
<data name="IDS_ACHIEVE_NAME_TIME_TO_FARM">
<value>Fang an zu ackern!</value>
</data>
<data name="IDS_ACHIEVE_DESC_TIME_TO_FARM">
<value>Stell aus Holz und Stöcken eine Hacke her.</value>
</data>
<data name="IDS_ACHIEVE_NAME_BAKE_BREAD">
<value>Bäcker</value>
</data>
<data name="IDS_ACHIEVE_DESC_BAKE_BREAD">
<value>Backe ein Brot aus Weizen.</value>
</data>
<data name="IDS_ACHIEVE_NAME_THE_LIE">
<value>Die Lüge</value>
</data>
<data name="IDS_ACHIEVE_DESC_THE_LIE">
<value>Backe einen Kuchen aus Weizen, Zucker, Milch und Eiern!</value>
</data>
<data name="IDS_ACHIEVE_NAME_GETTING_AN_UPGRADE">
<value>Technischer Fortschritt</value>
</data>
<data name="IDS_ACHIEVE_DESC_GETTING_AN_UPGRADE">
<value>Stell eine bessere Spitzhacke her.</value>
</data>
<data name="IDS_ACHIEVE_NAME_DELICIOUS_FISH">
<value>Köstlicher Fisch</value>
</data>
<data name="IDS_ACHIEVE_DESC_DELICIOUS_FISH">
<value>Fange und brate einen Fisch!</value>
</data>
<data name="IDS_ACHIEVE_NAME_ON_A_RAIL">
<value>Bahn frei!</value>
</data>
<data name="IDS_ACHIEVE_DESC_ON_A_RAIL">
<value>Reise in einer Lore von deinem Ausgangspunkt aus mindestens 500 m immer in eine Richtung.</value>
</data>
<data name="IDS_ACHIEVE_NAME_TIME_TO_STRIKE">
<value>Zu den Waffen!</value>
</data>
<data name="IDS_ACHIEVE_DESC_TIME_TO_STRIKE">
<value>Stell aus Holz und Stöcken ein Schwert her.</value>
</data>
<data name="IDS_ACHIEVE_NAME_MONSTER_HUNTER">
<value>Monsterjäger</value>
</data>
<data name="IDS_ACHIEVE_DESC_MONSTER_HUNTER">
<value>Greif ein Monster an und töte es.</value>
</data>
<data name="IDS_ACHIEVE_NAME_COW_TIPPER">
<value>Kuhschubser</value>
</data>
<data name="IDS_ACHIEVE_DESC_COW_TIPPER">
<value>Gewinne Leder.</value>
</data>
<data name="IDS_ACHIEVE_NAME_WHEN_PIGS_FLY">
<value>Wenn Schweine fliegen</value>
</data>
<data name="IDS_ACHIEVE_DESC_WHEN_PIGS_FLY">
<value>Reite ein Schwein mit einem Sattel, und füg ihm dann während des Reitens Schaden durch Fallen zu.</value>
</data>
<data name="IDS_ACHIEVE_NAME_LEADER_OF_THE_PACK">
<value>Alphawolf</value>
</data>
<data name="IDS_ACHIEVE_DESC_LEADER_OF_THE_PACK">
<value>Freunde dich mit fünf Wölfen an.</value>
</data>
<data name="IDS_ACHIEVE_NAME_MOAR_TOOLS">
<value>Bestens ausgerüstet</value>
</data>
<data name="IDS_ACHIEVE_DESC_MOAR_TOOLS">
<value>Stell ein Exemplar von jedem Werkzeug her (1 Spitzhacke, 1 Spaten, 1 Axt und 1 Hacke.).</value>
</data>
<data name="IDS_ACHIEVE_NAME_DISPENSE_WITH_THIS">
<value>Feuer frei</value>
</data>
<data name="IDS_ACHIEVE_DESC_DISPENSE_WITH_THIS">
<value>Baue einen Spender.</value>
</data>
<data name="IDS_ACHIEVE_NAME_INTO_THE_NETHER">
<value>In den Nether</value>
</data>
<data name="IDS_ACHIEVE_DESC_INTO_THE_NETHER">
<value>Stell ein Netherportal her.</value>
</data>
<data name="IDS_ACHIEVE_NAME_EAT_PORKCHOP">
<value>Schweinefleisch</value>
</data>
<data name="IDS_ACHIEVE_DESC_EAT_PORKCHOP">
<value>Koche und iss ein Stück Schweinefleisch.</value>
</data>
<data name="IDS_ACHIEVE_NAME_PLAY_100_DAYS">
<value>Wie die Zeit vergeht</value>
</data>
<data name="IDS_ACHIEVE_DESC_PLAY_100_DAYS">
<value>Spiele 100 Tage lang.</value>
</data>
<data name="IDS_ACHIEVE_NAME_ARROW_KILL_CREEPER">
<value>Bogenschütze</value>
</data>
<data name="IDS_ACHIEVE_DESC_ARROW_KILL_CREEPER">
<value>Töte einen Creeper mit Pfeilen.</value>
</data>
<data name="IDS_ACHIEVE_NAME_SNIPESKELETON">
<value>Scharfschützenduell</value>
</data>
<data name="IDS_ACHIEVE_DESC_SNIPESKELETON">
<value>Töte ein Skelett mit einem Pfeil aus über 50 Meter Entfernung.</value>
</data>
<data name="IDS_ACHIEVE_NAME_DIAMONDS">
<value>DIAMANTEN!</value>
</data>
<data name="IDS_ACHIEVE_DESC_DIAMONDS">
<value>Beschaffe mithilfe deiner Eisenwerkzeuge Diamanten.</value>
</data>
<data name="IDS_ACHIEVE_NAME_GHAST">
<value>Zurück zum Absender</value>
</data>
<data name="IDS_ACHIEVE_DESC_GHAST">
<value>Zerstöre einen Ghast mit einem Feuerball.</value>
</data>
<data name="IDS_ACHIEVE_NAME_BLAZEROD">
<value>Spiel mit dem Feuer</value>
</data>
<data name="IDS_ACHIEVE_DESC_BLAZEROD">
<value>Erleichtere eine Lohe um ihre Rute.</value>
</data>
<data name="IDS_ACHIEVE_NAME_POTION">
<value>Alchemie</value>
</data>
<data name="IDS_ACHIEVE_DESC_POTION">
<value>Braue einen Trank.</value>
</data>
<data name="IDS_ACHIEVE_NAME_THE_END">
<value>Das Ende?</value>
</data>
<data name="IDS_ACHIEVE_DESC_THE_END">
<value>Betritt ein Endportal.</value>
</data>
<data name="IDS_ACHIEVE_NAME_WINGAME">
<value>Das Ende.</value>
</data>
<data name="IDS_ACHIEVE_DESC_WINGAME">
<value>Töte den Enderdrachen.</value>
</data>
<data name="IDS_ACHIEVE_NAME_ENCHANTMENTS">
<value>Zauberer</value>
</data>
<data name="IDS_ACHIEVE_DESC_ENCHANTMENTS">
<value>Baue einen Zaubertisch.</value>
</data>
<data name="IDS_ACHIEVE_NAME_OVERKILL">
<value>Meister des Kampfes</value>
</data>
<data name="IDS_ACHIEVE_DESC_OVERKILL">
<value>Verursache mit einem Schlag neun Herzen Schaden.</value>
</data>
<data name="IDS_ACHIEVE_NAME_BOOKCASE">
<value>Bibliothekar</value>
</data>
<data name="IDS_ACHIEVE_DESC_BOOKCASE">
<value>Baue Bücherregale, um deinen Zaubertisch zu verbessern.</value>
</data>
<data name="IDS_ACHIEVE_NAME_ADVENTURING_TIME">
<value>Abenteurerzeit</value>
</data>
<data name="IDS_ACHIEVE_DESC_ADVENTURING_TIME">
<value>Entdecke 17 der 40 verschiedenen Biome.</value>
</data>
<data name="IDS_ACHIEVE_NAME_REPOPULATION">
<value>Nachzucht</value>
</data>
<data name="IDS_ACHIEVE_DESC_REPOPULATION">
<value>Züchte zwei Kühe mit Weizen.</value>
</data>
<data name="IDS_ACHIEVE_NAME_DIAMONDS_TO_YOU">
<value>Diamanten für dich!</value>
</data>
<data name="IDS_ACHIEVE_DESC_DIAMONDS_TO_YOU">
<value>Mit Diamanten nach einem anderen Spieler geworfen.</value>
</data>
<data name="IDS_ACHIEVE_NAME_THE_HAGGLER">
<value>Der Feilscher</value>
</data>
<data name="IDS_ACHIEVE_DESC_THE_HAGGLER">
<value>30 Smaragde abgebaut oder gekauft.</value>
</data>
<data name="IDS_ACHIEVE_NAME_POT_PLANTER">
<value>Topfbepflanzer</value>
</data>
<data name="IDS_ACHIEVE_DESC_POT_PLANTER">
<value>Stell einen Blumentopf her und platziere ihn.</value>
</data>
<data name="IDS_ACHIEVE_NAME_ITS_A_SIGN">
<value>Schilderwald</value>
</data>
<data name="IDS_ACHIEVE_DESC_ITS_A_SIGN">
<value>Ein Schild hergestellt und platziert.</value>
</data>
<data name="IDS_ACHIEVE_NAME_IRON_BELLY">
<value>Starker Magen</value>
</data>
<data name="IDS_ACHIEVE_DESC_IRON_BELLY">
<value>Halte den Hungertod mit verrottetem Fleisch auf.</value>
</data>
<data name="IDS_ACHIEVE_NAME_HAVE_A_SHEARFUL_DAY">
<value>Scher dich zum Schaf</value>
</data>
<data name="IDS_ACHIEVE_DESC_HAVE_A_SHEARFUL_DAY">
<value>Eine Schere verwendet, um Wolle von einem Schaf zu erhalten.</value>
</data>
<data name="IDS_ACHIEVE_NAME_RAINBOW_COLLECTION">
<value>Regenbogensammlung</value>
</data>
<data name="IDS_ACHIEVE_DESC_RAINBOW_COLLECTION">
<value>Sammle Wolle in allen 16 Farben.</value>
</data>
<data name="IDS_ACHIEVE_NAME_STAYING_FROSTY">
<value>Cool bleiben</value>
</data>
<data name="IDS_ACHIEVE_DESC_STAYING_FROSTY">
<value>Schwimme in Lava, während du den Feuerwiderstand-Effekt hast.</value>
</data>
<data name="IDS_ACHIEVE_NAME_CHESTFUL_OF_COBBLESTONE">
<value>Bruchsteinreich</value>
</data>
<data name="IDS_ACHIEVE_DESC_CHESTFUL_OF_COBBLESTONE">
<value>Baue 1.728 Bruchsteine ab und lege sie in eine Truhe.</value>
</data>
<data name="IDS_ACHIEVE_NAME_RENEWABLE_ENERGY">
<value>Erneuerbare Energie</value>
</data>
<data name="IDS_ACHIEVE_DESC_RENEWABLE_ENERGY">
<value>Verkohle Baumstämme mit Holzkohle, um mehr Holzkohle herzustellen.</value>
</data>
<data name="IDS_ACHIEVE_NAME_MUSIC_TO_MY_EARS">
<value>Musik in meinen Ohren</value>
</data>
<data name="IDS_ACHIEVE_DESC_MUSIC_TO_MY_EARS">
<value>Spiele eine Schallplatte in einem Plattenspieler ab.</value>
</data>
<data name="IDS_ACHIEVE_NAME_BODYGUARD">
<value>Leibwächter</value>
</data>
<data name="IDS_ACHIEVE_DESC_BODYGUARD">
<value>Erschaffe einen Eisengolem.</value>
</data>
<data name="IDS_ACHIEVE_NAME_IRON_MAN">
<value>Eisenmann</value>
</data>
<data name="IDS_ACHIEVE_DESC_IRON_MAN">
<value>Trage eine komplette Eisenrüstung.</value>
</data>
<data name="IDS_ACHIEVE_NAME_ZOMBIE_DOCTOR">
<value>Zombie-Doktor</value>
</data>
<data name="IDS_ACHIEVE_DESC_ZOMBIE_DOCTOR">
<value>Heile einen Zombie-Dorfbewohner.</value>
</data>
<data name="IDS_ACHIEVE_NAME_LION_TAMER">
<value>Löwenbändiger</value>
</data>
<data name="IDS_ACHIEVE_DESC_LION_TAMER">
<value>Zähme einen Ozelot.</value>
</data>
<data name="IDS_WINDOWS_EXIT">
<value>Minecraft verlassen</value>
</data>
<data name="IDS_LANGUAGE_SELECTOR">
<value>Sprachen</value>
</data>
</root>
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<data name="IDS_LANG_SYSTEM"> <value>Systemsprache</value> </data>
<data name="IDS_LANG_ENGLISH"> <value>Englisch</value> </data>
<data name="IDS_LANG_GERMAN"> <value>Deutsch</value> </data>
<data name="IDS_LANG_SPANISH"> <value>Spanisch</value> </data>
<data name="IDS_LANG_SPANISH_SPAIN"> <value>Spanisch (Spanien)</value> </data>
<data name="IDS_LANG_SPANISH_LATIN_AMERICA"> <value>Spanisch (Lateinamerika)</value> </data>
<data name="IDS_LANG_FRENCH"> <value>Französisch</value> </data>
<data name="IDS_LANG_ITALIAN"> <value>Italienisch</value> </data>
<data name="IDS_LANG_PORTUGUESE"> <value>Portugiesisch</value> </data>
<data name="IDS_LANG_PORTUGUESE_PORTUGAL"> <value>Portugiesisch (Portugal)</value> </data>
<data name="IDS_LANG_PORTUGUESE_BRAZIL"> <value>Portugiesisch (Brasilien)</value> </data>
<data name="IDS_LANG_JAPANESE"> <value>Japanisch</value> </data>
<data name="IDS_LANG_KOREAN"> <value>Koreanisch</value> </data>
<data name="IDS_LANG_CHINESE_TRADITIONAL"> <value>Chinesisch (Traditionell)</value> </data>
<data name="IDS_LANG_CHINESE_SIMPLIFIED"> <value>Chinesisch (Vereinfacht)</value> </data>
<data name="IDS_LANG_DANISH"> <value>Dänisch</value> </data>
<data name="IDS_LANG_FINISH"> <value>Finnisch</value> </data>
<data name="IDS_LANG_DUTCH"> <value>Niederländisch</value> </data>
<data name="IDS_LANG_POLISH"> <value>Polnisch</value> </data>
<data name="IDS_LANG_RUSSIAN"> <value>Russisch</value> </data>
<data name="IDS_LANG_SWEDISH"> <value>Schwedisch</value> </data>
<data name="IDS_LANG_NORWEGIAN"> <value>Norwegisch</value> </data>
<data name="IDS_LANG_GREEK"> <value>Griechisch</value> </data>
<data name="IDS_LANG_TURKISH"> <value>Türkisch</value> </data>
</root>
@@ -8814,4 +8814,106 @@ All Ender Chests in a world are linked. Items placed into an Ender Chest are acc
<data name="IDS_WINDOWS_EXIT">
<value>Exit Minecraft</value>
</data>
<data name="IDS_ACHIEVE_NAME_TAKING_INVENTORY"><value>Taking Inventory</value></data>
<data name="IDS_ACHIEVE_DESC_TAKING_INVENTORY"><value>Open your inventory.</value></data>
<data name="IDS_ACHIEVE_NAME_GETTING_WOOD"><value>Getting Wood</value></data>
<data name="IDS_ACHIEVE_DESC_GETTING_WOOD"><value>Punch a tree until a block of wood pops out.</value></data>
<data name="IDS_ACHIEVE_NAME_BENCHMARKING"><value>Benchmarking</value></data>
<data name="IDS_ACHIEVE_DESC_BENCHMARKING"><value>Craft a Workbench with four blocks of Wooden Planks.</value></data>
<data name="IDS_ACHIEVE_NAME_TIME_TO_MINE"><value>Time to Mine!</value></data>
<data name="IDS_ACHIEVE_DESC_TIME_TO_MINE"><value>Use Planks and Sticks to make a Pickaxe.</value></data>
<data name="IDS_ACHIEVE_NAME_HOT_TOPIC"><value>Hot Topic</value></data>
<data name="IDS_ACHIEVE_DESC_HOT_TOPIC"><value>Construct a Furnace out of eight Cobblestone blocks.</value></data>
<data name="IDS_ACHIEVE_NAME_ACQUIRE_HARDWARE"><value>Acquire Hardware</value></data>
<data name="IDS_ACHIEVE_DESC_ACQUIRE_HARDWARE"><value>Smelt an Iron Ingot.</value></data>
<data name="IDS_ACHIEVE_NAME_TIME_TO_FARM"><value>Time to Farm!</value></data>
<data name="IDS_ACHIEVE_DESC_TIME_TO_FARM"><value>Make a Hoe.</value></data>
<data name="IDS_ACHIEVE_NAME_BAKE_BREAD"><value>Bake Bread</value></data>
<data name="IDS_ACHIEVE_DESC_BAKE_BREAD"><value>Turn Wheat into Bread.</value></data>
<data name="IDS_ACHIEVE_NAME_THE_LIE"><value>The Lie</value></data>
<data name="IDS_ACHIEVE_DESC_THE_LIE"><value>Bake a Cake using: Wheat, Sugar, Milk and Eggs.</value></data>
<data name="IDS_ACHIEVE_NAME_GETTING_AN_UPGRADE"><value>Getting an Upgrade</value></data>
<data name="IDS_ACHIEVE_DESC_GETTING_AN_UPGRADE"><value>Construct a better pickaxe.</value></data>
<data name="IDS_ACHIEVE_NAME_DELICIOUS_FISH"><value>Delicious Fish</value></data>
<data name="IDS_ACHIEVE_DESC_DELICIOUS_FISH"><value>Catch and cook Fish!</value></data>
<data name="IDS_ACHIEVE_NAME_ON_A_RAIL"><value>On A Rail</value></data>
<data name="IDS_ACHIEVE_DESC_ON_A_RAIL"><value>Travel by Minecart to a point at least 500m in a single direction from where you started.</value></data>
<data name="IDS_ACHIEVE_NAME_TIME_TO_STRIKE"><value>Time to Strike!</value></data>
<data name="IDS_ACHIEVE_DESC_TIME_TO_STRIKE"><value>Use Planks and Sticks to make a Sword.</value></data>
<data name="IDS_ACHIEVE_NAME_MONSTER_HUNTER"><value>Monster Hunter</value></data>
<data name="IDS_ACHIEVE_DESC_MONSTER_HUNTER"><value>Attack and destroy a monster.</value></data>
<data name="IDS_ACHIEVE_NAME_COW_TIPPER"><value>Cow Tipper</value></data>
<data name="IDS_ACHIEVE_DESC_COW_TIPPER"><value>Harvest some leather.</value></data>
<data name="IDS_ACHIEVE_NAME_WHEN_PIGS_FLY"><value>When Pigs Fly</value></data>
<data name="IDS_ACHIEVE_DESC_WHEN_PIGS_FLY"><value>Use a Saddle to ride a Pig, and then have the Pig get hurt from fall damage while riding it.</value></data>
<data name="IDS_ACHIEVE_NAME_LEADER_OF_THE_PACK"><value>Leader of the Pack</value></data>
<data name="IDS_ACHIEVE_DESC_LEADER_OF_THE_PACK"><value>Befriend five Wolves.</value></data>
<data name="IDS_ACHIEVE_NAME_MOAR_TOOLS"><value>MOAR Tools</value></data>
<data name="IDS_ACHIEVE_DESC_MOAR_TOOLS"><value>Construct one type of each tool.</value></data>
<data name="IDS_ACHIEVE_NAME_DISPENSE_WITH_THIS"><value>Dispense With This</value></data>
<data name="IDS_ACHIEVE_DESC_DISPENSE_WITH_THIS"><value>Construct a dispenser.</value></data>
<data name="IDS_ACHIEVE_NAME_INTO_THE_NETHER"><value>Into The Nether</value></data>
<data name="IDS_ACHIEVE_DESC_INTO_THE_NETHER"><value>Construct a Nether Portal.</value></data>
<data name="IDS_ACHIEVE_NAME_EAT_PORKCHOP"><value>Pork Chop</value></data>
<data name="IDS_ACHIEVE_DESC_EAT_PORKCHOP"><value>Cook and eat a Pork Chop.</value></data>
<data name="IDS_ACHIEVE_NAME_PLAY_100_DAYS"><value>Passing the Time</value></data>
<data name="IDS_ACHIEVE_DESC_PLAY_100_DAYS"><value>Play for 100 days.</value></data>
<data name="IDS_ACHIEVE_NAME_ARROW_KILL_CREEPER"><value>Archer</value></data>
<data name="IDS_ACHIEVE_DESC_ARROW_KILL_CREEPER"><value>Kill a Creeper with Arrows.</value></data>
<data name="IDS_ACHIEVE_NAME_SNIPESKELETON"><value>Sniper Duel</value></data>
<data name="IDS_ACHIEVE_DESC_SNIPESKELETON"><value>Kill a Skeleton with an Arrow from more than 50 meters.</value></data>
<data name="IDS_ACHIEVE_NAME_DIAMONDS"><value>DIAMONDS!</value></data>
<data name="IDS_ACHIEVE_DESC_DIAMONDS"><value>Acquire diamonds with your iron tools.</value></data>
<data name="IDS_ACHIEVE_NAME_GHAST"><value>Return to Sender</value></data>
<data name="IDS_ACHIEVE_DESC_GHAST"><value>Destroy a Ghast with a Fireball.</value></data>
<data name="IDS_ACHIEVE_NAME_BLAZEROD"><value>Into Fire</value></data>
<data name="IDS_ACHIEVE_DESC_BLAZEROD"><value>Relieve a Blaze of its rod.</value></data>
<data name="IDS_ACHIEVE_NAME_POTION"><value>Local Brewery</value></data>
<data name="IDS_ACHIEVE_DESC_POTION"><value>Brew a potion.</value></data>
<data name="IDS_ACHIEVE_NAME_THE_END"><value>The End?</value></data>
<data name="IDS_ACHIEVE_DESC_THE_END"><value>Enter an End Portal.</value></data>
<data name="IDS_ACHIEVE_NAME_WINGAME"><value>The End.</value></data>
<data name="IDS_ACHIEVE_DESC_WINGAME"><value>Kill the Enderdragon.</value></data>
<data name="IDS_ACHIEVE_NAME_ENCHANTMENTS"><value>Enchanter</value></data>
<data name="IDS_ACHIEVE_DESC_ENCHANTMENTS"><value>Construct an Enchantment Table.</value></data>
<data name="IDS_ACHIEVE_NAME_OVERKILL"><value>Overkill</value></data>
<data name="IDS_ACHIEVE_DESC_OVERKILL"><value>Deal nine hearts of damage in a single hit.</value></data>
<data name="IDS_ACHIEVE_NAME_BOOKCASE"><value>Librarian</value></data>
<data name="IDS_ACHIEVE_DESC_BOOKCASE"><value>Build some Bookshelves to improve your Enchantment Table.</value></data>
<data name="IDS_ACHIEVE_NAME_ADVENTURING_TIME"><value>Adventuring Time</value></data>
<data name="IDS_ACHIEVE_DESC_ADVENTURING_TIME"><value>Discover all biomes.</value></data>
<data name="IDS_ACHIEVE_NAME_REPOPULATION"><value>Repopulation</value></data>
<data name="IDS_ACHIEVE_DESC_REPOPULATION"><value>Breed two Cows with Wheat.</value></data>
<data name="IDS_ACHIEVE_NAME_DIAMONDS_TO_YOU"><value>Diamonds to you!</value></data>
<data name="IDS_ACHIEVE_DESC_DIAMONDS_TO_YOU"><value>Throw diamonds to another player.</value></data>
<data name="IDS_ACHIEVE_NAME_THE_HAGGLER"><value>The Haggler</value></data>
<data name="IDS_ACHIEVE_DESC_THE_HAGGLER"><value>Mine or purchase 30 Emeralds.</value></data>
<data name="IDS_ACHIEVE_NAME_POT_PLANTER"><value>Pot Planter</value></data>
<data name="IDS_ACHIEVE_DESC_POT_PLANTER"><value>Craft and place a Flower pot.</value></data>
<data name="IDS_ACHIEVE_NAME_ITS_A_SIGN"><value>It's a Sign!</value></data>
<data name="IDS_ACHIEVE_DESC_ITS_A_SIGN"><value>Craft and place a sign.</value></data>
<data name="IDS_ACHIEVE_NAME_IRON_BELLY"><value>Iron Belly</value></data>
<data name="IDS_ACHIEVE_DESC_IRON_BELLY"><value>Stop starvation using rotten flesh.</value></data>
<data name="IDS_ACHIEVE_NAME_HAVE_A_SHEARFUL_DAY"><value>Have a Shearful Day</value></data>
<data name="IDS_ACHIEVE_DESC_HAVE_A_SHEARFUL_DAY"><value>Use Shears to obtain Wool from a Sheep.</value></data>
<data name="IDS_ACHIEVE_NAME_RAINBOW_COLLECTION"><value>Rainbow Collection</value></data>
<data name="IDS_ACHIEVE_DESC_RAINBOW_COLLECTION"><value>Gather all 16 colors of Wool.</value></data>
<data name="IDS_ACHIEVE_NAME_STAYING_FROSTY"><value>Stayin' Frosty</value></data>
<data name="IDS_ACHIEVE_DESC_STAYING_FROSTY"><value>Swim in Lava while having the Fire Resistance effect.</value></data>
<data name="IDS_ACHIEVE_NAME_CHESTFUL_OF_COBBLESTONE"><value>Chestful of Cobblestone</value></data>
<data name="IDS_ACHIEVE_DESC_CHESTFUL_OF_COBBLESTONE"><value>Mine 1,728 Cobblestone and place it in a Chest.</value></data>
<data name="IDS_ACHIEVE_NAME_RENEWABLE_ENERGY"><value>Renewable Energy</value></data>
<data name="IDS_ACHIEVE_DESC_RENEWABLE_ENERGY"><value>Smelt Wood Trunks using Charcoal to make more Charcoal.</value></data>
<data name="IDS_ACHIEVE_NAME_MUSIC_TO_MY_EARS"><value>Music to my Ears</value></data>
<data name="IDS_ACHIEVE_DESC_MUSIC_TO_MY_EARS"><value>Play a Music Disc in a Jukebox.</value></data>
<data name="IDS_ACHIEVE_NAME_BODYGUARD"><value>Body Guard</value></data>
<data name="IDS_ACHIEVE_DESC_BODYGUARD"><value>Create an Iron Golem.</value></data>
<data name="IDS_ACHIEVE_NAME_IRON_MAN"><value>Iron Man</value></data>
<data name="IDS_ACHIEVE_DESC_IRON_MAN"><value>Wear a full suit of Iron Armor.</value></data>
<data name="IDS_ACHIEVE_NAME_ZOMBIE_DOCTOR"><value>Zombie Doctor</value></data>
<data name="IDS_ACHIEVE_DESC_ZOMBIE_DOCTOR"><value>Cure a Zombie Villager.</value></data>
<data name="IDS_ACHIEVE_NAME_LION_TAMER"><value>Lion Tamer</value></data>
<data name="IDS_ACHIEVE_DESC_LION_TAMER"><value>Tame an ocelot.</value></data>
<data name="IDS_ACHIEVEMENT_VIEW"><value>Hold {*CONTROLLER_VK_Y*} to view</value></data>
</root>
+228 -127
View File
@@ -1,7 +1,7 @@
#pragma once
// Auto-generated by StringTable builder — do not edit manually.
// Source language: en-US
// Total strings: 2287
// Total strings: 2388
#define IDS_NULL 0
#define IDS_OK 1
@@ -67,8 +67,8 @@
#define IDS_CHAT_RESTRICTION_UGC 61
#define IDS_CONTENT_RESTRICTION 62
#define IDS_ONLINE_SERVICE_TITLE 63
#define IDS_ERROR_PSN_SIGN_OUT 64
#define IDS_ERROR_PSN_SIGN_OUT_EXIT 65
#define IDS_ERROR_LCEN_SIGN_OUT 64
#define IDS_ERROR_LCEN_SIGN_OUT_EXIT 65
#define IDS_PLAYER_LIST_TITLE 66
#define IDS_DLC_PRICE_FREE 67
#define IDS_CORRUPT_OPTIONS 68
@@ -2166,127 +2166,228 @@
#define IDS_CONNECTION_FAILED_NO_SD_SPLITSCREEN 2160
#define IDS_TOOLTIPS_CURE 2161
#define IDS_WINDOWS_EXIT 2162
#define IDS_LANG_SYSTEM 2163
#define IDS_LANG_ENGLISH 2164
#define IDS_LANG_GERMAN 2165
#define IDS_LANG_SPANISH 2166
#define IDS_LANG_SPANISH_SPAIN 2167
#define IDS_LANG_SPANISH_LATIN_AMERICA 2168
#define IDS_LANG_FRENCH 2169
#define IDS_LANG_ITALIAN 2170
#define IDS_LANG_PORTUGUESE 2171
#define IDS_LANG_PORTUGUESE_PORTUGAL 2172
#define IDS_LANG_PORTUGUESE_BRAZIL 2173
#define IDS_LANG_JAPANESE 2174
#define IDS_LANG_KOREAN 2175
#define IDS_LANG_CHINESE_TRADITIONAL 2176
#define IDS_LANG_CHINESE_SIMPLIFIED 2177
#define IDS_LANG_DANISH 2178
#define IDS_LANG_FINISH 2179
#define IDS_LANG_DUTCH 2180
#define IDS_LANG_POLISH 2181
#define IDS_LANG_RUSSIAN 2182
#define IDS_LANG_SWEDISH 2183
#define IDS_LANG_NORWEGIAN 2184
#define IDS_LANG_GREEK 2185
#define IDS_LANG_TURKISH 2186
#define IDS_LEADERBOARD_KILLS_EASY 2187
#define IDS_LEADERBOARD_KILLS_NORMAL 2188
#define IDS_LEADERBOARD_KILLS_HARD 2189
#define IDS_LEADERBOARD_MINING_BLOCKS_PEACEFUL 2190
#define IDS_LEADERBOARD_MINING_BLOCKS_EASY 2191
#define IDS_LEADERBOARD_MINING_BLOCKS_NORMAL 2192
#define IDS_LEADERBOARD_MINING_BLOCKS_HARD 2193
#define IDS_LEADERBOARD_FARMING_PEACEFUL 2194
#define IDS_LEADERBOARD_FARMING_EASY 2195
#define IDS_LEADERBOARD_FARMING_NORMAL 2196
#define IDS_LEADERBOARD_FARMING_HARD 2197
#define IDS_LEADERBOARD_TRAVELLING_PEACEFUL 2198
#define IDS_LEADERBOARD_TRAVELLING_EASY 2199
#define IDS_LEADERBOARD_TRAVELLING_NORMAL 2200
#define IDS_LEADERBOARD_TRAVELLING_HARD 2201
#define IDS_TIPS_GAMETIP_0 2202
#define IDS_TIPS_GAMETIP_1 2203
#define IDS_TIPS_GAMETIP_48 2204
#define IDS_TIPS_GAMETIP_44 2205
#define IDS_TIPS_GAMETIP_45 2206
#define IDS_TIPS_TRIVIA_4 2207
#define IDS_TIPS_TRIVIA_17 2208
#define IDS_HOW_TO_PLAY_MULTIPLAYER 2209
#define IDS_HOW_TO_PLAY_SOCIALMEDIA 2210
#define IDS_HOW_TO_PLAY_CREATIVE 2211
#define IDS_TUTORIAL_TASK_FLY 2212
#define IDS_TOOLTIPS_SELECTDEVICE 2213
#define IDS_TOOLTIPS_CHANGEDEVICE 2214
#define IDS_TOOLTIPS_VIEW_GAMERCARD 2215
#define IDS_TOOLTIPS_VIEW_GAMERPROFILE 2216
#define IDS_TOOLTIPS_INVITE_PARTY 2217
#define IDS_CONFIRM_START_CREATIVE 2218
#define IDS_CONFIRM_START_SAVEDINCREATIVE 2219
#define IDS_CONFIRM_START_SAVEDINCREATIVE_CONTINUE 2220
#define IDS_CONFIRM_START_HOST_PRIVILEGES 2221
#define IDS_CONNECTION_LOST_LIVE 2222
#define IDS_CONNECTION_LOST_LIVE_NO_EXIT 2223
#define IDS_AWARD_AVATAR1 2224
#define IDS_AWARD_AVATAR2 2225
#define IDS_AWARD_AVATAR3 2226
#define IDS_AWARD_THEME 2227
#define IDS_UNLOCK_ACHIEVEMENT_TEXT 2228
#define IDS_UNLOCK_AVATAR_TEXT 2229
#define IDS_UNLOCK_GAMERPIC_TEXT 2230
#define IDS_UNLOCK_THEME_TEXT 2231
#define IDS_UNLOCK_ACCEPT_INVITE 2232
#define IDS_UNLOCK_GUEST_TEXT 2233
#define IDS_LEADERBOARD_GAMERTAG 2234
#define IDS_GROUPNAME_POTIONS_480 2235
#define IDS_RETURNEDTOTITLESCREEN_TEXT 2236
#define IDS_TRIALOVER_TEXT 2237
#define IDS_FATAL_ERROR_TEXT 2238
#define IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT 2239
#define IDS_NO_MULTIPLAYER_PRIVILEGE_HOST_TEXT 2240
#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_SINGLE_LOCAL 2241
#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_ALL_LOCAL 2242
#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_REMOTE 2243
#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_CREATE 2244
#define IDS_SAVE_ICON_MESSAGE 2245
#define IDS_GAMEOPTION_HOST_PRIVILEGES 2246
#define IDS_CHECKBOX_DISPLAY_SPLITSCREENGAMERTAGS 2247
#define IDS_ACHIEVEMENTS 2248
#define IDS_LABEL_GAMERTAGS 2249
#define IDS_IN_GAME_GAMERTAGS 2250
#define IDS_SOCIAL_DEFAULT_DESCRIPTION 2251
#define IDS_TITLE_UPDATE_NAME 2252
#define IDS_PLATFORM_NAME 2253
#define IDS_BACK_BUTTON 2254
#define IDS_HOST_OPTION_DISABLES_ACHIEVEMENTS 2255
#define IDS_KICK_PLAYER_DESCRIPTION 2256
#define IDS_USING_TRIAL_TEXUREPACK_WARNING 2257
#define IDS_WORLD_SIZE_TITLE_SMALL 2258
#define IDS_WORLD_SIZE_TITLE_MEDIUM 2259
#define IDS_WORLD_SIZE_TITLE_LARGE 2260
#define IDS_WORLD_SIZE_TITLE_CLASSIC 2261
#define IDS_WORLD_SIZE 2262
#define IDS_GAMEOPTION_WORLD_SIZE 2263
#define IDS_DISABLE_SAVING 2264
#define IDS_GAMEOPTION_DISABLE_SAVING 2265
#define IDS_RICHPRESENCE_GAMESTATE 2266
#define IDS_RICHPRESENCE_IDLE 2267
#define IDS_RICHPRESENCE_MENUS 2268
#define IDS_RICHPRESENCE_MULTIPLAYER 2269
#define IDS_RICHPRESENCE_MULTIPLAYEROFFLINE 2270
#define IDS_RICHPRESENCE_MULTIPLAYER_1P 2271
#define IDS_RICHPRESENCE_MULTIPLAYER_1POFFLINE 2272
#define IDS_RICHPRESENCESTATE_BLANK 2273
#define IDS_RICHPRESENCESTATE_RIDING_PIG 2274
#define IDS_RICHPRESENCESTATE_RIDING_MINECART 2275
#define IDS_RICHPRESENCESTATE_BOATING 2276
#define IDS_RICHPRESENCESTATE_FISHING 2277
#define IDS_RICHPRESENCESTATE_CRAFTING 2278
#define IDS_RICHPRESENCESTATE_FORGING 2279
#define IDS_RICHPRESENCESTATE_NETHER 2280
#define IDS_RICHPRESENCESTATE_CD 2281
#define IDS_RICHPRESENCESTATE_MAP 2282
#define IDS_RICHPRESENCESTATE_ENCHANTING 2283
#define IDS_RICHPRESENCESTATE_BREWING 2284
#define IDS_RICHPRESENCESTATE_ANVIL 2285
#define IDS_RICHPRESENCESTATE_TRADING 2286
#define IDS_ACHIEVE_NAME_TAKING_INVENTORY 2163
#define IDS_ACHIEVE_DESC_TAKING_INVENTORY 2164
#define IDS_ACHIEVE_NAME_GETTING_WOOD 2165
#define IDS_ACHIEVE_DESC_GETTING_WOOD 2166
#define IDS_ACHIEVE_NAME_BENCHMARKING 2167
#define IDS_ACHIEVE_DESC_BENCHMARKING 2168
#define IDS_ACHIEVE_NAME_TIME_TO_MINE 2169
#define IDS_ACHIEVE_DESC_TIME_TO_MINE 2170
#define IDS_ACHIEVE_NAME_HOT_TOPIC 2171
#define IDS_ACHIEVE_DESC_HOT_TOPIC 2172
#define IDS_ACHIEVE_NAME_ACQUIRE_HARDWARE 2173
#define IDS_ACHIEVE_DESC_ACQUIRE_HARDWARE 2174
#define IDS_ACHIEVE_NAME_TIME_TO_FARM 2175
#define IDS_ACHIEVE_DESC_TIME_TO_FARM 2176
#define IDS_ACHIEVE_NAME_BAKE_BREAD 2177
#define IDS_ACHIEVE_DESC_BAKE_BREAD 2178
#define IDS_ACHIEVE_NAME_THE_LIE 2179
#define IDS_ACHIEVE_DESC_THE_LIE 2180
#define IDS_ACHIEVE_NAME_GETTING_AN_UPGRADE 2181
#define IDS_ACHIEVE_DESC_GETTING_AN_UPGRADE 2182
#define IDS_ACHIEVE_NAME_DELICIOUS_FISH 2183
#define IDS_ACHIEVE_DESC_DELICIOUS_FISH 2184
#define IDS_ACHIEVE_NAME_ON_A_RAIL 2185
#define IDS_ACHIEVE_DESC_ON_A_RAIL 2186
#define IDS_ACHIEVE_NAME_TIME_TO_STRIKE 2187
#define IDS_ACHIEVE_DESC_TIME_TO_STRIKE 2188
#define IDS_ACHIEVE_NAME_MONSTER_HUNTER 2189
#define IDS_ACHIEVE_DESC_MONSTER_HUNTER 2190
#define IDS_ACHIEVE_NAME_COW_TIPPER 2191
#define IDS_ACHIEVE_DESC_COW_TIPPER 2192
#define IDS_ACHIEVE_NAME_WHEN_PIGS_FLY 2193
#define IDS_ACHIEVE_DESC_WHEN_PIGS_FLY 2194
#define IDS_ACHIEVE_NAME_LEADER_OF_THE_PACK 2195
#define IDS_ACHIEVE_DESC_LEADER_OF_THE_PACK 2196
#define IDS_ACHIEVE_NAME_MOAR_TOOLS 2197
#define IDS_ACHIEVE_DESC_MOAR_TOOLS 2198
#define IDS_ACHIEVE_NAME_DISPENSE_WITH_THIS 2199
#define IDS_ACHIEVE_DESC_DISPENSE_WITH_THIS 2200
#define IDS_ACHIEVE_NAME_INTO_THE_NETHER 2201
#define IDS_ACHIEVE_DESC_INTO_THE_NETHER 2202
#define IDS_ACHIEVE_NAME_EAT_PORKCHOP 2203
#define IDS_ACHIEVE_DESC_EAT_PORKCHOP 2204
#define IDS_ACHIEVE_NAME_PLAY_100_DAYS 2205
#define IDS_ACHIEVE_DESC_PLAY_100_DAYS 2206
#define IDS_ACHIEVE_NAME_ARROW_KILL_CREEPER 2207
#define IDS_ACHIEVE_DESC_ARROW_KILL_CREEPER 2208
#define IDS_ACHIEVE_NAME_SNIPESKELETON 2209
#define IDS_ACHIEVE_DESC_SNIPESKELETON 2210
#define IDS_ACHIEVE_NAME_DIAMONDS 2211
#define IDS_ACHIEVE_DESC_DIAMONDS 2212
#define IDS_ACHIEVE_NAME_GHAST 2213
#define IDS_ACHIEVE_DESC_GHAST 2214
#define IDS_ACHIEVE_NAME_BLAZEROD 2215
#define IDS_ACHIEVE_DESC_BLAZEROD 2216
#define IDS_ACHIEVE_NAME_POTION 2217
#define IDS_ACHIEVE_DESC_POTION 2218
#define IDS_ACHIEVE_NAME_THE_END 2219
#define IDS_ACHIEVE_DESC_THE_END 2220
#define IDS_ACHIEVE_NAME_WINGAME 2221
#define IDS_ACHIEVE_DESC_WINGAME 2222
#define IDS_ACHIEVE_NAME_ENCHANTMENTS 2223
#define IDS_ACHIEVE_DESC_ENCHANTMENTS 2224
#define IDS_ACHIEVE_NAME_OVERKILL 2225
#define IDS_ACHIEVE_DESC_OVERKILL 2226
#define IDS_ACHIEVE_NAME_BOOKCASE 2227
#define IDS_ACHIEVE_DESC_BOOKCASE 2228
#define IDS_ACHIEVE_NAME_ADVENTURING_TIME 2229
#define IDS_ACHIEVE_DESC_ADVENTURING_TIME 2230
#define IDS_ACHIEVE_NAME_REPOPULATION 2231
#define IDS_ACHIEVE_DESC_REPOPULATION 2232
#define IDS_ACHIEVE_NAME_DIAMONDS_TO_YOU 2233
#define IDS_ACHIEVE_DESC_DIAMONDS_TO_YOU 2234
#define IDS_ACHIEVE_NAME_THE_HAGGLER 2235
#define IDS_ACHIEVE_DESC_THE_HAGGLER 2236
#define IDS_ACHIEVE_NAME_POT_PLANTER 2237
#define IDS_ACHIEVE_DESC_POT_PLANTER 2238
#define IDS_ACHIEVE_NAME_ITS_A_SIGN 2239
#define IDS_ACHIEVE_DESC_ITS_A_SIGN 2240
#define IDS_ACHIEVE_NAME_IRON_BELLY 2241
#define IDS_ACHIEVE_DESC_IRON_BELLY 2242
#define IDS_ACHIEVE_NAME_HAVE_A_SHEARFUL_DAY 2243
#define IDS_ACHIEVE_DESC_HAVE_A_SHEARFUL_DAY 2244
#define IDS_ACHIEVE_NAME_RAINBOW_COLLECTION 2245
#define IDS_ACHIEVE_DESC_RAINBOW_COLLECTION 2246
#define IDS_ACHIEVE_NAME_STAYING_FROSTY 2247
#define IDS_ACHIEVE_DESC_STAYING_FROSTY 2248
#define IDS_ACHIEVE_NAME_CHESTFUL_OF_COBBLESTONE 2249
#define IDS_ACHIEVE_DESC_CHESTFUL_OF_COBBLESTONE 2250
#define IDS_ACHIEVE_NAME_RENEWABLE_ENERGY 2251
#define IDS_ACHIEVE_DESC_RENEWABLE_ENERGY 2252
#define IDS_ACHIEVE_NAME_MUSIC_TO_MY_EARS 2253
#define IDS_ACHIEVE_DESC_MUSIC_TO_MY_EARS 2254
#define IDS_ACHIEVE_NAME_BODYGUARD 2255
#define IDS_ACHIEVE_DESC_BODYGUARD 2256
#define IDS_ACHIEVE_NAME_IRON_MAN 2257
#define IDS_ACHIEVE_DESC_IRON_MAN 2258
#define IDS_ACHIEVE_NAME_ZOMBIE_DOCTOR 2259
#define IDS_ACHIEVE_DESC_ZOMBIE_DOCTOR 2260
#define IDS_ACHIEVE_NAME_LION_TAMER 2261
#define IDS_ACHIEVE_DESC_LION_TAMER 2262
#define IDS_ACHIEVEMENT_VIEW 2263
#define IDS_LANG_SYSTEM 2264
#define IDS_LANG_ENGLISH 2265
#define IDS_LANG_GERMAN 2266
#define IDS_LANG_SPANISH 2267
#define IDS_LANG_SPANISH_SPAIN 2268
#define IDS_LANG_SPANISH_LATIN_AMERICA 2269
#define IDS_LANG_FRENCH 2270
#define IDS_LANG_ITALIAN 2271
#define IDS_LANG_PORTUGUESE 2272
#define IDS_LANG_PORTUGUESE_PORTUGAL 2273
#define IDS_LANG_PORTUGUESE_BRAZIL 2274
#define IDS_LANG_JAPANESE 2275
#define IDS_LANG_KOREAN 2276
#define IDS_LANG_CHINESE_TRADITIONAL 2277
#define IDS_LANG_CHINESE_SIMPLIFIED 2278
#define IDS_LANG_DANISH 2279
#define IDS_LANG_FINISH 2280
#define IDS_LANG_DUTCH 2281
#define IDS_LANG_POLISH 2282
#define IDS_LANG_RUSSIAN 2283
#define IDS_LANG_SWEDISH 2284
#define IDS_LANG_NORWEGIAN 2285
#define IDS_LANG_GREEK 2286
#define IDS_LANG_TURKISH 2287
#define IDS_LEADERBOARD_KILLS_EASY 2288
#define IDS_LEADERBOARD_KILLS_NORMAL 2289
#define IDS_LEADERBOARD_KILLS_HARD 2290
#define IDS_LEADERBOARD_MINING_BLOCKS_PEACEFUL 2291
#define IDS_LEADERBOARD_MINING_BLOCKS_EASY 2292
#define IDS_LEADERBOARD_MINING_BLOCKS_NORMAL 2293
#define IDS_LEADERBOARD_MINING_BLOCKS_HARD 2294
#define IDS_LEADERBOARD_FARMING_PEACEFUL 2295
#define IDS_LEADERBOARD_FARMING_EASY 2296
#define IDS_LEADERBOARD_FARMING_NORMAL 2297
#define IDS_LEADERBOARD_FARMING_HARD 2298
#define IDS_LEADERBOARD_TRAVELLING_PEACEFUL 2299
#define IDS_LEADERBOARD_TRAVELLING_EASY 2300
#define IDS_LEADERBOARD_TRAVELLING_NORMAL 2301
#define IDS_LEADERBOARD_TRAVELLING_HARD 2302
#define IDS_TIPS_GAMETIP_0 2303
#define IDS_TIPS_GAMETIP_1 2304
#define IDS_TIPS_GAMETIP_48 2305
#define IDS_TIPS_GAMETIP_44 2306
#define IDS_TIPS_GAMETIP_45 2307
#define IDS_TIPS_TRIVIA_4 2308
#define IDS_TIPS_TRIVIA_17 2309
#define IDS_HOW_TO_PLAY_MULTIPLAYER 2310
#define IDS_HOW_TO_PLAY_SOCIALMEDIA 2311
#define IDS_HOW_TO_PLAY_CREATIVE 2312
#define IDS_TUTORIAL_TASK_FLY 2313
#define IDS_TOOLTIPS_SELECTDEVICE 2314
#define IDS_TOOLTIPS_CHANGEDEVICE 2315
#define IDS_TOOLTIPS_VIEW_GAMERCARD 2316
#define IDS_TOOLTIPS_VIEW_GAMERPROFILE 2317
#define IDS_TOOLTIPS_INVITE_PARTY 2318
#define IDS_CONFIRM_START_CREATIVE 2319
#define IDS_CONFIRM_START_SAVEDINCREATIVE 2320
#define IDS_CONFIRM_START_SAVEDINCREATIVE_CONTINUE 2321
#define IDS_CONFIRM_START_HOST_PRIVILEGES 2322
#define IDS_CONNECTION_LOST_LIVE 2323
#define IDS_CONNECTION_LOST_LIVE_NO_EXIT 2324
#define IDS_AWARD_AVATAR1 2325
#define IDS_AWARD_AVATAR2 2326
#define IDS_AWARD_AVATAR3 2327
#define IDS_AWARD_THEME 2328
#define IDS_UNLOCK_ACHIEVEMENT_TEXT 2329
#define IDS_UNLOCK_AVATAR_TEXT 2330
#define IDS_UNLOCK_GAMERPIC_TEXT 2331
#define IDS_UNLOCK_THEME_TEXT 2332
#define IDS_UNLOCK_ACCEPT_INVITE 2333
#define IDS_UNLOCK_GUEST_TEXT 2334
#define IDS_LEADERBOARD_GAMERTAG 2335
#define IDS_GROUPNAME_POTIONS_480 2336
#define IDS_RETURNEDTOTITLESCREEN_TEXT 2337
#define IDS_TRIALOVER_TEXT 2338
#define IDS_FATAL_ERROR_TEXT 2339
#define IDS_NO_MULTIPLAYER_PRIVILEGE_JOIN_TEXT 2340
#define IDS_NO_MULTIPLAYER_PRIVILEGE_HOST_TEXT 2341
#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_SINGLE_LOCAL 2342
#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_ALL_LOCAL 2343
#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_REMOTE 2344
#define IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_CREATE 2345
#define IDS_SAVE_ICON_MESSAGE 2346
#define IDS_GAMEOPTION_HOST_PRIVILEGES 2347
#define IDS_CHECKBOX_DISPLAY_SPLITSCREENGAMERTAGS 2348
#define IDS_ACHIEVEMENTS 2349
#define IDS_LABEL_GAMERTAGS 2350
#define IDS_IN_GAME_GAMERTAGS 2351
#define IDS_SOCIAL_DEFAULT_DESCRIPTION 2352
#define IDS_TITLE_UPDATE_NAME 2353
#define IDS_PLATFORM_NAME 2354
#define IDS_BACK_BUTTON 2355
#define IDS_HOST_OPTION_DISABLES_ACHIEVEMENTS 2356
#define IDS_KICK_PLAYER_DESCRIPTION 2357
#define IDS_USING_TRIAL_TEXUREPACK_WARNING 2358
#define IDS_WORLD_SIZE_TITLE_SMALL 2359
#define IDS_WORLD_SIZE_TITLE_MEDIUM 2360
#define IDS_WORLD_SIZE_TITLE_LARGE 2361
#define IDS_WORLD_SIZE_TITLE_CLASSIC 2362
#define IDS_WORLD_SIZE 2363
#define IDS_GAMEOPTION_WORLD_SIZE 2364
#define IDS_DISABLE_SAVING 2365
#define IDS_GAMEOPTION_DISABLE_SAVING 2366
#define IDS_RICHPRESENCE_GAMESTATE 2367
#define IDS_RICHPRESENCE_IDLE 2368
#define IDS_RICHPRESENCE_MENUS 2369
#define IDS_RICHPRESENCE_MULTIPLAYER 2370
#define IDS_RICHPRESENCE_MULTIPLAYEROFFLINE 2371
#define IDS_RICHPRESENCE_MULTIPLAYER_1P 2372
#define IDS_RICHPRESENCE_MULTIPLAYER_1POFFLINE 2373
#define IDS_RICHPRESENCESTATE_BLANK 2374
#define IDS_RICHPRESENCESTATE_RIDING_PIG 2375
#define IDS_RICHPRESENCESTATE_RIDING_MINECART 2376
#define IDS_RICHPRESENCESTATE_BOATING 2377
#define IDS_RICHPRESENCESTATE_FISHING 2378
#define IDS_RICHPRESENCESTATE_CRAFTING 2379
#define IDS_RICHPRESENCESTATE_FORGING 2380
#define IDS_RICHPRESENCESTATE_NETHER 2381
#define IDS_RICHPRESENCESTATE_CD 2382
#define IDS_RICHPRESENCESTATE_MAP 2383
#define IDS_RICHPRESENCESTATE_ENCHANTING 2384
#define IDS_RICHPRESENCESTATE_BREWING 2385
#define IDS_RICHPRESENCESTATE_ANVIL 2386
#define IDS_RICHPRESENCESTATE_TRADING 2387
+13 -7
View File
@@ -8,26 +8,34 @@
void Achievement::_init()
{
isGoldenVar = false;
if (x < Achievements::xMin) Achievements::xMin = x;
if (y < Achievements::yMin) Achievements::yMin = y;
if (x > Achievements::xMax) Achievements::xMax = x;
if (y > Achievements::yMax) Achievements::yMax = y;
}
Achievement::Achievement(int id, const wstring& name, int x, int y, Item *icon, Achievement *reqs)
Achievement::Achievement(int id, const wstring& name, int x, int y, Item *icon, Achievement *reqs, string iconI, int nameID1, int descID1)
: Stat( Achievements::ACHIEVEMENT_OFFSET + id, I18n::get(wstring(L"achievement.").append(name)) ), desc( I18n::get(wstring(L"achievement.").append(name).append(L".desc"))), icon( new ItemInstance(icon) ), x(x), y(y), reqs(reqs)
{
iconInt = iconI;
nameID = nameID1;
descID = descID1;
}
Achievement::Achievement(int id, const wstring& name, int x, int y, Tile *icon, Achievement *reqs)
Achievement::Achievement(int id, const wstring& name, int x, int y, Tile *icon, Achievement *reqs, string iconI, int nameID1, int descID1)
: Stat( Achievements::ACHIEVEMENT_OFFSET + id, I18n::get(wstring(L"achievement.").append(name)) ), desc( I18n::get(wstring(L"achievement.").append(name).append(L".desc"))), icon( new ItemInstance(icon) ), x(x), y(y), reqs(reqs)
{
iconInt = iconI;
nameID = nameID1;
descID = descID1;
}
Achievement::Achievement(int id, const wstring& name, int x, int y, shared_ptr<ItemInstance> icon, Achievement *reqs)
Achievement::Achievement(int id, const wstring& name, int x, int y, shared_ptr<ItemInstance> icon, Achievement *reqs, string iconI, int nameID1, int descID1)
: Stat( Achievements::ACHIEVEMENT_OFFSET + id, I18n::get(wstring(L"achievement.").append(name)) ), desc( I18n::get(wstring(L"achievement.").append(name).append(L".desc"))), icon(icon), x(x), y(y), reqs(reqs)
{
iconInt = iconI;
nameID = nameID1;
descID = descID1;
}
Achievement *Achievement::setAwardLocallyOnly()
@@ -45,9 +53,7 @@ Achievement *Achievement::setGolden()
Achievement *Achievement::postConstruct()
{
Stat::postConstruct();
Achievements::achievements->push_back(this);
return this;
}
@@ -79,4 +85,4 @@ bool Achievement::isGolden()
int Achievement::getAchievementID()
{
return id - Achievements::ACHIEVEMENT_OFFSET;
}
}
+6 -3
View File
@@ -10,6 +10,9 @@ class Achievement : public Stat
public:
const int x, y;
Achievement *reqs;
string iconInt;
int nameID;
int descID;
private:
const wstring desc;
@@ -23,9 +26,9 @@ private:
void _init();
public:
Achievement(int id, const wstring& name, int x, int y, Item *icon, Achievement *reqs);
Achievement(int id, const wstring& name, int x, int y, Tile *icon, Achievement *reqs);
Achievement(int id, const wstring& name, int x, int y, shared_ptr<ItemInstance> icon, Achievement *reqs);
Achievement(int id, const wstring& name, int x, int y, Item* icon, Achievement* reqs, string iconI = "", int nameID = 0, int descID = 0);
Achievement(int id, const wstring& name, int x, int y, Tile* icon, Achievement* reqs, string iconI = "", int nameID = 0, int descID = 0);
Achievement(int id, const wstring& name, int x, int y, shared_ptr<ItemInstance> icon, Achievement* reqs, string iconI = "", int nameID = 0, int descID = 0);
Achievement *setAwardLocallyOnly();
Achievement *setGolden();
+59 -62
View File
@@ -53,14 +53,14 @@ Achievement *Achievements::dispenseWithThis = nullptr;
Achievement *Achievements::InToTheNether = nullptr;
// 4J : WESTY : Added other awards.
Achievement *Achievements::socialPost = nullptr;
//Achievement *Achievements::socialPost = nullptr;
Achievement *Achievements::eatPorkChop = nullptr;
Achievement *Achievements::play100Days = nullptr;
Achievement *Achievements::arrowKillCreeper = nullptr;
Achievement *Achievements::mine100Blocks = nullptr;
Achievement *Achievements::kill10Creepers = nullptr;
//Achievement *Achievements::mine100Blocks = nullptr;
//Achievement *Achievements::kill10Creepers = nullptr;
#ifdef _EXTENDED_ACHIEVEMENTS
Achievement *Achievements::overkill = nullptr; // Restored old achivements.
Achievement *Achievements::bookcase = nullptr; // Restored old achivements.
@@ -85,46 +85,46 @@ Achievement *Achievements::bodyGuard = nullptr;
Achievement *Achievements::ironMan = nullptr;
Achievement *Achievements::zombieDoctor = nullptr;
Achievement *Achievements::lionTamer = nullptr;
#endif
void Achievements::staticCtor()
{
Achievements::openInventory = (new Achievement(eAward_TakingInventory, L"openInventory", 0, 0, Item::book, nullptr))->setAwardLocallyOnly()->postConstruct();
Achievements::mineWood = (new Achievement(eAward_GettingWood, L"mineWood", 2, 1, Tile::treeTrunk, (Achievement *) openInventory))->postConstruct();
Achievements::buildWorkbench = (new Achievement(eAward_Benchmarking, L"buildWorkBench", 4, -1, Tile::workBench, (Achievement *) mineWood))->postConstruct();
Achievements::buildPickaxe = (new Achievement(eAward_TimeToMine, L"buildPickaxe", 4, 2, Item::pickAxe_wood, (Achievement *) buildWorkbench))->postConstruct();
Achievements::buildFurnace = (new Achievement(eAward_HotTopic, L"buildFurnace", 3, 4, Tile::furnace_lit, (Achievement *) buildPickaxe))->postConstruct();
Achievements::acquireIron = (new Achievement(eAward_AquireHardware, L"acquireIron", 1, 4, Item::ironIngot, (Achievement *) buildFurnace))->postConstruct();
Achievements::buildHoe = (new Achievement(eAward_TimeToFarm, L"buildHoe", 2, -3, Item::hoe_wood, (Achievement *) buildWorkbench))->postConstruct();
Achievements::makeBread = (new Achievement(eAward_BakeBread, L"makeBread", -1, -3, Item::bread, (Achievement *) buildHoe))->postConstruct();
Achievements::bakeCake = (new Achievement(eAward_TheLie, L"bakeCake", 0, -5, Item::cake, (Achievement *) buildHoe))->postConstruct();
Achievements::buildBetterPickaxe = (new Achievement(eAward_GettingAnUpgrade, L"buildBetterPickaxe", 6, 2, Item::pickAxe_stone, (Achievement *) buildPickaxe))->postConstruct();
Achievements::cookFish = (new Achievement(eAward_DeliciousFish, L"cookFish", 2, 6, Item::fish_cooked, (Achievement *) buildFurnace))->postConstruct();
Achievements::onARail = (new Achievement(eAward_OnARail, L"onARail", 2, 3, Tile::rail, (Achievement *) acquireIron))->setGolden()->postConstruct();
Achievements::buildSword = (new Achievement(eAward_TimeToStrike, L"buildSword", 6, -1, Item::sword_wood, (Achievement *) buildWorkbench))->postConstruct();
Achievements::killEnemy = (new Achievement(eAward_MonsterHunter, L"killEnemy", 8, -1, Item::bone, (Achievement *) buildSword))->postConstruct();
Achievements::killCow = (new Achievement(eAward_CowTipper, L"killCow", 7, -3, Item::leather, (Achievement *) buildSword))->postConstruct();
Achievements::flyPig = (new Achievement(eAward_WhenPigsFly, L"flyPig", 8, -4, Item::saddle, (Achievement *) killCow))->setGolden()->postConstruct();
Achievements::openInventory = (new Achievement(eAward_TakingInventory, L"openInventory", 0, 0, Item::book, nullptr, "001", IDS_ACHIEVE_NAME_TAKING_INVENTORY, IDS_ACHIEVE_DESC_TAKING_INVENTORY))->setAwardLocallyOnly()->postConstruct();
Achievements::mineWood = (new Achievement(eAward_GettingWood, L"mineWood", 2, 1, Tile::treeTrunk, (Achievement *) openInventory, "002", IDS_ACHIEVE_NAME_GETTING_WOOD, IDS_ACHIEVE_DESC_GETTING_WOOD))->postConstruct();
Achievements::buildWorkbench = (new Achievement(eAward_Benchmarking, L"buildWorkBench", 4, -1, Tile::workBench, (Achievement *) mineWood, "003", IDS_ACHIEVE_NAME_BENCHMARKING, IDS_ACHIEVE_DESC_BENCHMARKING))->postConstruct();
Achievements::buildPickaxe = (new Achievement(eAward_TimeToMine, L"buildPickaxe", 4, 2, Item::pickAxe_wood, (Achievement *) buildWorkbench, "004", IDS_ACHIEVE_NAME_TIME_TO_MINE, IDS_ACHIEVE_DESC_TIME_TO_MINE))->postConstruct();
Achievements::buildFurnace = (new Achievement(eAward_HotTopic, L"buildFurnace", 3, 4, Tile::furnace_lit, (Achievement *) buildPickaxe, "005", IDS_ACHIEVE_NAME_HOT_TOPIC, IDS_ACHIEVE_DESC_HOT_TOPIC))->postConstruct();
Achievements::acquireIron = (new Achievement(eAward_AquireHardware, L"acquireIron", 1, 4, Item::ironIngot, (Achievement *) buildFurnace, "006", IDS_ACHIEVE_NAME_ACQUIRE_HARDWARE, IDS_ACHIEVE_DESC_ACQUIRE_HARDWARE))->postConstruct();
Achievements::buildHoe = (new Achievement(eAward_TimeToFarm, L"buildHoe", 2, -3, Item::hoe_wood, (Achievement *) buildWorkbench, "007", IDS_ACHIEVE_NAME_TIME_TO_FARM, IDS_ACHIEVE_DESC_TIME_TO_FARM))->postConstruct();
Achievements::makeBread = (new Achievement(eAward_BakeBread, L"makeBread", -1, -3, Item::bread, (Achievement *) buildHoe, "008", IDS_ACHIEVE_NAME_BAKE_BREAD, IDS_ACHIEVE_DESC_BAKE_BREAD))->postConstruct();
Achievements::bakeCake = (new Achievement(eAward_TheLie, L"bakeCake", 0, -5, Item::cake, (Achievement *) buildHoe, "009", IDS_ACHIEVE_NAME_THE_LIE, IDS_ACHIEVE_DESC_THE_LIE))->postConstruct();
Achievements::buildBetterPickaxe = (new Achievement(eAward_GettingAnUpgrade, L"buildBetterPickaxe", 6, 2, Item::pickAxe_stone, (Achievement *) buildPickaxe, "010", IDS_ACHIEVE_NAME_GETTING_AN_UPGRADE, IDS_ACHIEVE_DESC_GETTING_AN_UPGRADE))->postConstruct();
Achievements::cookFish = (new Achievement(eAward_DeliciousFish, L"cookFish", 2, 6, Item::fish_cooked, (Achievement *) buildFurnace, "011", IDS_ACHIEVE_NAME_DELICIOUS_FISH, IDS_ACHIEVE_DESC_DELICIOUS_FISH))->postConstruct();
Achievements::onARail = (new Achievement(eAward_OnARail, L"onARail", 2, 3, Tile::rail, (Achievement *) acquireIron, "012", IDS_ACHIEVE_NAME_ON_A_RAIL, IDS_ACHIEVE_DESC_ON_A_RAIL))->setGolden()->postConstruct();
Achievements::buildSword = (new Achievement(eAward_TimeToStrike, L"buildSword", 6, -1, Item::sword_wood, (Achievement *) buildWorkbench, "013", IDS_ACHIEVE_NAME_TIME_TO_STRIKE, IDS_ACHIEVE_DESC_TIME_TO_STRIKE))->postConstruct();
Achievements::killEnemy = (new Achievement(eAward_MonsterHunter, L"killEnemy", 8, -1, Item::bone, (Achievement *) buildSword, "014", IDS_ACHIEVE_NAME_MONSTER_HUNTER, IDS_ACHIEVE_DESC_MONSTER_HUNTER))->postConstruct();
Achievements::killCow = (new Achievement(eAward_CowTipper, L"killCow", 7, -3, Item::leather, (Achievement *) buildSword, "015", IDS_ACHIEVE_NAME_COW_TIPPER, IDS_ACHIEVE_DESC_COW_TIPPER))->postConstruct();
Achievements::flyPig = (new Achievement(eAward_WhenPigsFly, L"flyPig", 8, -4, Item::saddle, (Achievement *) killCow, "016", IDS_ACHIEVE_NAME_WHEN_PIGS_FLY, IDS_ACHIEVE_DESC_WHEN_PIGS_FLY))->setGolden()->postConstruct();
// 4J Stu - The order of these achievemnts is very important, as they map directly to data stored in the profile data. New achievements should be added at the end.
// 4J : WESTY : Added new achievements. Note, params "x", "y", "icon" and "requires" are ignored on xbox.
Achievements::leaderOfThePack = (new Achievement(eAward_LeaderOfThePack, L"leaderOfThePack", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->setAwardLocallyOnly()->postConstruct();
Achievements::MOARTools = (new Achievement(eAward_MOARTools, L"MOARTools", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->setAwardLocallyOnly()->postConstruct();
Achievements::dispenseWithThis = (new Achievement(eAward_DispenseWithThis, L"dispenseWithThis", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->postConstruct();
Achievements::InToTheNether = (new Achievement(eAward_InToTheNether, L"InToTheNether", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->postConstruct();
Achievements::leaderOfThePack = (new Achievement(eAward_LeaderOfThePack, L"leaderOfThePack", 0, 0, Tile::treeTrunk, (Achievement *) buildSword, "017", IDS_ACHIEVE_NAME_LEADER_OF_THE_PACK, IDS_ACHIEVE_DESC_LEADER_OF_THE_PACK))->setAwardLocallyOnly()->postConstruct();
Achievements::MOARTools = (new Achievement(eAward_MOARTools, L"MOARTools", 0, 0, Tile::treeTrunk, (Achievement *) buildSword, "018", IDS_ACHIEVE_NAME_MOAR_TOOLS, IDS_ACHIEVE_DESC_MOAR_TOOLS))->setAwardLocallyOnly()->postConstruct();
Achievements::dispenseWithThis = (new Achievement(eAward_DispenseWithThis, L"dispenseWithThis", 0, 0, Tile::treeTrunk, (Achievement *) buildSword, "019", IDS_ACHIEVE_NAME_DISPENSE_WITH_THIS, IDS_ACHIEVE_DESC_DISPENSE_WITH_THIS))->postConstruct();
Achievements::InToTheNether = (new Achievement(eAward_InToTheNether, L"InToTheNether", 0, 0, Tile::treeTrunk, (Achievement *) buildSword, "020", IDS_ACHIEVE_NAME_INTO_THE_NETHER, IDS_ACHIEVE_DESC_INTO_THE_NETHER))->postConstruct();
// 4J : WESTY : Added other awards.
Achievements::mine100Blocks = (new Achievement(eAward_mine100Blocks, L"mine100Blocks", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->setAwardLocallyOnly()->postConstruct();
Achievements::kill10Creepers = (new Achievement(eAward_kill10Creepers, L"kill10Creepers", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->setAwardLocallyOnly()->postConstruct();
//Achievements::mine100Blocks = (new Achievement(eAward_mine100Blocks, L"mine100Blocks", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->setAwardLocallyOnly()->postConstruct();
//Achievements::kill10Creepers = (new Achievement(eAward_kill10Creepers, L"kill10Creepers", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->setAwardLocallyOnly()->postConstruct();
#ifdef _EXTENDED_ACHIEVEMENTS
Achievements::eatPorkChop = (new Achievement(eAward_eatPorkChop, L"eatPorkChop", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->setAwardLocallyOnly()->postConstruct();
#else
Achievements::eatPorkChop = (new Achievement(eAward_eatPorkChop, L"eatPorkChop", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->postConstruct();
Achievements::eatPorkChop = (new Achievement(eAward_eatPorkChop, L"eatPorkChop", 0, 0, Tile::treeTrunk, (Achievement *) buildSword, "034", IDS_ACHIEVE_NAME_EAT_PORKCHOP, IDS_ACHIEVE_DESC_EAT_PORKCHOP))->postConstruct();
#endif
Achievements::play100Days = (new Achievement(eAward_play100Days, L"play100Days", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->setAwardLocallyOnly()->postConstruct();
Achievements::arrowKillCreeper = (new Achievement(eAward_arrowKillCreeper, L"arrowKillCreeper", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->postConstruct();
Achievements::socialPost = (new Achievement(eAward_socialPost, L"socialPost", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->postConstruct();
Achievements::play100Days = (new Achievement(eAward_play100Days, L"play100Days", 0, 0, Tile::treeTrunk, (Achievement *) buildSword, "035", IDS_ACHIEVE_NAME_PLAY_100_DAYS, IDS_ACHIEVE_DESC_PLAY_100_DAYS))->setAwardLocallyOnly()->postConstruct();
Achievements::arrowKillCreeper = (new Achievement(eAward_arrowKillCreeper, L"arrowKillCreeper", 0, 0, Tile::treeTrunk, (Achievement *) buildSword, "036", IDS_ACHIEVE_NAME_ARROW_KILL_CREEPER, IDS_ACHIEVE_DESC_ARROW_KILL_CREEPER))->postConstruct();
//Achievements::socialPost = (new Achievement(eAward_socialPost, L"socialPost", 0, 0, Tile::treeTrunk, (Achievement *) buildSword))->postConstruct();
#ifndef _XBOX
// WARNING: NO NEW ACHIEVMENTS CAN BE ADDED HERE
@@ -133,46 +133,43 @@ void Achievements::staticCtor()
// 4J Stu - All new Java achievements removed to stop them using the profile data
// 4J Stu - This achievment added in 1.8.2, but does not map to any Xbox achievements
Achievements::snipeSkeleton = (new Achievement(eAward_snipeSkeleton, L"snipeSkeleton", 7, 0, Item::bow, (Achievement *) killEnemy))->setGolden()->postConstruct();
Achievements::snipeSkeleton = (new Achievement(eAward_snipeSkeleton, L"snipeSkeleton", 7, 0, Item::bow, (Achievement *) killEnemy, "021", IDS_ACHIEVE_NAME_SNIPESKELETON, IDS_ACHIEVE_DESC_SNIPESKELETON))->setGolden()->postConstruct();
// 4J Stu - These added in 1.0.1, but do not map to any Xbox achievements
Achievements::diamonds = (new Achievement(eAward_diamonds, L"diamonds", -1, 5, Item::diamond, (Achievement *) acquireIron) )->postConstruct();
Achievements::diamonds = (new Achievement(eAward_diamonds, L"diamonds", -1, 5, Item::diamond, (Achievement *) acquireIron, "022", IDS_ACHIEVE_NAME_DIAMONDS, IDS_ACHIEVE_DESC_DIAMONDS) )->postConstruct();
//Achievements::portal = (new Achievement(eAward_portal, L"portal", -1, 7, Tile::obsidian, (Achievement *)diamonds) )->postConstruct();
Achievements::ghast = (new Achievement(eAward_ghast, L"ghast", -4, 8, Item::ghastTear, (Achievement *)ghast) )->setGolden()->postConstruct();
Achievements::blazeRod = (new Achievement(eAward_blazeRod, L"blazeRod", 0, 9, Item::blazeRod, (Achievement *)blazeRod) )->postConstruct();
Achievements::potion = (new Achievement(eAward_potion, L"potion", 2, 8, Item::potion, (Achievement *)potion) )->postConstruct();
Achievements::theEnd = (new Achievement(eAward_theEnd, L"theEnd", 3, 10, Item::eyeOfEnder, (Achievement *)theEnd) )->setGolden()->postConstruct();
Achievements::winGame = (new Achievement(eAward_winGame, L"theEnd2", 4, 13, Tile::dragonEgg, (Achievement *)winGame) )->setGolden()->postConstruct();
Achievements::enchantments = (new Achievement(eAward_enchantments, L"enchantments", -4, 4, Tile::enchantTable, (Achievement *)enchantments) )->postConstruct();
Achievements::ghast = (new Achievement(eAward_ghast, L"ghast", -4, 8, Item::ghastTear, (Achievement *)ghast, "023", IDS_ACHIEVE_NAME_GHAST, IDS_ACHIEVE_DESC_GHAST) )->setGolden()->postConstruct();
Achievements::blazeRod = (new Achievement(eAward_blazeRod, L"blazeRod", 0, 9, Item::blazeRod, (Achievement *)blazeRod, "024", IDS_ACHIEVE_NAME_BLAZEROD, IDS_ACHIEVE_DESC_BLAZEROD) )->postConstruct();
Achievements::potion = (new Achievement(eAward_potion, L"potion", 2, 8, Item::potion, (Achievement *)potion, "025", IDS_ACHIEVE_NAME_POTION, IDS_ACHIEVE_DESC_POTION) )->postConstruct();
Achievements::theEnd = (new Achievement(eAward_theEnd, L"theEnd", 3, 10, Item::eyeOfEnder, (Achievement *)theEnd, "026", IDS_ACHIEVE_NAME_THE_END, IDS_ACHIEVE_DESC_THE_END) )->setGolden()->postConstruct();
Achievements::winGame = (new Achievement(eAward_winGame, L"theEnd2", 4, 13, Tile::dragonEgg, (Achievement *)winGame, "027", IDS_ACHIEVE_NAME_WINGAME, IDS_ACHIEVE_DESC_WINGAME) )->setGolden()->postConstruct();
Achievements::enchantments = (new Achievement(eAward_enchantments, L"enchantments", -4, 4, Tile::enchantTable, (Achievement *)enchantments, "028", IDS_ACHIEVE_NAME_ENCHANTMENTS, IDS_ACHIEVE_DESC_ENCHANTMENTS) )->postConstruct();
// Achievements::overkill = (new Achievement(eAward_overkill, L"overkill", -4, 1, Item::sword_diamond, (Achievement *)enchantments) )->setGolden()->postConstruct();
// Achievements::bookcase = (new Achievement(eAward_bookcase, L"bookcase", -3, 6, Tile::bookshelf, (Achievement *)enchantments) )->postConstruct();
#endif
#ifdef _EXTENDED_ACHIEVEMENTS
Achievements::overkill = (new Achievement(eAward_overkill, L"overkill", -4,1, Item::sword_diamond, (Achievement *)enchantments) )->setGolden()->postConstruct();
Achievements::bookcase = (new Achievement(eAward_bookcase, L"bookcase", -3,6, Tile::bookshelf, (Achievement *)enchantments) )->postConstruct();
Achievements::adventuringTime = (new Achievement(eAward_adventuringTime, L"adventuringTime", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->setAwardLocallyOnly()->postConstruct();
Achievements::repopulation = (new Achievement(eAward_repopulation, L"repopulation", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
Achievements::overkill = (new Achievement(eAward_overkill, L"overkill", -4,1, Item::sword_diamond, (Achievement *)enchantments, "029", IDS_ACHIEVE_NAME_OVERKILL, IDS_ACHIEVE_DESC_OVERKILL) )->setGolden()->postConstruct();
Achievements::bookcase = (new Achievement(eAward_bookcase, L"bookcase", -3,6, Tile::bookshelf, (Achievement *)enchantments, "030", IDS_ACHIEVE_NAME_BOOKCASE, IDS_ACHIEVE_DESC_BOOKCASE) )->postConstruct();
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) )->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) )->setAwardLocallyOnly()->postConstruct();
Achievements::potPlanter = (new Achievement(eAward_potPlanter, L"potPlanter", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->setAwardLocallyOnly()->postConstruct();
Achievements::itsASign = (new Achievement(eAward_itsASign, L"itsASign", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->setAwardLocallyOnly()->postConstruct();
Achievements::ironBelly = (new Achievement(eAward_ironBelly, L"ironBelly", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
Achievements::haveAShearfulDay = (new Achievement(eAward_haveAShearfulDay, L"haveAShearfulDay", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
Achievements::rainbowCollection = (new Achievement(eAward_rainbowCollection, L"rainbowCollection", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->setAwardLocallyOnly()->postConstruct();
Achievements::stayinFrosty = (new Achievement(eAward_stayinFrosty, L"stayingFrosty", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
Achievements::chestfulOfCobblestone = (new Achievement(eAward_chestfulOfCobblestone, L"chestfulOfCobblestone", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->setAwardLocallyOnly()->postConstruct();
Achievements::renewableEnergy = (new Achievement(eAward_renewableEnergy, L"renewableEnergy", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
Achievements::musicToMyEars = (new Achievement(eAward_musicToMyEars, L"musicToMyEars", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
Achievements::bodyGuard = (new Achievement(eAward_bodyGuard, L"bodyGuard", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
Achievements::ironMan = (new Achievement(eAward_ironMan, L"ironMan", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
Achievements::zombieDoctor = (new Achievement(eAward_zombieDoctor, L"zombieDoctor", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
Achievements::lionTamer = (new Achievement(eAward_lionTamer, L"lionTamer", 0,0, Tile::bookshelf, (Achievement*) nullptr) )->postConstruct();
#endif
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();
Achievements::potPlanter = (new Achievement(eAward_potPlanter, L"potPlanter", 0,0, Tile::bookshelf, (Achievement*) nullptr, "038", IDS_ACHIEVE_NAME_POT_PLANTER, IDS_ACHIEVE_DESC_POT_PLANTER) )->setAwardLocallyOnly()->postConstruct();
Achievements::itsASign = (new Achievement(eAward_itsASign, L"itsASign", 0,0, Tile::bookshelf, (Achievement*) nullptr, "039", IDS_ACHIEVE_NAME_ITS_A_SIGN, IDS_ACHIEVE_DESC_ITS_A_SIGN) )->setAwardLocallyOnly()->postConstruct();
Achievements::ironBelly = (new Achievement(eAward_ironBelly, L"ironBelly", 0,0, Tile::bookshelf, (Achievement*) nullptr, "040", IDS_ACHIEVE_NAME_IRON_BELLY, IDS_ACHIEVE_DESC_IRON_BELLY) )->postConstruct();
Achievements::haveAShearfulDay = (new Achievement(eAward_haveAShearfulDay, L"haveAShearfulDay", 0,0, Tile::bookshelf, (Achievement*) nullptr, "041", IDS_ACHIEVE_NAME_HAVE_A_SHEARFUL_DAY, IDS_ACHIEVE_DESC_HAVE_A_SHEARFUL_DAY) )->postConstruct();
Achievements::rainbowCollection = (new Achievement(eAward_rainbowCollection, L"rainbowCollection", 0,0, Tile::bookshelf, (Achievement*) nullptr, "042", IDS_ACHIEVE_NAME_RAINBOW_COLLECTION, IDS_ACHIEVE_DESC_RAINBOW_COLLECTION) )->setAwardLocallyOnly()->postConstruct();
Achievements::stayinFrosty = (new Achievement(eAward_stayinFrosty, L"stayingFrosty", 0,0, Tile::bookshelf, (Achievement*) nullptr, "043", IDS_ACHIEVE_NAME_STAYING_FROSTY, IDS_ACHIEVE_DESC_STAYING_FROSTY) )->postConstruct();
Achievements::chestfulOfCobblestone = (new Achievement(eAward_chestfulOfCobblestone, L"chestfulOfCobblestone", 0,0, Tile::bookshelf, (Achievement*) nullptr, "044", IDS_ACHIEVE_NAME_CHESTFUL_OF_COBBLESTONE, IDS_ACHIEVE_DESC_CHESTFUL_OF_COBBLESTONE) )->setAwardLocallyOnly()->postConstruct();
Achievements::renewableEnergy = (new Achievement(eAward_renewableEnergy, L"renewableEnergy", 0,0, Tile::bookshelf, (Achievement*) nullptr, "045", IDS_ACHIEVE_NAME_RENEWABLE_ENERGY, IDS_ACHIEVE_DESC_RENEWABLE_ENERGY) )->postConstruct();
Achievements::musicToMyEars = (new Achievement(eAward_musicToMyEars, L"musicToMyEars", 0,0, Tile::bookshelf, (Achievement*) nullptr, "046", IDS_ACHIEVE_NAME_MUSIC_TO_MY_EARS, IDS_ACHIEVE_DESC_MUSIC_TO_MY_EARS) )->postConstruct();
Achievements::bodyGuard = (new Achievement(eAward_bodyGuard, L"bodyGuard", 0,0, Tile::bookshelf, (Achievement*) nullptr, "047", IDS_ACHIEVE_NAME_BODYGUARD, IDS_ACHIEVE_DESC_BODYGUARD) )->postConstruct();
Achievements::ironMan = (new Achievement(eAward_ironMan, L"ironMan", 0,0, Tile::bookshelf, (Achievement*) nullptr, "048", IDS_ACHIEVE_NAME_IRON_MAN, IDS_ACHIEVE_DESC_IRON_MAN) )->postConstruct();
Achievements::zombieDoctor = (new Achievement(eAward_zombieDoctor, L"zombieDoctor", 0,0, Tile::bookshelf, (Achievement*) nullptr, "049", IDS_ACHIEVE_NAME_ZOMBIE_DOCTOR, IDS_ACHIEVE_DESC_ZOMBIE_DOCTOR) )->postConstruct();
Achievements::lionTamer = (new Achievement(eAward_lionTamer, L"lionTamer", 0,0, Tile::bookshelf, (Achievement*) nullptr, "050", IDS_ACHIEVE_NAME_LION_TAMER, IDS_ACHIEVE_DESC_LION_TAMER) )->postConstruct();
}
+6 -18
View File
@@ -1,25 +1,19 @@
#pragma once
using namespace std;
class Achievement;
class Achievements
{
friend class Achievement;
protected:
static const int ACHIEVEMENT_OFFSET;
// maximum position of achievements (min and max)
public:
static const int ACHIEVEMENT_WIDTH_POSITION = 12;
static const int ACHIEVEMENT_HEIGHT_POSITION = 12;
static int xMin, yMin, xMax, yMax;
static vector<Achievement *> *achievements;
static Achievement *openInventory;
static Achievement *mineWood;
static Achievement *buildWorkbench;
@@ -36,7 +30,6 @@ public:
static Achievement *killEnemy;
static Achievement *killCow;
static Achievement *flyPig;
// 4J-JEV: Present on the PS3.
static Achievement *snipeSkeleton;
static Achievement *diamonds;
@@ -47,29 +40,26 @@ public:
static Achievement *theEnd;
static Achievement *winGame;
static Achievement *enchantments;
// 4J : WESTY : Added new acheivements.
static Achievement *leaderOfThePack;
static Achievement *MOARTools;
static Achievement *dispenseWithThis;
static Achievement *InToTheNether;
// 4J : WESTY : Added other awards.
static Achievement *socialPost;
//static Achievement *socialPost;
static Achievement *eatPorkChop;
static Achievement *play100Days;
static Achievement *arrowKillCreeper;
static Achievement *mine100Blocks;
static Achievement *kill10Creepers;
//static Achievement *mine100Blocks;
//static Achievement *kill10Creepers;
#ifdef _EXTENDED_ACHIEVEMENTS
static Achievement *overkill; // Old achievements;
static Achievement *bookcase; // Old achievements;
static Achievement *adventuringTime;
static Achievement *repopulation;
static Achievement *diamondsToYou;
static Achievement *passingTheTime;
static Achievement *archer;
//static Achievement *passingTheTime;
//static Achievement *archer;
static Achievement *theHaggler;
static Achievement *potPlanter;
static Achievement *itsASign;
@@ -84,9 +74,7 @@ public:
static Achievement *ironMan;
static Achievement *zombieDoctor;
static Achievement *lionTamer;
#endif
static void staticCtor();
static void init();
};
};
+12 -10
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;
}
@@ -111,7 +112,8 @@ Stat *CommonStats::get_itemsUsed(int itemId)
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 +135,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
}
@@ -161,17 +164,17 @@ Stat *CommonStats::get_achievement(eAward achievementId)
case eAward_MOARTools: return (Stat *) Achievements::MOARTools;
case eAward_DispenseWithThis: return (Stat *) Achievements::dispenseWithThis;
case eAward_InToTheNether: return (Stat *) Achievements::InToTheNether;
case eAward_mine100Blocks: return (Stat *) Achievements::mine100Blocks;
case eAward_kill10Creepers: return (Stat *) Achievements::kill10Creepers;
//case eAward_mine100Blocks: return (Stat *) Achievements::mine100Blocks;
//case eAward_kill10Creepers: return (Stat *) Achievements::kill10Creepers;
case eAward_eatPorkChop: return (Stat *) Achievements::eatPorkChop;
case eAward_play100Days: return (Stat *) Achievements::play100Days;
case eAward_arrowKillCreeper: return (Stat *) Achievements::arrowKillCreeper;
case eAward_socialPost: return (Stat *) Achievements::socialPost;
//case eAward_socialPost: return (Stat *) Achievements::socialPost;
#ifndef _XBOX
case eAward_snipeSkeleton: return (Stat *) Achievements::snipeSkeleton;
case eAward_diamonds: return (Stat *) Achievements::diamonds;
case eAward_portal: return (Stat *) nullptr; // TODO
//case eAward_portal: return (Stat *) nullptr; // TODO
case eAward_ghast: return (Stat *) Achievements::ghast;
case eAward_blazeRod: return (Stat *) Achievements::blazeRod;
case eAward_potion: return (Stat *) Achievements::potion;
@@ -180,7 +183,6 @@ Stat *CommonStats::get_achievement(eAward achievementId)
case eAward_enchantments: return (Stat *) Achievements::enchantments;
#endif
#ifdef _EXTENDED_ACHIEVEMENTS
case eAward_overkill: return (Stat *) Achievements::overkill; // Restored old ach.
case eAward_bookcase: return (Stat *) Achievements::bookcase; // Restored old ach.
@@ -203,7 +205,7 @@ Stat *CommonStats::get_achievement(eAward achievementId)
case eAward_ironMan: return (Stat *) Achievements::ironMan;
case eAward_zombieDoctor: return (Stat *) Achievements::zombieDoctor;
case eAward_lionTamer: return (Stat *) Achievements::lionTamer;
#endif
default: return (Stat *) nullptr;
}
-2
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;
}
@@ -11,6 +11,7 @@
#include "LevelData.h"
#include "DirectoryLevelStorage.h"
#include "ConsoleSaveFileIO.h"
#include "../Minecraft.Client/Minecraft.h"
const wstring DirectoryLevelStorage::sc_szPlayerDir(L"players/");
@@ -391,6 +392,7 @@ void DirectoryLevelStorage::save(shared_ptr<Player> player)
if( playerXuid != INVALID_XUID && !player->isGuest() )
#endif
{
Minecraft::GetInstance()->forceStatsSave(player->getPlayerIndex());
CompoundTag *tag = new CompoundTag();
player->saveWithoutId(tag);
#if defined(__PS3__) || defined(__ORBIS__) || defined(__PSVITA__)
+2 -4
View File
@@ -100,10 +100,8 @@ 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 +162,13 @@ 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;
}
+1
View File
@@ -88,6 +88,7 @@ void FurnaceResultSlot::checkTakeAchievements(shared_ptr<ItemInstance> carried)
#else
if (carried->id == Item::ironIngot_Id) player->awardStat(GenericStats::acquireIron(), GenericStats::param_acquireIron());
if (carried->id == Item::fish_cooked_Id) player->awardStat(GenericStats::cookFish(), GenericStats::param_cookFish());
//if (carried->id == Item::porkChop_cooked_Id) GenericStats::itemsCrafted(Item::porkChop_cooked_Id);
#endif
removeCount = 0;
+67 -67
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
}
@@ -391,10 +391,10 @@ Stat* GenericStats::InToTheNether()
return instance->get_achievement( eAward_InToTheNether );
}
Stat* GenericStats::socialPost()
{
return instance->get_achievement( eAward_socialPost );
}
//Stat* GenericStats::socialPost()
//{
// return instance->get_achievement( eAward_socialPost );
//}
Stat* GenericStats::eatPorkChop()
{
@@ -411,22 +411,22 @@ Stat* GenericStats::arrowKillCreeper()
return instance->get_achievement( eAward_arrowKillCreeper );
}
Stat* GenericStats::mine100Blocks()
{
return instance->get_achievement( eAward_mine100Blocks );
}
//Stat* GenericStats::mine100Blocks()
//{
// return instance->get_achievement( eAward_mine100Blocks );
//}
Stat* GenericStats::kill10Creepers()
{
return instance->get_achievement( eAward_kill10Creepers );
}
//Stat* GenericStats::kill10Creepers()
//{
// return instance->get_achievement( eAward_kill10Creepers );
//}
Stat* GenericStats::adventuringTime()
{
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_adventuringTime);
#else
return nullptr;
return instance->get_achievement(eAward_adventuringTime);
#endif
}
@@ -435,7 +435,7 @@ Stat* GenericStats::repopulation()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_repopulation);
#else
return nullptr;
return instance->get_achievement(eAward_repopulation);
#endif
}
@@ -444,7 +444,7 @@ Stat* GenericStats::porkChop()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_eatPorkChop);
#else
return nullptr;
return instance->get_achievement(eAward_eatPorkChop);
#endif
}
@@ -453,7 +453,7 @@ Stat* GenericStats::diamondsToYou()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_diamondsToYou);
#else
return nullptr;
return instance->get_achievement(eAward_diamondsToYou);
#endif
}
@@ -462,7 +462,7 @@ Stat* GenericStats::passingTheTime()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_play100Days);
#else
return nullptr;
return instance->get_achievement(eAward_play100Days);
#endif
}
@@ -471,7 +471,7 @@ Stat* GenericStats::archer()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_arrowKillCreeper);
#else
return nullptr;
return instance->get_achievement(eAward_arrowKillCreeper);
#endif
}
@@ -480,7 +480,7 @@ Stat* GenericStats::theHaggler()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_theHaggler);
#else
return nullptr;
return instance->get_achievement(eAward_theHaggler);
#endif
}
@@ -489,7 +489,7 @@ Stat* GenericStats::potPlanter()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_potPlanter);
#else
return nullptr;
return instance->get_achievement(eAward_potPlanter);
#endif
}
@@ -498,7 +498,7 @@ Stat* GenericStats::itsASign()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_itsASign);
#else
return nullptr;
return instance->get_achievement(eAward_itsASign);
#endif
}
@@ -507,7 +507,7 @@ Stat* GenericStats::ironBelly()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_ironBelly);
#else
return nullptr;
return instance->get_achievement(eAward_ironBelly);
#endif
}
@@ -516,7 +516,7 @@ Stat* GenericStats::haveAShearfulDay()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_haveAShearfulDay);
#else
return nullptr;
return instance->get_achievement(eAward_haveAShearfulDay);
#endif
}
@@ -525,7 +525,7 @@ Stat* GenericStats::rainbowCollection()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_rainbowCollection);
#else
return nullptr;
return instance->get_achievement(eAward_rainbowCollection);
#endif
}
@@ -534,7 +534,7 @@ Stat* GenericStats::stayinFrosty()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_stayinFrosty);
#else
return nullptr;
return instance->get_achievement(eAward_stayinFrosty);
#endif
}
@@ -543,7 +543,7 @@ Stat* GenericStats::chestfulOfCobblestone()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_chestfulOfCobblestone);
#else
return nullptr;
return instance->get_achievement(eAward_chestfulOfCobblestone);
#endif
}
@@ -552,7 +552,7 @@ Stat* GenericStats::renewableEnergy()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_renewableEnergy);
#else
return nullptr;
return instance->get_achievement(eAward_renewableEnergy);
#endif
}
@@ -561,7 +561,7 @@ Stat* GenericStats::musicToMyEars()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_musicToMyEars);
#else
return nullptr;
return instance->get_achievement(eAward_musicToMyEars);
#endif
}
@@ -570,7 +570,7 @@ Stat* GenericStats::bodyGuard()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_bodyGuard);
#else
return nullptr;
return instance->get_achievement(eAward_bodyGuard);
#endif
}
@@ -579,7 +579,7 @@ Stat* GenericStats::ironMan()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_ironMan);
#else
return nullptr;
return instance->get_achievement(eAward_ironMan);
#endif
}
@@ -588,7 +588,7 @@ Stat* GenericStats::zombieDoctor()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_zombieDoctor);
#else
return nullptr;
return instance->get_achievement(eAward_zombieDoctor);
#endif
}
@@ -597,7 +597,7 @@ Stat* GenericStats::lionTamer()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->get_achievement(eAward_lionTamer);
#else
return nullptr;
return instance->get_achievement(eAward_lionTamer);
#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
}
@@ -1081,10 +1081,10 @@ byteArray GenericStats::param_InToTheNether()
return instance->getParam_achievement(eAward_InToTheNether);
}
byteArray GenericStats::param_socialPost()
{
return instance->getParam_achievement(eAward_socialPost);
}
//byteArray GenericStats::param_socialPost()
//{
// return instance->getParam_achievement(eAward_socialPost);
//}
byteArray GenericStats::param_eatPorkChop()
{
@@ -1101,22 +1101,22 @@ byteArray GenericStats::param_arrowKillCreeper()
return instance->getParam_achievement(eAward_arrowKillCreeper);
}
byteArray GenericStats::param_mine100Blocks()
{
return instance->getParam_achievement(eAward_mine100Blocks);
}
byteArray GenericStats::param_kill10Creepers()
{
return instance->getParam_achievement(eAward_kill10Creepers);
}
//byteArray GenericStats::param_mine100Blocks()
//{
// return instance->getParam_achievement(eAward_mine100Blocks);
//}
//
//byteArray GenericStats::param_kill10Creepers()
//{
// return instance->getParam_achievement(eAward_kill10Creepers);
//}
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
}
@@ -1134,7 +1134,7 @@ byteArray GenericStats::param_porkChop()
#ifdef _EXTENDED_ACHIEVEMENTS
return instance->getParam_achievement(eAward_eatPorkChop);
#else
return instance->getParam_noArgs();
return instance->getParam_achievement(eAward_eatPorkChop);
#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
}
}
+1 -2
View File
@@ -235,7 +235,6 @@ 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 +245,7 @@ shared_ptr<ItemInstance> InventoryMenu::clicked(int slotIndex, int buttonNum, in
}
}
player->awardStat(GenericStats::ironMan(),GenericStats::param_ironMan());
#endif
return out;
}
+1 -2
View File
@@ -242,7 +242,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());
@@ -251,7 +251,6 @@ 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());
+2 -2
View File
@@ -2483,10 +2483,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)
+4 -6
View File
@@ -23,9 +23,8 @@ 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 +55,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 +472,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 +546,6 @@ void Stats::buildAdditionalStats()
blocksPlaced[itemStat->getItemId()] = itemStat;
itemStat->postConstruct();
}
#endif
}
+6 -6
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,18 @@ public:
static StatArray itemsCollected;
static StatArray itemsCrafted;
#if (defined _EXTENDED_ACHIEVEMENTS) && (!defined _DURANGO)
static StatArray blocksPlaced;
#endif
// 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();