From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001
From: daoge_cmd <3523206925@qq.com>
Date: Sun, 1 Mar 2026 12:16:08 +0800
Subject: Initial commit
---
Minecraft.Client/Xbox/4JLibs/Media/4J_strings.resx | 171 +
Minecraft.Client/Xbox/4JLibs/inc/4J_Input.h | 127 +
Minecraft.Client/Xbox/4JLibs/inc/4J_Profile.h | 124 +
Minecraft.Client/Xbox/4JLibs/inc/4J_Render.h | 238 +
Minecraft.Client/Xbox/4JLibs/inc/4J_Storage.h | 306 ++
Minecraft.Client/Xbox/4JLibs/inc/4J_xtms.h | 55 +
Minecraft.Client/Xbox/4JLibs/libs/4J_Input.lib | Bin 0 -> 517916 bytes
Minecraft.Client/Xbox/4JLibs/libs/4J_Input_d.lib | Bin 0 -> 539222 bytes
Minecraft.Client/Xbox/4JLibs/libs/4J_Input_r.lib | Bin 0 -> 517470 bytes
Minecraft.Client/Xbox/4JLibs/libs/4J_Profile.lib | Bin 0 -> 651988 bytes
Minecraft.Client/Xbox/4JLibs/libs/4J_Profile_d.lib | Bin 0 -> 688038 bytes
Minecraft.Client/Xbox/4JLibs/libs/4J_Profile_r.lib | Bin 0 -> 652066 bytes
Minecraft.Client/Xbox/4JLibs/libs/4J_Render.lib | Bin 0 -> 811682 bytes
Minecraft.Client/Xbox/4JLibs/libs/4J_Render_d.lib | Bin 0 -> 986726 bytes
Minecraft.Client/Xbox/4JLibs/libs/4J_Storage.lib | Bin 0 -> 2533656 bytes
Minecraft.Client/Xbox/4JLibs/libs/4J_Storage_d.lib | Bin 0 -> 3294576 bytes
Minecraft.Client/Xbox/4JLibs/libs/4J_Storage_r.lib | Bin 0 -> 2533020 bytes
Minecraft.Client/Xbox/4JLibs/libs/4J_XTMS_d.lib | Bin 0 -> 603878 bytes
Minecraft.Client/Xbox/4JLibs/libs/4J_XTMS_r.lib | Bin 0 -> 572112 bytes
Minecraft.Client/Xbox/Audio/SoundEngine.cpp | 1078 +++++
Minecraft.Client/Xbox/Audio/SoundEngine.h | 110 +
.../584111F7/00000001/Save2012 32617 834.bin | Bin 0 -> 8847360 bytes
.../FFFE07D1/00010000/E0006C5B8D782D00 | Bin 0 -> 192512 bytes
.../FFFE07D1/00010000/E00031068D782D00 | Bin 0 -> 270336 bytes
.../FFFE07D1/00010000/E00032518D782D00 | Bin 0 -> 212992 bytes
.../FFFE07D1/00010000/E00033A28D782D00 | Bin 0 -> 282624 bytes
.../FFFE07D1/00010000/E00035128D782D00 | Bin 0 -> 192512 bytes
.../FFFE07D1/00010000/E00036E98D782D00 | Bin 0 -> 188416 bytes
.../FFFE07D1/00010000/E000372E8D782D00 | Bin 0 -> 192512 bytes
.../FFFE07D1/00010000/E00038028D782D00 | Bin 0 -> 126976 bytes
.../CopyContentPackageFiles - Debug.cmd | 3 +
.../CopyContentPackageFiles.cmd | 59 +
.../InstallMinecraftToKits - Full.cmd | 34 +
.../InstallMinecraftToKits - Trial.cmd | 33 +
.../MinecraftContentPackage.xlast | Bin 0 -> 185226 bytes
.../ContentPackageBuild/Minecraft_LicenseFull.bat | 3 +
.../ContentPackageBuild/Minecraft_LicenseTrial.bat | 3 +
.../Xbox/Docs/4J Minecraft 1.0.1 update.docx | Bin 0 -> 123289 bytes
.../Xbox/Docs/4J Minecraft 1.1 update.docx | Bin 0 -> 57146 bytes
.../Xbox/Docs/4J Minecraft 1.2.3 update.docx | Bin 0 -> 837504 bytes
.../Xbox/Docs/4J Minecraft 1.3.1 update.docx | Bin 0 -> 261594 bytes
.../Xbox/Docs/4J Minecraft 1.7.3 update.docx | Bin 0 -> 54888 bytes
.../Xbox/Docs/4J Minecraft 1.8.2 update.docx | Bin 0 -> 961696 bytes
...craft XBLA Design Changes & Additions v1.0.docx | Bin 0 -> 2362191 bytes
.../4J Minecraft XBLA Sentient Usage v1.0.docx | Bin 0 -> 70804 bytes
.../Xbox/Docs/4J Minecraft XBLA TMS.docx | Bin 0 -> 53293 bytes
.../Xbox/Docs/GameOverview_Minecraft.doc | Bin 0 -> 1473536 bytes
.../Xbox/Docs/Minecraft_XBLA_TIS_Nov2011.xls | Bin 0 -> 93184 bytes
.../Minecraft_XBLA_TIS_Nov2011_Asia_SYA111511.xls | Bin 0 -> 103424 bytes
.../Xbox/Docs/Minecraft_XBLA_TIS_Nov2011_EU.xls | Bin 0 -> 129024 bytes
.../Docs/PDLC_Request_Form_Nov2010-IronTheme.xls | Bin 0 -> 71680 bytes
.../Xbox/Docs/PDLC_Request_Form_Nov2010.xls | Bin 0 -> 70144 bytes
.../Xbox/Docs/Ratings_Submission_Form.doc | Bin 0 -> 209408 bytes
.../Docs/Xbox Live Avatar Items - Minecraft.xlsx | Bin 0 -> 20430 bytes
Minecraft.Client/Xbox/Font/XUI_Font.cpp | 503 +++
Minecraft.Client/Xbox/Font/XUI_Font.h | 93 +
Minecraft.Client/Xbox/Font/XUI_FontData.cpp | 395 ++
Minecraft.Client/Xbox/Font/XUI_FontData.h | 147 +
Minecraft.Client/Xbox/Font/XUI_FontRenderer.cpp | 307 ++
Minecraft.Client/Xbox/Font/XUI_FontRenderer.h | 49 +
Minecraft.Client/Xbox/GameConfig/01.png | Bin 0 -> 3295 bytes
Minecraft.Client/Xbox/GameConfig/02.png | Bin 0 -> 4984 bytes
Minecraft.Client/Xbox/GameConfig/03.png | Bin 0 -> 4893 bytes
Minecraft.Client/Xbox/GameConfig/04.png | Bin 0 -> 3173 bytes
Minecraft.Client/Xbox/GameConfig/05.png | Bin 0 -> 3231 bytes
Minecraft.Client/Xbox/GameConfig/06.png | Bin 0 -> 3327 bytes
Minecraft.Client/Xbox/GameConfig/07.png | Bin 0 -> 3211 bytes
Minecraft.Client/Xbox/GameConfig/08.png | Bin 0 -> 3222 bytes
Minecraft.Client/Xbox/GameConfig/09.png | Bin 0 -> 3187 bytes
Minecraft.Client/Xbox/GameConfig/10.png | Bin 0 -> 3289 bytes
Minecraft.Client/Xbox/GameConfig/11.png | Bin 0 -> 3201 bytes
Minecraft.Client/Xbox/GameConfig/12.png | Bin 0 -> 3191 bytes
Minecraft.Client/Xbox/GameConfig/13.png | Bin 0 -> 4777 bytes
Minecraft.Client/Xbox/GameConfig/14.png | Bin 0 -> 3253 bytes
Minecraft.Client/Xbox/GameConfig/15.png | Bin 0 -> 3232 bytes
Minecraft.Client/Xbox/GameConfig/16.png | Bin 0 -> 3355 bytes
Minecraft.Client/Xbox/GameConfig/17.png | Bin 0 -> 5920 bytes
Minecraft.Client/Xbox/GameConfig/18.png | Bin 0 -> 3579 bytes
Minecraft.Client/Xbox/GameConfig/19.png | Bin 0 -> 4810 bytes
Minecraft.Client/Xbox/GameConfig/20.png | Bin 0 -> 6198 bytes
.../GameConfig/32_584111F70002000100010001.png | Bin 0 -> 3905 bytes
.../GameConfig/32_584111F70002000200010002.png | Bin 0 -> 3823 bytes
.../GameConfig/64_584111F70002000100010001.png | Bin 0 -> 9304 bytes
.../GameConfig/64_584111F70002000200010002.png | Bin 0 -> 7184 bytes
Minecraft.Client/Xbox/GameConfig/ArcadeInfo.xml | Bin 0 -> 3826 bytes
.../Xbox/GameConfig/AvatarPackages/AvatarAwards | Bin 0 -> 503808 bytes
Minecraft.Client/Xbox/GameConfig/Creeper_Cap.bin | Bin 0 -> 9300 bytes
.../Xbox/GameConfig/MineCraft_Watch_Female.bin | Bin 0 -> 4432 bytes
.../Xbox/GameConfig/MineCraft_Watch_Male.bin | Bin 0 -> 4292 bytes
.../Xbox/GameConfig/Minecraft.gameconfig | Bin 0 -> 578964 bytes
Minecraft.Client/Xbox/GameConfig/Minecraft.spa | Bin 0 -> 244400 bytes
Minecraft.Client/Xbox/GameConfig/Minecraft.spa.h | 668 +++
Minecraft.Client/Xbox/GameConfig/MinecraftIcon.png | Bin 0 -> 5092 bytes
.../Xbox/GameConfig/MinecraftMarketplace.png | Bin 0 -> 27279 bytes
.../Xbox/GameConfig/Minecraft_BKGND.png | Bin 0 -> 238617 bytes
.../Xbox/GameConfig/Minecraft_BOXART.png | Bin 0 -> 311977 bytes
.../Xbox/GameConfig/TitleAward1_F_icon-128.png | Bin 0 -> 25600 bytes
.../Xbox/GameConfig/TitleAward1_F_icon-64.png | Bin 0 -> 7856 bytes
.../Xbox/GameConfig/TitleAward1_M_icon-128.png | Bin 0 -> 26816 bytes
.../Xbox/GameConfig/TitleAward1_M_icon-64.png | Bin 0 -> 8267 bytes
.../Xbox/GameConfig/TitleAward2_F_icon-128.png | Bin 0 -> 13369 bytes
.../Xbox/GameConfig/TitleAward2_F_icon-64.png | Bin 0 -> 4927 bytes
.../Xbox/GameConfig/TitleAward2_M_icon-128.png | Bin 0 -> 13367 bytes
.../Xbox/GameConfig/TitleAward2_M_icon-64.png | Bin 0 -> 4797 bytes
.../Xbox/GameConfig/TitleAward3_icon-128.png | Bin 0 -> 13992 bytes
.../Xbox/GameConfig/TitleAward3_icon-64.png | Bin 0 -> 4723 bytes
.../Xbox/GameConfig/Tshirt5_Porkchop_Female.bin | Bin 0 -> 22176 bytes
.../Xbox/GameConfig/Tshirt5_Porkchop_Male.bin | Bin 0 -> 24124 bytes
.../Xbox/Leaderboards/XboxLeaderboardManager.cpp | 520 +++
.../Xbox/Leaderboards/XboxLeaderboardManager.h | 136 +
Minecraft.Client/Xbox/MinecraftWindows.ico | Bin 0 -> 2998 bytes
Minecraft.Client/Xbox/MinecraftWindows.rc | Bin 0 -> 8606 bytes
Minecraft.Client/Xbox/Minecraftxex.xml | 14 +
.../Xbox/Network/NetworkPlayerXbox.cpp | 121 +
Minecraft.Client/Xbox/Network/NetworkPlayerXbox.h | 39 +
.../Xbox/Network/PlatformNetworkManagerXbox.cpp | 1769 ++++++++
.../Xbox/Network/PlatformNetworkManagerXbox.h | 184 +
Minecraft.Client/Xbox/Network/extra.h | 4 +
.../Xbox/ReleaseBuild/ReleaseAutobuild.cmd | 11 +
Minecraft.Client/Xbox/ReleaseBuild/build.plx | 131 +
Minecraft.Client/Xbox/ReleaseBuild/launchCMD.cmd | 1 +
Minecraft.Client/Xbox/Resource.h | Bin 0 -> 2172 bytes
.../Xbox/Sentient/DynamicConfigurations.cpp | 167 +
.../Xbox/Sentient/DynamicConfigurations.h | 68 +
.../Xbox/Sentient/Include/SenClientAvatar.h | 419 ++
.../Xbox/Sentient/Include/SenClientBoxArt.h | 409 ++
.../Xbox/Sentient/Include/SenClientConfig.h | 116 +
.../Xbox/Sentient/Include/SenClientCore.h | 74 +
.../Xbox/Sentient/Include/SenClientCulture.h | 61 +
.../Include/SenClientCultureBackCompat_SenBoxArt.h | 44 +
.../SenClientCultureBackCompat_SenClientUGC.h | 72 +
.../Include/SenClientCultureBackCompat_SenCore.h | 81 +
.../Include/SenClientCultureBackCompat_SenNews.h | 16 +
.../SenClientCultureBackCompat_SenSuperstars.h | 101 +
.../Xbox/Sentient/Include/SenClientDynamicConfig.h | 170 +
.../Xbox/Sentient/Include/SenClientFame.h | 572 +++
.../Xbox/Sentient/Include/SenClientFile.h | 134 +
.../Xbox/Sentient/Include/SenClientHelp.h | 13 +
.../Xbox/Sentient/Include/SenClientMain.h | 85 +
.../Xbox/Sentient/Include/SenClientMarkers.h | 55 +
.../Xbox/Sentient/Include/SenClientNews.h | 91 +
.../Xbox/Sentient/Include/SenClientPackage.h | 73 +
.../Xbox/Sentient/Include/SenClientRawData.h | 83 +
.../Xbox/Sentient/Include/SenClientResource.h | 111 +
.../Xbox/Sentient/Include/SenClientStats.h | 133 +
.../Xbox/Sentient/Include/SenClientSuperstars.h | 20 +
.../Xbox/Sentient/Include/SenClientSys.h | 58 +
.../Xbox/Sentient/Include/SenClientTypes.h | 160 +
.../Xbox/Sentient/Include/SenClientUGC.h | 957 ++++
.../Sentient/Include/SenClientUGCLeaderboards.h | 397 ++
.../Xbox/Sentient/Include/SenClientUGCTypes.h | 259 ++
.../Xbox/Sentient/Include/SenClientUser.h | 104 +
.../Xbox/Sentient/Include/SenClientUtil.h | 50 +
.../Xbox/Sentient/Include/SenClientXML.h | 85 +
Minecraft.Client/Xbox/Sentient/Libs/SenBoxArt.lib | Bin 0 -> 582968 bytes
Minecraft.Client/Xbox/Sentient/Libs/SenBoxArtD.lib | Bin 0 -> 574020 bytes
Minecraft.Client/Xbox/Sentient/Libs/SenCore.lib | Bin 0 -> 10921006 bytes
Minecraft.Client/Xbox/Sentient/Libs/SenCoreD.lib | Bin 0 -> 13026710 bytes
Minecraft.Client/Xbox/Sentient/Libs/SenNews.lib | Bin 0 -> 545518 bytes
Minecraft.Client/Xbox/Sentient/Libs/SenNewsD.lib | Bin 0 -> 655874 bytes
.../Xbox/Sentient/Libs/SenSuperstars.lib | Bin 0 -> 2127660 bytes
.../Xbox/Sentient/Libs/SenSuperstarsD.lib | Bin 0 -> 2279352 bytes
Minecraft.Client/Xbox/Sentient/Libs/SenUGC.lib | Bin 0 -> 1367614 bytes
Minecraft.Client/Xbox/Sentient/Libs/SenUGCD.lib | Bin 0 -> 1422238 bytes
.../Xbox/Sentient/MinecraftTelemetry.h | 3 +
.../Xbox/Sentient/MinecraftTelemetry.xml | 282 ++
Minecraft.Client/Xbox/Sentient/ReleaseNotes.txt | 22 +
.../Xbox/Sentient/Sentient Web Services.chm | Bin 0 -> 603711 bytes
Minecraft.Client/Xbox/Sentient/SentientManager.cpp | 539 +++
Minecraft.Client/Xbox/Sentient/SentientManager.h | 81 +
Minecraft.Client/Xbox/Sentient/SentientStats.cpp | 731 ++++
Minecraft.Client/Xbox/Sentient/SentientStats.h | 92 +
Minecraft.Client/Xbox/Sentient/SentientStats.xsd | 53 +
.../Xbox/Sentient/SentientTelemetryCommon.h | 191 +
Minecraft.Client/Xbox/Sentient/TelemetryEnum.h | 229 +
Minecraft.Client/Xbox/Sentient/trialConfigv1.bin | Bin 0 -> 8 bytes
Minecraft.Client/Xbox/Social/SocialManager.cpp | 690 +++
Minecraft.Client/Xbox/Social/SocialManager.h | 135 +
.../Xbox/SubmissionBuild/How to build.txt | 6 +
.../Xbox/SubmissionBuild/SubmissionAutobuild.cmd | 15 +
Minecraft.Client/Xbox/SubmissionBuild/build.plx | 380 ++
.../Xbox/SubmissionBuild/launchCMD.cmd | 1 +
Minecraft.Client/Xbox/TMSFiles/MPMA.png | Bin 0 -> 33582 bytes
.../Xbox/Title Update/CopyTUPackageFiles.cmd | 19 +
.../Minecraft_12.03.30.0062/Package/Default.xex | Bin 0 -> 20619264 bytes
.../Title Update/Running the autobuild process.txt | 9 +
Minecraft.Client/Xbox/Title Update/TUAutobuild.cmd | 126 +
.../TitleUpdate/Docs/Minecraft_response_doc.xls | Bin 0 -> 292352 bytes
.../Title Update/TitleUpdate/Minecraft_TU12.xlast | Bin 0 -> 16356 bytes
.../Title Update/TitleUpdate/Minecraft_TU13.xlast | Bin 0 -> 16356 bytes
.../Title Update/TitleUpdate/Minecraft_TU14.xlast | Bin 0 -> 24090 bytes
.../Title Update/TitleUpdate/Minecraft_TU15.xlast | Bin 0 -> 24090 bytes
.../Title Update/TitleUpdate/Minecraft_TU17.xlast | Bin 0 -> 26594 bytes
.../Title Update/TitleUpdate/Minecraft_TU18.xlast | Bin 0 -> 26432 bytes
.../Title Update/TitleUpdate/Package/default.xex | Bin 0 -> 20496384 bytes
.../Package/res/DLC/Candy/Data/TexturePack.xzp | Bin 0 -> 3590769 bytes
.../Package/res/DLC/Candy/Data/x16Data.pck | Bin 0 -> 869992 bytes
.../Package/res/DLC/City/Data/TexturePack.xzp | Bin 0 -> 4060458 bytes
.../Package/res/DLC/City/Data/x32Data.pck | Bin 0 -> 2636993 bytes
.../Package/res/DLC/Fantasy/Data/TexturePack.xzp | Bin 0 -> 4777159 bytes
.../Package/res/DLC/Fantasy/Data/x32Data.pck | Bin 0 -> 2527182 bytes
.../Package/res/DLC/Halloween/Data/TexturePack.xzp | Bin 0 -> 3705530 bytes
.../Package/res/DLC/Halloween/Data/x16Data.pck | Bin 0 -> 786598 bytes
.../Package/res/DLC/Halo/Data/GameRules.grf | Bin 0 -> 503 bytes
.../Package/res/DLC/Halo/Data/TexturePack.xzp | Bin 0 -> 4123875 bytes
.../Package/res/DLC/Halo/Data/x16Data.pck | Bin 0 -> 967988 bytes
.../Package/res/DLC/Halo/TexturePack.pck | Bin 0 -> 217553 bytes
.../Package/res/DLC/MassEffect/Data/GameRules.grf | Bin 0 -> 343 bytes
.../res/DLC/MassEffect/Data/TexturePack.xzp | Bin 0 -> 3022739 bytes
.../Package/res/DLC/MassEffect/Data/masseffect.mcs | Bin 0 -> 3485486 bytes
.../Package/res/DLC/MassEffect/Data/x16Data.pck | Bin 0 -> 733891 bytes
.../Package/res/DLC/MassEffect/TexturePack.pck | Bin 0 -> 176514 bytes
.../Package/res/DLC/Natural/Data/TexturePack.xzp | Bin 0 -> 4166364 bytes
.../Package/res/DLC/Natural/Data/x32Data.pck | Bin 0 -> 2894225 bytes
.../Package/res/DLC/Plastic/Data/TexturePack.xzp | Bin 0 -> 2607406 bytes
.../Package/res/DLC/Plastic/Data/x16Data.pck | Bin 0 -> 567845 bytes
.../Package/res/DLC/Skyrim/Data/GameRules.grf | Bin 0 -> 505 bytes
.../Package/res/DLC/Skyrim/Data/TexturePack.xzp | Bin 0 -> 3413075 bytes
.../Package/res/DLC/Skyrim/Data/x16Data.pck | Bin 0 -> 996979 bytes
.../Package/res/DLC/Skyrim/TexturePack.pck | Bin 0 -> 181667 bytes
.../TitleUpdate/Package/res/GameRules/Tutorial.pck | Bin 0 -> 90648 bytes
.../TitleUpdate/Package/res/TMS/TMSFiles.xzp | Bin 0 -> 5828845 bytes
.../TitleUpdate/Package/res/armor/cloth_1.png | Bin 0 -> 1712 bytes
.../TitleUpdate/Package/res/armor/cloth_1_b.png | Bin 0 -> 1688 bytes
.../TitleUpdate/Package/res/armor/cloth_2.png | Bin 0 -> 868 bytes
.../TitleUpdate/Package/res/armor/cloth_2_b.png | Bin 0 -> 835 bytes
.../TitleUpdate/Package/res/armor/power.png | Bin 0 -> 1800 bytes
.../TitleUpdate/Package/res/art/kz.png | Bin 0 -> 80612 bytes
.../Package/res/audio/AdditionalMusic.xwb | Bin 0 -> 30693376 bytes
.../TitleUpdate/Package/res/audio/Minecraft.xgs | Bin 0 -> 488 bytes
.../TitleUpdate/Package/res/audio/additional.xsb | Bin 0 -> 3047 bytes
.../TitleUpdate/Package/res/audio/additional.xwb | Bin 0 -> 1226752 bytes
.../TitleUpdate/Package/res/audio/minecraft.xsb | Bin 0 -> 9468 bytes
.../TitleUpdate/Package/res/colours.col | Bin 0 -> 5258 bytes
.../TitleUpdate/Package/res/font/Default.png | Bin 0 -> 4343 bytes
.../TitleUpdate/Package/res/font/Mojangles_11.png | Bin 0 -> 7024 bytes
.../TitleUpdate/Package/res/font/Mojangles_7.png | Bin 0 -> 5322 bytes
.../TitleUpdate/Package/res/item/book.png | Bin 0 -> 571 bytes
.../TitleUpdate/Package/res/item/enderchest.png | Bin 0 -> 2526 bytes
.../Title Update/TitleUpdate/Package/res/items.png | Bin 0 -> 121590 bytes
.../TitleUpdate/Package/res/misc/explosion.png | Bin 0 -> 1614 bytes
.../TitleUpdate/Package/res/misc/footprint.png | Bin 0 -> 151 bytes
.../TitleUpdate/Package/res/misc/glint.png | Bin 0 -> 418 bytes
.../TitleUpdate/Package/res/misc/mapicons.png | Bin 0 -> 723 bytes
.../TitleUpdate/Package/res/misc/particlefield.png | Bin 0 -> 23124 bytes
.../TitleUpdate/Package/res/misc/tunnel.png | Bin 0 -> 43306 bytes
.../Package/res/mob/enderdragon/beam.png | Bin 0 -> 3542 bytes
.../Package/res/mob/enderdragon/ender.png | Bin 0 -> 10990 bytes
.../Package/res/mob/enderdragon/ender_eyes.png | Bin 0 -> 541 bytes
.../TitleUpdate/Package/res/mob/enderman_eyes.png | Bin 0 -> 213 bytes
.../TitleUpdate/Package/res/mob/redcow.png | Bin 0 -> 1956 bytes
.../Package/res/mob/skeleton_wither.png | Bin 0 -> 1403 bytes
.../TitleUpdate/Package/res/mob/snowman.png | Bin 0 -> 1081 bytes
.../Package/res/mob/villager/butcher.png | Bin 0 -> 1390 bytes
.../Package/res/mob/villager/farmer.png | Bin 0 -> 1655 bytes
.../Package/res/mob/villager/librarian.png | Bin 0 -> 1935 bytes
.../Package/res/mob/villager/priest.png | Bin 0 -> 1933 bytes
.../TitleUpdate/Package/res/mob/villager/smith.png | Bin 0 -> 1383 bytes
.../Package/res/mob/villager/villager.png | Bin 0 -> 1947 bytes
.../TitleUpdate/Package/res/mob/wolf_collar.png | Bin 0 -> 4327 bytes
.../TitleUpdate/Package/res/mob/wolf_tame.png | Bin 0 -> 4379 bytes
.../TitleUpdate/Package/res/mob/zombie.png | Bin 0 -> 1618 bytes
.../Package/res/mob/zombie_villager.png | Bin 0 -> 2409 bytes
.../TitleUpdate/Package/res/particles.png | Bin 0 -> 3645 bytes
.../TitleUpdate/Package/res/terrain.png | Bin 0 -> 122236 bytes
.../Package/res/terrainMipmapLevel2.png | Bin 0 -> 30830 bytes
.../Package/res/terrainMipmapLevel3.png | Bin 0 -> 10551 bytes
.../Package/res/textures/blocks/fire_0.png | Bin 0 -> 16576 bytes
.../Package/res/textures/blocks/fire_0.txt | 16 +
.../Package/res/textures/blocks/fire_1.png | Bin 0 -> 16723 bytes
.../Package/res/textures/blocks/fire_1.txt | 1 +
.../Package/res/textures/blocks/lava.png | Bin 0 -> 10420 bytes
.../Package/res/textures/blocks/lava.txt | 38 +
.../Package/res/textures/blocks/lava_flow.png | Bin 0 -> 9931 bytes
.../Package/res/textures/blocks/lava_flow.txt | 16 +
.../Package/res/textures/blocks/portal.png | Bin 0 -> 14166 bytes
.../Package/res/textures/blocks/portal.txt | 1 +
.../Package/res/textures/blocks/water.png | Bin 0 -> 14567 bytes
.../Package/res/textures/blocks/water.txt | 32 +
.../Package/res/textures/blocks/water_flow.png | Bin 0 -> 10198 bytes
.../Package/res/textures/blocks/water_flow.txt | 1 +
.../Package/res/textures/items/clock.png | Bin 0 -> 3217 bytes
.../Package/res/textures/items/clock.txt | 1 +
.../Package/res/textures/items/compass.png | Bin 0 -> 1205 bytes
.../Package/res/textures/items/compass.txt | 1 +
.../Title Update/TitleUpdate/Released/default.xex | Bin 0 -> 20619264 bytes
Minecraft.Client/Xbox/Title Update/tubuild.plx | 539 +++
Minecraft.Client/Xbox/Title Update/zipthebuild.cmd | 1 +
Minecraft.Client/Xbox/XML/ATGXmlParser.cpp | 963 ++++
Minecraft.Client/Xbox/XML/ATGXmlParser.h | 156 +
Minecraft.Client/Xbox/XML/xmlFilesCallback.h | 339 ++
Minecraft.Client/Xbox/Xbox_App.cpp | 3033 +++++++++++++
Minecraft.Client/Xbox/Xbox_App.h | 197 +
Minecraft.Client/Xbox/Xbox_BuildVer.h | 53 +
Minecraft.Client/Xbox/Xbox_Minecraft.cpp | 1077 +++++
Minecraft.Client/Xbox/Xbox_UIController.cpp | 341 ++
Minecraft.Client/Xbox/Xbox_UIController.h | 79 +
Minecraft.Client/Xbox/kinect/speech/nuisp1031 | Bin 0 -> 884736 bytes
Minecraft.Client/Xbox/kinect/speech/nuisp1033 | Bin 0 -> 987136 bytes
Minecraft.Client/Xbox/kinect/speech/nuisp1036 | Bin 0 -> 1474560 bytes
Minecraft.Client/Xbox/kinect/speech/nuisp1040 | Bin 0 -> 1323008 bytes
Minecraft.Client/Xbox/kinect/speech/nuisp1041 | Bin 0 -> 1302528 bytes
Minecraft.Client/Xbox/kinect/speech/nuisp2057 | Bin 0 -> 1437696 bytes
Minecraft.Client/Xbox/kinect/speech/nuisp2058 | Bin 0 -> 1118208 bytes
Minecraft.Client/Xbox/kinect/speech/nuisp3081 | Bin 0 -> 1503232 bytes
Minecraft.Client/Xbox/kinect/speech/nuisp3082 | Bin 0 -> 1200128 bytes
Minecraft.Client/Xbox/kinect/speech/nuisp3084 | Bin 0 -> 1519616 bytes
Minecraft.Client/Xbox/loc/Copy localised files.cmd | 133 +
Minecraft.Client/Xbox/loc/GenLocalisation.cmd | 83 +
.../Xbox/loc/Minecraft localisation process.txt | 65 +
Minecraft.Client/Xbox/loc/Minecraft_all.resx | 4569 +++++++++++++++++++
Minecraft.Client/Xbox/loc/Minecraft_de-DE.edb | Bin 0 -> 9914368 bytes
Minecraft.Client/Xbox/loc/Minecraft_es-ES.edb | Bin 0 -> 9502720 bytes
Minecraft.Client/Xbox/loc/Minecraft_fr-FR.edb | Bin 0 -> 9799680 bytes
Minecraft.Client/Xbox/loc/Minecraft_it-IT.edb | Bin 0 -> 9496576 bytes
Minecraft.Client/Xbox/loc/Minecraft_ja-JP.edb | Bin 0 -> 8841216 bytes
Minecraft.Client/Xbox/loc/Minecraft_ko-KR.edb | Bin 0 -> 9422848 bytes
Minecraft.Client/Xbox/loc/Minecraft_pt-BR.edb | Bin 0 -> 9560064 bytes
Minecraft.Client/Xbox/loc/Minecraft_pt-PT.edb | Bin 0 -> 9345024 bytes
Minecraft.Client/Xbox/loc/Minecraft_zh-CHT.edb | Bin 0 -> 9394176 bytes
Minecraft.Client/Xbox/loc/UpdateLocalisations.cmd | 30 +
.../Xbox/loc/blank_edbs/Minecraft_cs-CZ.edb | Bin 0 -> 8280064 bytes
.../Xbox/loc/blank_edbs/Minecraft_da-DK.edb | Bin 0 -> 8280064 bytes
.../Xbox/loc/blank_edbs/Minecraft_de-DE.edb | Bin 0 -> 8280064 bytes
.../Xbox/loc/blank_edbs/Minecraft_el-GR.edb | Bin 0 -> 8280064 bytes
.../Xbox/loc/blank_edbs/Minecraft_en-GB.edb | Bin 0 -> 8280064 bytes
.../Xbox/loc/blank_edbs/Minecraft_es-ES.edb | Bin 0 -> 7933952 bytes
.../Xbox/loc/blank_edbs/Minecraft_es-MX.edb | Bin 0 -> 8280064 bytes
.../Xbox/loc/blank_edbs/Minecraft_fi-FI.edb | Bin 0 -> 8280064 bytes
.../Xbox/loc/blank_edbs/Minecraft_fr-FR.edb | Bin 0 -> 8212480 bytes
.../Xbox/loc/blank_edbs/Minecraft_it-IT.edb | Bin 0 -> 7964672 bytes
.../Xbox/loc/blank_edbs/Minecraft_ja-JP.edb | Bin 0 -> 7294976 bytes
.../Xbox/loc/blank_edbs/Minecraft_ko-KR.edb | Bin 0 -> 7821312 bytes
.../Xbox/loc/blank_edbs/Minecraft_nb-NO.edb | Bin 0 -> 8280064 bytes
.../Xbox/loc/blank_edbs/Minecraft_nl-BE.edb | Bin 0 -> 8280064 bytes
.../Xbox/loc/blank_edbs/Minecraft_pl-PL.edb | Bin 0 -> 8280064 bytes
.../Xbox/loc/blank_edbs/Minecraft_pt-BR.edb | Bin 0 -> 7991296 bytes
.../Xbox/loc/blank_edbs/Minecraft_pt-PT.edb | Bin 0 -> 8374272 bytes
.../Xbox/loc/blank_edbs/Minecraft_ru-RU.edb | Bin 0 -> 8280064 bytes
.../Xbox/loc/blank_edbs/Minecraft_sk-SK.edb | Bin 0 -> 8280064 bytes
.../Xbox/loc/blank_edbs/Minecraft_sv-SE.edb | Bin 0 -> 8280064 bytes
.../Xbox/loc/blank_edbs/Minecraft_zh-CHS.edb | Bin 0 -> 8280064 bytes
.../Xbox/loc/blank_edbs/Minecraft_zh-CHT.edb | Bin 0 -> 7852032 bytes
Minecraft.Client/Xbox/loc/launchCMD.cmd | 1 +
.../Xbox/loc/lcl/de-DE/Minecraft_all.resx | 4579 +++++++++++++++++++
.../Xbox/loc/lcl/es-ES/Minecraft_all.resx | 4582 ++++++++++++++++++++
.../Xbox/loc/lcl/fr-FR/Minecraft_all.resx | 4575 +++++++++++++++++++
.../Xbox/loc/lcl/it-IT/Minecraft_all.resx | 4569 +++++++++++++++++++
.../Xbox/loc/lcl/ja-JP/Minecraft_all.resx | 4572 +++++++++++++++++++
.../Xbox/loc/lcl/ko-KR/Minecraft_all.resx | 4573 +++++++++++++++++++
.../Xbox/loc/lcl/pt-BR/Minecraft_all.resx | 4563 +++++++++++++++++++
.../Xbox/loc/lcl/pt-PT/Minecraft_all.resx | 4569 +++++++++++++++++++
.../Xbox/loc/lcl/zh-CHT/Minecraft_all.resx | 4572 +++++++++++++++++++
Minecraft.Client/Xbox/small.ico | Bin 0 -> 2998 bytes
Minecraft.Client/Xbox/targetver.h | 8 +
Minecraft.Client/Xbox/xex-dev.xml | 7 +
Minecraft.Client/Xbox/xex.xml | 11 +
357 files changed, 69224 insertions(+)
create mode 100644 Minecraft.Client/Xbox/4JLibs/Media/4J_strings.resx
create mode 100644 Minecraft.Client/Xbox/4JLibs/inc/4J_Input.h
create mode 100644 Minecraft.Client/Xbox/4JLibs/inc/4J_Profile.h
create mode 100644 Minecraft.Client/Xbox/4JLibs/inc/4J_Render.h
create mode 100644 Minecraft.Client/Xbox/4JLibs/inc/4J_Storage.h
create mode 100644 Minecraft.Client/Xbox/4JLibs/inc/4J_xtms.h
create mode 100644 Minecraft.Client/Xbox/4JLibs/libs/4J_Input.lib
create mode 100644 Minecraft.Client/Xbox/4JLibs/libs/4J_Input_d.lib
create mode 100644 Minecraft.Client/Xbox/4JLibs/libs/4J_Input_r.lib
create mode 100644 Minecraft.Client/Xbox/4JLibs/libs/4J_Profile.lib
create mode 100644 Minecraft.Client/Xbox/4JLibs/libs/4J_Profile_d.lib
create mode 100644 Minecraft.Client/Xbox/4JLibs/libs/4J_Profile_r.lib
create mode 100644 Minecraft.Client/Xbox/4JLibs/libs/4J_Render.lib
create mode 100644 Minecraft.Client/Xbox/4JLibs/libs/4J_Render_d.lib
create mode 100644 Minecraft.Client/Xbox/4JLibs/libs/4J_Storage.lib
create mode 100644 Minecraft.Client/Xbox/4JLibs/libs/4J_Storage_d.lib
create mode 100644 Minecraft.Client/Xbox/4JLibs/libs/4J_Storage_r.lib
create mode 100644 Minecraft.Client/Xbox/4JLibs/libs/4J_XTMS_d.lib
create mode 100644 Minecraft.Client/Xbox/4JLibs/libs/4J_XTMS_r.lib
create mode 100644 Minecraft.Client/Xbox/Audio/SoundEngine.cpp
create mode 100644 Minecraft.Client/Xbox/Audio/SoundEngine.h
create mode 100644 Minecraft.Client/Xbox/Cheats/E0006C5B8D782D00/584111F7/00000001/Save2012 32617 834.bin
create mode 100644 Minecraft.Client/Xbox/Cheats/E0006C5B8D782D00/FFFE07D1/00010000/E0006C5B8D782D00
create mode 100644 Minecraft.Client/Xbox/Cheats/TMS/E00031068D782D00/FFFE07D1/00010000/E00031068D782D00
create mode 100644 Minecraft.Client/Xbox/Cheats/TMS/E00032518D782D00/FFFE07D1/00010000/E00032518D782D00
create mode 100644 Minecraft.Client/Xbox/Cheats/TMS/E00033A28D782D00/FFFE07D1/00010000/E00033A28D782D00
create mode 100644 Minecraft.Client/Xbox/Cheats/TMS/E00035128D782D00/FFFE07D1/00010000/E00035128D782D00
create mode 100644 Minecraft.Client/Xbox/Cheats/TMS/E00036E98D782D00/FFFE07D1/00010000/E00036E98D782D00
create mode 100644 Minecraft.Client/Xbox/Cheats/TMS/E000372E8D782D00/FFFE07D1/00010000/E000372E8D782D00
create mode 100644 Minecraft.Client/Xbox/Cheats/TMS/E00038028D782D00/FFFE07D1/00010000/E00038028D782D00
create mode 100644 Minecraft.Client/Xbox/ContentPackageBuild/CopyContentPackageFiles - Debug.cmd
create mode 100644 Minecraft.Client/Xbox/ContentPackageBuild/CopyContentPackageFiles.cmd
create mode 100644 Minecraft.Client/Xbox/ContentPackageBuild/InstallMinecraftToKits - Full.cmd
create mode 100644 Minecraft.Client/Xbox/ContentPackageBuild/InstallMinecraftToKits - Trial.cmd
create mode 100644 Minecraft.Client/Xbox/ContentPackageBuild/MinecraftContentPackage.xlast
create mode 100644 Minecraft.Client/Xbox/ContentPackageBuild/Minecraft_LicenseFull.bat
create mode 100644 Minecraft.Client/Xbox/ContentPackageBuild/Minecraft_LicenseTrial.bat
create mode 100644 Minecraft.Client/Xbox/Docs/4J Minecraft 1.0.1 update.docx
create mode 100644 Minecraft.Client/Xbox/Docs/4J Minecraft 1.1 update.docx
create mode 100644 Minecraft.Client/Xbox/Docs/4J Minecraft 1.2.3 update.docx
create mode 100644 Minecraft.Client/Xbox/Docs/4J Minecraft 1.3.1 update.docx
create mode 100644 Minecraft.Client/Xbox/Docs/4J Minecraft 1.7.3 update.docx
create mode 100644 Minecraft.Client/Xbox/Docs/4J Minecraft 1.8.2 update.docx
create mode 100644 Minecraft.Client/Xbox/Docs/4J Minecraft XBLA Design Changes & Additions v1.0.docx
create mode 100644 Minecraft.Client/Xbox/Docs/4J Minecraft XBLA Sentient Usage v1.0.docx
create mode 100644 Minecraft.Client/Xbox/Docs/4J Minecraft XBLA TMS.docx
create mode 100644 Minecraft.Client/Xbox/Docs/GameOverview_Minecraft.doc
create mode 100644 Minecraft.Client/Xbox/Docs/Minecraft_XBLA_TIS_Nov2011.xls
create mode 100644 Minecraft.Client/Xbox/Docs/Minecraft_XBLA_TIS_Nov2011_Asia_SYA111511.xls
create mode 100644 Minecraft.Client/Xbox/Docs/Minecraft_XBLA_TIS_Nov2011_EU.xls
create mode 100644 Minecraft.Client/Xbox/Docs/PDLC_Request_Form_Nov2010-IronTheme.xls
create mode 100644 Minecraft.Client/Xbox/Docs/PDLC_Request_Form_Nov2010.xls
create mode 100644 Minecraft.Client/Xbox/Docs/Ratings_Submission_Form.doc
create mode 100644 Minecraft.Client/Xbox/Docs/Xbox Live Avatar Items - Minecraft.xlsx
create mode 100644 Minecraft.Client/Xbox/Font/XUI_Font.cpp
create mode 100644 Minecraft.Client/Xbox/Font/XUI_Font.h
create mode 100644 Minecraft.Client/Xbox/Font/XUI_FontData.cpp
create mode 100644 Minecraft.Client/Xbox/Font/XUI_FontData.h
create mode 100644 Minecraft.Client/Xbox/Font/XUI_FontRenderer.cpp
create mode 100644 Minecraft.Client/Xbox/Font/XUI_FontRenderer.h
create mode 100644 Minecraft.Client/Xbox/GameConfig/01.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/02.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/03.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/04.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/05.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/06.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/07.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/08.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/09.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/10.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/11.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/12.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/13.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/14.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/15.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/16.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/17.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/18.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/19.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/20.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/32_584111F70002000100010001.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/32_584111F70002000200010002.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/64_584111F70002000100010001.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/64_584111F70002000200010002.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/ArcadeInfo.xml
create mode 100644 Minecraft.Client/Xbox/GameConfig/AvatarPackages/AvatarAwards
create mode 100644 Minecraft.Client/Xbox/GameConfig/Creeper_Cap.bin
create mode 100644 Minecraft.Client/Xbox/GameConfig/MineCraft_Watch_Female.bin
create mode 100644 Minecraft.Client/Xbox/GameConfig/MineCraft_Watch_Male.bin
create mode 100644 Minecraft.Client/Xbox/GameConfig/Minecraft.gameconfig
create mode 100644 Minecraft.Client/Xbox/GameConfig/Minecraft.spa
create mode 100644 Minecraft.Client/Xbox/GameConfig/Minecraft.spa.h
create mode 100644 Minecraft.Client/Xbox/GameConfig/MinecraftIcon.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/MinecraftMarketplace.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/Minecraft_BKGND.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/Minecraft_BOXART.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/TitleAward1_F_icon-128.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/TitleAward1_F_icon-64.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/TitleAward1_M_icon-128.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/TitleAward1_M_icon-64.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/TitleAward2_F_icon-128.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/TitleAward2_F_icon-64.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/TitleAward2_M_icon-128.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/TitleAward2_M_icon-64.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/TitleAward3_icon-128.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/TitleAward3_icon-64.png
create mode 100644 Minecraft.Client/Xbox/GameConfig/Tshirt5_Porkchop_Female.bin
create mode 100644 Minecraft.Client/Xbox/GameConfig/Tshirt5_Porkchop_Male.bin
create mode 100644 Minecraft.Client/Xbox/Leaderboards/XboxLeaderboardManager.cpp
create mode 100644 Minecraft.Client/Xbox/Leaderboards/XboxLeaderboardManager.h
create mode 100644 Minecraft.Client/Xbox/MinecraftWindows.ico
create mode 100644 Minecraft.Client/Xbox/MinecraftWindows.rc
create mode 100644 Minecraft.Client/Xbox/Minecraftxex.xml
create mode 100644 Minecraft.Client/Xbox/Network/NetworkPlayerXbox.cpp
create mode 100644 Minecraft.Client/Xbox/Network/NetworkPlayerXbox.h
create mode 100644 Minecraft.Client/Xbox/Network/PlatformNetworkManagerXbox.cpp
create mode 100644 Minecraft.Client/Xbox/Network/PlatformNetworkManagerXbox.h
create mode 100644 Minecraft.Client/Xbox/Network/extra.h
create mode 100644 Minecraft.Client/Xbox/ReleaseBuild/ReleaseAutobuild.cmd
create mode 100644 Minecraft.Client/Xbox/ReleaseBuild/build.plx
create mode 100644 Minecraft.Client/Xbox/ReleaseBuild/launchCMD.cmd
create mode 100644 Minecraft.Client/Xbox/Resource.h
create mode 100644 Minecraft.Client/Xbox/Sentient/DynamicConfigurations.cpp
create mode 100644 Minecraft.Client/Xbox/Sentient/DynamicConfigurations.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientAvatar.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientBoxArt.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientConfig.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientCore.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientCulture.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenBoxArt.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenClientUGC.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenCore.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenNews.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenSuperstars.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientDynamicConfig.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientFame.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientFile.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientHelp.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientMain.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientMarkers.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientNews.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientPackage.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientRawData.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientResource.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientStats.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientSuperstars.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientSys.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientTypes.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientUGC.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientUGCLeaderboards.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientUGCTypes.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientUser.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientUtil.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Include/SenClientXML.h
create mode 100644 Minecraft.Client/Xbox/Sentient/Libs/SenBoxArt.lib
create mode 100644 Minecraft.Client/Xbox/Sentient/Libs/SenBoxArtD.lib
create mode 100644 Minecraft.Client/Xbox/Sentient/Libs/SenCore.lib
create mode 100644 Minecraft.Client/Xbox/Sentient/Libs/SenCoreD.lib
create mode 100644 Minecraft.Client/Xbox/Sentient/Libs/SenNews.lib
create mode 100644 Minecraft.Client/Xbox/Sentient/Libs/SenNewsD.lib
create mode 100644 Minecraft.Client/Xbox/Sentient/Libs/SenSuperstars.lib
create mode 100644 Minecraft.Client/Xbox/Sentient/Libs/SenSuperstarsD.lib
create mode 100644 Minecraft.Client/Xbox/Sentient/Libs/SenUGC.lib
create mode 100644 Minecraft.Client/Xbox/Sentient/Libs/SenUGCD.lib
create mode 100644 Minecraft.Client/Xbox/Sentient/MinecraftTelemetry.h
create mode 100644 Minecraft.Client/Xbox/Sentient/MinecraftTelemetry.xml
create mode 100644 Minecraft.Client/Xbox/Sentient/ReleaseNotes.txt
create mode 100644 Minecraft.Client/Xbox/Sentient/Sentient Web Services.chm
create mode 100644 Minecraft.Client/Xbox/Sentient/SentientManager.cpp
create mode 100644 Minecraft.Client/Xbox/Sentient/SentientManager.h
create mode 100644 Minecraft.Client/Xbox/Sentient/SentientStats.cpp
create mode 100644 Minecraft.Client/Xbox/Sentient/SentientStats.h
create mode 100644 Minecraft.Client/Xbox/Sentient/SentientStats.xsd
create mode 100644 Minecraft.Client/Xbox/Sentient/SentientTelemetryCommon.h
create mode 100644 Minecraft.Client/Xbox/Sentient/TelemetryEnum.h
create mode 100644 Minecraft.Client/Xbox/Sentient/trialConfigv1.bin
create mode 100644 Minecraft.Client/Xbox/Social/SocialManager.cpp
create mode 100644 Minecraft.Client/Xbox/Social/SocialManager.h
create mode 100644 Minecraft.Client/Xbox/SubmissionBuild/How to build.txt
create mode 100644 Minecraft.Client/Xbox/SubmissionBuild/SubmissionAutobuild.cmd
create mode 100644 Minecraft.Client/Xbox/SubmissionBuild/build.plx
create mode 100644 Minecraft.Client/Xbox/SubmissionBuild/launchCMD.cmd
create mode 100644 Minecraft.Client/Xbox/TMSFiles/MPMA.png
create mode 100644 Minecraft.Client/Xbox/Title Update/CopyTUPackageFiles.cmd
create mode 100644 Minecraft.Client/Xbox/Title Update/Minecraft_12.03.30.0062/Package/Default.xex
create mode 100644 Minecraft.Client/Xbox/Title Update/Running the autobuild process.txt
create mode 100644 Minecraft.Client/Xbox/Title Update/TUAutobuild.cmd
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Docs/Minecraft_response_doc.xls
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU12.xlast
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU13.xlast
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU14.xlast
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU15.xlast
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU17.xlast
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU18.xlast
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/default.xex
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Candy/Data/TexturePack.xzp
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Candy/Data/x16Data.pck
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/City/Data/TexturePack.xzp
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/City/Data/x32Data.pck
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Fantasy/Data/TexturePack.xzp
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Fantasy/Data/x32Data.pck
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halloween/Data/TexturePack.xzp
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halloween/Data/x16Data.pck
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halo/Data/GameRules.grf
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halo/Data/TexturePack.xzp
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halo/Data/x16Data.pck
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halo/TexturePack.pck
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/Data/GameRules.grf
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/Data/TexturePack.xzp
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/Data/masseffect.mcs
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/Data/x16Data.pck
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/TexturePack.pck
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Natural/Data/TexturePack.xzp
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Natural/Data/x32Data.pck
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Plastic/Data/TexturePack.xzp
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Plastic/Data/x16Data.pck
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Skyrim/Data/GameRules.grf
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Skyrim/Data/TexturePack.xzp
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Skyrim/Data/x16Data.pck
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Skyrim/TexturePack.pck
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/GameRules/Tutorial.pck
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/TMS/TMSFiles.xzp
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/cloth_1.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/cloth_1_b.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/cloth_2.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/cloth_2_b.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/power.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/art/kz.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/AdditionalMusic.xwb
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/Minecraft.xgs
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/additional.xsb
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/additional.xwb
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/minecraft.xsb
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/colours.col
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/font/Default.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/font/Mojangles_11.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/font/Mojangles_7.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/item/book.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/item/enderchest.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/items.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/explosion.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/footprint.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/glint.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/mapicons.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/particlefield.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/tunnel.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/enderdragon/beam.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/enderdragon/ender.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/enderdragon/ender_eyes.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/enderman_eyes.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/redcow.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/skeleton_wither.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/snowman.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/butcher.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/farmer.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/librarian.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/priest.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/smith.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/villager.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/wolf_collar.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/wolf_tame.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/zombie.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/zombie_villager.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/particles.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/terrain.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/terrainMipmapLevel2.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/terrainMipmapLevel3.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/fire_0.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/fire_0.txt
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/fire_1.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/fire_1.txt
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/lava.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/lava.txt
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/lava_flow.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/lava_flow.txt
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/portal.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/portal.txt
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/water.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/water.txt
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/water_flow.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/water_flow.txt
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/items/clock.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/items/clock.txt
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/items/compass.png
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/items/compass.txt
create mode 100644 Minecraft.Client/Xbox/Title Update/TitleUpdate/Released/default.xex
create mode 100644 Minecraft.Client/Xbox/Title Update/tubuild.plx
create mode 100644 Minecraft.Client/Xbox/Title Update/zipthebuild.cmd
create mode 100644 Minecraft.Client/Xbox/XML/ATGXmlParser.cpp
create mode 100644 Minecraft.Client/Xbox/XML/ATGXmlParser.h
create mode 100644 Minecraft.Client/Xbox/XML/xmlFilesCallback.h
create mode 100644 Minecraft.Client/Xbox/Xbox_App.cpp
create mode 100644 Minecraft.Client/Xbox/Xbox_App.h
create mode 100644 Minecraft.Client/Xbox/Xbox_BuildVer.h
create mode 100644 Minecraft.Client/Xbox/Xbox_Minecraft.cpp
create mode 100644 Minecraft.Client/Xbox/Xbox_UIController.cpp
create mode 100644 Minecraft.Client/Xbox/Xbox_UIController.h
create mode 100644 Minecraft.Client/Xbox/kinect/speech/nuisp1031
create mode 100644 Minecraft.Client/Xbox/kinect/speech/nuisp1033
create mode 100644 Minecraft.Client/Xbox/kinect/speech/nuisp1036
create mode 100644 Minecraft.Client/Xbox/kinect/speech/nuisp1040
create mode 100644 Minecraft.Client/Xbox/kinect/speech/nuisp1041
create mode 100644 Minecraft.Client/Xbox/kinect/speech/nuisp2057
create mode 100644 Minecraft.Client/Xbox/kinect/speech/nuisp2058
create mode 100644 Minecraft.Client/Xbox/kinect/speech/nuisp3081
create mode 100644 Minecraft.Client/Xbox/kinect/speech/nuisp3082
create mode 100644 Minecraft.Client/Xbox/kinect/speech/nuisp3084
create mode 100644 Minecraft.Client/Xbox/loc/Copy localised files.cmd
create mode 100644 Minecraft.Client/Xbox/loc/GenLocalisation.cmd
create mode 100644 Minecraft.Client/Xbox/loc/Minecraft localisation process.txt
create mode 100644 Minecraft.Client/Xbox/loc/Minecraft_all.resx
create mode 100644 Minecraft.Client/Xbox/loc/Minecraft_de-DE.edb
create mode 100644 Minecraft.Client/Xbox/loc/Minecraft_es-ES.edb
create mode 100644 Minecraft.Client/Xbox/loc/Minecraft_fr-FR.edb
create mode 100644 Minecraft.Client/Xbox/loc/Minecraft_it-IT.edb
create mode 100644 Minecraft.Client/Xbox/loc/Minecraft_ja-JP.edb
create mode 100644 Minecraft.Client/Xbox/loc/Minecraft_ko-KR.edb
create mode 100644 Minecraft.Client/Xbox/loc/Minecraft_pt-BR.edb
create mode 100644 Minecraft.Client/Xbox/loc/Minecraft_pt-PT.edb
create mode 100644 Minecraft.Client/Xbox/loc/Minecraft_zh-CHT.edb
create mode 100644 Minecraft.Client/Xbox/loc/UpdateLocalisations.cmd
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_cs-CZ.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_da-DK.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_de-DE.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_el-GR.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_en-GB.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_es-ES.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_es-MX.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_fi-FI.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_fr-FR.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_it-IT.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_ja-JP.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_ko-KR.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_nb-NO.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_nl-BE.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_pl-PL.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_pt-BR.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_pt-PT.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_ru-RU.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_sk-SK.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_sv-SE.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_zh-CHS.edb
create mode 100644 Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_zh-CHT.edb
create mode 100644 Minecraft.Client/Xbox/loc/launchCMD.cmd
create mode 100644 Minecraft.Client/Xbox/loc/lcl/de-DE/Minecraft_all.resx
create mode 100644 Minecraft.Client/Xbox/loc/lcl/es-ES/Minecraft_all.resx
create mode 100644 Minecraft.Client/Xbox/loc/lcl/fr-FR/Minecraft_all.resx
create mode 100644 Minecraft.Client/Xbox/loc/lcl/it-IT/Minecraft_all.resx
create mode 100644 Minecraft.Client/Xbox/loc/lcl/ja-JP/Minecraft_all.resx
create mode 100644 Minecraft.Client/Xbox/loc/lcl/ko-KR/Minecraft_all.resx
create mode 100644 Minecraft.Client/Xbox/loc/lcl/pt-BR/Minecraft_all.resx
create mode 100644 Minecraft.Client/Xbox/loc/lcl/pt-PT/Minecraft_all.resx
create mode 100644 Minecraft.Client/Xbox/loc/lcl/zh-CHT/Minecraft_all.resx
create mode 100644 Minecraft.Client/Xbox/small.ico
create mode 100644 Minecraft.Client/Xbox/targetver.h
create mode 100644 Minecraft.Client/Xbox/xex-dev.xml
create mode 100644 Minecraft.Client/Xbox/xex.xml
(limited to 'Minecraft.Client/Xbox')
diff --git a/Minecraft.Client/Xbox/4JLibs/Media/4J_strings.resx b/Minecraft.Client/Xbox/4JLibs/Media/4J_strings.resx
new file mode 100644
index 00000000..c8243fc0
--- /dev/null
+++ b/Minecraft.Client/Xbox/4JLibs/Media/4J_strings.resx
@@ -0,0 +1,171 @@
+
+
+
+ Not Used
+
+
+
+ OK
+
+
+ Back
+
+
+ Cancel
+
+
+ Yes
+
+
+ No
+
+
+ Corrupt Save
+
+
+ Your save data appears to be corrupt. Create a new save and overwrite the corrupt one?
+
+
+ No Free Space
+
+
+ Your selected storage device doesn't have enough free space to create a game save.
+
+
+ Select again
+
+
+ Play without saving
+
+
+ Create a new save
+
+
+ Overwrite save?
+
+
+ Your selected storage device already contains this save. Is it OK to overwrite it?
+
+
+ No - don't overwrite
+
+
+ Overwrite and save
+
+
+ Save failed
+
+
+ Storage Device Problem
+
+
+ Your storage device is unavailable or has an error
+
+
+ Your storage device is unavailable or has an error. Please select a new storage device.
+
+
+ Select a new storage device
+
+
+ No storage device selected
+
+
+ If you do not select a storage device, game saves will be disabled
+
+
+ Select a storage device
+
+
+ Continue without saving
+
+
+ Your storage device has been removed. Please select a new one.
+
+
+ Loading failed
+
+
+ Name the save
+
+
+ Enter a name for your savegame
+
+
+ Return to Xbox Dashboard
+
+
+ Are you sure you want to exit the game?
+
+
+
+ Signed out
+
+
+ You have been returned to the title screen because your gamer profile was signed out
+
+
+ The match has ended because a gamer profile was signed out
+
+
+ Continue playing
+
+
+
+ Gamer profile not online
+
+
+ This game has some features which require an Xbox LIVE enabled gamer profile, but you are currently offline.
+
+
+ This feature requires a gamer profile which is signed into Xbox LIVE.
+
+
+ Connect to Xbox LIVE
+
+
+ Continue playing offline
+
+
+
+
+ Achievement Award Problem
+
+
+ There was a problem accessing your gamer profile. Your achievement could not be awarded at this time.
+
+
+
+
+ Gamer profile problem
+
+
+ Saving of settings to gamer profile has failed.
+
+
+
+ Guest Gamer Profile
+
+
+ Guest gamer profile cannot access this feature. Please use a different gamer profile.
+
+
+
+ Saving…
+
+
+ Saving content. Please don't turn off your console.
+
+
+ Unlock Full Game
+
+
+ This is the Minecraft trial game. If you had the full game, you would just have earned an achievement!
+Unlock the full game to experience the joy of Minecraft and to play with your friends across the globe through Xbox LIVE.
+Would you like to unlock the full game?
+
+
+ You are being returned to the main menu because of a problem reading your profile.
+
+
+
diff --git a/Minecraft.Client/Xbox/4JLibs/inc/4J_Input.h b/Minecraft.Client/Xbox/4JLibs/inc/4J_Input.h
new file mode 100644
index 00000000..120e9c7b
--- /dev/null
+++ b/Minecraft.Client/Xbox/4JLibs/inc/4J_Input.h
@@ -0,0 +1,127 @@
+#pragma once
+
+#define MAP_STYLE_0 0
+#define MAP_STYLE_1 1
+#define MAP_STYLE_2 2
+
+#define _360_JOY_BUTTON_A 0x00000001
+#define _360_JOY_BUTTON_B 0x00000002
+#define _360_JOY_BUTTON_X 0x00000004
+#define _360_JOY_BUTTON_Y 0x00000008
+
+#define _360_JOY_BUTTON_START 0x00000010
+#define _360_JOY_BUTTON_BACK 0x00000020
+#define _360_JOY_BUTTON_RB 0x00000040
+#define _360_JOY_BUTTON_LB 0x00000080
+
+#define _360_JOY_BUTTON_RTHUMB 0x00000100
+#define _360_JOY_BUTTON_LTHUMB 0x00000200
+#define _360_JOY_BUTTON_DPAD_UP 0x00000400
+#define _360_JOY_BUTTON_DPAD_DOWN 0x00000800
+
+#define _360_JOY_BUTTON_DPAD_LEFT 0x00001000
+#define _360_JOY_BUTTON_DPAD_RIGHT 0x00002000
+// fake digital versions of analog values
+#define _360_JOY_BUTTON_LSTICK_RIGHT 0x00004000
+#define _360_JOY_BUTTON_LSTICK_LEFT 0x00008000
+
+#define _360_JOY_BUTTON_RSTICK_DOWN 0x00010000
+#define _360_JOY_BUTTON_RSTICK_UP 0x00020000
+#define _360_JOY_BUTTON_RSTICK_RIGHT 0x00040000
+#define _360_JOY_BUTTON_RSTICK_LEFT 0x00080000
+
+#define _360_JOY_BUTTON_LSTICK_DOWN 0x00100000
+#define _360_JOY_BUTTON_LSTICK_UP 0x00200000
+#define _360_JOY_BUTTON_RT 0x00400000
+#define _360_JOY_BUTTON_LT 0x00800000
+
+// Stick axis maps - to allow changes for SouthPaw in-game axis mapping
+#define AXIS_MAP_LX 0
+#define AXIS_MAP_LY 1
+#define AXIS_MAP_RX 2
+#define AXIS_MAP_RY 3
+
+// Trigger map - to allow for swap triggers in-game
+#define TRIGGER_MAP_0 0
+#define TRIGGER_MAP_1 1
+
+class C_4JInput
+{
+public:
+ enum EKeyboardResult
+ {
+ EKeyboard_Pending,
+ EKeyboard_Cancelled,
+ EKeyboard_ResultAccept,
+ EKeyboard_ResultDecline,
+ };
+
+ enum EKeyboardMode
+ {
+ EKeyboardMode_Default,
+ EKeyboardMode_Numeric,
+ EKeyboardMode_Password,
+ EKeyboardMode_Alphabet,
+ EKeyboardMode_Full,
+ EKeyboardMode_Alphabet_Extended,
+ EKeyboardMode_IP_Address,
+ EKeyboardMode_Phone
+ };
+
+ void Initialise( int iInputStateC, unsigned char ucMapC,unsigned char ucActionC, unsigned char ucMenuActionC );
+ void Tick(void);
+ void SetDeadzoneAndMovementRange(unsigned int uiDeadzone, unsigned int uiMovementRangeMax );
+ void SetGameJoypadMaps(unsigned char ucMap,unsigned char ucAction,unsigned int uiActionVal);
+ unsigned int GetGameJoypadMaps(unsigned char ucMap,unsigned char ucAction);
+ void SetJoypadMapVal(int iPad,unsigned char ucMap);
+ unsigned char GetJoypadMapVal(int iPad);
+ void SetJoypadSensitivity(int iPad, float fSensitivity);
+ unsigned int GetValue(int iPad,unsigned char ucAction, bool bRepeat=false);
+ bool ButtonPressed(int iPad,unsigned char ucAction=255); // toggled
+ bool ButtonReleased(int iPad,unsigned char ucAction); //toggled
+ bool ButtonDown(int iPad,unsigned char ucAction=255); // button held down
+ // Functions to remap the axis and triggers for in-game (not menus) - SouthPaw, etc
+ void SetJoypadStickAxisMap(int iPad,unsigned int uiFrom, unsigned int uiTo);
+ void SetJoypadStickTriggerMap(int iPad,unsigned int uiFrom, unsigned int uiTo);
+ void SetKeyRepeatRate(float fRepeatDelaySecs,float fRepeatRateSecs);
+ void SetDebugSequence( const char *chSequenceA,int( *Func)(LPVOID),LPVOID lpParam );
+ FLOAT GetIdleSeconds(int iPad);
+ bool IsPadConnected(int iPad);
+
+ // In-Game values which may have been remapped due to Southpaw, swap triggers, etc
+ float GetJoypadStick_LX(int iPad, bool bCheckMenuDisplay=true);
+ float GetJoypadStick_LY(int iPad, bool bCheckMenuDisplay=true);
+ float GetJoypadStick_RX(int iPad, bool bCheckMenuDisplay=true);
+ float GetJoypadStick_RY(int iPad, bool bCheckMenuDisplay=true);
+ unsigned char GetJoypadLTrigger(int iPad, bool bCheckMenuDisplay=true);
+ unsigned char GetJoypadRTrigger(int iPad, bool bCheckMenuDisplay=true);
+
+ void SetMenuDisplayed(int iPad, bool bVal);
+
+ EKeyboardResult RequestKeyboard(UINT uiTitle, UINT uiText, UINT uiDesc, DWORD dwPad, WCHAR *pwchResult, UINT uiResultSize,int( *Func)(LPVOID,const bool),LPVOID lpParam,EKeyboardMode eMode,CXuiStringTable *pStringTable=NULL);
+ EKeyboardResult RequestKeyboard(UINT uiTitle, LPCWSTR pwchDefault, UINT uiDesc, DWORD dwPad, WCHAR *pwchResult, UINT uiResultSize,int( *Func)(LPVOID,const bool),LPVOID lpParam, EKeyboardMode eMode,CXuiStringTable *pStringTable=NULL);
+
+ // Online check strings against offensive list - TCR 92
+ // TCR # 092 CMTV Player Text String Verification
+ // Requirement Any player-entered text visible to another player on Xbox LIVE must be verified using the Xbox LIVE service before being transmitted. Text that is rejected by the Xbox LIVE service must not be displayed.
+ //
+ // Remarks
+ // This requirement applies to any player-entered string that can be exposed to other players on Xbox LIVE. It includes session names, content descriptions, text messages, tags, team names, mottos, comments, and so on.
+ //
+ // Games may decide to not send the text, blank it out, or use generic text if the text was rejected by the Xbox LIVE service.
+ //
+ // Games verify the text by calling the XStringVerify function.
+ //
+ // Exemption It is not required to use the Xbox LIVE service to verify real-time text communication. An example of real-time text communication is in-game text chat.
+ //
+ // Intent Protect players from inappropriate language.
+/*
+bool VerifyStrings(WCHAR **pwStringA,int iStringC,int( *Func)(LPVOID,STRING_VERIFY_RESPONSE *),LPVOID lpParam);
+ void CancelQueuedVerifyStrings(int( *Func)(LPVOID,STRING_VERIFY_RESPONSE *),LPVOID lpParam);
+ void CancelAllVerifyInProgress(void);
+*/
+ //bool InputDetected(DWORD dwUserIndex,WCHAR *pwchInput);
+};
+
+// Singleton
+extern C_4JInput InputManager;
diff --git a/Minecraft.Client/Xbox/4JLibs/inc/4J_Profile.h b/Minecraft.Client/Xbox/4JLibs/inc/4J_Profile.h
new file mode 100644
index 00000000..28e717e8
--- /dev/null
+++ b/Minecraft.Client/Xbox/4JLibs/inc/4J_Profile.h
@@ -0,0 +1,124 @@
+#pragma once
+
+enum eAwardType
+{
+ eAwardType_Achievement = 0,
+ eAwardType_GamerPic,
+ eAwardType_Theme,
+ eAwardType_AvatarItem,
+};
+
+enum eUpsellType
+{
+ eUpsellType_Custom = 0, // This is the default, and means that the upsell dialog was initiated in the app code
+ eUpsellType_Achievement,
+ eUpsellType_GamerPic,
+ eUpsellType_Theme,
+ eUpsellType_AvatarItem,
+};
+
+enum eUpsellResponse
+{
+ eUpsellResponse_Declined,
+ eUpsellResponse_Accepted_NoPurchase,
+ eUpsellResponse_Accepted_Purchase,
+};
+
+
+
+class C_4JProfile
+{
+public:
+ struct PROFILESETTINGS
+ {
+ int iYAxisInversion;
+ int iControllerSensitivity;
+ int iVibration;
+ bool bSwapSticks;
+ };
+
+
+ // 4 players have game defined data, puiGameDefinedDataChangedBitmask needs to be checked by the game side to see if there's an update needed - it'll have the bits set for players to be updated
+ void Initialise( DWORD dwTitleID,
+ DWORD dwOfferID,
+ unsigned short usProfileVersion,
+ UINT uiProfileValuesC,
+ UINT uiProfileSettingsC,
+ DWORD *pdwProfileSettingsA,
+ int iGameDefinedDataSizeX4,
+ unsigned int *puiGameDefinedDataChangedBitmask);
+ void SetTrialTextStringTable(CXuiStringTable *pStringTable,int iAccept,int iReject);
+ void SetTrialAwardText(eAwardType AwardType,int iTitle,int iText); // achievement popup in the trial game
+ int GetLockedProfile();
+ void SetLockedProfile(int iProf);
+ bool IsSignedIn(int iQuadrant);
+ bool IsSignedInLive(int iProf);
+ bool IsGuest(int iQuadrant);
+ UINT RequestSignInUI(bool bFromInvite,bool bLocalGame,bool bNoGuestsAllowed,bool bMultiplayerSignIn,bool bAddUser, int( *Func)(LPVOID,const bool, const int iPad),LPVOID lpParam,int iQuadrant=XUSER_INDEX_ANY);
+ UINT DisplayOfflineProfile(int( *Func)(LPVOID,const bool, const int iPad),LPVOID lpParam,int iQuadrant=XUSER_INDEX_ANY);
+ UINT RequestConvertOfflineToGuestUI(int( *Func)(LPVOID,const bool, const int iPad),LPVOID lpParam,int iQuadrant=XUSER_INDEX_ANY);
+ void SetPrimaryPlayerChanged(bool bVal);
+ bool QuerySigninStatus(void);
+ void GetXUID(int iPad, XUID *pXuid,bool bOnlineXuid);
+ BOOL AreXUIDSEqual(XUID xuid1,XUID xuid2);
+ BOOL XUIDIsGuest(XUID xuid);
+ bool AllowedToPlayMultiplayer(int iProf);
+ void StartTrialGame(); // disables saves and leaderboard, and change state to readyforgame from pregame
+ void AllowedPlayerCreatedContent(int iPad, bool thisQuadrantOnly, BOOL *allAllowed, BOOL *friendsAllowed);
+ BOOL CanViewPlayerCreatedContent(int iPad, bool thisQuadrantOnly, PXUID pXuids, DWORD dwXuidCount );
+
+
+ // SYS
+ int GetPrimaryPad();
+ void SetPrimaryPad(int iPad);
+ char* GetGamertag(int iPad);
+ wchar_t* GetDisplayName(int iPad);
+ bool IsFullVersion();
+ void SetSignInChangeCallback(void ( *Func)(LPVOID, bool, unsigned int),LPVOID lpParam);
+ void SetNotificationsCallback(void ( *Func)(LPVOID, DWORD, unsigned int),LPVOID lpParam);
+ bool RegionIsNorthAmerica(void);
+ bool LocaleIsUSorCanada(void);
+ HRESULT GetLiveConnectionStatus();
+ bool IsSystemUIDisplayed();
+ void SetProfileReadErrorCallback(void ( *Func)(LPVOID), LPVOID lpParam);
+
+
+ // PROFILE DATA
+ int SetDefaultOptionsCallback(int( *Func)(LPVOID,PROFILESETTINGS *, const int iPad),LPVOID lpParam);
+ int SetOldProfileVersionCallback(int( *Func)(LPVOID,unsigned char *, const unsigned short,const int),LPVOID lpParam);
+ PROFILESETTINGS * GetDashboardProfileSettings(int iPad);
+ void WriteToProfile(int iQuadrant, bool bGameDefinedDataChanged=false, bool bOverride5MinuteLimitOnProfileWrites=false);
+ void ForceQueuedProfileWrites(int iPad=XUSER_INDEX_ANY);
+ void *GetGameDefinedProfileData(int iQuadrant);
+ void ResetProfileProcessState(); // after a sign out from the primary player, call this
+ void Tick( void );
+
+ // ACHIEVEMENTS & AWARDS
+
+ void RegisterAward(int iAwardNumber,int iGamerconfigID, eAwardType eType, bool bLeaderboardAffected=false,
+ CXuiStringTable*pStringTable=NULL, int iTitleStr=-1, int iTextStr=-1, int iAcceptStr=-1, char *pszThemeName=NULL, unsigned int uiThemeSize=0L);
+ int GetAwardId(int iAwardNumber);
+ eAwardType GetAwardType(int iAwardNumber);
+ bool CanBeAwarded(int iQuadrant, int iAwardNumber);
+ void Award(int iQuadrant, int iAwardNumber, bool bForce=false);
+ bool IsAwardsFlagSet(int iQuadrant, int iAward);
+
+ // RICH PRESENCE
+
+ void RichPresenceInit(int iPresenceCount, int iContextCount);
+ void RegisterRichPresenceContext(int iGameConfigContextID);
+ void SetRichPresenceContextValue(int iPad,int iContextID, int iVal);
+ void SetCurrentGameActivity(int iPad,int iNewPresence, bool bSetOthersToIdle=false);
+
+ // PURCHASE
+ void DisplayFullVersionPurchase(bool bRequired, int iQuadrant, int iUpsellParam = -1);
+ void SetUpsellCallback(void ( *Func)(LPVOID lpParam, eUpsellType type, eUpsellResponse response, int iUserData),LPVOID lpParam);
+
+ // Debug
+ void SetDebugFullOverride(bool bVal); // To override the license version (trail/full). Only in debug/release, not ContentPackage
+
+};
+
+// Singleton
+extern C_4JProfile ProfileManager;
+
diff --git a/Minecraft.Client/Xbox/4JLibs/inc/4J_Render.h b/Minecraft.Client/Xbox/4JLibs/inc/4J_Render.h
new file mode 100644
index 00000000..5f113d5d
--- /dev/null
+++ b/Minecraft.Client/Xbox/4JLibs/inc/4J_Render.h
@@ -0,0 +1,238 @@
+#pragma once
+#include
+
+const int GL_MODELVIEW_MATRIX = 0;
+const int GL_PROJECTION_MATRIX = 1;
+const int GL_MODELVIEW = 0;
+const int GL_PROJECTION = 1;
+const int GL_TEXTURE = 2;
+
+// These things required for tex gen
+
+const int GL_S = 0;
+const int GL_T = 1;
+const int GL_R = 2;
+const int GL_Q = 3;
+
+const int GL_TEXTURE_GEN_S = 0;
+const int GL_TEXTURE_GEN_T = 1;
+const int GL_TEXTURE_GEN_Q = 2;
+const int GL_TEXTURE_GEN_R = 3;
+
+const int GL_TEXTURE_GEN_MODE = 0;
+const int GL_OBJECT_LINEAR = 0;
+const int GL_EYE_LINEAR = 1;
+const int GL_OBJECT_PLANE = 0;
+const int GL_EYE_PLANE = 1;
+
+
+// These things are used by glEnable/glDisable so must be different and non-zero (zero is used by things we haven't assigned yet)
+const int GL_TEXTURE_2D = 1;
+const int GL_BLEND = 2;
+const int GL_CULL_FACE = 3;
+const int GL_ALPHA_TEST = 4;
+const int GL_DEPTH_TEST = 5;
+const int GL_FOG = 6;
+const int GL_LIGHTING = 7;
+const int GL_LIGHT0 = 8;
+const int GL_LIGHT1 = 9;
+
+
+const int GL_DEPTH_BUFFER_BIT = D3DCLEAR_ZBUFFER;
+const int GL_COLOR_BUFFER_BIT = D3DCLEAR_TARGET;
+
+const int GL_QUADS = D3DPT_QUADLIST;
+const int GL_TRIANGLES = D3DPT_TRIANGLELIST;
+const int GL_LINE_STRIP = D3DPT_LINESTRIP;
+const int GL_TRIANGLE_STRIP = D3DPT_TRIANGLESTRIP;
+const int GL_TRIANGLE_FAN = D3DPT_TRIANGLEFAN;
+const int GL_LINES=D3DPT_LINELIST;
+const int GL_SRC_ALPHA = D3DBLEND_SRCALPHA;
+const int GL_ONE_MINUS_SRC_ALPHA = D3DBLEND_INVSRCALPHA;
+const int GL_ONE = D3DBLEND_ONE;
+const int GL_ZERO = D3DBLEND_ZERO;
+const int GL_DST_ALPHA = D3DBLEND_DESTALPHA;
+const int GL_SRC_COLOR = D3DBLEND_SRCCOLOR;
+const int GL_DST_COLOR = D3DBLEND_DESTCOLOR;
+const int GL_ONE_MINUS_DST_COLOR = D3DBLEND_INVDESTCOLOR;
+const int GL_ONE_MINUS_SRC_COLOR = D3DBLEND_INVSRCCOLOR;
+const int GL_CONSTANT_ALPHA = D3DBLEND_CONSTANTALPHA;
+const int GL_ONE_MINUS_CONSTANT_ALPHA = D3DBLEND_INVCONSTANTALPHA;
+
+const int GL_GREATER = D3DCMP_GREATER;
+const int GL_EQUAL = D3DCMP_EQUAL;
+const int GL_LEQUAL = D3DCMP_LESSEQUAL;
+const int GL_GEQUAL = D3DCMP_GREATEREQUAL;
+const int GL_ALWAYS = D3DCMP_ALWAYS;
+
+const int GL_TEXTURE_MIN_FILTER = 1;
+const int GL_TEXTURE_MAG_FILTER = 2;
+const int GL_TEXTURE_WRAP_S = 3;
+const int GL_TEXTURE_WRAP_T = 4;
+
+const int GL_NEAREST = 0;
+const int GL_LINEAR = 1;
+const int GL_EXP = 2;
+const int GL_NEAREST_MIPMAP_LINEAR = 0; // TODO - mipmapping bit of this
+
+const int GL_CLAMP = 0;
+const int GL_REPEAT = 1;
+
+const int GL_FOG_START = 1;
+const int GL_FOG_END = 2;
+const int GL_FOG_MODE = 3;
+const int GL_FOG_DENSITY = 4;
+const int GL_FOG_COLOR = 5;
+
+const int GL_POSITION = 1;
+const int GL_AMBIENT = 2;
+const int GL_DIFFUSE = 3;
+const int GL_SPECULAR = 4;
+
+const int GL_LIGHT_MODEL_AMBIENT = 1;
+
+
+class C4JRender
+{
+public:
+ void Tick();
+ void UpdateGamma(unsigned short usGamma);
+
+ // Matrix stack
+ void MatrixMode(int type);
+ void MatrixSetIdentity();
+ void MatrixTranslate(float x,float y,float z);
+ void MatrixRotate(float angle, float x, float y, float z);
+ void MatrixScale(float x, float y, float z);
+ void MatrixPerspective(float fovy, float aspect, float zNear, float zFar);
+ void MatrixOrthogonal(float left,float right,float bottom,float top,float zNear,float zFar);
+ void MatrixPop();
+ void MatrixPush();
+ void MatrixMult(float *mat);
+ const float *MatrixGet(int type);
+ void Set_matrixDirty();
+
+ // Core
+ void Initialise(IDirect3DDevice9 *pDevice);
+ void InitialiseContext();
+ void Present();
+ void Clear(int flags, D3DRECT *pRect = NULL);
+ void SetClearColour(D3DCOLOR colour);
+ bool IsWidescreen();
+ bool IsHiDef();
+ void CaptureThumbnail(LPD3DXBUFFER *pngOut);
+ void CaptureScreen(LPD3DXBUFFER *jpgOut, XSOCIAL_PREVIEWIMAGE *previewOut);
+ void BeginConditionalSurvey(int identifier);
+ void EndConditionalSurvey();
+ void BeginConditionalRendering(int identifier);
+ void EndConditionalRendering();
+
+ // Vertex data handling
+ typedef enum
+ {
+ VERTEX_TYPE_PF3_TF2_CB4_NB4_XW1, // Position 3 x float, texture 2 x float, colour 4 x byte, normal 4 x byte, padding 1 DWORD
+ VERTEX_TYPE_PS3_TS2_CS1, // Position 3 x short, texture 2 x short, colour 4 x byte, padding 1 DWORD
+ VERTEX_TYPE_PF3_TF2_CB4_NB4_XW1_LIT, // as VERTEX_TYPE_PF3_TF2_CB4_NB4_XW1 with lighting applied,
+ VERTEX_TYPE_PF3_TF2_CB4_NB4_XW1_TEXGEN, // as VERTEX_TYPE_PF3_TF2_CB4_NB4_XW1 with tex gen
+ VERTEX_TYPE_COUNT
+ } eVertexType;
+
+ // Pixel shader
+ typedef enum
+ {
+ PIXEL_SHADER_TYPE_STANDARD,
+ PIXEL_SHADER_TYPE_PROJECTION,
+ PIXEL_SHADER_TYPE_LOD_FORCE,
+ PIXEL_SHADER_COUNT
+ } ePixelShaderType;
+
+ typedef enum
+ {
+ VIEWPORT_TYPE_FULLSCREEN,
+ VIEWPORT_TYPE_SPLIT_TOP,
+ VIEWPORT_TYPE_SPLIT_BOTTOM,
+ VIEWPORT_TYPE_SPLIT_LEFT,
+ VIEWPORT_TYPE_SPLIT_RIGHT,
+ VIEWPORT_TYPE_QUADRANT_TOP_LEFT,
+ VIEWPORT_TYPE_QUADRANT_TOP_RIGHT,
+ VIEWPORT_TYPE_QUADRANT_BOTTOM_LEFT,
+ VIEWPORT_TYPE_QUADRANT_BOTTOM_RIGHT,
+ } eViewportType;
+
+ void DrawVertices(D3DPRIMITIVETYPE PrimitiveType, int count, void *dataIn, eVertexType vType, C4JRender::ePixelShaderType psType);
+ void DrawVertexBuffer(D3DPRIMITIVETYPE PrimitiveType, int count, IDirect3DVertexBuffer9 *buffer, C4JRender::eVertexType vType, C4JRender::ePixelShaderType psType);
+
+ // Command buffers
+ void CBuffLockStaticCreations();
+ int CBuffCreate(int count);
+ void CBuffDelete(int first, int count);
+ void CBuffStart(int index);
+ void CBuffClear(int index);
+ int CBuffSize(int index);
+ void CBuffEnd(int vertexCount);
+ bool CBuffCall(int index, bool full = true);
+ void CBuffTick();
+ void CBuffDeferredModeStart();
+ void CBuffDeferredModeEnd();
+
+ typedef enum
+ {
+ TEXTURE_FORMAT_RxGyBzAw, // Normal 32-bit RGBA texture, 8 bits per component
+ TEXTURE_FORMAT_R0G0B0Ax, // One 8-bit component mapped to alpha channel, R=G=B=0
+ TEXTURE_FORMAT_R1G1B1Ax, // One 8-bit component mapped to alpha channel, R=G=B=1
+ TEXTURE_FORMAT_RxGxBxAx, // One 8-bit component mapped to all channels
+ MAX_TEXTURE_FORMATS
+ } eTextureFormat;
+
+ // Textures
+ int TextureCreate();
+ void TextureFree(int idx);
+ void TextureBind(int idx);
+ void TextureBindVertex(int idx);
+ void TextureSetTextureLevels(int levels);
+ int TextureGetTextureLevels();
+ void TextureData(int width, int height, void *data, int level, eTextureFormat format = TEXTURE_FORMAT_RxGyBzAw);
+ void TextureDataUpdate(void *data, int level);
+ void TextureSetParam(int param, int value);
+ HRESULT LoadTextureData(const char *szFilename,D3DXIMAGE_INFO *pSrcInfo, int **ppDataOut);
+ HRESULT LoadTextureData(BYTE *pbData, DWORD dwBytes,D3DXIMAGE_INFO *pSrcInfo, int **ppDataOut);
+ HRESULT SaveTextureData(const char *szFilename, D3DXIMAGE_INFO *pSrcInfo, int *ppDataOut);
+ void TextureGetStats();
+
+ // State control
+ void StateSetColour(float r, float g, float b, float a);
+ void StateSetDepthMask(bool enable);
+ void StateSetBlendEnable(bool enable);
+ void StateSetBlendFunc(int src, int dst);
+ void StateSetBlendFactor(unsigned int colour);
+ void StateSetAlphaFunc(int func, float param);
+ void StateSetDepthFunc(int func);
+ void StateSetFaceCull(bool enable);
+ void StateSetFaceCullCW(bool cw);
+ void StateSetLineWidth(float width);
+ void StateSetWriteEnable(bool red, bool green, bool blue, bool alpha);
+ void StateSetDepthTestEnable(bool enable);
+ void StateSetAlphaTestEnable(bool enable);
+ void StateSetDepthSlopeAndBias(float slope, float bias);
+ void StateSetFogEnable(bool enable);
+ void StateSetFogMode(int mode);
+ void StateSetFogNearDistance(float dist);
+ void StateSetFogFarDistance(float dist);
+ void StateSetFogDensity(float density);
+ void StateSetFogColour(float red, float green, float blue);
+ void StateSetLightingEnable(bool enable);
+ void StateSetVertexTextureUV( float u, float v);
+ void StateSetLightColour(int light, float red, float green, float blue);
+ void StateSetLightAmbientColour(float red, float green, float blue);
+ void StateSetLightDirection(int light, float x, float y, float z);
+ void StateSetLightEnable(int light, bool enable);
+ void StateSetViewport(eViewportType viewportType);
+ void StateSetEnableViewportClipPlanes(bool enable);
+ void StateSetTexGenCol(int col, float x, float y, float z, float w, bool eyeSpace);
+ void StateSetForceLOD(int LOD);
+};
+
+
+// Singleton
+extern C4JRender RenderManager;
+
diff --git a/Minecraft.Client/Xbox/4JLibs/inc/4J_Storage.h b/Minecraft.Client/Xbox/4JLibs/inc/4J_Storage.h
new file mode 100644
index 00000000..2988dc2c
--- /dev/null
+++ b/Minecraft.Client/Xbox/4JLibs/inc/4J_Storage.h
@@ -0,0 +1,306 @@
+#pragma once
+using namespace std;
+#include
+
+
+class CXuiStringTable;
+
+typedef struct
+{
+ FILETIME fTime;
+ XCONTENT_DATA Content;
+ bool bSaveIsDamaged;
+}
+SAVE_DETAILS,*PSAVE_DETAILS;
+
+
+typedef
+ VOID
+ (CALLBACK * TMSCLIENT_PROG_CALLBACK)(
+ __in float progress,
+ __in_opt void* userCallbackData
+ );
+
+//typedef std::vector OfferDataArray;
+typedef std::vector OfferDataArray;
+typedef std::vector XContentDataArray;
+//typedef std::vector SaveDetailsArray;
+
+// Current version of the dlc data creator
+#define CURRENT_DLC_VERSION_NUM 3
+
+class C4JStorage
+{
+
+public:
+ // Structs defined in the DLC_Creator, but added here to be used in the app
+ typedef struct
+ {
+ unsigned int uiFileSize;
+ DWORD dwType;
+ DWORD dwWchCount; // count of WCHAR in next array
+ WCHAR wchFile[1];
+ }
+ DLC_FILE_DETAILS, *PDLC_FILE_DETAILS;
+
+ typedef struct
+ {
+ DWORD dwType;
+ DWORD dwWchCount; // count of WCHAR in next array;
+ WCHAR wchData[1]; // will be an array of size dwBytes
+ }
+ DLC_FILE_PARAM, *PDLC_FILE_PARAM;
+ // End of DLC_Creator structs
+
+ typedef struct
+ {
+ WCHAR wchDisplayName[XCONTENT_MAX_DISPLAYNAME_LENGTH];
+ CHAR szFileName[XCONTENT_MAX_FILENAME_LENGTH];
+ DWORD dwImageOffset;
+ DWORD dwImageBytes;
+ }
+ CACHEINFOSTRUCT;
+
+ // structure to hold DLC info in TMS
+ typedef struct
+ {
+ DWORD dwVersion;
+ DWORD dwNewOffers;
+ DWORD dwTotalOffers;
+ DWORD dwInstalledTotalOffers;
+ BYTE bPadding[1024-sizeof(DWORD)*4]; // future expansion
+ }
+ DLC_TMS_DETAILS;
+
+ enum eGTS_FileTypes
+ {
+ eGTS_Type_Skin=0,
+ eGTS_Type_Cape,
+ eGTS_Type_MAX
+ };
+
+ enum eGlobalStorage
+ {
+ //eGlobalStorage_GameClip=0,
+ eGlobalStorage_Title=0,
+ eGlobalStorage_TitleUser,
+ eGlobalStorage_Max
+ };
+
+ enum EMessageResult
+ {
+ EMessage_Undefined=0,
+ EMessage_Busy,
+ EMessage_Pending,
+ EMessage_Cancelled,
+ EMessage_ResultAccept,
+ EMessage_ResultDecline,
+ EMessage_ResultThirdOption,
+ EMessage_ResultFourthOption
+ };
+
+ enum ESaveGameControlState
+ {
+ ESaveGameControl_Idle=0,
+ ESaveGameControl_Save,
+ ESaveGameControl_InternalRequestingDevice,
+ ESaveGameControl_InternalGetSaveName,
+ ESaveGameControl_InternalSaving,
+ ESaveGameControl_CopySave,
+ ESaveGameControl_CopyingSave,
+ };
+
+ enum ELoadGameStatus
+ {
+ ELoadGame_Idle=0,
+ ELoadGame_InProgress,
+ ELoadGame_NoSaves,
+ ELoadGame_ChangedDevice,
+ ELoadGame_DeviceRemoved
+ };
+
+ enum EDeleteGameStatus
+ {
+ EDeleteGame_Idle=0,
+ EDeleteGame_InProgress,
+ };
+
+
+ enum ESGIStatus
+ {
+ ESGIStatus_Error=0,
+ ESGIStatus_Idle,
+ ESGIStatus_ReadInProgress,
+ ESGIStatus_NoSaves,
+ };
+
+ enum EDLCStatus
+ {
+ EDLC_Error=0,
+ EDLC_Idle,
+ EDLC_NoOffers,
+ EDLC_AlreadyEnumeratedAllOffers,
+ EDLC_NoInstalledDLC,
+ EDLC_Pending,
+ EDLC_LoadInProgress,
+ EDLC_Loaded,
+ EDLC_ChangedDevice
+ };
+
+ enum ESavingMessage
+ {
+ ESavingMessage_None=0,
+ ESavingMessage_Short,
+ ESavingMessage_Long
+ };
+
+ enum ETMSStatus
+ {
+ ETMSStatus_Idle=0,
+ ETMSStatus_Fail,
+ ETMSStatus_ReadInProgress,
+ ETMSStatus_ReadFileListInProgress,
+ ETMSStatus_WriteInProgress,
+ ETMSStatus_Fail_ReadInProgress,
+ ETMSStatus_Fail_ReadFileListInProgress,
+ ETMSStatus_Fail_ReadDetailsNotRetrieved,
+ ETMSStatus_Fail_WriteInProgress,
+ ETMSStatus_DeleteInProgress,
+ ETMSStatus_Pending,
+ };
+
+ enum eTMS_FileType
+ {
+ eTMS_FileType_Normal=0,
+ eTMS_FileType_Graphic,
+ };
+
+ enum eTMS_FILETYPEVAL
+ {
+ TMS_FILETYPE_BINARY=0,
+ TMS_FILETYPE_CONFIG=1,
+ TMS_FILETYPE_JSON=2,
+ TMS_FILETYPE_MAX,
+ };
+ enum eTMS_UGCTYPE
+ {
+ TMS_UGCTYPE_NONE,
+ TMS_UGCTYPE_IMAGE,
+ TMS_UGCTYPE_MAX
+ };
+
+ typedef struct
+ {
+ CHAR szFilename[256];
+ int iFileSize;
+ eTMS_FILETYPEVAL eFileTypeVal;
+ }
+ TMSPP_FILE_DETAILS, *PTMSPP_FILE_DETAILS;
+
+ typedef struct
+ {
+ int iCount;
+ PTMSPP_FILE_DETAILS FileDetailsA;
+ }
+ TMSPP_FILE_LIST, *PTMSPP_FILE_LIST;
+
+ typedef struct
+ {
+ DWORD dwSize;
+ PBYTE pbData;
+ }
+ TMSPP_FILEDATA, *PTMSPP_FILEDATA;
+
+ C4JStorage();
+
+ void Tick(void);
+
+ // Messages
+ C4JStorage::EMessageResult RequestMessageBox(UINT uiTitle, UINT uiText, UINT *uiOptionA,UINT uiOptionC, DWORD dwPad=XUSER_INDEX_ANY,
+ int( *Func)(LPVOID,int,const C4JStorage::EMessageResult)=NULL,LPVOID lpParam=NULL, CXuiStringTable *pStringTable=NULL, WCHAR *pwchFormatString=NULL,DWORD dwFocusButton=0);
+ void CancelMessageBoxRequest();
+
+ C4JStorage::EMessageResult GetMessageBoxResult();
+
+ // save device
+ bool SetSaveDevice(int( *Func)(LPVOID,const bool),LPVOID lpParam, bool bForceResetOfSaveDevice=false);
+
+ // savegame
+ void Init(LPCWSTR pwchDefaultSaveName,char *pszSavePackName,int iMinimumSaveSize, int( *Func)(LPVOID, const ESavingMessage, int),LPVOID lpParam,LPCSTR szGroupID);
+ void ResetSaveData(); // Call before a new save to clear out stored save file name
+ void SetDefaultSaveNameForKeyboardDisplay(LPCWSTR pwchDefaultSaveName);
+ void SetSaveTitle(LPCWSTR pwchDefaultSaveName);
+ LPCWSTR GetSaveTitle();
+ bool GetSaveUniqueNumber(INT *piVal);
+ bool GetSaveUniqueFilename(char *pszName);
+ void SetState(ESaveGameControlState eControlState,int( *Func)(LPVOID,const bool),LPVOID lpParam);
+ void SetSaveDisabled(bool bDisable);
+ bool GetSaveDisabled(void);
+ unsigned int GetSaveSize();
+ void GetSaveData(void *pvData,unsigned int *puiBytes);
+ PVOID AllocateSaveData(unsigned int uiBytes);
+ void SaveSaveData(unsigned int uiBytes,PBYTE pbThumbnail=NULL,DWORD cbThumbnail=0,PBYTE pbTextData=NULL, DWORD dwTextLen=0);
+ void CopySaveDataToNewSave(PBYTE pbThumbnail,DWORD cbThumbnail,WCHAR *wchNewName,int ( *Func)(LPVOID lpParam, bool), LPVOID lpParam);
+ void SetSaveDeviceSelected(unsigned int uiPad,bool bSelected);
+ bool GetSaveDeviceSelected(unsigned int iPad);
+ C4JStorage::ELoadGameStatus DoesSaveExist(bool *pbExists);
+ bool EnoughSpaceForAMinSaveGame();
+
+ void SetSaveMessageVPosition(float fY); // The 'Saving' message will display at a default position unless changed
+ // Get the info for the saves
+ C4JStorage::ESGIStatus GetSavesInfo(int iPad,bool ( *Func)(LPVOID, int, CACHEINFOSTRUCT *, int, HRESULT),LPVOID lpParam,char *pszSavePackName);
+
+ void GetSaveCacheFileInfo(DWORD dwFile,XCONTENT_DATA &xContentData);
+ void GetSaveCacheFileInfo(DWORD dwFile, PBYTE *ppbImageData, DWORD *pdwImageBytes);
+
+ // Load the save. Need to call GetSaveData once the callback is called
+ C4JStorage::ELoadGameStatus LoadSaveData(XCONTENT_DATA *pContentData,int( *Func)(LPVOID lpParam,const bool), LPVOID lpParam);
+ C4JStorage::EDeleteGameStatus DeleteSaveData(XCONTENT_DATA *pContentData,int( *Func)(LPVOID lpParam,const bool), LPVOID lpParam);
+
+ // DLC
+ void RegisterMarketplaceCountsCallback(int ( *Func)(LPVOID lpParam, C4JStorage::DLC_TMS_DETAILS *, int), LPVOID lpParam );
+ void SetDLCPackageRoot(char *pszDLCRoot);
+ C4JStorage::EDLCStatus GetDLCOffers(int iPad,int( *Func)(LPVOID, int, DWORD, int),LPVOID lpParam, DWORD dwOfferTypesBitmask=XMARKETPLACE_OFFERING_TYPE_CONTENT);
+ DWORD CancelGetDLCOffers();
+ void ClearDLCOffers();
+ //XMARKETPLACE_CONTENTOFFER_INFO& GetOffer(DWORD dw);
+ XMARKETPLACE_CURRENCY_CONTENTOFFER_INFO& GetOffer(DWORD dw);
+ int GetOfferCount();
+ DWORD InstallOffer(int iOfferIDC,unsigned __int64 *ullOfferIDA,int( *Func)(LPVOID, int, int),LPVOID lpParam, bool bTrial=false);
+ DWORD GetAvailableDLCCount( int iPad);
+
+ C4JStorage::EDLCStatus GetInstalledDLC(int iPad,int( *Func)(LPVOID, int, int),LPVOID lpParam);
+ XCONTENT_DATA& GetDLC(DWORD dw);
+ DWORD MountInstalledDLC(int iPad,DWORD dwDLC,int( *Func)(LPVOID, int, DWORD,DWORD),LPVOID lpParam,LPCSTR szMountDrive=NULL);
+ DWORD UnmountInstalledDLC(LPCSTR szMountDrive=NULL);
+
+ // Global title storage
+ C4JStorage::ETMSStatus ReadTMSFile(int iQuadrant,eGlobalStorage eStorageFacility,C4JStorage::eTMS_FileType eFileType,
+ WCHAR *pwchFilename,BYTE **ppBuffer,DWORD *pdwBufferSize,int( *Func)(LPVOID, WCHAR *,int, bool, int)=NULL,LPVOID lpParam=NULL, int iAction=0);
+ bool WriteTMSFile(int iQuadrant,eGlobalStorage eStorageFacility,WCHAR *pwchFilename,BYTE *pBuffer,DWORD dwBufferSize);
+ bool DeleteTMSFile(int iQuadrant,eGlobalStorage eStorageFacility,WCHAR *pwchFilename);
+ void StoreTMSPathName(WCHAR *pwchName=NULL);
+
+ // TMS++
+ C4JStorage::ETMSStatus TMSPP_WriteFile(int iPad,C4JStorage::eGlobalStorage eStorageFacility,C4JStorage::eTMS_FILETYPEVAL eFileTypeVal,C4JStorage::eTMS_UGCTYPE eUGCType,CHAR *pchFilePath,CHAR *pchBuffer,DWORD dwBufferSize,int( *Func)(LPVOID,int,int)=NULL,LPVOID lpParam=NULL, int iUserData=0);
+ C4JStorage::ETMSStatus TMSPP_GetUserQuotaInfo(int iPad,TMSCLIENT_CALLBACK Func,LPVOID lpParam, int iUserData=0);
+ C4JStorage::ETMSStatus TMSPP_ReadFile(int iPad,C4JStorage::eGlobalStorage eStorageFacility,C4JStorage::eTMS_FILETYPEVAL eFileTypeVal,LPCSTR szFilename,int( *Func)(LPVOID,int,int,PTMSPP_FILEDATA, LPCSTR)=NULL,LPVOID lpParam=NULL, int iUserData=0);
+ C4JStorage::ETMSStatus TMSPP_ReadFileList(int iPad,C4JStorage::eGlobalStorage eStorageFacility,CHAR *pchFilePath,int( *Func)(LPVOID,int,int,PTMSPP_FILE_LIST)=NULL,LPVOID lpParam=NULL, int iUserData=0);
+ C4JStorage::ETMSStatus TMSPP_DeleteFile(int iPad,LPCSTR szFilePath,C4JStorage::eTMS_FILETYPEVAL eFileTypeVal,int( *Func)(LPVOID,int,int),LPVOID lpParam=NULL, int iUserData=0);
+ bool TMSPP_InFileList(eGlobalStorage eStorageFacility, int iPad,const wstring &Filename);
+ unsigned int CRC(unsigned char *buf, int len);
+
+ C4JStorage::ETMSStatus TMSPP_WriteFileWithProgress(int iPad,C4JStorage::eGlobalStorage eStorageFacility,C4JStorage::eTMS_FILETYPEVAL eFileTypeVal,C4JStorage::eTMS_UGCTYPE eUGCType,CHAR *pchFilePath,CHAR *pchBuffer,DWORD dwBufferSize,int( *Func)(LPVOID,int,int)=NULL,LPVOID lpParam=NULL, int iUserData=0,
+ int( *CompletionFunc)(LPVOID,float fComplete)=NULL,LPVOID lpCompletionParam=NULL);
+ void TMSPP_CancelWriteFileWithProgress(int iPad);
+
+ HRESULT TMSPP_SetTitleGroupID(LPCSTR szGroupID);
+
+// #ifdef _DEBUG
+// void SetSaveName(int i);
+// #endif
+ // string table for all the Storage problems. Loaded by the application
+ CXuiStringTable *m_pStringTable;
+};
+
+extern C4JStorage StorageManager;
diff --git a/Minecraft.Client/Xbox/4JLibs/inc/4J_xtms.h b/Minecraft.Client/Xbox/4JLibs/inc/4J_xtms.h
new file mode 100644
index 00000000..ea35da4b
--- /dev/null
+++ b/Minecraft.Client/Xbox/4JLibs/inc/4J_xtms.h
@@ -0,0 +1,55 @@
+/*++
+
+Copyright (c) Microsoft Corporation. All rights reserved.
+
+Module Name:
+
+ xsgx_xtms.h
+
+--*/
+#include "xtms.h"
+
+#pragma once
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef XSGX_MOD1
+
+typedef
+VOID
+(CALLBACK * TMSCLIENT_PROG_CALLBACK)(
+ __in float progress,
+ __in_opt void* userCallbackData
+ );
+
+
+XBOXAPI
+HRESULT
+WINAPI
+XSGX_XTmsPutUserFile(
+ __in HTMSCLIENT tmsClient,
+ __in XUID xuid,
+ __in_z LPCSTR filePath,
+ __in_z LPCSTR fileType,
+ __in_z LPCSTR displayName,
+ __in_z LPCSTR ugcContentType,
+ __in_bcount(fileSize) CONST CHAR* fileBuffer,
+ __in DWORD fileSize,
+ __in_opt DWORD bufferSize,
+ __in_z_opt LPCSTR etag,
+ __in ETAGFLAG etagFlag,
+ __in TMSCLIENT_CALLBACK clientCallback,
+ __in_opt PVOID userCallbackData,
+ __in TMSCLIENT_PROG_CALLBACK clientProgCallback,
+ __in_opt PVOID progCallbackData
+ );
+
+void XSGX_XTmsCancelPutUserFile(__in HTMSCLIENT tmsClient);
+
+#endif
+
+#if defined(__cplusplus)
+}
+#endif
diff --git a/Minecraft.Client/Xbox/4JLibs/libs/4J_Input.lib b/Minecraft.Client/Xbox/4JLibs/libs/4J_Input.lib
new file mode 100644
index 00000000..8869af12
Binary files /dev/null and b/Minecraft.Client/Xbox/4JLibs/libs/4J_Input.lib differ
diff --git a/Minecraft.Client/Xbox/4JLibs/libs/4J_Input_d.lib b/Minecraft.Client/Xbox/4JLibs/libs/4J_Input_d.lib
new file mode 100644
index 00000000..ab388f9e
Binary files /dev/null and b/Minecraft.Client/Xbox/4JLibs/libs/4J_Input_d.lib differ
diff --git a/Minecraft.Client/Xbox/4JLibs/libs/4J_Input_r.lib b/Minecraft.Client/Xbox/4JLibs/libs/4J_Input_r.lib
new file mode 100644
index 00000000..c27f9c66
Binary files /dev/null and b/Minecraft.Client/Xbox/4JLibs/libs/4J_Input_r.lib differ
diff --git a/Minecraft.Client/Xbox/4JLibs/libs/4J_Profile.lib b/Minecraft.Client/Xbox/4JLibs/libs/4J_Profile.lib
new file mode 100644
index 00000000..f784110a
Binary files /dev/null and b/Minecraft.Client/Xbox/4JLibs/libs/4J_Profile.lib differ
diff --git a/Minecraft.Client/Xbox/4JLibs/libs/4J_Profile_d.lib b/Minecraft.Client/Xbox/4JLibs/libs/4J_Profile_d.lib
new file mode 100644
index 00000000..2e671a74
Binary files /dev/null and b/Minecraft.Client/Xbox/4JLibs/libs/4J_Profile_d.lib differ
diff --git a/Minecraft.Client/Xbox/4JLibs/libs/4J_Profile_r.lib b/Minecraft.Client/Xbox/4JLibs/libs/4J_Profile_r.lib
new file mode 100644
index 00000000..57b4148d
Binary files /dev/null and b/Minecraft.Client/Xbox/4JLibs/libs/4J_Profile_r.lib differ
diff --git a/Minecraft.Client/Xbox/4JLibs/libs/4J_Render.lib b/Minecraft.Client/Xbox/4JLibs/libs/4J_Render.lib
new file mode 100644
index 00000000..2969b5d8
Binary files /dev/null and b/Minecraft.Client/Xbox/4JLibs/libs/4J_Render.lib differ
diff --git a/Minecraft.Client/Xbox/4JLibs/libs/4J_Render_d.lib b/Minecraft.Client/Xbox/4JLibs/libs/4J_Render_d.lib
new file mode 100644
index 00000000..54dfeb47
Binary files /dev/null and b/Minecraft.Client/Xbox/4JLibs/libs/4J_Render_d.lib differ
diff --git a/Minecraft.Client/Xbox/4JLibs/libs/4J_Storage.lib b/Minecraft.Client/Xbox/4JLibs/libs/4J_Storage.lib
new file mode 100644
index 00000000..183f90b1
Binary files /dev/null and b/Minecraft.Client/Xbox/4JLibs/libs/4J_Storage.lib differ
diff --git a/Minecraft.Client/Xbox/4JLibs/libs/4J_Storage_d.lib b/Minecraft.Client/Xbox/4JLibs/libs/4J_Storage_d.lib
new file mode 100644
index 00000000..8412f9a4
Binary files /dev/null and b/Minecraft.Client/Xbox/4JLibs/libs/4J_Storage_d.lib differ
diff --git a/Minecraft.Client/Xbox/4JLibs/libs/4J_Storage_r.lib b/Minecraft.Client/Xbox/4JLibs/libs/4J_Storage_r.lib
new file mode 100644
index 00000000..98142283
Binary files /dev/null and b/Minecraft.Client/Xbox/4JLibs/libs/4J_Storage_r.lib differ
diff --git a/Minecraft.Client/Xbox/4JLibs/libs/4J_XTMS_d.lib b/Minecraft.Client/Xbox/4JLibs/libs/4J_XTMS_d.lib
new file mode 100644
index 00000000..8aad1c9a
Binary files /dev/null and b/Minecraft.Client/Xbox/4JLibs/libs/4J_XTMS_d.lib differ
diff --git a/Minecraft.Client/Xbox/4JLibs/libs/4J_XTMS_r.lib b/Minecraft.Client/Xbox/4JLibs/libs/4J_XTMS_r.lib
new file mode 100644
index 00000000..09aa8031
Binary files /dev/null and b/Minecraft.Client/Xbox/4JLibs/libs/4J_XTMS_r.lib differ
diff --git a/Minecraft.Client/Xbox/Audio/SoundEngine.cpp b/Minecraft.Client/Xbox/Audio/SoundEngine.cpp
new file mode 100644
index 00000000..b088150c
--- /dev/null
+++ b/Minecraft.Client/Xbox/Audio/SoundEngine.cpp
@@ -0,0 +1,1078 @@
+#include "stdafx.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.entity.h"
+#include "..\..\..\Minecraft.World\Mth.h"
+#include "..\..\..\Minecraft.World\Random.h"
+#include "..\..\..\Minecraft.World\LevelData.h"
+#include "..\..\Minecraft.h"
+#include "..\..\MultiplayerLocalPlayer.h"
+#include "SoundEngine.h"
+#include "..\..\TexturePackRepository.h"
+#include "..\..\TexturePack.h"
+#include "..\..\Common\DLC\DLCAudioFile.h"
+#include "..\..\DLCTexturePack.h"
+
+
+IXAudio2* g_pXAudio2 = NULL; // pointer to XAudio2 instance used by QNet and XACT
+IXAudio2MasteringVoice* g_pXAudio2MasteringVoice = NULL; // pointer to XAudio2 mastering voice
+
+IXACT3Engine *SoundEngine::m_pXACT3Engine = NULL;
+IXACT3WaveBank *SoundEngine::m_pWaveBank = NULL;
+IXACT3WaveBank *SoundEngine::m_pWaveBank2 = NULL;
+IXACT3WaveBank *SoundEngine::m_pStreamedWaveBank = NULL;
+IXACT3WaveBank *SoundEngine::m_pStreamedWaveBankAdditional = NULL;
+IXACT3SoundBank *SoundEngine::m_pSoundBank = NULL;
+IXACT3SoundBank *SoundEngine::m_pSoundBank2 = NULL;
+CRITICAL_SECTION SoundEngine::m_CS;
+
+X3DAUDIO_HANDLE SoundEngine::m_xact3dInstance;
+vector SoundEngine::currentSounds;
+X3DAUDIO_DSP_SETTINGS SoundEngine::m_DSPSettings;
+X3DAUDIO_EMITTER SoundEngine::m_emitter;
+X3DAUDIO_LISTENER SoundEngine::m_listeners[4];
+int SoundEngine::m_validListenerCount = 0;
+
+X3DAUDIO_DISTANCE_CURVE_POINT SoundEngine::m_VolumeCurvePoints[2] = {
+ {0.0f, 1.0f},
+ {1.0f, 0.0f},
+};
+
+X3DAUDIO_DISTANCE_CURVE_POINT SoundEngine::m_DragonVolumeCurvePoints[2] = {
+ {0.0f, 1.0f},
+ {1.0f, 0.5f},
+};
+X3DAUDIO_DISTANCE_CURVE_POINT SoundEngine::m_VolumeCurvePointsNoDecay[2] = {
+ {0.0f, 1.0f},
+ {1.0f, 1.0f},
+};
+
+X3DAUDIO_DISTANCE_CURVE SoundEngine::m_VolumeCurve;
+X3DAUDIO_DISTANCE_CURVE SoundEngine::m_DragonVolumeCurve;
+X3DAUDIO_DISTANCE_CURVE SoundEngine::m_VolumeCurveNoDecay;
+
+void SoundEngine::setXACTEngine( IXACT3Engine *pXACT3Engine)
+{
+ m_pXACT3Engine = pXACT3Engine;
+}
+
+void SoundEngine::destroy()
+{
+}
+
+SoundEngine::SoundEngine()
+{
+ random = new Random();
+ noMusicDelay = random->nextInt(20 * 60 * 10);
+
+ ZeroMemory(&m_MusicInfo,sizeof(soundInfo));
+ //bIsPlayingStreamingCDMusic=false;
+ //m_bIsPlayingStreamingGameMusic=false;
+ SetIsPlayingEndMusic(false);
+ SetIsPlayingNetherMusic(false);
+ m_VolumeCurve.PointCount = 2;
+ m_VolumeCurve.pPoints = m_VolumeCurvePoints;
+ m_DragonVolumeCurve.PointCount = 2;
+ m_DragonVolumeCurve.pPoints = m_DragonVolumeCurvePoints;
+ m_VolumeCurveNoDecay.PointCount = 2;
+ m_VolumeCurveNoDecay.pPoints = m_VolumeCurvePointsNoDecay;
+
+ m_bStreamingMusicReady=false;
+ m_bStreamingWaveBank1Ready=false;
+ m_bStreamingWaveBank2Ready=false;
+}
+
+void SoundEngine::init(Options *pOptions)
+{
+ InitializeCriticalSection(&m_CS);
+
+ // Iniatialise XACT itself
+ HRESULT hr;
+ if ( FAILED ( hr = XACT3CreateEngine( 0, &m_pXACT3Engine ) ) )
+ {
+ app.FatalLoadError();
+ assert( false );
+ return;
+ }
+
+ // Load global settings file
+ // 4J-PB - move this to the title update, since we've corrected it to allow sounds to be pitch varied when they weren't before
+ HANDLE file;
+#ifdef _TU_BUILD
+ file = CreateFile("UPDATE:\\res\\audio\\Minecraft.xgs", GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+#else
+ file = CreateFile("GAME:\\res\\TitleUpdate\\audio\\Minecraft.xgs", GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+#endif
+ if( file == INVALID_HANDLE_VALUE )
+ {
+ app.FatalLoadError();
+ assert(false);
+ return;
+ }
+ DWORD dwFileSize = GetFileSize(file,NULL);
+ DWORD bytesRead = 0;
+ DWORD memFlags = MAKE_XALLOC_ATTRIBUTES(0,FALSE,TRUE,FALSE,0,XALLOC_PHYSICAL_ALIGNMENT_DEFAULT,XALLOC_MEMPROTECT_READWRITE,FALSE,XALLOC_MEMTYPE_PHYSICAL);
+ void *pvGlobalSettings = XMemAlloc(dwFileSize, memFlags);
+ ReadFile(file,pvGlobalSettings,dwFileSize,&bytesRead,NULL);
+ CloseHandle(file);
+
+ XACT_RUNTIME_PARAMETERS EngineParameters = {0};
+ EngineParameters.lookAheadTime = XACT_ENGINE_LOOKAHEAD_DEFAULT;
+ EngineParameters.fnNotificationCallback = &this->XACTNotificationCallback;
+ EngineParameters.pGlobalSettingsBuffer = pvGlobalSettings;
+ EngineParameters.globalSettingsBufferSize = dwFileSize;
+ EngineParameters.globalSettingsFlags = XACT_FLAG_GLOBAL_SETTINGS_MANAGEDATA;
+ EngineParameters.pXAudio2 = g_pXAudio2;
+ EngineParameters.pMasteringVoice = g_pXAudio2MasteringVoice;
+
+ if ( FAILED ( hr = m_pXACT3Engine->Initialize( &EngineParameters ) ) )
+ {
+ app.FatalLoadError();
+ assert( false );
+ return;
+ }
+
+ // printf("XACT initialisation complete\n");
+
+ // Initialise X3D
+ XACT3DInitialize(m_pXACT3Engine,m_xact3dInstance);
+
+ // Set up common structures that can be re-used between sounds & just have required bits updated
+ memset(&m_DSPSettings,0,sizeof(X3DAUDIO_DSP_SETTINGS));
+ WAVEFORMATEXTENSIBLE format;
+ m_pXACT3Engine->GetFinalMixFormat(&format);
+ m_DSPSettings.SrcChannelCount = 1;
+ m_DSPSettings.DstChannelCount = format.Format.nChannels;
+ // printf("%d channels\n", format.Format.nChannels);
+ m_DSPSettings.pMatrixCoefficients = new FLOAT32[m_DSPSettings.SrcChannelCount * m_DSPSettings.DstChannelCount];
+
+ for( int i = 0; i < 4; i++ )
+ {
+ memset(&m_listeners[i],0,sizeof(X3DAUDIO_LISTENER));
+ m_listeners[i].OrientFront.z = 1.0f;
+ m_listeners[i].OrientTop.y = 1.0f;
+ }
+ m_validListenerCount = 1;
+ memset(&m_emitter,0,sizeof(X3DAUDIO_EMITTER));
+ m_emitter.ChannelCount = 1;
+ m_emitter.pVolumeCurve = &m_VolumeCurve;
+ m_emitter.pLFECurve = &m_VolumeCurve;
+ m_emitter.CurveDistanceScaler = 16.0f;
+ m_emitter.OrientFront.z = 1.0f;
+ m_emitter.OrientTop.y = 1.0f;
+
+ // Create resident wave bank - leave memory for this managed by xact so it can free it
+
+ file = CreateFile("GAME:\\res\\audio\\resident.xwb", GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+ if( file == INVALID_HANDLE_VALUE )
+ {
+ app.FatalLoadError();
+ assert(false);
+ return;
+ }
+
+ dwFileSize = GetFileSize(file,NULL);
+ void *pvWaveBank = XMemAlloc(dwFileSize, memFlags);
+ ReadFile(file,pvWaveBank,dwFileSize,&bytesRead,NULL);
+ CloseHandle(file);
+
+ if ( FAILED( hr = m_pXACT3Engine->CreateInMemoryWaveBank( pvWaveBank, dwFileSize, XACT_FLAG_ENGINE_CREATE_MANAGEDATA, memFlags, &m_pWaveBank ) ) )
+ {
+ app.FatalLoadError();
+ assert(false);
+ return;
+ }
+
+ // 4J-PB - add new sounds wavebank
+#ifdef _TU_BUILD
+ file = CreateFile("UPDATE:\\res\\audio\\additional.xwb", GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+#else
+ file = CreateFile("GAME:\\res\\TitleUpdate\\audio\\additional.xwb", GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+#endif
+ if( file == INVALID_HANDLE_VALUE )
+ {
+ app.FatalLoadError();
+ assert(false);
+ return;
+ }
+
+ dwFileSize = GetFileSize(file,NULL);
+ void *pvWaveBank2 = XMemAlloc(dwFileSize, memFlags);
+ ReadFile(file,pvWaveBank2,dwFileSize,&bytesRead,NULL);
+ CloseHandle(file);
+
+ if ( FAILED( hr = m_pXACT3Engine->CreateInMemoryWaveBank( pvWaveBank2, dwFileSize, XACT_FLAG_ENGINE_CREATE_MANAGEDATA, memFlags, &m_pWaveBank2 ) ) )
+ {
+ app.FatalLoadError();
+ assert(false);
+ return;
+ }
+
+ // Create streamed sound bank
+
+ file = CreateFile("GAME:\\res\\audio\\streamed.xwb", GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_FLAG_OVERLAPPED | FILE_FLAG_NO_BUFFERING, NULL);
+
+ if( file == INVALID_HANDLE_VALUE )
+ {
+ app.FatalLoadError();
+ assert(false);
+ return;
+ }
+
+ XACT_WAVEBANK_STREAMING_PARAMETERS streamParams;
+ streamParams.file = file;
+ streamParams.offset = 0;
+ streamParams.flags = 0;
+ streamParams.packetSize = 16; // Not sure what to pick for this - suggests a "multiple of 16" for DVD playback
+
+ if ( FAILED( hr = m_pXACT3Engine->CreateStreamingWaveBank( &streamParams, &m_pStreamedWaveBank ) ) )
+ {
+ app.FatalLoadError();
+ assert(false);
+ return;
+ }
+
+ // Create streamed sound bank
+
+ //file = CreateFile("GAME:\\res\\audio\\AdditionalMusic.xwb", GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_FLAG_OVERLAPPED | FILE_FLAG_NO_BUFFERING, NULL);
+#ifdef _TU_BUILD
+ file = CreateFile("UPDATE:\\res\\audio\\AdditionalMusic.xwb", GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+#else
+ file = CreateFile("GAME:\\res\\TitleUpdate\\audio\\AdditionalMusic.xwb", GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+#endif
+ if( file == INVALID_HANDLE_VALUE )
+ {
+ app.FatalLoadError();
+ assert(false);
+ return;
+ }
+
+ streamParams.file = file;
+ streamParams.offset = 0;
+ streamParams.flags = 0;
+ streamParams.packetSize = 16; // Not sure what to pick for this - suggests a "multiple of 16" for DVD playback
+
+ if ( FAILED( hr = m_pXACT3Engine->CreateStreamingWaveBank( &streamParams, &m_pStreamedWaveBankAdditional ) ) )
+ {
+ app.FatalLoadError();
+ assert(false);
+ return;
+ }
+
+ // Create sound bank - leave memory for this managed by xact so it can free it
+ // 4J-PB - updated for the TU
+ //file = CreateFile("GAME:\\res\\audio\\minecraft.xsb", GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+#ifdef _TU_BUILD
+ file = CreateFile("UPDATE:\\res\\audio\\minecraft.xsb", GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+#else
+ file = CreateFile("GAME:\\res\\TitleUpdate\\audio\\minecraft.xsb", GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+#endif
+ if( file == INVALID_HANDLE_VALUE )
+ {
+ app.FatalLoadError();
+ assert(false);
+ return;
+ }
+ dwFileSize = GetFileSize(file,NULL);
+ void *pvSoundBank = XMemAlloc(dwFileSize, memFlags);
+ ReadFile(file,pvSoundBank,dwFileSize,&bytesRead,NULL);
+ CloseHandle(file);
+
+ if ( FAILED( hr = m_pXACT3Engine->CreateSoundBank( pvSoundBank, dwFileSize, XACT_FLAG_ENGINE_CREATE_MANAGEDATA, memFlags, &m_pSoundBank ) ) )
+ {
+ app.FatalLoadError();
+ assert(false);
+ return;
+ }
+
+ // Create sound bank2 - leave memory for this managed by xact so it can free it
+
+#ifdef _TU_BUILD
+ file = CreateFile("UPDATE:\\res\\audio\\additional.xsb", GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+#else
+ file = CreateFile("GAME:\\res\\TitleUpdate\\audio\\additional.xsb", GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+#endif
+ if( file == INVALID_HANDLE_VALUE )
+ {
+ app.FatalLoadError();
+ assert(false);
+ return;
+ }
+ dwFileSize = GetFileSize(file,NULL);
+ void *pvSoundBank2 = XMemAlloc(dwFileSize, memFlags);
+ ReadFile(file,pvSoundBank2,dwFileSize,&bytesRead,NULL);
+ CloseHandle(file);
+
+ if ( FAILED( hr = m_pXACT3Engine->CreateSoundBank( pvSoundBank2, dwFileSize, XACT_FLAG_ENGINE_CREATE_MANAGEDATA, memFlags, &m_pSoundBank2 ) ) )
+ {
+ app.FatalLoadError();
+ assert(false);
+ return;
+ }
+
+ XACT_NOTIFICATION_DESCRIPTION desc = {0};
+ desc.flags = XACT_FLAG_NOTIFICATION_PERSIST;
+ desc.type = XACTNOTIFICATIONTYPE_WAVEBANKPREPARED;
+ desc.pvContext=this;
+ m_pXACT3Engine->RegisterNotification(&desc);
+
+ // get the category to manage the sfx (Default)
+ m_xactSFX = m_pXACT3Engine->GetCategory("Default");
+ m_xactMusic = m_pXACT3Engine->GetCategory("Music");
+}
+
+void SoundEngine::CreateStreamingWavebank(const char *pchName, IXACT3WaveBank **ppStreamedWaveBank)
+{
+ // Create streamed sound bank
+ HRESULT hr;
+
+ HANDLE file = CreateFile(pchName, GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_FLAG_OVERLAPPED | FILE_FLAG_NO_BUFFERING, NULL);
+
+ if( file == INVALID_HANDLE_VALUE )
+ {
+ app.FatalLoadError();
+ assert(false);
+ return;
+ }
+
+ XACT_WAVEBANK_STREAMING_PARAMETERS streamParams;
+ streamParams.file = file;
+ streamParams.offset = 0;
+ streamParams.flags = 0;
+ streamParams.packetSize = 16; // Not sure what to pick for this - suggests a "multiple of 16" for DVD playback
+
+ if ( FAILED( hr = m_pXACT3Engine->CreateStreamingWaveBank( &streamParams, ppStreamedWaveBank ) ) )
+ {
+ app.FatalLoadError();
+ assert(false);
+ return;
+ }
+}
+
+void SoundEngine::CreateSoundbank(const char *pchName, IXACT3SoundBank **ppSoundBank)
+{
+ HRESULT hr;
+ HANDLE file = CreateFile(pchName, GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+
+ if( file == INVALID_HANDLE_VALUE )
+ {
+ app.FatalLoadError();
+ assert(false);
+ return;
+ }
+ DWORD dwFileSize = GetFileSize(file,NULL);
+ DWORD bytesRead = 0;
+ DWORD memFlags = MAKE_XALLOC_ATTRIBUTES(0,FALSE,TRUE,FALSE,0,XALLOC_PHYSICAL_ALIGNMENT_DEFAULT,XALLOC_MEMPROTECT_READWRITE,FALSE,XALLOC_MEMTYPE_PHYSICAL);
+ void *pvSoundBank = XMemAlloc(dwFileSize, memFlags);
+ ReadFile(file,pvSoundBank,dwFileSize,&bytesRead,NULL);
+ CloseHandle(file);
+
+ if ( FAILED( hr = m_pXACT3Engine->CreateSoundBank( pvSoundBank, dwFileSize, XACT_FLAG_ENGINE_CREATE_MANAGEDATA, memFlags, ppSoundBank ) ) )
+ {
+ app.FatalLoadError();
+ assert(false);
+ return;
+ }
+}
+
+bool SoundEngine::isStreamingWavebankReady()
+{
+ if(m_bStreamingMusicReady==false)
+ {
+ DWORD dwState;
+ m_pSoundBank->GetState(&dwState);
+ if(dwState&XACT_WAVEBANKSTATE_PREPARED)
+ {
+ m_bStreamingWaveBank1Ready=true;
+ }
+ m_pSoundBank2->GetState(&dwState);
+ if(dwState&XACT_WAVEBANKSTATE_PREPARED)
+ {
+ m_bStreamingWaveBank2Ready=true;
+ }
+
+ if(m_bStreamingWaveBank1Ready && m_bStreamingWaveBank2Ready)
+ {
+ m_bStreamingMusicReady=true;
+ }
+ }
+
+ return m_bStreamingMusicReady;
+}
+
+#ifdef _XBOX
+bool SoundEngine::isStreamingWavebankReady(IXACT3WaveBank *pWaveBank)
+{
+ DWORD dwState;
+ pWaveBank->GetState(&dwState);
+ if(dwState&XACT_WAVEBANKSTATE_PREPARED)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+#endif
+
+void SoundEngine::XACTNotificationCallback( const XACT_NOTIFICATION* pNotification )
+{
+ if(pNotification->pvContext!= NULL)
+ {
+ if(pNotification->type==XACTNOTIFICATIONTYPE_WAVEBANKPREPARED)
+ {
+ SoundEngine *pSoundEngine=(SoundEngine *)pNotification->pvContext;
+ if(pNotification->waveBank.pWaveBank==pSoundEngine->m_pStreamedWaveBank)
+ {
+ pSoundEngine->m_bStreamingWaveBank1Ready=true;
+ }
+ if(pNotification->waveBank.pWaveBank==pSoundEngine->m_pStreamedWaveBankAdditional)
+ {
+ pSoundEngine->m_bStreamingWaveBank2Ready=true;
+ }
+
+ if(pSoundEngine->m_bStreamingWaveBank1Ready && pSoundEngine->m_bStreamingWaveBank2Ready)
+ {
+ pSoundEngine->m_bStreamingMusicReady=true;
+ }
+ }
+ }
+}
+
+char *SoundEngine::ConvertSoundPathToName(const wstring& name, bool bConvertSpaces)
+{
+ static char buf[256];
+ assert(name.length()<256);
+ for(unsigned int i = 0; i < name.length(); i++ )
+ {
+ wchar_t c = name[i];
+ if(c=='.') c='_';
+ buf[i] = (char)c;
+ }
+ buf[name.length()] = 0;
+ return buf;
+}
+
+void SoundEngine::play(int iSound, float x, float y, float z, float volume, float pitch)
+{
+ if(iSound==-1)
+ {
+ app.DebugPrintf(6,"PlaySound with sound of -1 !!!!!!!!!!!!!!!\n");
+ return;
+ }
+
+ bool bSoundbank1=(iSound<=eSoundType_STEP_SAND);
+
+ if( (m_pSoundBank == NULL ) || (m_pSoundBank2 == NULL))return;
+
+ if( currentSounds.size() > MAX_POLYPHONY )
+ {
+ return;
+ }
+ wstring name = wchSoundNames[iSound];
+ //const unsigned char *name=ucSoundNames[iSound];
+
+ char *xboxName = ConvertSoundPathToName(name);
+ XACTINDEX idx;
+
+ if(bSoundbank1)
+ {
+ idx = m_pSoundBank->GetCueIndex(xboxName);
+ }
+ else
+ {
+ idx = m_pSoundBank2->GetCueIndex(xboxName);
+ }
+
+ if( idx == XACTINDEX_INVALID )
+ {
+#ifndef _CONTENT_PACKAGE
+#ifdef _DEBUG
+ __debugbreak();
+#endif
+ //wprintf(L"WARNING: Sound cue not found - %ls\n", name.c_str() );
+ app.DebugPrintf("Not found: %s\n",xboxName);
+#endif
+ return;
+ }
+
+ // 4J-PB - check how many of this cue are already playing and ignore if there are loads
+ int iSameSoundC=0;
+ for( unsigned int i = 0; i < currentSounds.size(); i++ )
+ {
+ SoundEngine::soundInfo *info = currentSounds[i];
+
+ if((info->idx==idx) && (info->iSoundBank==(bSoundbank1?0:1)))
+ {
+ iSameSoundC++;
+ }
+ }
+
+ if(iSameSoundC>MAX_SAME_SOUNDS_PLAYING)
+ {
+ return;
+ }
+
+ IXACT3Cue *cueInstance;
+ HRESULT hr;
+ MemSect(31);
+
+ if(bSoundbank1)
+ {
+ if( FAILED( hr = m_pSoundBank->Prepare(idx, 0, 0, &cueInstance ) ) )
+ {
+ MemSect(0);
+ // printf("Sound prep failed\n");
+ return;
+ }
+ }
+ else
+ {
+ if( FAILED( hr = m_pSoundBank2->Prepare(idx, 0, 0, &cueInstance ) ) )
+ {
+ MemSect(0);
+ // printf("Sound prep failed\n");
+ return;
+ }
+ }
+
+ MemSect(0);
+
+ // Register to receive callbacks for cues stopping so we can keep a track of active sounds
+
+ soundInfo *info = new soundInfo();
+ info->idx = idx;
+ info->eSoundID = (eSOUND_TYPE)iSound;
+ info->iSoundBank = bSoundbank1?0:1;
+ info->x = x;
+ info->y = y;
+ info->z = z;
+ info->volume = volume;//*m_fSoundEffectsVolume;
+ info->pitch = pitch;
+ info->pCue = cueInstance;
+ info->updatePos = true;
+ EnterCriticalSection(&m_CS);
+ currentSounds.push_back(info);
+ LeaveCriticalSection(&m_CS);
+
+ XACTVARIABLEINDEX vidx = cueInstance->GetVariableIndex("Pitch");
+ if( vidx != XACTVARIABLEINDEX_INVALID )
+ {
+ // Convert pitch multiplier to semitones
+ float semiTones = (log(pitch)/log(2.0f)) * 12.0f;
+ cueInstance->SetVariable( vidx, semiTones );
+ }
+
+ update3DPosition(info);
+ cueInstance->Play();
+}
+
+void SoundEngine::playUI(int iSound, float, float)
+{
+ bool bSoundBank1=(iSound<=eSoundType_STEP_SAND);
+
+ if( (m_pSoundBank == NULL ) || (m_pSoundBank2 == NULL)) return;
+
+ if( currentSounds.size() > MAX_POLYPHONY )
+ {
+ return;
+ }
+ wstring name = wchSoundNames[iSound];
+
+ char *xboxName = (char *)ConvertSoundPathToName(name);
+
+ XACTINDEX idx = m_pSoundBank->GetCueIndex(xboxName);
+
+ if( idx == XACTINDEX_INVALID )
+ {
+ // check soundbank 2
+ idx = m_pSoundBank2->GetCueIndex(xboxName);
+ if( idx == XACTINDEX_INVALID )
+ {
+#ifndef _CONTENT_PACKAGE
+ printf("Not found UI: %s\n",xboxName);
+#endif
+ return;
+ }
+ bSoundBank1=false;
+ }
+
+ IXACT3Cue *cueInstance;
+ HRESULT hr;
+
+ if(bSoundBank1)
+ {
+ if( FAILED( hr = m_pSoundBank->Prepare(idx, 0, 0, &cueInstance ) ) )
+ {
+ // printf("Sound prep failed\n");
+ return;
+ }
+ }
+ else
+ {
+ if( FAILED( hr = m_pSoundBank2->Prepare(idx, 0, 0, &cueInstance ) ) )
+ {
+ // printf("Sound prep failed\n");
+ return;
+ }
+ }
+
+ // Add sound info just so we can detect end of this sound
+ soundInfo *info = new soundInfo();
+ info->eSoundID = (eSOUND_TYPE)0;
+ info->iSoundBank = bSoundBank1?0:1;
+ info->idx =idx;
+ info->x = 0.0f;
+ info->y = 0.0f;
+ info->z = 0.0f;
+ info->volume = 0.0f;
+ info->pitch = 0.0f;
+ info->pCue = cueInstance;
+ info->updatePos = false;
+ EnterCriticalSection(&m_CS);
+ currentSounds.push_back(info);
+ LeaveCriticalSection(&m_CS);
+
+ cueInstance->Play();
+}
+
+void SoundEngine::playStreaming(const wstring& name, float x, float y, float z, float vol, float pitch, bool bMusicDelay)
+{
+ IXACT3SoundBank *pSoundBank=NULL;
+
+ bool bSoundBank2=false;
+ MemSect(34);
+ if(m_MusicInfo.pCue!=NULL)
+ {
+ m_MusicInfo.pCue->Stop(0);
+ m_MusicInfo.pCue->Destroy();
+ m_MusicInfo.pCue = NULL;
+ }
+
+ m_MusicInfo.volume = 1.0f;//m_fMusicVolume;
+ m_MusicInfo.pitch = 1.0f;
+
+ SetIsPlayingEndMusic(false);
+ SetIsPlayingNetherMusic(false);
+
+ if(name.empty())
+ {
+ SetIsPlayingStreamingCDMusic(false);
+ SetIsPlayingStreamingGameMusic(false);// will be set to true when the sound is started in the tick
+ if(bMusicDelay)
+ {
+ noMusicDelay = random->nextInt(20 * 60 * 10) + 20 * 60 * 10;
+ }
+ else
+ {
+ noMusicDelay=0;
+ }
+ // Check if we have a local player in The Nether or in The End, and play that music if they are
+ Minecraft *pMinecraft=Minecraft::GetInstance();
+ bool playerInEnd=false;
+ bool playerInNether=false;
+
+ for(unsigned int i=0;ilocalplayers[i]!=NULL)
+ {
+ if(pMinecraft->localplayers[i]->dimension==LevelData::DIMENSION_END)
+ {
+ playerInEnd=true;
+ }
+ else if(pMinecraft->localplayers[i]->dimension==LevelData::DIMENSION_NETHER)
+ {
+ playerInNether=true;
+ }
+ }
+ }
+ TexturePack *pTexPack=Minecraft::GetInstance()->skins->getSelected();
+
+ if(Minecraft::GetInstance()->skins->isUsingDefaultSkin() || pTexPack->hasAudio()==false)
+ {
+ if(playerInEnd || playerInNether)
+ {
+ pSoundBank=m_pSoundBank2;
+ }
+ else
+ {
+ pSoundBank=m_pSoundBank;
+ }
+ }
+ else
+ {
+ // get the dlc texture pack
+ DLCTexturePack *pDLCTexPack=(DLCTexturePack *)pTexPack;
+ pSoundBank=pDLCTexPack->m_pSoundBank;
+
+ // check we can play the sound
+ if(isStreamingWavebankReady(pDLCTexPack->m_pStreamedWaveBank)==false)
+ {
+ return;
+ }
+ }
+
+ if(playerInEnd)
+ {
+ m_musicIDX = pSoundBank->GetCueIndex("the_end_dragon");
+ SetIsPlayingEndMusic(true);
+ bSoundBank2=true;
+ }
+ else if(playerInNether)
+ {
+ m_musicIDX = pSoundBank->GetCueIndex("nether");
+ SetIsPlayingNetherMusic(true);
+ bSoundBank2=true;
+ }
+ else
+ {
+ m_musicIDX = pSoundBank->GetCueIndex("music");
+ }
+ }
+ else
+ {
+ pSoundBank=m_pSoundBank;
+ SetIsPlayingStreamingCDMusic(true);
+ SetIsPlayingStreamingGameMusic(false);
+
+ m_musicIDX = pSoundBank->GetCueIndex(ConvertSoundPathToName(name));
+ }
+
+ HRESULT hr;
+
+ if( FAILED( hr = pSoundBank->Prepare(m_musicIDX, 0, 0, &m_MusicInfo.pCue ) ) )
+ {
+ // printf("Sound prep failed\n");
+ m_musicIDX = XACTINDEX_INVALID; // don't do anything in the tick
+ m_MusicInfo.pCue=NULL;
+ MemSect(0);
+ return;
+ }
+
+
+ if(GetIsPlayingStreamingCDMusic())
+ {
+ m_MusicInfo.x = x;
+ m_MusicInfo.y = y;
+ m_MusicInfo.z = z;
+ m_MusicInfo.updatePos = true;
+ update3DPosition(&m_MusicInfo, false);
+ m_MusicInfo.pCue->Play();
+ }
+ else
+ {
+ // don't play the game music - it will start playing in the tick when noMusicDelay is 0
+
+ m_MusicInfo.x = 0.0f; // will be overridden by the bPlaceEmitterAtListener
+ m_MusicInfo.y = 0.0f; // will be overridden by the bPlaceEmitterAtListener
+ m_MusicInfo.z = 0.0f; // will be overridden by the bPlaceEmitterAtListener
+ m_MusicInfo.updatePos = false;
+
+ update3DPosition(&m_MusicInfo, true);
+ }
+
+ MemSect(0);
+}
+void SoundEngine::playMusicTick()
+{
+ if( (m_pSoundBank == NULL ) || (m_pSoundBank2 == NULL)) return;
+
+ if( m_musicIDX == XACTINDEX_INVALID )
+ {
+ // printf("Not found music\n");
+ return;
+ }
+
+ // check to see if the sound has stopped playing
+ DWORD state;
+ HRESULT hr;
+ if(m_MusicInfo.pCue!=NULL)
+ {
+ if( FAILED( hr = m_MusicInfo.pCue->GetState(&state) ) )
+ {
+ assert(false);
+ }
+ else
+ {
+ if( state == XACT_CUESTATE_STOPPED )
+ {
+ // remove the sound and reset the music
+ playStreaming(L"", 0, 0, 0, 0, 0);
+ return;
+ }
+ }
+ }
+
+ if(GetIsPlayingStreamingGameMusic())
+ {
+ if(m_MusicInfo.pCue!=NULL)
+ {
+ bool playerInEnd = false;
+ bool playerInNether=false;
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+ for(unsigned int i = 0; i < XUSER_MAX_COUNT; ++i)
+ {
+ if(pMinecraft->localplayers[i]!=NULL)
+ {
+ if(pMinecraft->localplayers[i]->dimension==LevelData::DIMENSION_END)
+ {
+ playerInEnd=true;
+ }
+ else if(pMinecraft->localplayers[i]->dimension==LevelData::DIMENSION_NETHER)
+ {
+ playerInNether=true;
+ }
+ }
+ }
+
+ if((playerInEnd && !GetIsPlayingEndMusic()) ||(!playerInEnd && GetIsPlayingEndMusic()))
+ {
+ // remove the sound and reset the music
+ playStreaming(L"", 0, 0, 0, 0, 0);
+ }
+ else if ((playerInNether && !GetIsPlayingNetherMusic()) ||(!playerInNether && GetIsPlayingNetherMusic()))
+ {
+ // remove the sound and reset the music
+ playStreaming(L"", 0, 0, 0, 0, 0);
+ }
+ }
+ // not positional so doesn't need ticked
+ return;
+ }
+
+ // is this cd music? If so, we need to tick it
+ if(GetIsPlayingStreamingCDMusic())
+ {
+ update3DPosition(&m_MusicInfo, false, true);
+ }
+ else
+ {
+ if (noMusicDelay > 0)
+ {
+ noMusicDelay--;
+ return;
+ }
+
+ if(m_MusicInfo.pCue!=NULL)
+ {
+ update3DPosition(&m_MusicInfo, true);
+ SetIsPlayingStreamingGameMusic(true);
+ // and play the game music here
+ m_MusicInfo.pCue->Play();
+ }
+ }
+}
+
+void SoundEngine::updateMusicVolume(float fVal)
+{
+ XACTVOLUME xactVol=fVal;
+ HRESULT hr=m_pXACT3Engine->SetVolume(m_xactMusic,fVal);
+}
+
+void SoundEngine::updateSystemMusicPlaying(bool isPlaying)
+{
+}
+
+void SoundEngine::updateSoundEffectVolume(float fVal)
+{
+ XACTVOLUME xactVol=fVal;
+ HRESULT hr=m_pXACT3Engine->SetVolume(m_xactSFX,fVal);
+}
+
+void SoundEngine::update3DPosition(SoundEngine::soundInfo *pInfo, bool bPlaceEmitterAtListener,bool bIsCDMusic)
+{
+ X3DAUDIO_LISTENER *listener = &m_listeners[0]; // Default case for single listener
+
+ if( ( m_validListenerCount > 1 ) && !bPlaceEmitterAtListener )
+ {
+ // More than one listener. Find out which one is closest
+ float nearDistSq = ( listener->Position.x - pInfo->x ) * ( listener->Position.x - pInfo->x ) +
+ ( listener->Position.y - pInfo->y ) * ( listener->Position.y - pInfo->y ) +
+ ( listener->Position.z + pInfo->z ) * ( listener->Position.z + pInfo->z );
+
+ for( int i = 1; i < m_validListenerCount; i++ )
+ {
+ float distSq = ( m_listeners[i].Position.x - pInfo->x ) * ( m_listeners[i].Position.x - pInfo->x ) +
+ ( m_listeners[i].Position.y - pInfo->y ) * ( m_listeners[i].Position.y - pInfo->y ) +
+ ( m_listeners[i].Position.z + pInfo->z ) * ( m_listeners[i].Position.z + pInfo->z );
+ if( distSq < nearDistSq )
+ {
+ listener = &m_listeners[i];
+ nearDistSq = distSq;
+ }
+ }
+
+ // More than one listener, don't do directional sounds - point our listener towards the sound
+ float xzDist = sqrtf( ( listener->Position.x - pInfo->x ) * ( listener->Position.x - pInfo->x ) +
+ ( listener->Position.z + pInfo->z ) * ( listener->Position.z + pInfo->z ) );
+ // Don't orientate if its too near to work out a distance
+ if( xzDist > 0.001f)
+ {
+ listener->OrientFront.x = ( pInfo->x - listener->Position.x ) / xzDist;
+ listener->OrientFront.y = 0.0f;
+ listener->OrientFront.z = ( - pInfo->z - listener->Position.z ) / xzDist;
+ }
+ }
+
+ if(bPlaceEmitterAtListener)
+ {
+ m_emitter.Position.x = listener->Position.x;
+ m_emitter.Position.y = listener->Position.y;
+ m_emitter.Position.z = listener->Position.z;
+ }
+ else
+ {
+ // Update the position of the emitter - we aren't dynamically changing anything else
+ m_emitter.Position.x = pInfo->x;
+ m_emitter.Position.y = pInfo->y;
+ m_emitter.Position.z = -pInfo->z; // Flipped sign of z as x3daudio is expecting left handed coord system
+ }
+
+ // If this is the CD music, then make the distance scaler 4 x normal
+ if(bIsCDMusic)
+ {
+ m_emitter.CurveDistanceScaler=64.0f;
+ }
+ else
+ {
+ switch(pInfo->eSoundID)
+ {
+ // Is this the Dragon?
+ case eSoundType_MOB_ENDERDRAGON_GROWL:
+ case eSoundType_MOB_ENDERDRAGON_MOVE:
+ case eSoundType_MOB_ENDERDRAGON_END:
+ case eSoundType_MOB_ENDERDRAGON_HIT:
+ m_emitter.CurveDistanceScaler=100.0f;
+ break;
+ case eSoundType_MOB_GHAST_MOAN:
+ case eSoundType_MOB_GHAST_SCREAM:
+ case eSoundType_MOB_GHAST_DEATH:
+ case eSoundType_MOB_GHAST_CHARGE:
+ case eSoundType_MOB_GHAST_FIREBALL:
+ m_emitter.CurveDistanceScaler=30.0f;
+ break;
+ }
+ }
+
+ // 10000.0f is passed as the volume for thunder... treat this as a special case, and use a volume curve that doesn't decay with distance
+ // rather than just trying to guess at making something really really loud...
+ if( pInfo->volume == 10000.0f )
+ {
+ m_emitter.pVolumeCurve = &m_VolumeCurveNoDecay;
+ }
+ else
+ {
+ m_emitter.pVolumeCurve = &m_VolumeCurve;
+ }
+
+ // Calculate all the 3D things
+ XACT3DCalculate( m_xact3dInstance, listener, &m_emitter, &m_DSPSettings );
+
+ // Put volume curve back to default in case something else is depending on this
+ m_emitter.pVolumeCurve = &m_VolumeCurve;
+ //m_emitter.pLFECurve = &m_VolumeCurve;
+ m_emitter.CurveDistanceScaler=16.0f;
+ // Apply our general volume too by scaling the calculated coefficients - so long as this isn't our special case of 10000.0f (see comment above)
+ if( pInfo->volume != 10000.0f )
+ {
+ for(unsigned int i = 0; i < m_DSPSettings.DstChannelCount; i++ )
+ {
+ m_DSPSettings.pMatrixCoefficients[i] *= pInfo->volume;
+ }
+ }
+
+ // Finally apply to the cue
+ XACT3DApply( &m_DSPSettings, pInfo->pCue);
+}
+
+void SoundEngine::tick(shared_ptr *players, float a)
+{
+ if( m_pXACT3Engine == NULL ) return;
+
+ // Creater listener array from the local players
+ int listenerCount = 0;
+ bool doPosUpdate = true;
+ if( players )
+ {
+ for( int i = 0; i < 4; i++ )
+ {
+ if( players[i] != NULL )
+ {
+ float yRot = players[i]->yRotO + (players[i]->yRot - players[i]->yRotO) * a;
+
+ m_listeners[listenerCount].Position.x = (float) (players[i]->xo + (players[i]->x - players[i]->xo) * a);
+ m_listeners[listenerCount].Position.y = (float) (players[i]->yo + (players[i]->y - players[i]->yo) * a);
+ m_listeners[listenerCount].Position.z = -(float) (players[i]->zo + (players[i]->z - players[i]->zo) * a); // Flipped sign of z as x3daudio is expecting left handed coord system
+
+ float yCos = (float)cos(-yRot * Mth::RAD_TO_GRAD - PI);
+ float ySin = (float)sin(-yRot * Mth::RAD_TO_GRAD - PI);
+
+ m_listeners[listenerCount].OrientFront.x = -ySin;
+ m_listeners[listenerCount].OrientFront.y = 0;
+ m_listeners[listenerCount].OrientFront.z = yCos; // Flipped sign of z as x3daudio is expecting left handed coord system
+
+ listenerCount++;
+ }
+ }
+ }
+ // If there were no valid players set, make up a default listener
+ if( listenerCount == 0 )
+ {
+ doPosUpdate = false; // Don't bother updating positions of sounds already placed
+ m_listeners[listenerCount].Position.x = 0;
+ m_listeners[listenerCount].Position.y = 0;
+ m_listeners[listenerCount].Position.z = 0;
+ m_listeners[listenerCount].OrientFront.x = 0;
+ m_listeners[listenerCount].OrientFront.y = 0;
+ m_listeners[listenerCount].OrientFront.z = 1.0f;
+ listenerCount++;
+ }
+ m_validListenerCount = listenerCount;
+
+ EnterCriticalSection(&m_CS);
+ for( unsigned int i = 0; i < currentSounds.size(); i++ )
+ {
+ SoundEngine::soundInfo *info = currentSounds[i];
+
+ DWORD state;
+ HRESULT hr;
+ if( FAILED( hr = info->pCue->GetState(&state) ) )
+ {
+ assert(false);
+ }
+ else
+ {
+ if( state == XACT_CUESTATE_STOPPED )
+ {
+ info->pCue->Destroy();
+ delete currentSounds[i];
+ currentSounds[i] = currentSounds.back();
+ currentSounds.pop_back();
+ }
+ else
+ {
+ if( info->updatePos )
+ {
+ if( doPosUpdate )
+ {
+ update3DPosition(info);
+ }
+ }
+ }
+ }
+ }
+
+ LeaveCriticalSection(&m_CS);
+ m_pXACT3Engine->DoWork();
+}
+
+void SoundEngine::add(const wstring& name, File *file)
+{
+}
+
+void SoundEngine::addMusic(const wstring& name, File *file)
+{
+}
+
+void SoundEngine::addStreaming(const wstring& name, File *file)
+{
+}
diff --git a/Minecraft.Client/Xbox/Audio/SoundEngine.h b/Minecraft.Client/Xbox/Audio/SoundEngine.h
new file mode 100644
index 00000000..e2f22869
--- /dev/null
+++ b/Minecraft.Client/Xbox/Audio/SoundEngine.h
@@ -0,0 +1,110 @@
+#pragma once
+class Mob;
+class Options;
+using namespace std;
+#include "..\..\..\Minecraft.World\SoundTypes.h"
+
+#ifdef _XBOX
+extern IXAudio2* g_pXAudio2; // pointer to XAudio2 instance used by QNet and XACT
+extern IXAudio2MasteringVoice* g_pXAudio2MasteringVoice; // pointer to XAudio2 mastering voice
+#endif
+
+class SoundEngine : public ConsoleSoundEngine
+{
+#ifdef _XBOX
+ //static const unsigned char *ucSoundNames[eSoundType_MAX][32];
+ static const int MAX_POLYPHONY = 30; // 4J added
+ static const int MAX_SAME_SOUNDS_PLAYING = 8; // 4J added
+ static IXACT3Engine *m_pXACT3Engine;
+ static X3DAUDIO_HANDLE m_xact3dInstance;
+ static X3DAUDIO_DSP_SETTINGS m_DSPSettings;
+ static X3DAUDIO_EMITTER m_emitter;
+ static X3DAUDIO_LISTENER m_listeners[4];
+ static int m_validListenerCount;
+
+ static X3DAUDIO_DISTANCE_CURVE m_VolumeCurve;
+ static X3DAUDIO_DISTANCE_CURVE_POINT m_VolumeCurvePoints[2];
+
+ static X3DAUDIO_DISTANCE_CURVE m_DragonVolumeCurve;
+ static X3DAUDIO_DISTANCE_CURVE_POINT m_DragonVolumeCurvePoints[2];
+
+ static X3DAUDIO_DISTANCE_CURVE m_VolumeCurveNoDecay;
+ static X3DAUDIO_DISTANCE_CURVE_POINT m_VolumeCurvePointsNoDecay[2];
+
+ static IXACT3WaveBank *m_pWaveBank;
+ static IXACT3WaveBank *m_pWaveBank2;
+ static IXACT3WaveBank *m_pStreamedWaveBank;
+ static IXACT3WaveBank *m_pStreamedWaveBankAdditional;
+ static IXACT3SoundBank *m_pSoundBank;
+ static IXACT3SoundBank *m_pSoundBank2;
+
+ static CRITICAL_SECTION m_CS;
+
+ struct soundInfo
+ {
+ // 4J-PB - adding the cue index so we can limit the number of the same sounds playing (rain)
+ XACTINDEX idx;
+ int iSoundBank;
+ eSOUND_TYPE eSoundID;
+ float x, y, z;
+ float volume;
+ float pitch;
+ IXACT3Cue *pCue;
+ bool updatePos;
+ };
+
+ void update3DPosition( soundInfo *pInfo, bool bPlaceEmitterAtListener = false, bool bIsCDMusic = false);
+ static vectorcurrentSounds;
+
+ int noMusicDelay;
+ Random *random;
+
+ // 4J Added
+#endif
+
+#ifdef _XBOX
+ char * m_chMusicName;
+ soundInfo m_MusicInfo;
+
+ XACTINDEX m_musicIDX;
+ bool m_bStreamingMusicReady;
+ bool m_bStreamingWaveBank1Ready;
+ bool m_bStreamingWaveBank2Ready;
+
+ // to handle volume changes
+ XACTCATEGORY m_xactSFX;
+ XACTCATEGORY m_xactMusic;
+#endif
+public:
+ SoundEngine();
+ virtual void destroy();
+ virtual void play(int iSound, float x, float y, float z, float volume, float pitch);
+ virtual void playStreaming(const wstring& name, float x, float y , float z, float volume, float pitch, bool bMusicDelay=true);
+ virtual void playUI(int iSound, float volume, float pitch);
+ virtual void playMusicTick();
+ virtual void updateMusicVolume(float fVal);
+ virtual void updateSystemMusicPlaying(bool isPlaying);
+ virtual void updateSoundEffectVolume(float fVal);
+ virtual void init(Options *);
+ virtual void tick(shared_ptr *players, float a); // 4J - updated to take array of local players rather than single one
+ virtual void add(const wstring& name, File *file);
+ virtual void addMusic(const wstring& name, File *file);
+ virtual void addStreaming(const wstring& name, File *file);
+#ifndef __PS3__
+ static void setXACTEngine( IXACT3Engine *pXACT3Engine);
+ void CreateStreamingWavebank(const char *pchName, IXACT3WaveBank **ppStreamedWaveBank);
+ void CreateSoundbank(const char *pchName, IXACT3SoundBank **ppSoundBank);
+
+#endif // __PS3__
+ virtual char *ConvertSoundPathToName(const wstring& name, bool bConvertSpaces=false);
+ bool isStreamingWavebankReady(); // 4J Added
+#ifdef _XBOX
+ bool isStreamingWavebankReady(IXACT3WaveBank *pWaveBank);
+#endif
+ int initAudioHardware(int iMinSpeakers) { return iMinSpeakers;}
+
+private:
+#ifndef __PS3__
+ static void XACTNotificationCallback( const XACT_NOTIFICATION* pNotification );
+#endif // __PS3__
+};
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Cheats/E0006C5B8D782D00/584111F7/00000001/Save2012 32617 834.bin b/Minecraft.Client/Xbox/Cheats/E0006C5B8D782D00/584111F7/00000001/Save2012 32617 834.bin
new file mode 100644
index 00000000..a1d2f425
Binary files /dev/null and b/Minecraft.Client/Xbox/Cheats/E0006C5B8D782D00/584111F7/00000001/Save2012 32617 834.bin differ
diff --git a/Minecraft.Client/Xbox/Cheats/E0006C5B8D782D00/FFFE07D1/00010000/E0006C5B8D782D00 b/Minecraft.Client/Xbox/Cheats/E0006C5B8D782D00/FFFE07D1/00010000/E0006C5B8D782D00
new file mode 100644
index 00000000..064b6e64
Binary files /dev/null and b/Minecraft.Client/Xbox/Cheats/E0006C5B8D782D00/FFFE07D1/00010000/E0006C5B8D782D00 differ
diff --git a/Minecraft.Client/Xbox/Cheats/TMS/E00031068D782D00/FFFE07D1/00010000/E00031068D782D00 b/Minecraft.Client/Xbox/Cheats/TMS/E00031068D782D00/FFFE07D1/00010000/E00031068D782D00
new file mode 100644
index 00000000..697ab73e
Binary files /dev/null and b/Minecraft.Client/Xbox/Cheats/TMS/E00031068D782D00/FFFE07D1/00010000/E00031068D782D00 differ
diff --git a/Minecraft.Client/Xbox/Cheats/TMS/E00032518D782D00/FFFE07D1/00010000/E00032518D782D00 b/Minecraft.Client/Xbox/Cheats/TMS/E00032518D782D00/FFFE07D1/00010000/E00032518D782D00
new file mode 100644
index 00000000..64183907
Binary files /dev/null and b/Minecraft.Client/Xbox/Cheats/TMS/E00032518D782D00/FFFE07D1/00010000/E00032518D782D00 differ
diff --git a/Minecraft.Client/Xbox/Cheats/TMS/E00033A28D782D00/FFFE07D1/00010000/E00033A28D782D00 b/Minecraft.Client/Xbox/Cheats/TMS/E00033A28D782D00/FFFE07D1/00010000/E00033A28D782D00
new file mode 100644
index 00000000..e5907d95
Binary files /dev/null and b/Minecraft.Client/Xbox/Cheats/TMS/E00033A28D782D00/FFFE07D1/00010000/E00033A28D782D00 differ
diff --git a/Minecraft.Client/Xbox/Cheats/TMS/E00035128D782D00/FFFE07D1/00010000/E00035128D782D00 b/Minecraft.Client/Xbox/Cheats/TMS/E00035128D782D00/FFFE07D1/00010000/E00035128D782D00
new file mode 100644
index 00000000..9199b6a4
Binary files /dev/null and b/Minecraft.Client/Xbox/Cheats/TMS/E00035128D782D00/FFFE07D1/00010000/E00035128D782D00 differ
diff --git a/Minecraft.Client/Xbox/Cheats/TMS/E00036E98D782D00/FFFE07D1/00010000/E00036E98D782D00 b/Minecraft.Client/Xbox/Cheats/TMS/E00036E98D782D00/FFFE07D1/00010000/E00036E98D782D00
new file mode 100644
index 00000000..cb6541d2
Binary files /dev/null and b/Minecraft.Client/Xbox/Cheats/TMS/E00036E98D782D00/FFFE07D1/00010000/E00036E98D782D00 differ
diff --git a/Minecraft.Client/Xbox/Cheats/TMS/E000372E8D782D00/FFFE07D1/00010000/E000372E8D782D00 b/Minecraft.Client/Xbox/Cheats/TMS/E000372E8D782D00/FFFE07D1/00010000/E000372E8D782D00
new file mode 100644
index 00000000..1095edea
Binary files /dev/null and b/Minecraft.Client/Xbox/Cheats/TMS/E000372E8D782D00/FFFE07D1/00010000/E000372E8D782D00 differ
diff --git a/Minecraft.Client/Xbox/Cheats/TMS/E00038028D782D00/FFFE07D1/00010000/E00038028D782D00 b/Minecraft.Client/Xbox/Cheats/TMS/E00038028D782D00/FFFE07D1/00010000/E00038028D782D00
new file mode 100644
index 00000000..65a3561c
Binary files /dev/null and b/Minecraft.Client/Xbox/Cheats/TMS/E00038028D782D00/FFFE07D1/00010000/E00038028D782D00 differ
diff --git a/Minecraft.Client/Xbox/ContentPackageBuild/CopyContentPackageFiles - Debug.cmd b/Minecraft.Client/Xbox/ContentPackageBuild/CopyContentPackageFiles - Debug.cmd
new file mode 100644
index 00000000..a4a7c1a6
--- /dev/null
+++ b/Minecraft.Client/Xbox/ContentPackageBuild/CopyContentPackageFiles - Debug.cmd
@@ -0,0 +1,3 @@
+copy ..\..\Debug\Minecraft.Client_D.xex .\Package\default.xex
+
+pause
diff --git a/Minecraft.Client/Xbox/ContentPackageBuild/CopyContentPackageFiles.cmd b/Minecraft.Client/Xbox/ContentPackageBuild/CopyContentPackageFiles.cmd
new file mode 100644
index 00000000..c0f4edfb
--- /dev/null
+++ b/Minecraft.Client/Xbox/ContentPackageBuild/CopyContentPackageFiles.cmd
@@ -0,0 +1,59 @@
+mkdir .\Package
+copy ..\..\ContentPackage\default.xex .\Package\default.xex
+
+REM Copy files from the Gameconfig
+
+copy ..\GameConfig\01.png .\Package\
+copy ..\GameConfig\02.png .\Package\
+copy ..\GameConfig\03.png .\Package\
+copy ..\GameConfig\04.png .\Package\
+copy ..\GameConfig\05.png .\Package\
+copy ..\GameConfig\06.png .\Package\
+copy ..\GameConfig\07.png .\Package\
+copy ..\GameConfig\08.png .\Package\
+copy ..\GameConfig\09.png .\Package\
+copy ..\GameConfig\10.png .\Package\
+copy ..\GameConfig\11.png .\Package\
+copy ..\GameConfig\12.png .\Package\
+copy ..\GameConfig\13.png .\Package\
+copy ..\GameConfig\14.png .\Package\
+copy ..\GameConfig\15.png .\Package\
+copy ..\GameConfig\16.png .\Package\
+copy ..\GameConfig\17.png .\Package\
+copy ..\GameConfig\18.png .\Package\
+copy ..\GameConfig\19.png .\Package\
+copy ..\GameConfig\20.png .\Package\
+copy ..\GameConfig\32_584111F70002000100010001.png .\Package\
+copy ..\GameConfig\32_584111F70002000200010002.png .\Package\
+copy ..\GameConfig\64_584111F70002000100010001.png .\Package\
+copy ..\GameConfig\64_584111F70002000200010002.png .\Package\
+copy ..\GameConfig\ArcadeInfo.xml .\Package\
+copy ..\GameConfig\Minecraft_BOXART.png .\Package\
+copy ..\GameConfig\Minecraft_BKGND.png .\Package\
+copy ..\GameConfig\MinecraftIcon.png .\Package\
+copy ..\GameConfig\MinecraftMarketplace.png .\Package\
+copy ..\GameConfig\TitleAward1_F_icon-64.png .\Package\
+copy ..\GameConfig\TitleAward1_F_icon-128.png .\Package\
+copy ..\GameConfig\TitleAward1_M_icon-64.png .\Package\
+copy ..\GameConfig\TitleAward1_M_icon-128.png .\Package\
+copy ..\GameConfig\TitleAward2_F_icon-64.png .\Package\
+copy ..\GameConfig\TitleAward2_F_icon-128.png .\Package\
+copy ..\GameConfig\TitleAward2_M_icon-64.png .\Package\
+copy ..\GameConfig\TitleAward2_M_icon-128.png .\Package\
+copy ..\GameConfig\TitleAward3_icon-64.png .\Package\
+copy ..\GameConfig\TitleAward3_icon-128.png .\Package\
+copy ..\GameConfig\TitleAward3_icon-128.png .\Package\
+copy ..\GameConfig\Tshirt5_Porkchop_Female.bin .\Package\
+copy ..\GameConfig\Tshirt5_Porkchop_Male.bin .\Package\
+copy ..\GameConfig\MineCraft_Watch_Female.bin .\Package\
+copy ..\GameConfig\MineCraft_Watch_Male.bin .\Package\
+copy ..\GameConfig\Creeper_Cap.bin .\Package\
+copy ..\AvatarAwards .\Package\
+copy ..\584111F70AAAAAAA .\Package\
+
+xcopy /Y /S /I ..\res\*.* .\Package\res\
+xcopy /Y /S /I ..\kinect\speech\*.* .\Package\
+mkdir .\Package\Tutorial\
+copy ..\Tutorial\Tutorial .\Package\Tutorial\Tutorial
+
+pause
diff --git a/Minecraft.Client/Xbox/ContentPackageBuild/InstallMinecraftToKits - Full.cmd b/Minecraft.Client/Xbox/ContentPackageBuild/InstallMinecraftToKits - Full.cmd
new file mode 100644
index 00000000..b1d39ed8
--- /dev/null
+++ b/Minecraft.Client/Xbox/ContentPackageBuild/InstallMinecraftToKits - Full.cmd
@@ -0,0 +1,34 @@
+SET TOOLS_PATH="C:\Program Files (x86)\Microsoft Xbox 360 SDK\bin\win32"
+REM SET TOOLS_PATH="C:\Program Files\Microsoft Xbox 360 SDK\bin\win32"
+
+SET KIT1="4j_new_2"
+SET KIT2="4j_dev03"
+SET KIT3="dev4j_ms_06"
+SET KIT4="dev4j_02"
+SET KIT5="Marvin2"
+
+set TITLEID=584111F7
+
+copy Online\%TITLEID%00000000 .\%TITLEID%00000000
+
+%TOOLS_PATH%\Arcadelicense full %TITLEID%00000000
+
+
+
+%TOOLS_PATH%\xbdel /x:%KIT1% /r /f /h HDD:\Content\0000000000000000\%TITLEID%\000D0000\*.*
+%TOOLS_PATH%\xbcp /x:%KIT1% /t %TITLEID%00000000 HDD:\Content\0000000000000000\%TITLEID%\000D0000\%TITLEID%00000000
+
+%TOOLS_PATH%\xbdel /x:%KIT2% /r /f /h HDD:\Content\0000000000000000\%TITLEID%\000D0000\*.*
+%TOOLS_PATH%\xbcp /x:%KIT2% /t %TITLEID%00000000 HDD:\Content\0000000000000000\%TITLEID%\000D0000\%TITLEID%00000000
+
+%TOOLS_PATH%\xbdel /x:%KIT3% /r /f /h HDD:\Content\0000000000000000\%TITLEID%\000D0000\*.*
+%TOOLS_PATH%\xbcp /x:%KIT3% /t %TITLEID%00000000 HDD:\Content\0000000000000000\%TITLEID%\000D0000\%TITLEID%00000000
+
+%TOOLS_PATH%\xbdel /x:%KIT4% /r /f /h HDD:\Content\0000000000000000\%TITLEID%\000D0000\*.*
+%TOOLS_PATH%\xbcp /x:%KIT4% /t %TITLEID%00000000 HDD:\Content\0000000000000000\%TITLEID%\000D0000\%TITLEID%00000000
+
+%TOOLS_PATH%\xbdel /x:%KIT5% /r /f /h HDD:\Content\0000000000000000\%TITLEID%\000D0000\*.*
+%TOOLS_PATH%\xbcp /x:%KIT5% /t %TITLEID%00000000 HDD:\Content\0000000000000000\%TITLEID%\000D0000\%TITLEID%00000000
+
+
+pause
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/ContentPackageBuild/InstallMinecraftToKits - Trial.cmd b/Minecraft.Client/Xbox/ContentPackageBuild/InstallMinecraftToKits - Trial.cmd
new file mode 100644
index 00000000..e24b0a3f
--- /dev/null
+++ b/Minecraft.Client/Xbox/ContentPackageBuild/InstallMinecraftToKits - Trial.cmd
@@ -0,0 +1,33 @@
+SET TOOLS_PATH="C:\Program Files (x86)\Microsoft Xbox 360 SDK\bin\win32"
+REM SET TOOLS_PATH="C:\Program Files\Microsoft Xbox 360 SDK\bin\win32"
+
+SET KIT1="4j_new_2"
+SET KIT2="4j_dev03"
+SET KIT3="dev4j_ms_06"
+SET KIT4="dev4j_02"
+SET KIT5="Marvin2"
+
+set TITLEID=584111F7
+
+copy Online\%TITLEID%00000000 .\%TITLEID%00000000
+
+%TOOLS_PATH%\Arcadelicense trial 584111F700000000
+
+
+%TOOLS_PATH%\xbdel /x:%KIT1% /r /f /h HDD:\Content\0000000000000000\%TITLEID%\000D0000\*.*
+%TOOLS_PATH%\xbcp /x:%KIT1% /t %TITLEID%00000000 HDD:\Content\0000000000000000\%TITLEID%\000D0000\%TITLEID%00000000
+
+%TOOLS_PATH%\xbdel /x:%KIT2% /r /f /h HDD:\Content\0000000000000000\%TITLEID%\000D0000\*.*
+%TOOLS_PATH%\xbcp /x:%KIT2% /t %TITLEID%00000000 HDD:\Content\0000000000000000\%TITLEID%\000D0000\%TITLEID%00000000
+
+%TOOLS_PATH%\xbdel /x:%KIT3% /r /f /h HDD:\Content\0000000000000000\%TITLEID%\000D0000\*.*
+%TOOLS_PATH%\xbcp /x:%KIT3% /t %TITLEID%00000000 HDD:\Content\0000000000000000\%TITLEID%\000D0000\%TITLEID%00000000
+
+%TOOLS_PATH%\xbdel /x:%KIT4% /r /f /h HDD:\Content\0000000000000000\%TITLEID%\000D0000\*.*
+%TOOLS_PATH%\xbcp /x:%KIT4% /t %TITLEID%00000000 HDD:\Content\0000000000000000\%TITLEID%\000D0000\%TITLEID%00000000
+
+%TOOLS_PATH%\xbdel /x:%KIT5% /r /f /h HDD:\Content\0000000000000000\%TITLEID%\000D0000\*.*
+%TOOLS_PATH%\xbcp /x:%KIT5% /t %TITLEID%00000000 HDD:\Content\0000000000000000\%TITLEID%\000D0000\%TITLEID%00000000
+
+
+pause
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/ContentPackageBuild/MinecraftContentPackage.xlast b/Minecraft.Client/Xbox/ContentPackageBuild/MinecraftContentPackage.xlast
new file mode 100644
index 00000000..3cfb9033
Binary files /dev/null and b/Minecraft.Client/Xbox/ContentPackageBuild/MinecraftContentPackage.xlast differ
diff --git a/Minecraft.Client/Xbox/ContentPackageBuild/Minecraft_LicenseFull.bat b/Minecraft.Client/Xbox/ContentPackageBuild/Minecraft_LicenseFull.bat
new file mode 100644
index 00000000..4ee71ac2
--- /dev/null
+++ b/Minecraft.Client/Xbox/ContentPackageBuild/Minecraft_LicenseFull.bat
@@ -0,0 +1,3 @@
+Copy Online\584111F700000000 .\584111F700000000
+Arcadelicense full 584111F700000000
+pause
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/ContentPackageBuild/Minecraft_LicenseTrial.bat b/Minecraft.Client/Xbox/ContentPackageBuild/Minecraft_LicenseTrial.bat
new file mode 100644
index 00000000..49f9e3f8
--- /dev/null
+++ b/Minecraft.Client/Xbox/ContentPackageBuild/Minecraft_LicenseTrial.bat
@@ -0,0 +1,3 @@
+Copy Online\584111F700000000 .\584111F700000000
+Arcadelicense trial 584111F700000000
+pause
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Docs/4J Minecraft 1.0.1 update.docx b/Minecraft.Client/Xbox/Docs/4J Minecraft 1.0.1 update.docx
new file mode 100644
index 00000000..766c2ba8
Binary files /dev/null and b/Minecraft.Client/Xbox/Docs/4J Minecraft 1.0.1 update.docx differ
diff --git a/Minecraft.Client/Xbox/Docs/4J Minecraft 1.1 update.docx b/Minecraft.Client/Xbox/Docs/4J Minecraft 1.1 update.docx
new file mode 100644
index 00000000..231ce892
Binary files /dev/null and b/Minecraft.Client/Xbox/Docs/4J Minecraft 1.1 update.docx differ
diff --git a/Minecraft.Client/Xbox/Docs/4J Minecraft 1.2.3 update.docx b/Minecraft.Client/Xbox/Docs/4J Minecraft 1.2.3 update.docx
new file mode 100644
index 00000000..d01cac46
Binary files /dev/null and b/Minecraft.Client/Xbox/Docs/4J Minecraft 1.2.3 update.docx differ
diff --git a/Minecraft.Client/Xbox/Docs/4J Minecraft 1.3.1 update.docx b/Minecraft.Client/Xbox/Docs/4J Minecraft 1.3.1 update.docx
new file mode 100644
index 00000000..50720347
Binary files /dev/null and b/Minecraft.Client/Xbox/Docs/4J Minecraft 1.3.1 update.docx differ
diff --git a/Minecraft.Client/Xbox/Docs/4J Minecraft 1.7.3 update.docx b/Minecraft.Client/Xbox/Docs/4J Minecraft 1.7.3 update.docx
new file mode 100644
index 00000000..a1f14e9b
Binary files /dev/null and b/Minecraft.Client/Xbox/Docs/4J Minecraft 1.7.3 update.docx differ
diff --git a/Minecraft.Client/Xbox/Docs/4J Minecraft 1.8.2 update.docx b/Minecraft.Client/Xbox/Docs/4J Minecraft 1.8.2 update.docx
new file mode 100644
index 00000000..a1586a18
Binary files /dev/null and b/Minecraft.Client/Xbox/Docs/4J Minecraft 1.8.2 update.docx differ
diff --git a/Minecraft.Client/Xbox/Docs/4J Minecraft XBLA Design Changes & Additions v1.0.docx b/Minecraft.Client/Xbox/Docs/4J Minecraft XBLA Design Changes & Additions v1.0.docx
new file mode 100644
index 00000000..ee67528b
Binary files /dev/null and b/Minecraft.Client/Xbox/Docs/4J Minecraft XBLA Design Changes & Additions v1.0.docx differ
diff --git a/Minecraft.Client/Xbox/Docs/4J Minecraft XBLA Sentient Usage v1.0.docx b/Minecraft.Client/Xbox/Docs/4J Minecraft XBLA Sentient Usage v1.0.docx
new file mode 100644
index 00000000..a4608daa
Binary files /dev/null and b/Minecraft.Client/Xbox/Docs/4J Minecraft XBLA Sentient Usage v1.0.docx differ
diff --git a/Minecraft.Client/Xbox/Docs/4J Minecraft XBLA TMS.docx b/Minecraft.Client/Xbox/Docs/4J Minecraft XBLA TMS.docx
new file mode 100644
index 00000000..fca8a17e
Binary files /dev/null and b/Minecraft.Client/Xbox/Docs/4J Minecraft XBLA TMS.docx differ
diff --git a/Minecraft.Client/Xbox/Docs/GameOverview_Minecraft.doc b/Minecraft.Client/Xbox/Docs/GameOverview_Minecraft.doc
new file mode 100644
index 00000000..1f9bd10e
Binary files /dev/null and b/Minecraft.Client/Xbox/Docs/GameOverview_Minecraft.doc differ
diff --git a/Minecraft.Client/Xbox/Docs/Minecraft_XBLA_TIS_Nov2011.xls b/Minecraft.Client/Xbox/Docs/Minecraft_XBLA_TIS_Nov2011.xls
new file mode 100644
index 00000000..399de346
Binary files /dev/null and b/Minecraft.Client/Xbox/Docs/Minecraft_XBLA_TIS_Nov2011.xls differ
diff --git a/Minecraft.Client/Xbox/Docs/Minecraft_XBLA_TIS_Nov2011_Asia_SYA111511.xls b/Minecraft.Client/Xbox/Docs/Minecraft_XBLA_TIS_Nov2011_Asia_SYA111511.xls
new file mode 100644
index 00000000..5add8e82
Binary files /dev/null and b/Minecraft.Client/Xbox/Docs/Minecraft_XBLA_TIS_Nov2011_Asia_SYA111511.xls differ
diff --git a/Minecraft.Client/Xbox/Docs/Minecraft_XBLA_TIS_Nov2011_EU.xls b/Minecraft.Client/Xbox/Docs/Minecraft_XBLA_TIS_Nov2011_EU.xls
new file mode 100644
index 00000000..375662b4
Binary files /dev/null and b/Minecraft.Client/Xbox/Docs/Minecraft_XBLA_TIS_Nov2011_EU.xls differ
diff --git a/Minecraft.Client/Xbox/Docs/PDLC_Request_Form_Nov2010-IronTheme.xls b/Minecraft.Client/Xbox/Docs/PDLC_Request_Form_Nov2010-IronTheme.xls
new file mode 100644
index 00000000..13b8cf3f
Binary files /dev/null and b/Minecraft.Client/Xbox/Docs/PDLC_Request_Form_Nov2010-IronTheme.xls differ
diff --git a/Minecraft.Client/Xbox/Docs/PDLC_Request_Form_Nov2010.xls b/Minecraft.Client/Xbox/Docs/PDLC_Request_Form_Nov2010.xls
new file mode 100644
index 00000000..a2729c80
Binary files /dev/null and b/Minecraft.Client/Xbox/Docs/PDLC_Request_Form_Nov2010.xls differ
diff --git a/Minecraft.Client/Xbox/Docs/Ratings_Submission_Form.doc b/Minecraft.Client/Xbox/Docs/Ratings_Submission_Form.doc
new file mode 100644
index 00000000..91d965bd
Binary files /dev/null and b/Minecraft.Client/Xbox/Docs/Ratings_Submission_Form.doc differ
diff --git a/Minecraft.Client/Xbox/Docs/Xbox Live Avatar Items - Minecraft.xlsx b/Minecraft.Client/Xbox/Docs/Xbox Live Avatar Items - Minecraft.xlsx
new file mode 100644
index 00000000..5b58a73c
Binary files /dev/null and b/Minecraft.Client/Xbox/Docs/Xbox Live Avatar Items - Minecraft.xlsx differ
diff --git a/Minecraft.Client/Xbox/Font/XUI_Font.cpp b/Minecraft.Client/Xbox/Font/XUI_Font.cpp
new file mode 100644
index 00000000..8b1a624b
--- /dev/null
+++ b/Minecraft.Client/Xbox/Font/XUI_Font.cpp
@@ -0,0 +1,503 @@
+#include "stdafx.h"
+#include "..\..\Tesselator.h"
+#include "XUI_FontData.h"
+#include "XUI_Font.h"
+
+extern IDirect3DDevice9 *g_pD3DDevice;
+
+//--------------------------------------------------------------------------------------
+// Name: XUI_Font()
+// Desc: Constructor
+//--------------------------------------------------------------------------------------
+XUI_Font::XUI_Font(int iFontData, float scaleFactor, XUI_FontData *fontData)
+ : m_iFontData(iFontData), m_fScaleFactor(scaleFactor)
+{
+ m_fontData = fontData;
+ refCount = 0;
+
+ m_fCursorX = 0.0f;
+ m_fCursorY = 0.0f;
+
+ m_fXScaleFactor = m_fYScaleFactor = scaleFactor;
+
+ m_fSlantFactor = 0.0f;
+ m_bRotate = FALSE;
+ m_dRotCos = cos( 0.0 );
+ m_dRotSin = sin( 0.0 );
+
+ m_dwNestedBeginCount = 0L;
+
+ // Initialize the window
+ D3DDISPLAYMODE DisplayMode;
+ g_pD3DDevice->GetDisplayMode( 0, &DisplayMode );
+ m_rcWindow.x1 = 0;
+ m_rcWindow.y1 = 0;
+ m_rcWindow.x2 = DisplayMode.Width;
+ m_rcWindow.y2 = DisplayMode.Height;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Name: ~XUI_Font()
+// Desc: Destructor
+//--------------------------------------------------------------------------------------
+XUI_Font::~XUI_Font()
+{
+}
+
+//--------------------------------------------------------------------------------------
+// Name: GetTextExtent()
+// Desc: Get the dimensions of a text string
+//--------------------------------------------------------------------------------------
+
+VOID XUI_Font::GetTextExtent( const WCHAR* strText, FLOAT* pWidth,
+ FLOAT* pHeight, BOOL bFirstLineOnly ) const
+{
+ assert( pWidth != NULL );
+ assert( pHeight != NULL );
+
+ // Set default text extent in output parameters
+ int iWidth = 0;
+ FLOAT fHeight = 0.0f;
+
+ if( strText )
+ {
+ // Initialize counters that keep track of text extent
+ int ix = 0;
+ FLOAT fy = m_fontData->getFontHeight(); // One character high to start
+ if( fy > fHeight )
+ fHeight = fy;
+
+ // Loop through each character and update text extent
+ DWORD letter;
+ while( (letter = *strText) != 0 )
+ {
+ ++strText;
+
+ // Handle newline character
+ if( letter == L'\n' )
+ {
+ if( bFirstLineOnly )
+ break;
+ ix = 0;
+ fy += m_fontData->getFontYAdvance();
+ // since the height has changed, test against the height extent
+ if( fy > fHeight )
+ fHeight = fy;
+ }
+
+ // Handle carriage return characters by ignoring them. This helps when
+ // displaying text from a file.
+ if( letter == L'\r' )
+ continue;
+
+ // Translate unprintable characters
+ XUI_FontData::SChar sChar = m_fontData->getChar(letter);
+
+ // Get text extent for this character's glyph
+ ix += sChar.getOffset();
+ ix += sChar.getWAdvance();
+
+ // Since the x widened, test against the x extent
+ if (ix > iWidth) iWidth = ix;
+ }
+ }
+
+ // Convert the width to a float here, load/hit/store. :(
+ FLOAT fWidth = static_cast(iWidth); // Delay the use if fWidth to reduce LHS pain
+ // Apply the scale factor to the result
+ fHeight *= m_fYScaleFactor;
+ // Store the final results
+ *pHeight = fHeight;
+
+ fWidth *= m_fXScaleFactor;
+ *pWidth = fWidth;
+}
+
+//--------------------------------------------------------------------------------------
+// Name: GetTextWidth()
+// Desc: Returns the width in pixels of a text string
+//--------------------------------------------------------------------------------------
+FLOAT XUI_Font::GetTextWidth( const WCHAR* strText ) const
+{
+ FLOAT fTextWidth;
+ FLOAT fTextHeight;
+ GetTextExtent( strText, &fTextWidth, &fTextHeight );
+ return fTextWidth;
+}
+
+//--------------------------------------------------------------------------------------
+// Name: Begin()
+// Desc: Prepares the font vertex buffers for rendering.
+//--------------------------------------------------------------------------------------
+VOID XUI_Font::Begin()
+{
+ PIXBeginNamedEvent( 0, "Text Rendering" );
+
+ // Set state on the first call
+ if( 0 == m_dwNestedBeginCount )
+ {
+ // Cache the global pointer into a register
+ IDirect3DDevice9 *pD3dDevice = g_pD3DDevice;
+ assert( pD3dDevice );
+
+ // Set the texture scaling factor as a vertex shader constant
+ //D3DSURFACE_DESC TextureDesc;
+ //m_pFontTexture->GetLevelDesc( 0, &TextureDesc ); // Get the description
+
+ // Set render state
+ assert(m_fontData->m_pFontTexture != NULL || m_fontData->m_iFontTexture > 0);
+ if(m_fontData->m_pFontTexture != NULL)
+ {
+ pD3dDevice->SetTexture( 0, m_fontData->m_pFontTexture );
+ }
+ else
+ {
+ glBindTexture(GL_TEXTURE_2D, m_fontData->m_iFontTexture);
+ }
+
+ //// Read the TextureDesc here to ensure no load/hit/store from GetLevelDesc()
+ //FLOAT vTexScale[4];
+ //vTexScale[0] = 1.0f / TextureDesc.Width; // LHS due to int->float conversion
+ //vTexScale[1] = 1.0f / TextureDesc.Height;
+ //vTexScale[2] = 0.0f;
+ //vTexScale[3] = 0.0f;
+ //
+ //pD3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
+ //pD3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
+ //pD3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
+ //pD3dDevice->SetRenderState( D3DRS_BLENDOP, D3DBLENDOP_ADD );
+ //pD3dDevice->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE );
+ //pD3dDevice->SetRenderState( D3DRS_ALPHAREF, 0x08 );
+ //pD3dDevice->SetRenderState( D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL );
+ //pD3dDevice->SetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID );
+ //pD3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW );
+ //pD3dDevice->SetRenderState( D3DRS_ZENABLE, FALSE );
+ //pD3dDevice->SetRenderState( D3DRS_STENCILENABLE, FALSE );
+ //pD3dDevice->SetRenderState( D3DRS_VIEWPORTENABLE, FALSE );
+ //pD3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
+ //pD3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
+ //pD3dDevice->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP );
+ //pD3dDevice->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP );
+ }
+
+ // Keep track of the nested begin/end calls.
+ m_dwNestedBeginCount++;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Name: DrawText()
+// Desc: Draws text as textured polygons
+//--------------------------------------------------------------------------------------
+VOID XUI_Font::DrawText( DWORD dwColor, const WCHAR* strText, DWORD dwFlags,
+ FLOAT fMaxPixelWidth )
+{
+ DrawText( m_fCursorX, m_fCursorY, dwColor, strText, dwFlags, fMaxPixelWidth );
+}
+
+//--------------------------------------------------------------------------------------
+// Name: DrawShadowText()
+// Desc: Draws text as textured polygons
+//--------------------------------------------------------------------------------------
+VOID XUI_Font::DrawShadowText( FLOAT fOriginX, FLOAT fOriginY, DWORD dwColor, DWORD dwShadowColor,
+ const WCHAR* strText, DWORD dwFlags, FLOAT fMaxPixelWidth)
+{
+ float fXShadow=1.0f, fYShadow=1.0f;
+ // 4J Stu - Don't move the drop shadow as much
+ //DrawText( fOriginX + (1*m_fXScaleFactor), fOriginY + (1*m_fYScaleFactor), dwColor, strText, dwFlags, fMaxPixelWidth, true );
+
+ // 4J-PB - if we're in 480 widescreen, we need to draw the drop shadow at +2 pixels, so that when the scene is halved, it's at +1
+ if(!RenderManager.IsHiDef())
+ {
+ if(RenderManager.IsWidescreen())
+ {
+ fXShadow=2.0f;
+ fYShadow=2.0f;
+ }
+ //else
+ //{
+ // 480 SD mode - the draw text call will reposition the y
+ //}
+ }
+ DrawText( fOriginX + fXShadow, fOriginY + fYShadow, dwColor, strText, dwFlags, fMaxPixelWidth, true );
+ DrawText( fOriginX, fOriginY, dwColor, strText, dwFlags, fMaxPixelWidth );
+
+ //DrawText( fOriginX + 1, fOriginY + 1, dwShadowColor, strText, dwFlags, fMaxPixelWidth);
+ //DrawText( fOriginX, fOriginY, dwColor, strText, dwFlags, fMaxPixelWidth );
+}
+
+//--------------------------------------------------------------------------------------
+// Name: DrawText()
+// Desc: Draws text as textured polygons
+// TODO: This function should use the Begin/SetVertexData/End() API when it
+// becomes available.
+//--------------------------------------------------------------------------------------
+VOID XUI_Font::DrawText( FLOAT fOriginX, FLOAT fOriginY, DWORD dwColor,
+ const WCHAR* strText, DWORD dwFlags, FLOAT fMaxPixelWidth, bool darken /*= false*/ )
+{
+ if( NULL == strText ) return;
+ if( L'\0' == strText[0] ) return;
+
+ // 4J-PB - if we're in 480 widescreen mode, we need to ensure that the font characters are aligned on an even boundary if they are a 2x multiple
+ if(!RenderManager.IsHiDef())
+ {
+ if(RenderManager.IsWidescreen())
+ {
+ int iScaleX=(int)m_fXScaleFactor;
+ int iOriginX;
+ if(iScaleX%2==0)
+ {
+ iOriginX=(int)fOriginX;
+ if(iOriginX%2==1)
+ {
+ fOriginX+=1.0f;
+ }
+ }
+ int iScaleY=(int)m_fYScaleFactor;
+ int iOriginY;
+ if(iScaleY%2==0)
+ {
+ iOriginY=(int)fOriginY;
+ if(iOriginY%2==1)
+ {
+ fOriginY+=1.0f;
+ }
+ }
+ }
+ else
+ {
+ // 480 SD mode - y needs to be on a pixel boundary when multiplied by 1.5, so if it's an odd number, subtract 1/3 from it
+ int iOriginY=(int)fOriginY;
+ if(iOriginY%2==1)
+ {
+ fOriginY-=1.0f/3.0f;
+ }
+ }
+ }
+ // Create a PIX user-defined event that encapsulates all of the text draw calls.
+ // This makes DrawText calls easier to recognize in PIX captures, and it makes
+ // them take up fewer entries in the event list.
+ PIXBeginNamedEvent( dwColor, "DrawText: %S", strText );
+
+ // Set up stuff to prepare for drawing text
+ Begin();
+
+ if (darken)
+ {
+ int oldAlpha = dwColor & 0xff000000;
+ dwColor = (dwColor & 0xfcfcfc) >> 2;
+ dwColor += oldAlpha;
+ }
+
+ float r = ((dwColor >> 16) & 0xff) / 255.0f;
+ float g = ((dwColor >> 8) & 0xff) / 255.0f;
+ float b = ((dwColor) & 0xff) / 255.0f;
+ float a = ((dwColor >> 24) & 0xff) / 255.0f;
+ if (a == 0) a = 1;
+ // a = 1;
+ glColor4f(r, g, b, a);
+
+ // Set the starting screen position
+ if( ( fOriginX < 0.0f ) || ( ( dwFlags & ATGFONT_RIGHT ) && ( fOriginX <= 0.0f ) ) )
+ {
+ fOriginX += ( m_rcWindow.x2 - m_rcWindow.x1 );
+ }
+ // 4J-PB - not sure what this code was intending to do, but it removed a line of text that is slightly off the top of the control, rather than having it partially render
+// if( fOriginY < 0.0f )
+// {
+// fOriginY += ( m_rcWindow.y2 - m_rcWindow.y1 );
+// }
+
+ m_fCursorX = floorf( fOriginX );
+ m_fCursorY = floorf( fOriginY );
+
+ // Adjust for padding
+ fOriginY -= m_fontData->getFontTopPadding();
+
+ XUI_FontData::SChar sChar = m_fontData->getChar(L'.');
+ FLOAT fEllipsesPixelWidth = m_fXScaleFactor * 3.0f * (sChar.getOffset() + sChar.getWAdvance());
+
+ if( dwFlags & ATGFONT_TRUNCATED )
+ {
+ // Check if we will really need to truncate the string
+ if( fMaxPixelWidth <= 0.0f )
+ {
+ dwFlags &= ( ~ATGFONT_TRUNCATED );
+ }
+ else
+ {
+ FLOAT w, h;
+ GetTextExtent( strText, &w, &h, TRUE );
+
+ // If not, then clear the flag
+ if( w <= fMaxPixelWidth )
+ dwFlags &= ( ~ATGFONT_TRUNCATED );
+ }
+ }
+
+ // If vertically centered, offset the starting m_fCursorY value
+ if( dwFlags & ATGFONT_CENTER_Y )
+ {
+ FLOAT w, h;
+ GetTextExtent( strText, &w, &h );
+ m_fCursorY = floorf( m_fCursorY - (h * 0.5f) );
+ }
+
+ // Add window offsets
+ FLOAT Winx = static_cast(m_rcWindow.x1);
+ FLOAT Winy = static_cast(m_rcWindow.y1);
+ fOriginX += Winx;
+ fOriginY += Winy;
+ m_fCursorX += Winx;
+ m_fCursorY += Winy;
+
+ // Set a flag so we can determine initial justification effects
+ BOOL bStartingNewLine = TRUE;
+
+ DWORD dwNumEllipsesToDraw = 0;
+
+ // Begin drawing the vertices
+
+
+ DWORD dwNumChars = wcslen( strText ) + ( dwFlags & ATGFONT_TRUNCATED ? 3 : 0 );
+
+ bStartingNewLine = TRUE;
+
+ // Draw four vertices for each glyph
+ while( *strText )
+ {
+ WCHAR letter;
+
+ if( dwNumEllipsesToDraw )
+ {
+ letter = L'.';
+ }
+ else
+ {
+ // If starting text on a new line, determine justification effects
+ if( bStartingNewLine )
+ {
+ if( dwFlags & ( ATGFONT_RIGHT | ATGFONT_CENTER_X ) )
+ {
+ // Get the extent of this line
+ FLOAT w, h;
+ GetTextExtent( strText, &w, &h, TRUE );
+
+ // Offset this line's starting m_fCursorX value
+ if( dwFlags & ATGFONT_RIGHT )
+ m_fCursorX = floorf( fOriginX - w );
+ if( dwFlags & ATGFONT_CENTER_X )
+ m_fCursorX = floorf( fOriginX - w * 0.5f );
+ }
+ bStartingNewLine = FALSE;
+ }
+
+ // Get the current letter in the string
+ letter = *strText++;
+
+ // Handle the newline character
+ if( letter == L'\n' )
+ {
+ m_fCursorX = fOriginX;
+ m_fCursorY += m_fontData->getFontYAdvance() * m_fYScaleFactor;
+ bStartingNewLine = TRUE;
+
+ continue;
+ }
+
+ // Handle carriage return characters by ignoring them. This helps when
+ // displaying text from a file.
+ if( letter == L'\r' )
+ continue;
+ }
+
+ // Translate unprintable characters
+ XUI_FontData::SChar sChar = m_fontData->getChar( letter );
+
+ FLOAT fOffset = m_fXScaleFactor * ( FLOAT )sChar.getOffset();
+ FLOAT fAdvance = m_fXScaleFactor * ( FLOAT )sChar.getWAdvance();
+ // 4J Use the font max width otherwise scaling doesnt look right
+ FLOAT fWidth = m_fXScaleFactor * (sChar.tu2() - sChar.tu1());//( FLOAT )pGlyph->wWidth;
+ FLOAT fHeight = m_fYScaleFactor * m_fontData->getFontHeight();
+
+ if( 0 == dwNumEllipsesToDraw )
+ {
+ if( dwFlags & ATGFONT_TRUNCATED )
+ {
+ // Check if we will be exceeded the max allowed width
+ if( m_fCursorX + fOffset + fWidth + fEllipsesPixelWidth + m_fSlantFactor > fOriginX + fMaxPixelWidth )
+ {
+ // Yup, draw the three ellipses dots instead
+ dwNumEllipsesToDraw = 3;
+ continue;
+ }
+ }
+ }
+
+ // Setup the screen coordinates
+ m_fCursorX += fOffset;
+ FLOAT X4 = m_fCursorX;
+ FLOAT X1 = X4 + m_fSlantFactor;
+ FLOAT X3 = X4 + fWidth;
+ FLOAT X2 = X1 + fWidth;
+ FLOAT Y1 = m_fCursorY;
+ FLOAT Y3 = Y1 + fHeight;
+ FLOAT Y2 = Y1;
+ FLOAT Y4 = Y3;
+
+ m_fCursorX += fAdvance;
+
+ // Add the vertices to draw this glyph
+
+ FLOAT tu1 = sChar.tu1() / (float)m_fontData->getImageWidth();
+ FLOAT tv1 = sChar.tv1() / (float)m_fontData->getImageHeight();
+ FLOAT tu2 = sChar.tu2() / (float)m_fontData->getImageWidth();
+ FLOAT tv2 = sChar.tv2() / (float)m_fontData->getImageHeight();
+
+ Tesselator *t = Tesselator::getInstance();
+ t->begin();
+ t->vertexUV(X1, Y1, 0.0f, tu1, tv1);
+ t->vertexUV(X2, Y2, 0.0f, tu2, tv1);
+ t->vertexUV(X3, Y3, 0.0f, tu2, tv2);
+ t->vertexUV(X4, Y4, 0.0f, tu1, tv2);
+ t->end();
+
+
+ // If drawing ellipses, exit when they're all drawn
+ if( dwNumEllipsesToDraw )
+ {
+ if( --dwNumEllipsesToDraw == 0 )
+ break;
+ }
+
+ dwNumChars--;
+ }
+
+ // Undo window offsets
+ m_fCursorX -= Winx;
+ m_fCursorY -= Winy;
+
+ // Call End() to complete the begin/end pair for drawing text
+ End();
+
+ // Close off the user-defined event opened with PIXBeginNamedEvent.
+ PIXEndNamedEvent();
+}
+
+
+//--------------------------------------------------------------------------------------
+// Name: End()
+// Desc: Paired call that restores state set in the Begin() call.
+//--------------------------------------------------------------------------------------
+VOID XUI_Font::End()
+{
+ assert( m_dwNestedBeginCount > 0 );
+ if( --m_dwNestedBeginCount > 0 )
+ {
+ PIXEndNamedEvent();
+ return;
+ }
+
+ PIXEndNamedEvent();
+}
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Font/XUI_Font.h b/Minecraft.Client/Xbox/Font/XUI_Font.h
new file mode 100644
index 00000000..1b6278e3
--- /dev/null
+++ b/Minecraft.Client/Xbox/Font/XUI_Font.h
@@ -0,0 +1,93 @@
+#pragma once
+
+class XUI_FontData;
+
+// 4J This class is partially based of the ATG font implementation, modified to suit our uses for XUI
+
+//--------------------------------------------------------------------------------------
+// Flags for the Font::DrawText() function (Or them together to combine features)
+//--------------------------------------------------------------------------------------
+#define ATGFONT_LEFT 0x00000000
+#define ATGFONT_RIGHT 0x00000001
+#define ATGFONT_CENTER_X 0x00000002
+#define ATGFONT_CENTER_Y 0x00000004
+#define ATGFONT_TRUNCATED 0x00000008
+
+class XUI_Font
+{
+public:
+ XUI_FontData *m_fontData;
+
+public:
+ const int m_iFontData;
+ const float m_fScaleFactor;
+
+ FLOAT m_fXScaleFactor; // Scaling constants
+ FLOAT m_fYScaleFactor;
+ FLOAT m_fSlantFactor; // For italics
+ DOUBLE m_dRotCos; // Precalculated sine and cosine for italic like rotation
+ DOUBLE m_dRotSin;
+
+ D3DRECT m_rcWindow; // Bounds rect if the text window, modify via accessors only!
+ FLOAT m_fCursorX; // Current text cursor
+ FLOAT m_fCursorY;
+
+ BOOL m_bRotate;
+
+ DWORD m_dwNestedBeginCount;
+
+ wstring m_fontName;
+ wstring m_fallbackFont;
+ DWORD refCount;
+public:
+ float getScaleFactor() { return m_fScaleFactor; }
+ void GetScaleFactors(FLOAT *pfXScaleFactor, FLOAT *pfYScaleFactor) { *pfXScaleFactor = m_fScaleFactor; *pfYScaleFactor = m_fScaleFactor; }
+ // Accessor functions
+ inline VOID SetSlantFactor( FLOAT fSlantFactor )
+ {
+ m_fSlantFactor = fSlantFactor;
+ }
+
+ inline VOID SetScaleFactors( FLOAT fXScaleFactor, FLOAT fYScaleFactor )
+ {
+ // m_fXScaleFactor = m_fYScaleFactor = m_fScaleFactor;
+ }
+
+ void SetFallbackFont(const wstring &fallbackFont) { m_fallbackFont = fallbackFont; }
+ void IncRefCount() { ++refCount; }
+ void DecRefCount() { --refCount; }
+
+public:
+ XUI_Font(int iFontData, float scaleFactor, XUI_FontData *fontData);
+ ~XUI_Font();
+
+ // Returns the dimensions of a text string
+ VOID GetTextExtent( const WCHAR* strText, FLOAT* pWidth,
+ FLOAT* pHeight, BOOL bFirstLineOnly=FALSE ) const;
+ FLOAT GetTextWidth( const WCHAR* strText ) const;
+ FLOAT GetCharAdvance( const WCHAR* strChar ) const;
+
+ VOID SetWindow(const D3DRECT &rcWindow );
+ VOID SetWindow( LONG x1, LONG y1, LONG x2, LONG y2 );
+ VOID GetWindow(D3DRECT &rcWindow) const;
+ VOID SetCursorPosition( FLOAT fCursorX, FLOAT fCursorY );
+ VOID SetRotationFactor( FLOAT fRotationFactor );
+
+ // Function to create a texture containing rendered text
+ D3DTexture* CreateTexture( const WCHAR* strText,
+ D3DCOLOR dwBackgroundColor = 0x00000000,
+ D3DCOLOR dwTextColor = 0xffffffff,
+ D3DFORMAT d3dFormat = D3DFMT_A8R8G8B8 );
+
+ // Public calls to render text. Callers can simply call DrawText(), but for
+ // performance, they should batch multiple calls together, bracketed by calls to
+ // Begin() and End().
+ VOID Begin();
+ VOID DrawText( DWORD dwColor, const WCHAR* strText, DWORD dwFlags=0L,
+ FLOAT fMaxPixelWidth = 0.0f );
+ VOID DrawText( FLOAT sx, FLOAT sy, DWORD dwColor, const WCHAR* strText,
+ DWORD dwFlags=0L, FLOAT fMaxPixelWidth = 0.0f, bool darken = false );
+ VOID DrawShadowText( FLOAT sx, FLOAT sy, DWORD dwColor, DWORD dwShadowColor, const WCHAR* strText,
+ DWORD dwFlags=0L, FLOAT fMaxPixelWidth = 0.0f );
+ VOID End();
+};
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Font/XUI_FontData.cpp b/Minecraft.Client/Xbox/Font/XUI_FontData.cpp
new file mode 100644
index 00000000..7a70cdfb
--- /dev/null
+++ b/Minecraft.Client/Xbox/Font/XUI_FontData.cpp
@@ -0,0 +1,395 @@
+#include "stdafx.h"
+#include "..\..\stubs.h"
+#include "..\..\Minecraft.h"
+#include "..\..\Textures.h"
+#include "XUI_FontData.h"
+#include "..\..\..\Minecraft.World\StringHelpers.h"
+
+
+#define USE_NEW 0
+
+
+extern IDirect3DDevice9 *g_pD3DDevice;
+
+int XUI_FontData::getMaxGlyph()
+{
+ return m_fontData->getFontData()->m_uiGlyphCount;
+}
+
+float XUI_FontData::getFontHeight()
+{
+ return m_fontData->getFontData()->m_uiGlyphHeight;
+}
+
+float XUI_FontData::getFontTopPadding()
+{
+ return 0;
+}
+
+float XUI_FontData::getFontBottomPadding()
+{
+ return 0;
+}
+
+float XUI_FontData::getFontYAdvance()
+{
+ return m_fontData->getFontData()->m_uiGlyphHeight - 1;
+}
+
+float XUI_FontData::getFontMaxWidth()
+{
+ return m_fontData->getFontData()->m_uiGlyphWidth;
+}
+
+float XUI_FontData::getMaxDescent()
+{
+ return 0;
+}
+
+float XUI_FontData::getMaxAscent()
+{
+ return m_fontData->getFontData()->m_uiGlyphHeight;
+}
+
+int XUI_FontData::getImageWidth()
+{
+ return m_fontData->getFontData()->m_uiGlyphMapX;
+}
+
+int XUI_FontData::getImageHeight()
+{
+ return m_fontData->getFontData()->m_uiGlyphMapY;
+}
+
+float XUI_FontData::SChar::getMinX()
+{
+ return 0.0f;
+}
+
+float XUI_FontData::SChar::getMaxX()
+{
+ return (float) m_parent->m_fontData->getFontData()->m_uiGlyphWidth;
+}
+
+float XUI_FontData::SChar::getMinY()
+{
+ return 0.0f;
+}
+
+float XUI_FontData::SChar::getMaxY()
+{
+ return 0.0f; //m_parent->m_fontData->getFontData()->m_uiGlyphHeight;
+}
+
+float XUI_FontData::SChar::getAdvance()
+{
+ return (float) m_parent->m_fontData->getWidth(m_glyphId);
+}
+
+int XUI_FontData::SChar::getGlyphId()
+{
+ return m_glyphId;
+}
+
+#define USE_NEW_UV 1
+
+int XUI_FontData::SChar::tu1()
+{
+#if USE_NEW_UV
+ int row = 0, col = 0;
+ m_parent->m_fontData->getPos(m_glyphId, row, col);
+ return col * m_parent->m_fontData->getFontData()->m_uiGlyphWidth;
+#else
+ return m_parent->m_Glyphs[m_glyphId].tu1;
+#endif
+}
+
+int XUI_FontData::SChar::tu2()
+{
+#if USE_NEW_UV
+ return tu1() + m_parent->m_fontData->getFontData()->m_uiGlyphWidth;
+#else
+ return m_parent->m_Glyphs[m_glyphId].tu2;
+#endif
+}
+
+int XUI_FontData::SChar::tv1()
+{
+#if USE_NEW_UV
+ int row = 0, col = 0;
+ m_parent->m_fontData->getPos(m_glyphId, row, col);
+ return row * m_parent->m_fontData->getFontData()->m_uiGlyphHeight + 1;
+#else
+ return m_parent->m_Glyphs[m_glyphId].tv1;
+#endif
+}
+
+int XUI_FontData::SChar::tv2()
+{
+#if USE_NEW_UV
+ return tv1() + m_parent->m_fontData->getFontData()->m_uiGlyphHeight;
+#else
+ return m_parent->m_Glyphs[m_glyphId].tv2;
+#endif
+}
+
+short XUI_FontData::SChar::getOffset()
+{
+ return 0;
+}
+
+short XUI_FontData::SChar::getWAdvance()
+{
+ return 0;
+}
+
+XUI_FontData::SChar XUI_FontData::getChar(const wchar_t strChar)
+{
+ SChar out;
+ out.m_glyphId = m_fontData->getGlyphId((unsigned int) strChar);
+ out.m_parent = this;
+ return out;
+}
+
+//--------------------------------------------------------------------------------------
+// Name: XUI_FontData()
+// Desc: Constructor
+//--------------------------------------------------------------------------------------
+XUI_FontData::XUI_FontData()
+{
+ m_pFontTexture = NULL;
+ m_iFontTexture = -1;
+
+ m_dwNumGlyphs = 0L;
+ m_Glyphs = NULL;
+
+ m_cMaxGlyph = 0;
+
+ m_dwNestedBeginCount = 0L;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Name: ~XUI_FontData()
+// Desc: Destructor
+//--------------------------------------------------------------------------------------
+XUI_FontData::~XUI_FontData()
+{
+ Destroy();
+}
+
+
+//--------------------------------------------------------------------------------------
+// Name: Create()
+// Desc: Create the font's internal objects (texture and array of glyph info)
+// using the XPR packed resource file
+//--------------------------------------------------------------------------------------
+HRESULT XUI_FontData::Create( SFontData &sfontdata )
+{
+#ifndef _CONTENT_PACKAGE
+ app.DebugPrintf("Attempting to load font data for font: '%s'\n", sfontdata.m_strFontName.c_str());
+#endif
+
+ BufferedImage *img = new BufferedImage(sfontdata.m_wstrFilename, false, true);
+
+ m_iFontTexture = Minecraft::GetInstance()->textures->getTexture(img, C4JRender::TEXTURE_FORMAT_RxGyBzAw, false);
+
+ int imgWidth = img->getWidth(), imgHeight = img->getHeight();
+ intArray rawPixels(imgWidth * imgHeight);
+ img->getRGB(0, 0, imgWidth, imgHeight, rawPixels, 0, imgWidth);
+ delete img;
+
+ m_fontData = new CFontData( sfontdata, rawPixels.data );
+
+ if (rawPixels.data != NULL) delete [] rawPixels.data;
+
+#if 0
+ { // 4J-JEV: Load in FontData (ABC) file, and initialize member variables from it.
+
+ const ULONG_PTR c_ModuleHandle = (ULONG_PTR)GetModuleHandle(NULL);
+
+ //wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", L"media/font/Mojangles_10.abc");
+ wsprintfW(szResourceLocator,L"section://%X,%s#%s%s%s",c_ModuleHandle,L"media", L"media/font/",strFontFileName.c_str(),L".abc");
+
+ BYTE *buffer;
+ UINT bufferSize;
+ hr = XuiResourceLoadAllNoLoc(
+ szResourceLocator,
+ &buffer,
+ &bufferSize
+ );
+ if( FAILED(hr) ) app.FatalLoadError();
+
+ //return Create( tex, buffer );
+ hr = Create( m_iFontTexture, buffer );
+ XuiFree(buffer);
+ }
+
+ // The ABC's are wrong, so recalc
+ // TODO 4J Stu - This isn't going to change every time we run the app, so really the FontMaker tool needs
+ // changed, or at the very least the .abc files need pre-processed to store the values we want
+ int rowV = 0;
+ int rowXOffset = 0;
+
+
+ for (unsigned int i = 0; i < 299; i++)
+ {
+ // Translate unprintable characters
+ GLYPH_ATTR* pGlyph;
+
+ DWORD letter = m_fontData->getGlyphId(i);
+ if( letter == 0 || letter >= 280 ) continue;
+ pGlyph = (GLYPH_ATTR*)&m_Glyphs[letter]; // Get the requested glyph
+
+ // 4J Stu - The original ABC's were generated for a font height that is 1 pixel higher than our cleaned up version
+ // We adjust for 1 pixel padding in the y at the top of each box.
+ pGlyph->tv1++;
+
+ if( pGlyph->tv1 != rowV )
+ {
+ rowV = pGlyph->tv1;
+ rowXOffset = 0;
+ }
+ if( pGlyph->wOffset > 0 )
+ {
+ rowXOffset += pGlyph->wOffset;
+ pGlyph->wOffset = 0;
+ }
+
+ pGlyph->tu1 -= rowXOffset;
+ pGlyph->tu2 -= rowXOffset;
+
+ int x = pGlyph->tu2-1;
+ int emptyColumnX = x;
+ for (; x >= pGlyph->tu1; x--)
+ {
+ bool emptyColumn = true;
+ for (int y = pGlyph->tv1; y < pGlyph->tv2; y++)
+ {
+ int rawPix = rawPixels[x + (y*imgWidth)];
+ DWORD pixel = rawPixels[x + (y*imgWidth)] & 0xff000000;
+ if (pixel > 0) emptyColumn = false;
+ }
+
+ if (!emptyColumn && emptyColumnX == pGlyph->tu2-1)
+ {
+ emptyColumnX = x;
+ }
+ }
+ if(emptyColumnX != pGlyph->tu2-1)
+ {
+ pGlyph->wWidth = emptyColumnX-pGlyph->tu1;
+ pGlyph->wAdvance = pGlyph->wWidth + 1;
+ }
+ }
+#endif
+
+ return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Name: Create()
+// Desc: Create the font's internal objects (texture and array of glyph info)
+//--------------------------------------------------------------------------------------
+//HRESULT XUI_FontData::Create( D3DTexture* pFontTexture, const VOID* pFontData )
+HRESULT XUI_FontData::Create( int iFontTexture, const VOID* pFontData )
+{
+ // Save a copy of the texture
+ //m_pFontTexture = pFontTexture;
+#if 0
+ m_iFontTexture = iFontTexture;
+
+ // Check version of file (to make sure it matches up with the FontMaker tool)
+ const BYTE* pData = static_cast(pFontData);
+ DWORD dwFileVersion = reinterpret_cast(pData)->m_dwFileVersion;
+
+ if( dwFileVersion == ATGFONTFILEVERSION )
+ {
+ //m_fFontHeight = reinterpret_cast(pData)->m_fFontHeight;
+ //m_fFontTopPadding = reinterpret_cast(pData)->m_fFontTopPadding;
+ //m_fFontBottomPadding = reinterpret_cast(pData)->m_fFontBottomPadding;
+ //m_fFontYAdvance = reinterpret_cast(pData)->m_fFontYAdvance;
+
+ // Point to the translator string which immediately follows the 4 floats
+ m_cMaxGlyph = reinterpret_cast(pData)->m_cMaxGlyph;
+
+ WCHAR* translatorTable = const_cast(reinterpret_cast(pData))->m_TranslatorTable;
+
+ // 4J Stu - This map saves us some memory because the translatorTable is largely empty
+ // If we were ever to use >50% of the table then we should store it and use directly rather than the map
+ for( unsigned short i = 0; i < m_cMaxGlyph + 1; ++i )
+ {
+ if( translatorTable[i] == 0 ) continue;
+ m_TranslatorMap.insert( unordered_map::value_type(i, translatorTable[i]) );
+ }
+
+ pData += ATGCALCFONTFILEHEADERSIZE( m_cMaxGlyph + 1 );
+
+ // Read the glyph attributes from the file
+ m_dwNumGlyphs = reinterpret_cast(pData)->m_dwNumGlyphs;
+ m_Glyphs = new GLYPH_ATTR[m_dwNumGlyphs];
+ memcpy(m_Glyphs, reinterpret_cast(pData)->m_Glyphs, sizeof(GLYPH_ATTR) * m_dwNumGlyphs);
+
+ //m_dwNumGlyphs = m_fontData->getFontData()->m_uiGlyphCount;
+ }
+ else
+ {
+ app.DebugPrintf( "Incorrect version number on font file!\n" );
+ return E_FAIL;
+ }
+#endif
+ return S_OK;
+}
+
+
+//--------------------------------------------------------------------------------------
+// Name: Destroy()
+// Desc: Destroy the font object
+//--------------------------------------------------------------------------------------
+VOID XUI_FontData::Destroy()
+{
+ if(m_pFontTexture!=NULL)
+ {
+ m_pFontTexture->Release();
+ delete m_pFontTexture;
+ }
+
+ m_fontData->release();
+
+ m_pFontTexture = NULL;
+ m_dwNumGlyphs = 0L;
+ m_cMaxGlyph = 0;
+
+ m_dwNestedBeginCount = 0L;
+}
+
+/*
+FLOAT XUI_FontData::GetCharAdvance( const WCHAR* strChar )
+{
+ unsigned int uiChar = (unsigned int) *strChar;
+ return 0.0f;// m_fontData.getAdvance(m_fontData.getGlyphId(uiChar));
+}
+
+FLOAT XUI_FontData::GetCharWidth( const WCHAR* strChar )
+{
+ return 0.0f;
+}
+
+void XUI_FontData::GetCharMetrics( const WCHAR* strChar, XUICharMetrics *xuiMetrics)
+{
+ unsigned int uiChar = (unsigned int) *strChar;
+ unsigned short usGlyph = m_fontData->getGlyphId(uiChar);
+
+ xuiMetrics->fAdvance = m_fontData->getWidth(usGlyph); //.getAdvance(usGlyph) * (float) m_fontData.getFontData()->m_uiGlyphHeight;
+ xuiMetrics->fMaxX = (float) m_fontData->getFontData()->m_uiGlyphWidth;
+ xuiMetrics->fMinX = 0.0f;
+ xuiMetrics->fMaxY = 0;// m_fontData.getFontData()->m_fAscent * (float) m_fontData.getFontData()->m_uiGlyphHeight;
+ xuiMetrics->fMinY = 0;//m_fontData.getFontData()->m_fDescent * (float) m_fontData.getFontData()->m_uiGlyphHeight;
+}
+
+unsigned short XUI_FontData::getGlyphId(wchar_t character)
+ {
+ return m_fontData->getGlyphId( (unsigned int) character );
+}
+*/
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Font/XUI_FontData.h b/Minecraft.Client/Xbox/Font/XUI_FontData.h
new file mode 100644
index 00000000..af18c7a6
--- /dev/null
+++ b/Minecraft.Client/Xbox/Font/XUI_FontData.h
@@ -0,0 +1,147 @@
+#pragma once
+using namespace std;
+#include
+
+#include "..\..\Common\UI\UIFontData.h"
+
+// 4J This class is partially based of the ATG font implementation
+//--------------------------------------------------------------------------------------
+// Name: GLYPH_ATTR
+// Desc: Structure to hold information about one glyph (font character image)
+//--------------------------------------------------------------------------------------
+typedef struct GLYPH_ATTR
+{
+ WORD tu1, tv1, tu2, tv2; // Texture coordinates for the image
+ SHORT wOffset; // Pixel offset for glyph start
+ SHORT wWidth; // Pixel width of the glyph
+ SHORT wAdvance; // Pixels to advance after the glyph
+ WORD wMask; // Channel mask
+} GLYPH_ATTR;
+
+//
+// These two structures are mapped to data loaded from disk.
+// DO NOT ALTER ANY ENTRIES OR YOU WILL BREAK
+// COMPATIBILITY WITH THE FONT FILE
+//
+
+// Font description
+
+#define ATGCALCFONTFILEHEADERSIZE(x) ( sizeof(DWORD) + (sizeof(FLOAT)*4) + sizeof(WORD) + (sizeof(WCHAR)*(x)) )
+#define ATGFONTFILEVERSION 5
+
+typedef struct FontFileHeaderImage_t {
+ DWORD m_dwFileVersion; // Version of the font file (Must match FONTFILEVERSION)
+ FLOAT m_fFontHeight; // Height of the font strike in pixels
+ FLOAT m_fFontTopPadding; // Padding above the strike zone
+ FLOAT m_fFontBottomPadding; // Padding below the strike zone
+ FLOAT m_fFontYAdvance; // Number of pixels to move the cursor for a line feed
+ WORD m_cMaxGlyph; // Number of font characters (Should be an odd number to maintain DWORD Alignment)
+ WCHAR m_TranslatorTable[1]; // ASCII to Glyph lookup table, NOTE: It's m_cMaxGlyph+1 in size.
+ // Entry 0 maps to the "Unknown" glyph.
+} FontFileHeaderImage_t;
+
+// Font strike array. Immediately follows the FontFileHeaderImage_t
+// structure image
+
+typedef struct FontFileStrikesImage_t {
+ DWORD m_dwNumGlyphs; // Size of font strike array (First entry is the unknown glyph)
+ GLYPH_ATTR m_Glyphs[1]; // Array of font strike uv's etc... NOTE: It's m_dwNumGlyphs in size
+} FontFileStrikesImage_t;
+
+typedef struct _CharMetrics
+{
+ // units are pixels at current font size
+
+ float fMinX; // min x coordinate
+ float fMinY; // min y coordinate
+ float fMaxX; // max x coordinate
+ float fMaxY; // max y coordinate
+ float fAdvance; // advance value
+} CharMetrics;
+
+class XUI_FontData
+{
+public:
+ int getMaxGlyph();
+ float getFontHeight();
+ float getFontTopPadding();
+ float getFontBottomPadding();
+ float getFontYAdvance();
+ float getFontMaxWidth();
+ float getMaxDescent();
+ float getMaxAscent();
+ int getImageWidth();
+ int getImageHeight();
+
+ typedef struct
+ {
+ friend class XUI_FontData;
+
+ private:
+ unsigned short m_glyphId;
+ XUI_FontData *m_parent;
+
+ public:
+ bool hasChar() { return true; }
+ float getMinX();
+ float getMinY();
+ float getMaxX();
+ float getMaxY();
+ float getAdvance();
+ int getGlyphId();
+ int tu1();
+ int tu2();
+ int tv1();
+ int tv2(); // Texture coordinates for the image
+ short getOffset(); // Pixel offset for glyph start
+ short getWidth(); // Pixel width of the glyph
+ short getWAdvance(); // Pixels to advance after the glyph
+ WORD getMask(); // Channel mask, tv2;
+ } SChar;
+
+ SChar getChar(const wchar_t strChar);
+
+ // D3D rendering objects
+ D3DTexture* m_pFontTexture;
+ int m_iFontTexture;
+
+private:
+ unordered_map m_TranslatorMap;
+
+ CharMetrics *m_characterMetrics;
+
+ // Translator table for supporting unicode ranges
+ DWORD m_cMaxGlyph; // Number of entries in the translator table
+
+ // Glyph data for the font
+ DWORD m_dwNumGlyphs; // Number of valid glyphs
+ GLYPH_ATTR* m_Glyphs; // Array of glyphs
+
+ DWORD m_dwNestedBeginCount;
+
+
+protected:
+ CFontData *m_fontData;
+
+public:
+ // Accessor functions
+ inline D3DTexture* GetTexture() const
+ {
+ return m_pFontTexture;
+ }
+
+public:
+ XUI_FontData();
+ ~XUI_FontData();
+
+ // Functions to create and destroy the internal objects
+ HRESULT Create( SFontData &sfontdata );
+ //HRESULT Create( D3DTexture* pFontTexture, const VOID* pFontData );
+ HRESULT Create( int iFontTexture, const VOID* pFontData );
+ VOID Destroy();
+
+ //FLOAT GetCharAdvance( const WCHAR* strChar );
+ //FLOAT GetCharWidth( const WCHAR* strChar );
+ //void GetCharMetrics( const WCHAR* strChar, XUICharMetrics *xuiMetrics);
+ //unsigned short getGlyphId(wchar_t character);
+};
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Font/XUI_FontRenderer.cpp b/Minecraft.Client/Xbox/Font/XUI_FontRenderer.cpp
new file mode 100644
index 00000000..48581905
--- /dev/null
+++ b/Minecraft.Client/Xbox/Font/XUI_FontRenderer.cpp
@@ -0,0 +1,307 @@
+#include "stdafx.h"
+#include "XUI_FontRenderer.h"
+#include "XUI_Font.h"
+#include "XUI_FontData.h"
+#include "..\..\..\Minecraft.World\StringHelpers.h"
+
+extern IDirect3DDevice9 *g_pD3DDevice;
+extern void GetRenderAndSamplerStates(IDirect3DDevice9 *pDevice,DWORD *RenderStateA,DWORD *SamplerStateA);
+extern void SetRenderAndSamplerStates(IDirect3DDevice9 *pDevice,DWORD *RenderStateA,DWORD *SamplerStateA);
+
+XUI_FontRenderer::XUI_FontRenderer()
+{
+ ZeroMemory(m_loadedFontData, sizeof(XUI_FontData*) * eFontData_MAX);
+
+ //XuiFontSetRenderer(this);
+
+ //Minecraft *pMinecraft=Minecraft::GetInstance();
+
+ //ScreenSizeCalculator ssc(pMinecraft->options, pMinecraft->width_phys, pMinecraft->height_phys);
+ //m_fScreenWidth=(float)pMinecraft->width_phys;
+ //m_fRawWidth=(float)ssc.rawWidth;
+ //m_fScreenHeight=(float)pMinecraft->height_phys;
+ //m_fRawHeight=(float)ssc.rawHeight;
+}
+
+HRESULT XUI_FontRenderer::Init( float fDpi )
+{
+ return( S_OK );
+
+}
+
+VOID XUI_FontRenderer::Term()
+{
+ return;
+}
+
+HRESULT XUI_FontRenderer::GetCaps( DWORD * pdwCaps )
+{
+ if( pdwCaps != NULL )
+ {
+ // setting this means XUI calls the DrawCharsToDevice method
+ *pdwCaps = XUI_FONT_RENDERER_CAP_INTERNAL_GLYPH_CACHE | XUI_FONT_RENDERER_CAP_POINT_SIZE_RESPECTED | XUI_FONT_RENDERER_STYLE_DROPSHADOW;
+ }
+ return ( S_OK );
+}
+
+HRESULT XUI_FontRenderer::CreateFont( const TypefaceDescriptor * pTypefaceDescriptor, float fPointSize, DWORD dwStyle, DWORD dwReserved, HFONTOBJ * phFont )
+{
+ float fXuiSize = fPointSize * ( 16.0f / 14.0f );
+ //float fXuiSize = fPointSize * ( 16.0f / 16.0f );
+ fXuiSize /= 4.0f;
+ fXuiSize = floor( fXuiSize );
+ int xuiSize = (int)(fXuiSize * 4.0f);
+ if( xuiSize < 1 ) xuiSize = 8;
+
+ // 4J Stu - We have fonts based on multiples of 8 or 12
+ // We don't want to make the text larger as then it may not fit in the box specified
+ // so we decrease the size until we find one that will look ok
+ while( xuiSize%8!=0 && xuiSize%12!=0 ) xuiSize -= 2;
+
+ //app.DebugPrintf("point size is: %f, xuiSize is: %d\n", fPointSize, xuiSize);
+
+ XUI_Font *font = NULL;
+ XUI_FontData *fontData = NULL;
+ FLOAT scale = 1;
+
+ eFontData efontdata;
+ if( xuiSize%12==0 )
+ {
+ scale = xuiSize/12;
+ efontdata = eFontData_Mojangles_11;
+ }
+ else
+ {
+ scale = xuiSize/8;
+ efontdata = eFontData_Mojangles_7;
+ }
+
+ font = m_loadedFonts[efontdata][scale];
+ if (font == NULL)
+ {
+ fontData = m_loadedFontData[efontdata];
+ if (fontData == NULL)
+ {
+ SFontData *sfontdata;
+ switch (efontdata)
+ {
+ case eFontData_Mojangles_7: sfontdata = &SFontData::Mojangles_7; break;
+ case eFontData_Mojangles_11: sfontdata = &SFontData::Mojangles_11; break;
+ default: sfontdata = NULL; break;
+ }
+
+ fontData = new XUI_FontData();
+ fontData->Create(*sfontdata);
+
+ m_loadedFontData[efontdata] = fontData;
+ }
+
+ font = new XUI_Font( efontdata, scale, fontData );
+ m_loadedFonts[efontdata][scale] = font;
+ }
+ font->IncRefCount();
+
+ *phFont = (HFONTOBJ)font;
+ return S_OK;
+}
+
+VOID XUI_FontRenderer::ReleaseFont( HFONTOBJ hFont )
+{
+ XUI_Font *xuiFont = (XUI_Font*) hFont;
+ if (xuiFont != NULL)
+ {
+ xuiFont->DecRefCount();
+ if (xuiFont->refCount <= 0)
+ {
+ AUTO_VAR(it, m_loadedFonts[xuiFont->m_iFontData].find(xuiFont->m_fScaleFactor) );
+ if (it != m_loadedFonts[xuiFont->m_iFontData].end()) m_loadedFonts[xuiFont->m_iFontData].erase(it);
+ delete hFont;
+ }
+ }
+ return;
+}
+
+HRESULT XUI_FontRenderer::GetFontMetrics( HFONTOBJ hFont, XUIFontMetrics *pFontMetrics )
+{
+ if( hFont == 0 || pFontMetrics == 0 ) return E_INVALIDARG;
+
+ XUI_Font *font = (XUI_Font *)hFont;
+
+ pFontMetrics->fLineHeight = (font->m_fontData->getFontYAdvance() + 1) * font->m_fYScaleFactor;
+ pFontMetrics->fMaxAscent = font->m_fontData->getMaxAscent() * font->m_fYScaleFactor;
+ pFontMetrics->fMaxDescent = font->m_fontData->getMaxDescent() * font->m_fYScaleFactor;
+ pFontMetrics->fMaxHeight = font->m_fontData->getFontHeight() * font->m_fYScaleFactor;
+ pFontMetrics->fMaxWidth = font->m_fontData->getFontMaxWidth() * font->m_fXScaleFactor;
+ pFontMetrics->fMaxAdvance = font->m_fontData->getFontMaxWidth() * font->m_fXScaleFactor;
+
+ //*pFontMetrics = font->m_fontMetrics; // g_fontMetrics;
+ return( S_OK );
+}
+
+HRESULT XUI_FontRenderer::GetCharMetrics( HFONTOBJ hFont, WCHAR wch, XUICharMetrics *pCharMetrics )
+{
+ if (hFont == 0 || pCharMetrics == 0) return E_INVALIDARG;
+
+ XUI_Font *font = (XUI_Font *)hFont;
+ XUI_FontData::SChar sChar = font->m_fontData->getChar(wch);
+
+ pCharMetrics->fMinX = sChar.getMinX() * font->m_fYScaleFactor;
+ pCharMetrics->fMinY = sChar.getMinY() * font->m_fYScaleFactor;
+ pCharMetrics->fMaxX = sChar.getMaxX() * font->m_fYScaleFactor;
+ pCharMetrics->fMaxY = sChar.getMaxY() * font->m_fYScaleFactor;
+ pCharMetrics->fAdvance = sChar.getAdvance() * font->m_fYScaleFactor;
+
+ return(S_OK);
+}
+
+HRESULT XUI_FontRenderer::DrawCharToTexture( HFONTOBJ hFont, WCHAR wch, HXUIDC hDC, IXuiTexture * pTexture, UINT x, UINT y, UINT width, UINT height, UINT insetX, UINT insetY )
+{
+ if( hFont==0 || pTexture==NULL ) return E_INVALIDARG;
+ return( S_OK );
+}
+
+HRESULT XUI_FontRenderer::DrawCharsToDevice( HFONTOBJ hFont, CharData * pCharData, DWORD dwCount, RECT *pClipRect, HXUIDC hDC, D3DXMATRIX * pWorldViewProj )
+{
+ if( hFont == 0 ) return E_INVALIDARG;
+ if( dwCount == 0 ) return( S_OK );
+
+ DWORD RenderStateA[8];
+ DWORD SamplerStateA[5];
+ XMVECTOR vconsts[20];
+ XMVECTOR pconsts[20];
+ XUI_Font *font = (XUI_Font *)hFont;
+
+ // 4J-PB - if we're in 480 Widescreen mode, we need to ensure that the font characters are aligned on an even boundary if they are a 2x multiple
+ if(!RenderManager.IsHiDef())
+ {
+ if(RenderManager.IsWidescreen())
+ {
+ float fScaleX, fScaleY;
+ font->GetScaleFactors(&fScaleX,&fScaleY);
+ int iScaleX=fScaleX;
+ int iScaleY=fScaleY;
+
+ if(iScaleX%2==0)
+ {
+ int iWorldX=pWorldViewProj->_41;
+ pWorldViewProj->_41 = (float)(iWorldX & -2);
+ }
+ if(iScaleY%2==0)
+ {
+ int iWorldY=pWorldViewProj->_42;
+ pWorldViewProj->_42 = (float)(iWorldY & -2);
+ }
+ }
+ else
+ {
+ // make x an even number for 480 4:3
+ int iWorldX=pWorldViewProj->_41;
+ pWorldViewProj->_41 = (float)(iWorldX & -2);
+
+ // 480 SD mode - y needs to be on a pixel boundary when multiplied by 1.5, so if it's an odd number, subtract 1/3 from it
+ int iWorldY=pWorldViewProj->_42;
+ if(iWorldY%2==1)
+ {
+ pWorldViewProj->_42-=1.0f/3.0f;
+ }
+ }
+ }
+
+ g_pD3DDevice->GetVertexShaderConstantF( 0, (float *)vconsts, 20 );
+ g_pD3DDevice->GetPixelShaderConstantF( 0, (float *)pconsts, 20 );
+ g_pD3DDevice->SetRenderState(D3DRS_HALFPIXELOFFSET, TRUE);
+ GetRenderAndSamplerStates(g_pD3DDevice, RenderStateA, SamplerStateA );
+ glDisable(GL_CULL_FACE);
+ glDisable(GL_DEPTH_TEST);
+
+ RenderManager.Set_matrixDirty();
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ glOrtho(0, 1280.0f, 720.0f, 0, 1000, 3000);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ glTranslatef(0, 0, -2000);
+ glColor4f(1.0f,1.0f,1.0f,1.0f);
+ float matrixCopy[16];
+ memcpy(matrixCopy, pWorldViewProj, 64);
+ matrixCopy[11] = 0.0f;
+ matrixCopy[12] = floor(matrixCopy[12] + 0.5f);
+ matrixCopy[13] = floor(matrixCopy[13] + 0.5f);
+ matrixCopy[14] = floor(matrixCopy[14] + 0.5f);
+ matrixCopy[15] = 1.0f;
+ glMultMatrixf(matrixCopy);
+
+
+ float lineXPos = 0.0f;
+ float lineYPos = 0.0f;
+ DWORD colour = 0;
+ DWORD style = 0;
+#if 1
+ for( int i = 0; i < dwCount; i++ )
+ {
+ wstring string;
+ string.push_back(pCharData[i].wch);
+ lineYPos = pCharData[i].y;
+ lineXPos = pCharData[i].x;
+ colour = pCharData[i].dwColor;
+ style = pCharData[i].dwStyle;
+
+ //if(pCharData[i].wch > font->m_fontData->getMaxGlyph())
+ if ( !font->m_fontData->getChar(pCharData[i].wch).hasChar() )
+ {
+ // Can't render this character, fallback to the default renderer
+ app.OverrideFontRenderer(false,false);
+ break;
+ }
+#else
+ DWORD i = 0;
+ while( i < dwCount )
+ {
+ wstring string;
+ lineYPos = pCharData[i].y;
+ lineXPos = pCharData[i].x;
+ colour = pCharData[i].dwColor;
+ style = pCharData[i].dwStyle;
+
+ while(i < dwCount && pCharData[i].y == lineYPos)
+ {
+ string.push_back(pCharData[i].wch);
+ ++i;
+ }
+#endif
+
+ bool dropShadow = false;
+ if( (style & XUI_FONT_STYLE_DROPSHADOW) == XUI_FONT_STYLE_DROPSHADOW) dropShadow = true;
+
+ //int yPos = (int)pCharData[i].y + (int)(font->m_fontMetrics.fLineHeight - font->m_fontMetrics.fMaxAscent)/2;
+ //if( (pCharData[i].dwStyle & XUI_FONT_STYLE_VERTICAL_CENTER) == XUI_FONT_STYLE_VERTICAL_CENTER)
+ //{
+ // yPos = (pClipRect->bottom - (int)font->m_fontMetrics.fLineHeight) / 2;
+ //}
+
+ if(dropShadow)
+ {
+ DWORD shadowColour;
+ XuiGetTextDropShadowColor(hDC, &shadowColour);
+ // 4J Stu - Shadow colour is currently ignored
+ font->DrawShadowText( lineXPos,lineYPos,colour,shadowColour,string.c_str() );
+ //drawShadow(thisChar, (int)pCharData[i].x, yPos, pCharData[i].dwColor );
+ }
+ else
+ {
+ font->DrawText( lineXPos,lineYPos,colour,string.c_str() );
+ //draw(thisChar, (int)pCharData[i].x, yPos, pCharData[i].dwColor, false );
+ }
+ }
+
+ g_pD3DDevice->SetVertexShaderConstantF( 0, (float *)vconsts, 20 );
+ g_pD3DDevice->SetPixelShaderConstantF( 0, (float *)pconsts, 20 );
+ SetRenderAndSamplerStates(g_pD3DDevice, RenderStateA, SamplerStateA );
+ g_pD3DDevice->SetRenderState(D3DRS_HALFPIXELOFFSET, FALSE);
+ glEnable(GL_CULL_FACE);
+ glEnable(GL_DEPTH_TEST);
+
+ XuiRenderRestoreState(hDC);
+
+ return( S_OK );
+}
diff --git a/Minecraft.Client/Xbox/Font/XUI_FontRenderer.h b/Minecraft.Client/Xbox/Font/XUI_FontRenderer.h
new file mode 100644
index 00000000..cffe2ed1
--- /dev/null
+++ b/Minecraft.Client/Xbox/Font/XUI_FontRenderer.h
@@ -0,0 +1,49 @@
+#pragma once
+using namespace std;
+class XUI_FontData;
+class XUI_Font;
+
+// Define this to use this class as the XUI font renderer
+#define OVERRIDE_XUI_FONT_RENDERER
+
+//#define USE_SCALING_FONT
+
+class XUI_FontRenderer : public IXuiFontRenderer
+{
+protected:
+ enum eFontData
+ {
+ eFontData_MIN = 0,
+ eFontData_Mojangles_7 = 0,
+ eFontData_Mojangles_11,
+ eFontData_MAX
+ };
+
+ // The font data is the image and size/coords data
+ XUI_FontData *m_loadedFontData[eFontData_MAX];
+
+ // The XUI_Font is a temporary instance that is around as long as XUI needs it, but does the actual rendering
+ // These can be chained
+ unordered_map m_loadedFonts[eFontData_MAX];
+
+public:
+ XUI_FontRenderer();
+
+ // 4J - IXuiFontRenderer interface
+ virtual HRESULT STDMETHODCALLTYPE Init( float fDpi );
+ virtual VOID STDMETHODCALLTYPE Term();
+ virtual HRESULT STDMETHODCALLTYPE GetCaps( DWORD * pdwCaps );
+ virtual HRESULT STDMETHODCALLTYPE CreateFont( const TypefaceDescriptor * pTypefaceDescriptor,
+ float fPointSize, DWORD dwStyle, DWORD dwReserved, HFONTOBJ * phFont );
+ virtual VOID STDMETHODCALLTYPE ReleaseFont( HFONTOBJ hFont );
+ virtual HRESULT STDMETHODCALLTYPE GetFontMetrics( HFONTOBJ hFont, XUIFontMetrics *pFontMetrics );
+ virtual HRESULT STDMETHODCALLTYPE GetCharMetrics( HFONTOBJ hFont, WCHAR wch,
+ XUICharMetrics *pCharMetrics );
+ virtual HRESULT STDMETHODCALLTYPE DrawCharToTexture( HFONTOBJ hFont, WCHAR wch, HXUIDC hDC,
+ IXuiTexture * pTexture, UINT x, UINT y, UINT width, UINT height,
+ UINT insetX, UINT insetY );
+ virtual HRESULT STDMETHODCALLTYPE DrawCharsToDevice( HFONTOBJ hFont, CharData * pCharData,
+ DWORD dwCount, RECT *pClipRect, HXUIDC hDC,
+ D3DXMATRIX * pWorldViewProj );
+
+};
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/GameConfig/01.png b/Minecraft.Client/Xbox/GameConfig/01.png
new file mode 100644
index 00000000..9611a07c
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/01.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/02.png b/Minecraft.Client/Xbox/GameConfig/02.png
new file mode 100644
index 00000000..93592d71
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/02.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/03.png b/Minecraft.Client/Xbox/GameConfig/03.png
new file mode 100644
index 00000000..82b8e832
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/03.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/04.png b/Minecraft.Client/Xbox/GameConfig/04.png
new file mode 100644
index 00000000..6f8df0ef
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/04.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/05.png b/Minecraft.Client/Xbox/GameConfig/05.png
new file mode 100644
index 00000000..00e451bf
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/05.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/06.png b/Minecraft.Client/Xbox/GameConfig/06.png
new file mode 100644
index 00000000..5fd8ccfd
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/06.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/07.png b/Minecraft.Client/Xbox/GameConfig/07.png
new file mode 100644
index 00000000..85853f14
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/07.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/08.png b/Minecraft.Client/Xbox/GameConfig/08.png
new file mode 100644
index 00000000..3f02a340
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/08.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/09.png b/Minecraft.Client/Xbox/GameConfig/09.png
new file mode 100644
index 00000000..467cfcf5
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/09.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/10.png b/Minecraft.Client/Xbox/GameConfig/10.png
new file mode 100644
index 00000000..1e14d7b6
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/10.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/11.png b/Minecraft.Client/Xbox/GameConfig/11.png
new file mode 100644
index 00000000..295efd80
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/11.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/12.png b/Minecraft.Client/Xbox/GameConfig/12.png
new file mode 100644
index 00000000..07f30818
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/12.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/13.png b/Minecraft.Client/Xbox/GameConfig/13.png
new file mode 100644
index 00000000..119b0d2b
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/13.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/14.png b/Minecraft.Client/Xbox/GameConfig/14.png
new file mode 100644
index 00000000..38a78088
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/14.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/15.png b/Minecraft.Client/Xbox/GameConfig/15.png
new file mode 100644
index 00000000..cf68221a
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/15.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/16.png b/Minecraft.Client/Xbox/GameConfig/16.png
new file mode 100644
index 00000000..d95f861a
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/16.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/17.png b/Minecraft.Client/Xbox/GameConfig/17.png
new file mode 100644
index 00000000..6386ab35
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/17.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/18.png b/Minecraft.Client/Xbox/GameConfig/18.png
new file mode 100644
index 00000000..8e776eef
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/18.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/19.png b/Minecraft.Client/Xbox/GameConfig/19.png
new file mode 100644
index 00000000..76c99dc8
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/19.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/20.png b/Minecraft.Client/Xbox/GameConfig/20.png
new file mode 100644
index 00000000..e5fd3789
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/20.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/32_584111F70002000100010001.png b/Minecraft.Client/Xbox/GameConfig/32_584111F70002000100010001.png
new file mode 100644
index 00000000..d4dc7555
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/32_584111F70002000100010001.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/32_584111F70002000200010002.png b/Minecraft.Client/Xbox/GameConfig/32_584111F70002000200010002.png
new file mode 100644
index 00000000..89da95b2
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/32_584111F70002000200010002.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/64_584111F70002000100010001.png b/Minecraft.Client/Xbox/GameConfig/64_584111F70002000100010001.png
new file mode 100644
index 00000000..fc3d91d7
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/64_584111F70002000100010001.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/64_584111F70002000200010002.png b/Minecraft.Client/Xbox/GameConfig/64_584111F70002000200010002.png
new file mode 100644
index 00000000..ebcd1eab
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/64_584111F70002000200010002.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/ArcadeInfo.xml b/Minecraft.Client/Xbox/GameConfig/ArcadeInfo.xml
new file mode 100644
index 00000000..6c0c1e23
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/ArcadeInfo.xml differ
diff --git a/Minecraft.Client/Xbox/GameConfig/AvatarPackages/AvatarAwards b/Minecraft.Client/Xbox/GameConfig/AvatarPackages/AvatarAwards
new file mode 100644
index 00000000..b1b73fc2
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/AvatarPackages/AvatarAwards differ
diff --git a/Minecraft.Client/Xbox/GameConfig/Creeper_Cap.bin b/Minecraft.Client/Xbox/GameConfig/Creeper_Cap.bin
new file mode 100644
index 00000000..ac0d3e78
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/Creeper_Cap.bin differ
diff --git a/Minecraft.Client/Xbox/GameConfig/MineCraft_Watch_Female.bin b/Minecraft.Client/Xbox/GameConfig/MineCraft_Watch_Female.bin
new file mode 100644
index 00000000..a6595149
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/MineCraft_Watch_Female.bin differ
diff --git a/Minecraft.Client/Xbox/GameConfig/MineCraft_Watch_Male.bin b/Minecraft.Client/Xbox/GameConfig/MineCraft_Watch_Male.bin
new file mode 100644
index 00000000..c6a1be9a
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/MineCraft_Watch_Male.bin differ
diff --git a/Minecraft.Client/Xbox/GameConfig/Minecraft.gameconfig b/Minecraft.Client/Xbox/GameConfig/Minecraft.gameconfig
new file mode 100644
index 00000000..14885d53
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/Minecraft.gameconfig differ
diff --git a/Minecraft.Client/Xbox/GameConfig/Minecraft.spa b/Minecraft.Client/Xbox/GameConfig/Minecraft.spa
new file mode 100644
index 00000000..ff87b0c6
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/Minecraft.spa differ
diff --git a/Minecraft.Client/Xbox/GameConfig/Minecraft.spa.h b/Minecraft.Client/Xbox/GameConfig/Minecraft.spa.h
new file mode 100644
index 00000000..a7c262c8
--- /dev/null
+++ b/Minecraft.Client/Xbox/GameConfig/Minecraft.spa.h
@@ -0,0 +1,668 @@
+////////////////////////////////////////////////////////////////////
+//
+// C:\Work\4J\Mojang\Minecraft\Minecraft360-dev\Minecraft.Client\Xbox\GameConfig\Minecraft.spa.h
+//
+// Auto-generated on Thursday, 10 May 2012 at 21:23:22
+// Xbox LIVE Game Config project version 1.0.173.0
+// SPA Compiler version 1.0.0.0
+//
+////////////////////////////////////////////////////////////////////
+
+#ifndef __MINECRAFT_SPA_H__
+#define __MINECRAFT_SPA_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// Title info
+//
+
+#define TITLEID_MINECRAFT 0x584111F7
+
+//
+// Context ids
+//
+// These values are passed as the dwContextId to XUserSetContext.
+//
+
+#define CONTEXT_GAME_STATE 0
+
+//
+// Context values
+//
+// These values are passed as the dwContextValue to XUserSetContext.
+//
+
+// Values for CONTEXT_GAME_STATE
+
+#define CONTEXT_GAME_STATE_BLANK 0
+#define CONTEXT_GAME_STATE_RIDING_PIG 1
+#define CONTEXT_GAME_STATE_RIDING_MINECART 2
+#define CONTEXT_GAME_STATE_BOATING 3
+#define CONTEXT_GAME_STATE_FISHING 4
+#define CONTEXT_GAME_STATE_CRAFTING 5
+#define CONTEXT_GAME_STATE_FORGING 6
+#define CONTEXT_GAME_STATE_NETHER 7
+#define CONTEXT_GAME_STATE_CD 8
+#define CONTEXT_GAME_STATE_MAP 9
+#define CONTEXT_GAME_STATE_ENCHANTING 5 //TODO 10
+#define CONTEXT_GAME_STATE_BREWING 5 //TODO 11
+#define CONTEXT_GAME_STATE_ANVIL 6 //TODO 12
+#define CONTEXT_GAME_STATE_TRADING 0 //TODO 13
+
+// Values for X_CONTEXT_PRESENCE
+
+#define CONTEXT_PRESENCE_IDLE 0
+#define CONTEXT_PRESENCE_MENUS 1
+#define CONTEXT_PRESENCE_MULTIPLAYER 2
+#define CONTEXT_PRESENCE_MULTIPLAYEROFFLINE 3
+#define CONTEXT_PRESENCE_MULTIPLAYER_1P 4
+#define CONTEXT_PRESENCE_MULTIPLAYER_1POFFLINE 5
+
+// Values for X_CONTEXT_GAME_MODE
+
+#define CONTEXT_GAME_MODE_GAMEMODE 0
+#define CONTEXT_GAME_MODE_MULTIPLAYER 1
+
+//
+// Property ids
+//
+// These values are passed as the dwPropertyId value to XUserSetProperty
+// and as the dwPropertyId value in the XUSER_PROPERTY structure.
+//
+
+#define PROPERTY_LOCALE 0x10000008
+#define PROPERTY_KILLS_ZOMBIE 0x1000000A
+#define PROPERTY_KILLS_SKELETON 0x1000000B
+#define PROPERTY_KILLS_CREEPER 0x1000000C
+#define PROPERTY_KILLS_SPIDER 0x1000000D
+#define PROPERTY_KILLS_SPIDERJOCKEY 0x1000000E
+#define PROPERTY_KILLS_ZOMBIEPIGMAN 0x1000000F
+#define PROPERTY_KILLS_SLIME 0x10000010
+#define PROPERTY_KILLS_GHAST 0x10000011
+#define PROPERTY_MINED_DIRT 0x10000012
+#define PROPERTY_MINED_STONE 0x10000013
+#define PROPERTY_MINED_SAND 0x10000014
+#define PROPERTY_MINED_COBBLESTONE 0x10000015
+#define PROPERTY_MINED_GRAVEL 0x10000016
+#define PROPERTY_MINED_CLAY 0x10000017
+#define PROPERTY_MINED_OBSIDIAN 0x10000018
+#define PROPERTY_MINED_COAL 0x10000019
+#define PROPERTY_MINED_IRON 0x1000001A
+#define PROPERTY_MINED_GOLD 0x1000001B
+#define PROPERTY_MINED_DIAMOND 0x1000001C
+#define PROPERTY_MINED_REDSTONE 0x1000001D
+#define PROPERTY_MINED_LAPISLAZULI 0x1000001E
+#define PROPERTY_MINED_NETHERRACK 0x1000001F
+#define PROPERTY_MINED_SOULSAND 0x10000020
+#define PROPERTY_MINED_GLOWSTONE 0x10000021
+#define PROPERTY_COLLECTED_EGG 0x10000022
+#define PROPERTY_COLLECTED_WHEAT 0x10000023
+#define PROPERTY_COLLECTED_MUSHROOM 0x10000024
+#define PROPERTY_COLLECTED_SUGARCANE 0x10000025
+#define PROPERTY_COLLECTED_MILK 0x10000026
+#define PROPERTY_COLLECTED_PUMPKIN 0x10000027
+#define PROPERTY_TRAVEL_WALK 0x10000028
+#define PROPERTY_TRAVEL_SWIM 0x10000029
+#define PROPERTY_TRAVEL_FALL 0x1000002A
+#define PROPERTY_TRAVEL_CLIMB 0x1000002B
+#define PROPERTY_TRAVEL_MINECART 0x1000002C
+#define PROPERTY_TRAVEL_BOAT 0x1000002D
+#define PROPERTY_PORTALS_CREATED 0x1000002F
+#define PROPERTY_COLLECTED_NETHERLAVA 0x10000030
+#define PROPERTY_RATING 0x20000009
+
+//
+// Achievement ids
+//
+// These values are used in the dwAchievementId member of the
+// XUSER_ACHIEVEMENT structure that is used with
+// XUserWriteAchievements and XUserCreateAchievementEnumerator.
+//
+
+#define ACHIEVEMENT_01 1
+#define ACHIEVEMENT_02 2
+#define ACHIEVEMENT_03 3
+#define ACHIEVEMENT_04 4
+#define ACHIEVEMENT_05 5
+#define ACHIEVEMENT_06 6
+#define ACHIEVEMENT_07 7
+#define ACHIEVEMENT_08 8
+#define ACHIEVEMENT_09 9
+#define ACHIEVEMENT_10 10
+#define ACHIEVEMENT_11 11
+#define ACHIEVEMENT_12 12
+#define ACHIEVEMENT_13 14
+#define ACHIEVEMENT_14 15
+#define ACHIEVEMENT_15 16
+#define ACHIEVEMENT_16 17
+#define ACHIEVEMENT_17 18
+#define ACHIEVEMENT_18 19
+#define ACHIEVEMENT_19 20
+#define ACHIEVEMENT_20 21
+
+//
+// AvatarAssetAward ids
+//
+
+#define AVATARASSETAWARD_PORKCHOP_TSHIRT 1
+#define AVATARASSETAWARD_WATCH 2
+#define AVATARASSETAWARD_CAP 5
+
+//
+// Stats view ids
+//
+// These are used in the dwViewId member of the XUSER_STATS_SPEC structure
+// passed to the XUserReadStats* and XUserCreateStatsEnumerator* functions.
+//
+
+// Skill leaderboards for ranked game modes
+
+#define STATS_VIEW_SKILL_RANKED_GAMEMODE 0xFFFF0000
+#define STATS_VIEW_SKILL_RANKED_MULTIPLAYER 0xFFFF0001
+
+// Skill leaderboards for unranked (standard) game modes
+
+#define STATS_VIEW_SKILL_STANDARD_GAMEMODE 0xFFFE0000
+#define STATS_VIEW_SKILL_STANDARD_MULTIPLAYER 0xFFFE0001
+
+// Title defined leaderboards
+
+#define STATS_VIEW_KILLS_EASY 4
+#define STATS_VIEW_KILLS_NORMAL 5
+#define STATS_VIEW_KILLS_HARD 6
+#define STATS_VIEW_MINING_BLOCKS_PEACEFUL 7
+#define STATS_VIEW_MINING_BLOCKS_EASY 8
+#define STATS_VIEW_MINING_BLOCKS_NORMAL 9
+#define STATS_VIEW_MINING_BLOCKS_HARD 10
+#define STATS_VIEW_FARMING_PEACEFUL 15
+#define STATS_VIEW_FARMING_EASY 16
+#define STATS_VIEW_FARMING_NORMAL 17
+#define STATS_VIEW_FARMING_HARD 18
+#define STATS_VIEW_TRAVELLING_PEACEFUL 19
+#define STATS_VIEW_TRAVELLING_EASY 20
+#define STATS_VIEW_TRAVELLING_NORMAL 21
+#define STATS_VIEW_TRAVELLING_HARD 22
+#define STATS_VIEW_TRAVELLING_TOTAL 27
+
+//
+// Stats view column ids
+//
+// These ids are used to read columns of stats views. They are specified in
+// the rgwColumnIds array of the XUSER_STATS_SPEC structure. Rank, rating
+// and gamertag are not retrieved as custom columns and so are not included
+// in the following definitions. They can be retrieved from each row's
+// header (e.g., pStatsResults->pViews[x].pRows[y].dwRank, etc.).
+//
+
+// Column ids for KILLS_EASY
+
+#define STATS_COLUMN_KILLS_EASY_LOCALE 9
+#define STATS_COLUMN_KILLS_EASY_ZOMBIES 1
+#define STATS_COLUMN_KILLS_EASY_SKELETONS 2
+#define STATS_COLUMN_KILLS_EASY_CREEPERS 3
+#define STATS_COLUMN_KILLS_EASY_SPIDERS 4
+#define STATS_COLUMN_KILLS_EASY_SPIDERJOCKEYS 5
+#define STATS_COLUMN_KILLS_EASY_ZOMBIEPIGMEN 6
+#define STATS_COLUMN_KILLS_EASY_SLIME 7
+
+// Column ids for KILLS_NORMAL
+
+#define STATS_COLUMN_KILLS_NORMAL_LOCALE 9
+#define STATS_COLUMN_KILLS_NORMAL_ZOMBIES 1
+#define STATS_COLUMN_KILLS_NORMAL_SKELETONS 2
+#define STATS_COLUMN_KILLS_NORMAL_CREEPERS 3
+#define STATS_COLUMN_KILLS_NORMAL_SPIDERS 4
+#define STATS_COLUMN_KILLS_NORMAL_SPIDERJOCKEYS 5
+#define STATS_COLUMN_KILLS_NORMAL_ZOMBIEPIGMEN 6
+#define STATS_COLUMN_KILLS_NORMAL_SLIME 7
+
+// Column ids for KILLS_HARD
+
+#define STATS_COLUMN_KILLS_HARD_LOCALE 9
+#define STATS_COLUMN_KILLS_HARD_ZOMBIES 1
+#define STATS_COLUMN_KILLS_HARD_SKELETONS 2
+#define STATS_COLUMN_KILLS_HARD_CREEPERS 3
+#define STATS_COLUMN_KILLS_HARD_SPIDERS 4
+#define STATS_COLUMN_KILLS_HARD_SPIDERJOCKEYS 5
+#define STATS_COLUMN_KILLS_HARD_ZOMBIEPIGMEN 6
+#define STATS_COLUMN_KILLS_HARD_SLIME 7
+
+// Column ids for MINING_BLOCKS_PEACEFUL
+
+#define STATS_COLUMN_MINING_BLOCKS_PEACEFUL_LOCALE 1
+#define STATS_COLUMN_MINING_BLOCKS_PEACEFUL_DIRT 2
+#define STATS_COLUMN_MINING_BLOCKS_PEACEFUL_STONE 3
+#define STATS_COLUMN_MINING_BLOCKS_PEACEFUL_SAND 4
+#define STATS_COLUMN_MINING_BLOCKS_PEACEFUL_COBBLESTONE 5
+#define STATS_COLUMN_MINING_BLOCKS_PEACEFUL_GRAVEL 6
+#define STATS_COLUMN_MINING_BLOCKS_PEACEFUL_CLAY 7
+#define STATS_COLUMN_MINING_BLOCKS_PEACEFUL_OBSIDIAN 8
+
+// Column ids for MINING_BLOCKS_EASY
+
+#define STATS_COLUMN_MINING_BLOCKS_EASY_LOCALE 1
+#define STATS_COLUMN_MINING_BLOCKS_EASY_DIRT 2
+#define STATS_COLUMN_MINING_BLOCKS_EASY_STONE 3
+#define STATS_COLUMN_MINING_BLOCKS_EASY_SAND 4
+#define STATS_COLUMN_MINING_BLOCKS_EASY_COBBLESTONE 5
+#define STATS_COLUMN_MINING_BLOCKS_EASY_GRAVEL 6
+#define STATS_COLUMN_MINING_BLOCKS_EASY_CLAY 7
+#define STATS_COLUMN_MINING_BLOCKS_EASY_OBSIDIAN 8
+
+// Column ids for MINING_BLOCKS_NORMAL
+
+#define STATS_COLUMN_MINING_BLOCKS_NORMAL_LOCALE 1
+#define STATS_COLUMN_MINING_BLOCKS_NORMAL_DIRT 2
+#define STATS_COLUMN_MINING_BLOCKS_NORMAL_STONE 3
+#define STATS_COLUMN_MINING_BLOCKS_NORMAL_SAND 4
+#define STATS_COLUMN_MINING_BLOCKS_NORMAL_COBBLESTONE 5
+#define STATS_COLUMN_MINING_BLOCKS_NORMAL_GRAVEL 6
+#define STATS_COLUMN_MINING_BLOCKS_NORMAL_CLAY 7
+#define STATS_COLUMN_MINING_BLOCKS_NORMAL_OBSIDIAN 8
+
+// Column ids for MINING_BLOCKS_HARD
+
+#define STATS_COLUMN_MINING_BLOCKS_HARD_LOCALE 1
+#define STATS_COLUMN_MINING_BLOCKS_HARD_DIRT 2
+#define STATS_COLUMN_MINING_BLOCKS_HARD_STONE 3
+#define STATS_COLUMN_MINING_BLOCKS_HARD_SAND 4
+#define STATS_COLUMN_MINING_BLOCKS_HARD_COBBLESTONE 5
+#define STATS_COLUMN_MINING_BLOCKS_HARD_GRAVEL 6
+#define STATS_COLUMN_MINING_BLOCKS_HARD_CLAY 7
+#define STATS_COLUMN_MINING_BLOCKS_HARD_OBSIDIAN 8
+
+// Column ids for FARMING_PEACEFUL
+
+#define STATS_COLUMN_FARMING_PEACEFUL_LOCALE 1
+#define STATS_COLUMN_FARMING_PEACEFUL_EGGS 2
+#define STATS_COLUMN_FARMING_PEACEFUL_WHEAT 3
+#define STATS_COLUMN_FARMING_PEACEFUL_MUSHROOMS 4
+#define STATS_COLUMN_FARMING_PEACEFUL_SUGARCANE 5
+#define STATS_COLUMN_FARMING_PEACEFUL_MILK 6
+#define STATS_COLUMN_FARMING_PEACEFUL_PUMPKINS 7
+
+// Column ids for FARMING_EASY
+
+#define STATS_COLUMN_FARMING_EASY_LOCALE 1
+#define STATS_COLUMN_FARMING_EASY_EGGS 2
+#define STATS_COLUMN_FARMING_EASY_WHEAT 3
+#define STATS_COLUMN_FARMING_EASY_MUSHROOMS 4
+#define STATS_COLUMN_FARMING_EASY_SUGARCANE 5
+#define STATS_COLUMN_FARMING_EASY_MILK 6
+#define STATS_COLUMN_FARMING_EASY_PUMPKINS 7
+
+// Column ids for FARMING_NORMAL
+
+#define STATS_COLUMN_FARMING_NORMAL_LOCALE 1
+#define STATS_COLUMN_FARMING_NORMAL_EGGS 2
+#define STATS_COLUMN_FARMING_NORMAL_WHEAT 3
+#define STATS_COLUMN_FARMING_NORMAL_MUSHROOMS 4
+#define STATS_COLUMN_FARMING_NORMAL_SUGARCANE 5
+#define STATS_COLUMN_FARMING_NORMAL_MILK 6
+#define STATS_COLUMN_FARMING_NORMAL_PUMPKINS 7
+
+// Column ids for FARMING_HARD
+
+#define STATS_COLUMN_FARMING_HARD_LOCALE 1
+#define STATS_COLUMN_FARMING_HARD_EGGS 2
+#define STATS_COLUMN_FARMING_HARD_WHEAT 3
+#define STATS_COLUMN_FARMING_HARD_MUSHROOMS 4
+#define STATS_COLUMN_FARMING_HARD_SUGARCANE 5
+#define STATS_COLUMN_FARMING_HARD_MILK 6
+#define STATS_COLUMN_FARMING_HARD_PUMPKINS 7
+
+// Column ids for TRAVELLING_PEACEFUL
+
+#define STATS_COLUMN_TRAVELLING_PEACEFUL_LOCALE 1
+#define STATS_COLUMN_TRAVELLING_PEACEFUL_WALKED 2
+#define STATS_COLUMN_TRAVELLING_PEACEFUL_SWAM 3
+#define STATS_COLUMN_TRAVELLING_PEACEFUL_FALLEN 4
+#define STATS_COLUMN_TRAVELLING_PEACEFUL_CLIMBED 5
+#define STATS_COLUMN_TRAVELLING_PEACEFUL_MINECART 6
+#define STATS_COLUMN_TRAVELLING_PEACEFUL_BOAT 7
+
+// Column ids for TRAVELLING_EASY
+
+#define STATS_COLUMN_TRAVELLING_EASY_LOCALE 1
+#define STATS_COLUMN_TRAVELLING_EASY_WALKED 2
+#define STATS_COLUMN_TRAVELLING_EASY_SWAM 3
+#define STATS_COLUMN_TRAVELLING_EASY_FALLEN 4
+#define STATS_COLUMN_TRAVELLING_EASY_CLIMBED 5
+#define STATS_COLUMN_TRAVELLING_EASY_MINECART 6
+#define STATS_COLUMN_TRAVELLING_EASY_BOAT 7
+
+// Column ids for TRAVELLING_NORMAL
+
+#define STATS_COLUMN_TRAVELLING_NORMAL_LOCALE 1
+#define STATS_COLUMN_TRAVELLING_NORMAL_WALKED 2
+#define STATS_COLUMN_TRAVELLING_NORMAL_SWAM 3
+#define STATS_COLUMN_TRAVELLING_NORMAL_FALLEN 4
+#define STATS_COLUMN_TRAVELLING_NORMAL_CLIMBED 5
+#define STATS_COLUMN_TRAVELLING_NORMAL_MINECART 6
+#define STATS_COLUMN_TRAVELLING_NORMAL_BOAT 7
+
+// Column ids for TRAVELLING_HARD
+
+#define STATS_COLUMN_TRAVELLING_HARD_LOCALE 1
+#define STATS_COLUMN_TRAVELLING_HARD_WALKED 2
+#define STATS_COLUMN_TRAVELLING_HARD_SWAM 3
+#define STATS_COLUMN_TRAVELLING_HARD_FALLEN 4
+#define STATS_COLUMN_TRAVELLING_HARD_CLIMBED 5
+#define STATS_COLUMN_TRAVELLING_HARD_MINECART 6
+#define STATS_COLUMN_TRAVELLING_HARD_BOAT 7
+
+// Column ids for TRAVELLING_TOTAL
+
+
+//
+// Matchmaking queries
+//
+// These values are passed as the dwProcedureIndex parameter to
+// XSessionSearch to indicate which matchmaking query to run.
+//
+
+#define SESSION_MATCH_QUERY_FRIENDS 0
+
+//
+// Gamer pictures
+//
+// These ids are passed as the dwPictureId parameter to XUserAwardGamerTile.
+//
+
+#define GAMER_PICTURE_GAMERPIC1 12
+#define GAMER_PICTURE_GAMERPIC2 13
+
+//
+// Strings
+//
+// These ids are passed as the dwStringId parameter to XReadStringsFromSpaFile.
+//
+
+#define SPASTRING_PRESENCE_IDLE_NAME 4
+#define SPASTRING_PRESENCE_MENUS_NAME 10
+#define SPASTRING_ACH_01_NAME 376
+#define SPASTRING_ACH_02_NAME 377
+#define SPASTRING_ACH_03_NAME 378
+#define SPASTRING_ACH_07_NAME 379
+#define SPASTRING_ACH_08_NAME 380
+#define SPASTRING_ACH_09_NAME 381
+#define SPASTRING_ACH_13_NAME 382
+#define SPASTRING_ACH_14_NAME 383
+#define SPASTRING_ACH_15_NAME 384
+#define SPASTRING_ACH_16_NAME 385
+#define SPASTRING_ACH_04_NAME 386
+#define SPASTRING_ACH_10_NAME 387
+#define SPASTRING_ACH_01_DESC 388
+#define SPASTRING_ACH_02_DESC 389
+#define SPASTRING_ACH_03_DESC 390
+#define SPASTRING_ACH_07_DESC 391
+#define SPASTRING_ACH_08_DESC 392
+#define SPASTRING_ACH_09_DESC 393
+#define SPASTRING_ACH_13_DESC 394
+#define SPASTRING_ACH_14_DESC 395
+#define SPASTRING_ACH_15_DESC 396
+#define SPASTRING_ACH_16_DESC 397
+#define SPASTRING_ACH_04_DESC 398
+#define SPASTRING_ACH_10_DESC 399
+#define SPASTRING_ACH_01_HOWTO 400
+#define SPASTRING_ACH_02_HOWTO 401
+#define SPASTRING_ACH_03_HOWTO 402
+#define SPASTRING_ACH_07_HOWTO 403
+#define SPASTRING_ACH_08_HOWTO 404
+#define SPASTRING_ACH_09_HOWTO 405
+#define SPASTRING_ACH_13_HOWTO 406
+#define SPASTRING_ACH_14_HOWTO 407
+#define SPASTRING_ACH_15_HOWTO 408
+#define SPASTRING_ACH_16_HOWTO 409
+#define SPASTRING_ACH_04_HOWTO 410
+#define SPASTRING_ACH_10_HOWTO 411
+#define SPASTRING_STR_GAMEMODE_SINGLEPLAYER 420
+#define SPASTRING_ACH_05_HOWTO 429
+#define SPASTRING_ACH_05_NAME 430
+#define SPASTRING_ACH_05_DESC 431
+#define SPASTRING_ACH_11_HOWTO 432
+#define SPASTRING_ACH_11_NAME 433
+#define SPASTRING_ACH_11_DESC 434
+#define SPASTRING_ACH_06_HOWTO 435
+#define SPASTRING_ACH_06_NAME 436
+#define SPASTRING_ACH_06_DESC 437
+#define SPASTRING_ACH_12_HOWTO 438
+#define SPASTRING_ACH_12_NAME 439
+#define SPASTRING_ACH_12_DESC 440
+#define SPASTRING_ACH_17_HOWTO 441
+#define SPASTRING_ACH_17_NAME 442
+#define SPASTRING_ACH_17_DESC 443
+#define SPASTRING_ACH_18_HOWTO 444
+#define SPASTRING_ACH_18_NAME 445
+#define SPASTRING_ACH_18_DESC 446
+#define SPASTRING_ACH_19_HOWTO 447
+#define SPASTRING_ACH_19_NAME 448
+#define SPASTRING_ACH_19_DESC 449
+#define SPASTRING_ACH_20_HOWTO 450
+#define SPASTRING_ACH_20_NAME 451
+#define SPASTRING_ACH_20_DESC 452
+#define SPASTRING_AV_PORKCHOP_TSHIRT_HOWTO 473
+#define SPASTRING_AV_PORKCHOP_TSHIRT_TITLE1 474
+#define SPASTRING_AV_PORKCHOP_TSHIRT_TITLE2 475
+#define SPASTRING_AV_PORKCHOP_TSHIRT_DESC 476
+#define SPASTRING_AV_WATCH_HOWTO 477
+#define SPASTRING_AV_WATCH_TITLE1 478
+#define SPASTRING_AV_WATCH_TITLE2 479
+#define SPASTRING_AV_WATCH_DESC 480
+#define SPASTRING_PRESENCE_MULTIPLAYER_NAME 490
+#define SPASTRING_CT_GAME_STATE_NAME 492
+#define SPASTRING_CV_GAME_STATE_BLANK_NAME 496
+#define SPASTRING_CV_GAME_STATE_RIDING_PIG_NAME 497
+#define SPASTRING_CV_GAME_STATE_RIDING_MINECART_NAME 498
+#define SPASTRING_CV_GAME_STATE_BOATING_NAME 499
+#define SPASTRING_CV_GAME_STATE_FISHING_NAME 500
+#define SPASTRING_CV_GAME_STATE_CRAFTING_NAME 501
+#define SPASTRING_CV_GAME_STATE_FORGING_NAME 502
+#define SPASTRING_CV_GAME_STATE_NETHER_NAME 503
+#define SPASTRING_CV_GAME_STATE_CD_NAME 504
+#define SPASTRING_CV_GAME_STATE_MAP_NAME 505
+#define SPASTRING_AV_CAP_HOWTO 506
+#define SPASTRING_AV_CAP_TITLE1 507
+#define SPASTRING_AV_CAP_TITLE2 508
+#define SPASTRING_AV_CAP_DESC 509
+#define SPASTRING_GM_MULTIPLAYER_NAME 517
+#define SPASTRING_PROPERTY_LOCALE_NAME 520
+#define SPASTRING_LB_KILLS_EASY_NAME 523
+#define SPASTRING_LB_KILLS_EASY_ZOMBIES_NAME 524
+#define SPASTRING_LB_KILLS_EASY_SKELETONS_NAME 525
+#define SPASTRING_LB_KILLS_EASY_CREEPERS_NAME 526
+#define SPASTRING_LB_KILLS_EASY_SPIDERS_NAME 527
+#define SPASTRING_LB_KILLS_EASY_SPIDERJOCKEYS_NAME 528
+#define SPASTRING_LB_KILLS_EASY_ZOMBIEPIGMEN_NAME 529
+#define SPASTRING_LB_KILLS_EASY_SLIME_NAME 530
+#define SPASTRING_LB_KILLS_EASY_RATING_NAME 531
+#define SPASTRING_PROPERTY_RATING_NAME 532
+#define SPASTRING_LB_KILLS_EASY_LOCALE_NAME 533
+#define SPASTRING_PROPERTY_KILLS_ZOMBIE_NAME 534
+#define SPASTRING_PROPERTY_KILLS_SKELETON_NAME 535
+#define SPASTRING_PROPERTY_KILLS_CREEPER_NAME 536
+#define SPASTRING_PROPERTY_KILLS_SPIDER_NAME 537
+#define SPASTRING_PROPERTY_KILLS_SPIDERJOCKEY_NAME 538
+#define SPASTRING_PROPERTY_KILLS_ZOMBIEPIGMAN_NAME 539
+#define SPASTRING_PROPERTY_KILLS_SLIME_NAME 540
+#define SPASTRING_PROPERTY_KILLS_GHAST_NAME 541
+#define SPASTRING_LB_KILLS_NORMAL_NAME 543
+#define SPASTRING_LB_KILLS_NORMAL_LOCALE_NAME 544
+#define SPASTRING_LB_KILLS_NORMAL_ZOMBIES_NAME 545
+#define SPASTRING_LB_KILLS_NORMAL_SKELETONS_NAME 546
+#define SPASTRING_LB_KILLS_NORMAL_CREEPERS_NAME 547
+#define SPASTRING_LB_KILLS_NORMAL_SPIDERS_NAME 548
+#define SPASTRING_LB_KILLS_NORMAL_SPIDERJOCKEYS_NAME 549
+#define SPASTRING_LB_KILLS_NORMAL_ZOMBIEPIGMEN_NAME 550
+#define SPASTRING_LB_KILLS_NORMAL_SLIME_NAME 551
+#define SPASTRING_LB_KILLS_NORMAL_RATING_NAME 552
+#define SPASTRING_LB_KILLS_HARD_NAME 554
+#define SPASTRING_LB_KILLS_HARD_LOCALE_NAME 555
+#define SPASTRING_LB_KILLS_HARD_ZOMBIES_NAME 556
+#define SPASTRING_LB_KILLS_HARD_SKELETONS_NAME 557
+#define SPASTRING_LB_KILLS_HARD_CREEPERS_NAME 558
+#define SPASTRING_LB_KILLS_HARD_SPIDERS_NAME 559
+#define SPASTRING_LB_KILLS_HARD_SPIDERJOCKEYS_NAME 560
+#define SPASTRING_LB_KILLS_HARD_ZOMBIEPIGMEN_NAME 561
+#define SPASTRING_LB_KILLS_HARD_SLIME_NAME 562
+#define SPASTRING_LB_KILLS_HARD_RATING_NAME 563
+#define SPASTRING_LB_MINING_BLOCKS_PEACEFUL_NAME 564
+#define SPASTRING_LB_MINING_BLOCKS_PEACEFUL_LOCALE_NAME 565
+#define SPASTRING_LB_MINING_BLOCKS_PEACEFUL_DIRT_NAME 566
+#define SPASTRING_LB_MINING_BLOCKS_PEACEFUL_STONE_NAME 567
+#define SPASTRING_LB_MINING_BLOCKS_PEACEFUL_SAND_NAME 568
+#define SPASTRING_LB_MINING_BLOCKS_PEACEFUL_COBBLESTONE_NAME 569
+#define SPASTRING_LB_MINING_BLOCKS_PEACEFUL_GRAVEL_NAME 570
+#define SPASTRING_LB_MINING_BLOCKS_PEACEFUL_CLAY_NAME 571
+#define SPASTRING_LB_MINING_BLOCKS_PEACEFUL_OBSIDIAN_NAME 572
+#define SPASTRING_LB_MINING_BLOCKS_PEACEFUL_RATING_NAME 573
+#define SPASTRING_PROPERTY_MINED_DIRT_NAME 574
+#define SPASTRING_PROPERTY_MINED_STONE_NAME 575
+#define SPASTRING_PROPERTY_MINED_SAND_NAME 576
+#define SPASTRING_PROPERTY_MINED_COBBLESTONE_NAME 577
+#define SPASTRING_PROPERTY_MINED_GRAVEL_NAME 578
+#define SPASTRING_PROPERTY_MINED_CLAY_NAME 579
+#define SPASTRING_PROPERTY_MINED_OBSIDIAN_NAME 580
+#define SPASTRING_PROPERTY_MINED_COAL_NAME 581
+#define SPASTRING_PROPERTY_MINED_IRON_NAME 582
+#define SPASTRING_PROPERTY_MINED_GOLD_NAME 583
+#define SPASTRING_PROPERTY_MINED_DIAMOND_NAME 584
+#define SPASTRING_PROPERTY_MINED_REDSTONE_NAME 585
+#define SPASTRING_PROPERTY_MINED_LAPISLAZULI_NAME 586
+#define SPASTRING_PROPERTY_MINED_NETHERRACK_NAME 587
+#define SPASTRING_PROPERTY_MINED_SOULSAND_NAME 588
+#define SPASTRING_PROPERTY_MINED_GLOWSTONE_NAME 589
+#define SPASTRING_PROPERTY_COLLECTED_EGG_NAME 590
+#define SPASTRING_PROPERTY_COLLECTED_WHEAT_NAME 591
+#define SPASTRING_PROPERTY_COLLECTED_MUSHROOM_NAME 592
+#define SPASTRING_PROPERTY_COLLECTED_SUGARCANE_NAME 593
+#define SPASTRING_PROPERTY_COLLECTED_MILK_NAME 594
+#define SPASTRING_PROPERTY_COLLECTED_PUMPKIN_NAME 595
+#define SPASTRING_PROPERTY_TRAVEL_WALK_NAME 596
+#define SPASTRING_PROPERTY_TRAVEL_SWIM_NAME 597
+#define SPASTRING_PROPERTY_TRAVEL_FALL_NAME 598
+#define SPASTRING_PROPERTY_TRAVEL_CLIMB_NAME 599
+#define SPASTRING_PROPERTY_TRAVEL_MINECART_NAME 600
+#define SPASTRING_PROPERTY_TRAVEL_BOAT_NAME 601
+#define SPASTRING_PROPERTY_PORTALS_CREATED_NAME 603
+#define SPASTRING_LB_MINING_BLOCKS_EASY_NAME 605
+#define SPASTRING_LB_MINING_BLOCKS_EASY_LOCALE_NAME 606
+#define SPASTRING_LB_MINING_BLOCKS_EASY_DIRT_NAME 607
+#define SPASTRING_LB_MINING_BLOCKS_EASY_STONE_NAME 608
+#define SPASTRING_LB_MINING_BLOCKS_EASY_SAND_NAME 609
+#define SPASTRING_LB_MINING_BLOCKS_EASY_COBBLESTONE_NAME 610
+#define SPASTRING_LB_MINING_BLOCKS_EASY_GRAVEL_NAME 611
+#define SPASTRING_LB_MINING_BLOCKS_EASY_CLAY_NAME 612
+#define SPASTRING_LB_MINING_BLOCKS_EASY_OBSIDIAN_NAME 613
+#define SPASTRING_LB_MINING_BLOCKS_EASY_RATING_NAME 614
+#define SPASTRING_LB_MINING_BLOCKS_NORMAL_NAME 616
+#define SPASTRING_LB_MINING_BLOCKS_NORMAL_LOCALE_NAME 617
+#define SPASTRING_LB_MINING_BLOCKS_NORMAL_DIRT_NAME 618
+#define SPASTRING_LB_MINING_BLOCKS_NORMAL_STONE_NAME 619
+#define SPASTRING_LB_MINING_BLOCKS_NORMAL_SAND_NAME 620
+#define SPASTRING_LB_MINING_BLOCKS_NORMAL_COBBLESTONE_NAME 621
+#define SPASTRING_LB_MINING_BLOCKS_NORMAL_GRAVEL_NAME 622
+#define SPASTRING_LB_MINING_BLOCKS_NORMAL_CLAY_NAME 623
+#define SPASTRING_LB_MINING_BLOCKS_NORMAL_OBSIDIAN_NAME 624
+#define SPASTRING_LB_MINING_BLOCKS_NORMAL_RATING_NAME 625
+#define SPASTRING_LB_MINING_BLOCKS_HARD_NAME 627
+#define SPASTRING_LB_MINING_BLOCKS_HARD_LOCALE_NAME 628
+#define SPASTRING_LB_MINING_BLOCKS_HARD_DIRT_NAME 629
+#define SPASTRING_LB_MINING_BLOCKS_HARD_STONE_NAME 630
+#define SPASTRING_LB_MINING_BLOCKS_HARD_SAND_NAME 631
+#define SPASTRING_LB_MINING_BLOCKS_HARD_COBBLESTONE_NAME 632
+#define SPASTRING_LB_MINING_BLOCKS_HARD_GRAVEL_NAME 633
+#define SPASTRING_LB_MINING_BLOCKS_HARD_CLAY_NAME 634
+#define SPASTRING_LB_MINING_BLOCKS_HARD_OBSIDIAN_NAME 635
+#define SPASTRING_LB_MINING_BLOCKS_HARD_RATING_NAME 636
+#define SPASTRING_LB_FARMING_PEACEFUL_NAME 676
+#define SPASTRING_LB_FARMING_PEACEFUL_LOCALE_NAME 677
+#define SPASTRING_LB_FARMING_PEACEFUL_EGGS_NAME 678
+#define SPASTRING_LB_FARMING_PEACEFUL_WHEAT_NAME 679
+#define SPASTRING_LB_FARMING_PEACEFUL_MUSHROOMS_NAME 680
+#define SPASTRING_LB_FARMING_PEACEFUL_SUGARCANE_NAME 681
+#define SPASTRING_LB_FARMING_PEACEFUL_MILK_NAME 682
+#define SPASTRING_LB_FARMING_PEACEFUL_PUMPKINS_NAME 683
+#define SPASTRING_LB_FARMING_PEACEFUL_RATING_NAME 684
+#define SPASTRING_LB_FARMING_EASY_NAME 686
+#define SPASTRING_LB_FARMING_EASY_LOCALE_NAME 687
+#define SPASTRING_LB_FARMING_EASY_EGGS_NAME 688
+#define SPASTRING_LB_FARMING_EASY_WHEAT_NAME 689
+#define SPASTRING_LB_FARMING_EASY_MUSHROOMS_NAME 690
+#define SPASTRING_LB_FARMING_EASY_SUGARCANE_NAME 691
+#define SPASTRING_LB_FARMING_EASY_MILK_NAME 692
+#define SPASTRING_LB_FARMING_EASY_PUMPKINS_NAME 693
+#define SPASTRING_LB_FARMING_EASY_RATING_NAME 694
+#define SPASTRING_LB_FARMING_NORMAL_NAME 696
+#define SPASTRING_LB_FARMING_NORMAL_LOCALE_NAME 697
+#define SPASTRING_LB_FARMING_NORMAL_EGGS_NAME 698
+#define SPASTRING_LB_FARMING_NORMAL_WHEAT_NAME 699
+#define SPASTRING_LB_FARMING_NORMAL_MUSHROOMS_NAME 700
+#define SPASTRING_LB_FARMING_NORMAL_SUGARCANE_NAME 701
+#define SPASTRING_LB_FARMING_NORMAL_MILK_NAME 702
+#define SPASTRING_LB_FARMING_NORMAL_PUMPKINS_NAME 703
+#define SPASTRING_LB_FARMING_NORMAL_RATING_NAME 704
+#define SPASTRING_LB_FARMING_HARD_NAME 706
+#define SPASTRING_LB_FARMING_HARD_LOCALE_NAME 707
+#define SPASTRING_LB_FARMING_HARD_EGGS_NAME 708
+#define SPASTRING_LB_FARMING_HARD_WHEAT_NAME 709
+#define SPASTRING_LB_FARMING_HARD_MUSHROOMS_NAME 710
+#define SPASTRING_LB_FARMING_HARD_SUGARCANE_NAME 711
+#define SPASTRING_LB_FARMING_HARD_MILK_NAME 712
+#define SPASTRING_LB_FARMING_HARD_PUMPKINS_NAME 713
+#define SPASTRING_LB_FARMING_HARD_RATING_NAME 714
+#define SPASTRING_LB_TRAVELLING_PEACEFUL_NAME 715
+#define SPASTRING_LB_TRAVELLING_PEACEFUL_LOCALE_NAME 716
+#define SPASTRING_LB_TRAVELLING_PEACEFUL_WALKED_NAME 717
+#define SPASTRING_LB_TRAVELLING_PEACEFUL_SWAM_NAME 718
+#define SPASTRING_LB_TRAVELLING_PEACEFUL_FALLEN_NAME 719
+#define SPASTRING_LB_TRAVELLING_PEACEFUL_CLIMBED_NAME 720
+#define SPASTRING_LB_TRAVELLING_PEACEFUL_MINECART_NAME 721
+#define SPASTRING_LB_TRAVELLING_PEACEFUL_BOAT_NAME 722
+#define SPASTRING_LB_TRAVELLING_PEACEFUL_RATING_NAME 724
+#define SPASTRING_LB_TRAVELLING_EASY_NAME 726
+#define SPASTRING_LB_TRAVELLING_EASY_LOCALE_NAME 727
+#define SPASTRING_LB_TRAVELLING_EASY_WALKED_NAME 728
+#define SPASTRING_LB_TRAVELLING_EASY_SWAM_NAME 729
+#define SPASTRING_LB_TRAVELLING_EASY_FALLEN_NAME 730
+#define SPASTRING_LB_TRAVELLING_EASY_CLIMBED_NAME 731
+#define SPASTRING_LB_TRAVELLING_EASY_MINECART_NAME 732
+#define SPASTRING_LB_TRAVELLING_EASY_BOAT_NAME 733
+#define SPASTRING_LB_TRAVELLING_EASY_RATING_NAME 735
+#define SPASTRING_LB_TRAVELLING_NORMAL_NAME 737
+#define SPASTRING_LB_TRAVELLING_NORMAL_LOCALE_NAME 738
+#define SPASTRING_LB_TRAVELLING_NORMAL_WALKED_NAME 739
+#define SPASTRING_LB_TRAVELLING_NORMAL_SWAM_NAME 740
+#define SPASTRING_LB_TRAVELLING_NORMAL_FALLEN_NAME 741
+#define SPASTRING_LB_TRAVELLING_NORMAL_CLIMBED_NAME 742
+#define SPASTRING_LB_TRAVELLING_NORMAL_MINECART_NAME 743
+#define SPASTRING_LB_TRAVELLING_NORMAL_BOAT_NAME 744
+#define SPASTRING_LB_TRAVELLING_NORMAL_RATING_NAME 746
+#define SPASTRING_LB_TRAVELLING_HARD_NAME 748
+#define SPASTRING_LB_TRAVELLING_HARD_LOCALE_NAME 749
+#define SPASTRING_LB_TRAVELLING_HARD_WALKED_NAME 750
+#define SPASTRING_LB_TRAVELLING_HARD_SWAM_NAME 751
+#define SPASTRING_LB_TRAVELLING_HARD_FALLEN_NAME 752
+#define SPASTRING_LB_TRAVELLING_HARD_CLIMBED_NAME 753
+#define SPASTRING_LB_TRAVELLING_HARD_MINECART_NAME 754
+#define SPASTRING_LB_TRAVELLING_HARD_BOAT_NAME 755
+#define SPASTRING_LB_TRAVELLING_HARD_RATING_NAME 757
+#define SPASTRING_LB_TRAVELLING_TOTAL_NAME 795
+#define SPASTRING_LB_TRAVELLING_TOTAL_RATING_NAME 796
+#define SPASTRING_LB_ARCADE_TRAVELLING_TOTAL_RATING_NAME 797
+#define SPASTRING_PROPERTY_COLLECTED_NETHERLAVA_NAME 799
+#define SPASTRING_PRESENCE_MULTIPLAYEROFFLINE_NAME 803
+#define SPASTRING_PRESENCE_MULTIPLAYER_1P_NAME 804
+#define SPASTRING_PRESENCE_MULTIPLAYER_1POFFLINE_NAME 805
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __MINECRAFT_SPA_H__
+
+
diff --git a/Minecraft.Client/Xbox/GameConfig/MinecraftIcon.png b/Minecraft.Client/Xbox/GameConfig/MinecraftIcon.png
new file mode 100644
index 00000000..0244c448
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/MinecraftIcon.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/MinecraftMarketplace.png b/Minecraft.Client/Xbox/GameConfig/MinecraftMarketplace.png
new file mode 100644
index 00000000..0cf44c87
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/MinecraftMarketplace.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/Minecraft_BKGND.png b/Minecraft.Client/Xbox/GameConfig/Minecraft_BKGND.png
new file mode 100644
index 00000000..5ab5c786
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/Minecraft_BKGND.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/Minecraft_BOXART.png b/Minecraft.Client/Xbox/GameConfig/Minecraft_BOXART.png
new file mode 100644
index 00000000..c3b1becb
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/Minecraft_BOXART.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/TitleAward1_F_icon-128.png b/Minecraft.Client/Xbox/GameConfig/TitleAward1_F_icon-128.png
new file mode 100644
index 00000000..0a776980
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/TitleAward1_F_icon-128.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/TitleAward1_F_icon-64.png b/Minecraft.Client/Xbox/GameConfig/TitleAward1_F_icon-64.png
new file mode 100644
index 00000000..5dfb3636
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/TitleAward1_F_icon-64.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/TitleAward1_M_icon-128.png b/Minecraft.Client/Xbox/GameConfig/TitleAward1_M_icon-128.png
new file mode 100644
index 00000000..939287c7
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/TitleAward1_M_icon-128.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/TitleAward1_M_icon-64.png b/Minecraft.Client/Xbox/GameConfig/TitleAward1_M_icon-64.png
new file mode 100644
index 00000000..01c40eaa
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/TitleAward1_M_icon-64.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/TitleAward2_F_icon-128.png b/Minecraft.Client/Xbox/GameConfig/TitleAward2_F_icon-128.png
new file mode 100644
index 00000000..5fa2a28b
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/TitleAward2_F_icon-128.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/TitleAward2_F_icon-64.png b/Minecraft.Client/Xbox/GameConfig/TitleAward2_F_icon-64.png
new file mode 100644
index 00000000..d3a7f4b9
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/TitleAward2_F_icon-64.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/TitleAward2_M_icon-128.png b/Minecraft.Client/Xbox/GameConfig/TitleAward2_M_icon-128.png
new file mode 100644
index 00000000..ca0dce79
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/TitleAward2_M_icon-128.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/TitleAward2_M_icon-64.png b/Minecraft.Client/Xbox/GameConfig/TitleAward2_M_icon-64.png
new file mode 100644
index 00000000..2a78f4d7
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/TitleAward2_M_icon-64.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/TitleAward3_icon-128.png b/Minecraft.Client/Xbox/GameConfig/TitleAward3_icon-128.png
new file mode 100644
index 00000000..baea1a16
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/TitleAward3_icon-128.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/TitleAward3_icon-64.png b/Minecraft.Client/Xbox/GameConfig/TitleAward3_icon-64.png
new file mode 100644
index 00000000..c0127d64
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/TitleAward3_icon-64.png differ
diff --git a/Minecraft.Client/Xbox/GameConfig/Tshirt5_Porkchop_Female.bin b/Minecraft.Client/Xbox/GameConfig/Tshirt5_Porkchop_Female.bin
new file mode 100644
index 00000000..1d3c66ea
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/Tshirt5_Porkchop_Female.bin differ
diff --git a/Minecraft.Client/Xbox/GameConfig/Tshirt5_Porkchop_Male.bin b/Minecraft.Client/Xbox/GameConfig/Tshirt5_Porkchop_Male.bin
new file mode 100644
index 00000000..8afe4bf6
Binary files /dev/null and b/Minecraft.Client/Xbox/GameConfig/Tshirt5_Porkchop_Male.bin differ
diff --git a/Minecraft.Client/Xbox/Leaderboards/XboxLeaderboardManager.cpp b/Minecraft.Client/Xbox/Leaderboards/XboxLeaderboardManager.cpp
new file mode 100644
index 00000000..efa8a3da
--- /dev/null
+++ b/Minecraft.Client/Xbox/Leaderboards/XboxLeaderboardManager.cpp
@@ -0,0 +1,520 @@
+#include "stdafx.h"
+
+#include "XboxLeaderboardManager.h"
+
+#include "..\Network\NetworkPlayerXbox.h"
+
+#ifdef _XBOX
+LeaderboardManager *LeaderboardManager::m_instance = new XboxLeaderboardManager(); //Singleton instance of the LeaderboardManager
+#endif
+
+const XboxLeaderboardManager::LeaderboardDescriptor XboxLeaderboardManager::LEADERBOARD_DESCRIPTORS[XboxLeaderboardManager::NUM_LEADERBOARDS][4] = {
+ {
+ XboxLeaderboardManager::LeaderboardDescriptor( STATS_VIEW_TRAVELLING_PEACEFUL, 4, STATS_COLUMN_TRAVELLING_PEACEFUL_WALKED, STATS_COLUMN_TRAVELLING_PEACEFUL_FALLEN, STATS_COLUMN_TRAVELLING_PEACEFUL_MINECART, STATS_COLUMN_TRAVELLING_PEACEFUL_BOAT, NULL, NULL, NULL,NULL),
+ XboxLeaderboardManager::LeaderboardDescriptor( STATS_VIEW_TRAVELLING_EASY, 4, STATS_COLUMN_TRAVELLING_EASY_WALKED, STATS_COLUMN_TRAVELLING_EASY_FALLEN, STATS_COLUMN_TRAVELLING_EASY_MINECART, STATS_COLUMN_TRAVELLING_EASY_BOAT, NULL, NULL, NULL,NULL),
+ XboxLeaderboardManager::LeaderboardDescriptor( STATS_VIEW_TRAVELLING_NORMAL, 4, STATS_COLUMN_TRAVELLING_NORMAL_WALKED, STATS_COLUMN_TRAVELLING_NORMAL_FALLEN, STATS_COLUMN_TRAVELLING_NORMAL_MINECART, STATS_COLUMN_TRAVELLING_NORMAL_BOAT, NULL, NULL, NULL,NULL),
+ XboxLeaderboardManager::LeaderboardDescriptor( STATS_VIEW_TRAVELLING_HARD, 4, STATS_COLUMN_TRAVELLING_HARD_WALKED, STATS_COLUMN_TRAVELLING_HARD_FALLEN, STATS_COLUMN_TRAVELLING_HARD_MINECART, STATS_COLUMN_TRAVELLING_HARD_BOAT, NULL, NULL, NULL,NULL),
+ }, {
+ XboxLeaderboardManager::LeaderboardDescriptor( STATS_VIEW_MINING_BLOCKS_PEACEFUL, 7, STATS_COLUMN_MINING_BLOCKS_PEACEFUL_DIRT, STATS_COLUMN_MINING_BLOCKS_PEACEFUL_STONE, STATS_COLUMN_MINING_BLOCKS_PEACEFUL_SAND, STATS_COLUMN_MINING_BLOCKS_PEACEFUL_COBBLESTONE, STATS_COLUMN_MINING_BLOCKS_PEACEFUL_GRAVEL, STATS_COLUMN_MINING_BLOCKS_PEACEFUL_CLAY, STATS_COLUMN_MINING_BLOCKS_PEACEFUL_OBSIDIAN, NULL ),
+ XboxLeaderboardManager::LeaderboardDescriptor( STATS_VIEW_MINING_BLOCKS_EASY, 7, STATS_COLUMN_MINING_BLOCKS_EASY_DIRT, STATS_COLUMN_MINING_BLOCKS_EASY_STONE, STATS_COLUMN_MINING_BLOCKS_EASY_SAND, STATS_COLUMN_MINING_BLOCKS_EASY_COBBLESTONE, STATS_COLUMN_MINING_BLOCKS_EASY_GRAVEL, STATS_COLUMN_MINING_BLOCKS_EASY_CLAY, STATS_COLUMN_MINING_BLOCKS_EASY_OBSIDIAN, NULL ),
+ XboxLeaderboardManager::LeaderboardDescriptor( STATS_VIEW_MINING_BLOCKS_NORMAL, 7, STATS_COLUMN_MINING_BLOCKS_NORMAL_DIRT, STATS_COLUMN_MINING_BLOCKS_NORMAL_STONE, STATS_COLUMN_MINING_BLOCKS_NORMAL_SAND, STATS_COLUMN_MINING_BLOCKS_NORMAL_COBBLESTONE, STATS_COLUMN_MINING_BLOCKS_NORMAL_GRAVEL, STATS_COLUMN_MINING_BLOCKS_NORMAL_CLAY, STATS_COLUMN_MINING_BLOCKS_NORMAL_OBSIDIAN, NULL ),
+ XboxLeaderboardManager::LeaderboardDescriptor( STATS_VIEW_MINING_BLOCKS_HARD, 7, STATS_COLUMN_MINING_BLOCKS_HARD_DIRT, STATS_COLUMN_MINING_BLOCKS_HARD_STONE, STATS_COLUMN_MINING_BLOCKS_HARD_SAND, STATS_COLUMN_MINING_BLOCKS_HARD_COBBLESTONE, STATS_COLUMN_MINING_BLOCKS_HARD_GRAVEL, STATS_COLUMN_MINING_BLOCKS_HARD_CLAY, STATS_COLUMN_MINING_BLOCKS_HARD_OBSIDIAN, NULL ),
+ }, {
+ XboxLeaderboardManager::LeaderboardDescriptor( STATS_VIEW_FARMING_PEACEFUL, 6, STATS_COLUMN_FARMING_PEACEFUL_EGGS, STATS_COLUMN_FARMING_PEACEFUL_WHEAT, STATS_COLUMN_FARMING_PEACEFUL_MUSHROOMS,STATS_COLUMN_FARMING_PEACEFUL_SUGARCANE,STATS_COLUMN_FARMING_PEACEFUL_MILK, STATS_COLUMN_FARMING_PEACEFUL_PUMPKINS, NULL, NULL ),
+ XboxLeaderboardManager::LeaderboardDescriptor( STATS_VIEW_FARMING_EASY, 6, STATS_COLUMN_FARMING_EASY_EGGS, STATS_COLUMN_FARMING_PEACEFUL_WHEAT, STATS_COLUMN_FARMING_EASY_MUSHROOMS, STATS_COLUMN_FARMING_EASY_SUGARCANE, STATS_COLUMN_FARMING_EASY_MILK, STATS_COLUMN_FARMING_EASY_PUMPKINS, NULL, NULL ),
+ XboxLeaderboardManager::LeaderboardDescriptor( STATS_VIEW_FARMING_NORMAL, 6, STATS_COLUMN_FARMING_NORMAL_EGGS, STATS_COLUMN_FARMING_NORMAL_WHEAT, STATS_COLUMN_FARMING_NORMAL_MUSHROOMS, STATS_COLUMN_FARMING_NORMAL_SUGARCANE, STATS_COLUMN_FARMING_NORMAL_MILK, STATS_COLUMN_FARMING_NORMAL_PUMPKINS, NULL, NULL ),
+ XboxLeaderboardManager::LeaderboardDescriptor( STATS_VIEW_FARMING_HARD, 6, STATS_COLUMN_FARMING_HARD_EGGS, STATS_COLUMN_FARMING_HARD_WHEAT, STATS_COLUMN_FARMING_HARD_MUSHROOMS, STATS_COLUMN_FARMING_HARD_SUGARCANE, STATS_COLUMN_FARMING_HARD_MILK, STATS_COLUMN_FARMING_HARD_PUMPKINS, NULL, NULL ),
+ }, {
+ XboxLeaderboardManager::LeaderboardDescriptor( NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ),
+ XboxLeaderboardManager::LeaderboardDescriptor( STATS_VIEW_KILLS_EASY, 7, STATS_COLUMN_KILLS_EASY_ZOMBIES, STATS_COLUMN_KILLS_EASY_SKELETONS, STATS_COLUMN_KILLS_EASY_CREEPERS, STATS_COLUMN_KILLS_EASY_SPIDERS, STATS_COLUMN_KILLS_EASY_SPIDERJOCKEYS, STATS_COLUMN_KILLS_EASY_ZOMBIEPIGMEN, STATS_COLUMN_KILLS_EASY_SLIME, NULL ),
+ XboxLeaderboardManager::LeaderboardDescriptor( STATS_VIEW_KILLS_NORMAL, 7, STATS_COLUMN_KILLS_NORMAL_ZOMBIES, STATS_COLUMN_KILLS_NORMAL_SKELETONS, STATS_COLUMN_KILLS_NORMAL_CREEPERS, STATS_COLUMN_KILLS_NORMAL_SPIDERS, STATS_COLUMN_KILLS_NORMAL_SPIDERJOCKEYS, STATS_COLUMN_KILLS_NORMAL_ZOMBIEPIGMEN, STATS_COLUMN_KILLS_NORMAL_SLIME, NULL ),
+ XboxLeaderboardManager::LeaderboardDescriptor( STATS_VIEW_KILLS_HARD, 7, STATS_COLUMN_KILLS_HARD_ZOMBIES, STATS_COLUMN_KILLS_HARD_SKELETONS, STATS_COLUMN_KILLS_HARD_CREEPERS, STATS_COLUMN_KILLS_HARD_SPIDERS, STATS_COLUMN_KILLS_HARD_SPIDERJOCKEYS, STATS_COLUMN_KILLS_HARD_ZOMBIEPIGMEN, STATS_COLUMN_KILLS_HARD_SLIME, NULL ),
+ },
+};
+
+XboxLeaderboardManager::XboxLeaderboardManager()
+{
+ m_eStatsState = eStatsState_Idle;
+ m_statsRead = false;
+
+ m_hSession = NULL;
+ m_spec = NULL;
+ m_stats = NULL;
+
+ m_isQNetSession = false;
+ m_endingSession = false;
+}
+
+XboxLeaderboardManager::~XboxLeaderboardManager() {}
+
+void XboxLeaderboardManager::Tick()
+{
+ if( m_eStatsState == eStatsState_Getting )
+ {
+
+ /*if( IsStatsReadComplete() )
+ if( m_readCompleteCallback != NULL )
+ m_readCompleteCallback(m_readCompleteUserdata);*/
+
+ if ( IsStatsReadComplete() )
+ if (m_readListener != NULL)
+ {
+ // 4J Stu - If the state is other than ready, then we don't have any stats to sort
+ if(m_eFilterMode == LeaderboardManager::eFM_Friends && m_eStatsState == eStatsState_Ready) SortFriendStats();
+
+ bool ret = m_readListener->OnStatsReadComplete(m_eStatsState==eStatsState_Ready, 0, m_stats); // TODO
+ if (ret) m_eStatsState = eStatsState_Idle;
+ }
+ }
+
+ if( m_endingSession )
+ {
+ if( XHasOverlappedIoCompleted( &m_endSessionOverlapped ))
+ {
+ DeleteSession();
+ m_endingSession = false;
+ }
+ }
+}
+
+bool XboxLeaderboardManager::OpenSession()
+{
+ //Can't create a new session when deleting a previous one
+ if (m_endingSession) return false;
+
+ //We've already got an open session
+ if (m_hSession != NULL) return true;
+
+ int lockedProfile = ProfileManager.GetLockedProfile();
+ if( lockedProfile == -1 )
+ {
+ m_hSession = NULL;
+ return false;
+ }
+
+ XUserGetXUID(lockedProfile, &m_myXUID);
+ XUserSetContext(lockedProfile, X_CONTEXT_GAME_TYPE, X_CONTEXT_GAME_TYPE_STANDARD);
+
+ //We already have a QNet session (ie we are joining/in/leaving a multiplayer game)
+ if(g_NetworkManager.IsInSession())
+ {
+ if(g_NetworkManager.IsInStatsEnabledSession())
+ {
+ m_isQNetSession = true;
+ return true;
+ }
+ //else
+ //{
+ // return false;
+ //}
+ }
+
+ XSESSION_INFO sessionInfo;
+ ULONGLONG sessionNonce;
+
+ DWORD ret = XSessionCreate(XSESSION_CREATE_USES_STATS | XSESSION_CREATE_HOST, lockedProfile, 8, 8, &sessionNonce, &sessionInfo, NULL, &m_hSession);
+ if( ret != ERROR_SUCCESS )
+ {
+ m_hSession = NULL;
+ return false;
+ }
+
+ DWORD userIndices[1] = { lockedProfile };
+ BOOL privateSlots[1] = { FALSE };
+ ret = XSessionJoinLocal(m_hSession, 1, userIndices, privateSlots, NULL);
+ if( ret != ERROR_SUCCESS )
+ {
+ m_hSession = NULL;
+ return false;
+ }
+
+ ret = XSessionStart(m_hSession, 0, NULL);
+ if( ret != ERROR_SUCCESS )
+ {
+ m_hSession = NULL;
+ return false;
+ }
+
+ return true;
+}
+
+void XboxLeaderboardManager::CloseSession()
+{
+ if( !m_endingSession )
+ {
+ if (!XHasOverlappedIoCompleted(&m_overlapped))
+ XCancelOverlapped(&m_overlapped);
+
+ if (m_isQNetSession == true)
+ {
+ m_isQNetSession = false;
+ return;
+ }
+
+ if (m_hSession == NULL) return;
+
+ memset(&m_endSessionOverlapped, 0, sizeof(m_endSessionOverlapped));
+
+ DWORD ret = XSessionEnd( m_hSession, &m_endSessionOverlapped );
+ if (ret == ERROR_SUCCESS || ret == ERROR_IO_PENDING)
+ {
+ m_endingSession = true;
+ }
+ else
+ {
+ //Failed so just delete the session
+ if (ret != ERROR_SUCCESS) DeleteSession();
+ }
+
+ m_readListener = NULL;
+ }
+}
+
+void XboxLeaderboardManager::DeleteSession()
+{
+ XSessionDelete(m_hSession, NULL);
+ CloseHandle(m_hSession);
+ m_hSession = NULL;
+}
+
+bool XboxLeaderboardManager::WriteStats(unsigned int viewCount, ViewIn views)
+{
+ DWORD ret = S_OK;
+
+ // some debug code to catch the leaderboard write with 7 views
+#ifndef _CONTENT_PACKAGE
+ if(viewCount>5) __debugbreak();
+#endif
+
+ // 4J Stu - If we are online we already have a session, so use that
+ if(m_isQNetSession == true)
+ {
+ INetworkPlayer *player = g_NetworkManager.GetPlayerByXuid(m_myXUID);
+ if(player != NULL)
+ {
+ ret = ((NetworkPlayerXbox *)player)->GetQNetPlayer()->WriteStats(viewCount,views);
+ //printf("Wrote stats to QNet player\n");
+ }
+ else
+ {
+ ret = ERROR_NO_SUCH_USER;
+ assert(false && "Failed to write stats to a QNET session as no player exists with that XUID");
+ app.DebugPrintf("Failed to write stats to a QNET session as no player exists with that XUID\n");
+ }
+ }
+ else
+ {
+ ret = XSessionWriteStats(m_hSession, m_myXUID, viewCount, views, NULL);
+ }
+ if (ret != ERROR_SUCCESS) return false;
+ return true;
+}
+
+void XboxLeaderboardManager::CancelOperation()
+{
+ //Need to have a session open
+ if( m_hSession == NULL )
+ if( !OpenSession() )
+ return;
+
+ //Abort any current read operation
+ if( m_eStatsState == eStatsState_Getting )
+ if( !XHasOverlappedIoCompleted( &m_overlapped ))
+ XCancelOverlapped( &m_overlapped );
+
+ m_eStatsState = eStatsState_Idle;
+}
+
+bool XboxLeaderboardManager::ReadStats_MyScore(LeaderboardReadListener *callback, int difficulty, EStatsType type, PlayerUID myUID, unsigned int readCount)
+{
+ if (!readStats(difficulty,type)) return false;
+ if (!LeaderboardManager::ReadStats_MyScore(callback, difficulty, type, myUID, readCount)) return false;
+
+ HANDLE hEnumerator;
+ DWORD ret;
+
+ //DWORD readCount = 0;
+
+ m_numStats = 0;
+ ret = XUserCreateStatsEnumeratorByXuid(
+ 0,
+ m_myXUID,
+ readCount,
+ 1, //specCount,
+ m_spec,
+ &m_numStats,
+ &hEnumerator);
+
+ if( ret != ERROR_SUCCESS ) return false;
+
+ //Allocate a buffer for the stats
+ m_stats = (PXUSER_STATS_READ_RESULTS) new BYTE[m_numStats];
+ if (m_stats == NULL) return false;
+
+ memset(m_stats, 0, m_numStats);
+ memset(&m_overlapped, 0, sizeof(m_overlapped));
+
+ ret = XEnumerate(
+ hEnumerator, // Enumeration handle
+ m_stats, // Buffer
+ m_numStats, // Size of buffer
+ NULL, // Number of rows returned; not used for async
+ &m_overlapped ); // Overlapped structure; not used for sync
+
+ if ( (ret!=ERROR_SUCCESS) && (ret!=ERROR_IO_PENDING) ) return false;
+
+ m_eStatsState = eStatsState_Getting;
+ return true;
+}
+
+bool XboxLeaderboardManager::ReadStats_Friends(LeaderboardReadListener *callback, int difficulty, EStatsType type, PlayerUID myUID, unsigned int startIndex, unsigned int readCount)
+{
+ if (!readStats(difficulty,type)) return false;
+ if (!LeaderboardManager::ReadStats_Friends(callback, difficulty, type, myUID, startIndex, readCount)) return false;
+
+ HANDLE hEnumerator;
+ DWORD ret;
+
+ unsigned int friendCount;
+ XUID *friends;
+
+ getFriends(friendCount, &friends);
+
+ if(friendCount == 0 || friends == NULL)
+ {
+ app.DebugPrintf("XboxLeaderboardManager::ReadStats_Friends - No friends found. Possibly you are offline?\n");
+ return false;
+ }
+ assert(friendCount > 0 && friends != NULL);
+
+ m_numStats = 0;
+ ret = XUserReadStats(
+ 0,
+ friendCount,
+ friends,
+ 1, //specCount,
+ m_spec,
+ &m_numStats,
+ NULL,
+ NULL
+ );
+
+ //Annoyingly, this returns ERROR_INSUFFICIENT_BUFFER when it is being asked to calculate the size of the buffer by passing zero resultsSize
+ if ( (ret!=ERROR_SUCCESS) && (ret!=ERROR_INSUFFICIENT_BUFFER) ) return false;
+
+ //Allocate a buffer for the stats
+ m_stats = (PXUSER_STATS_READ_RESULTS) new BYTE[m_numStats];
+ if (m_stats == NULL) return false;
+
+ memset(m_stats, 0, m_numStats);
+ memset(&m_overlapped, 0, sizeof(m_overlapped));
+
+ ret = XUserReadStats(
+ 0,
+ friendCount,
+ friends,
+ 1,
+ m_spec,
+ &m_numStats,
+ m_stats,
+ &m_overlapped);
+
+ if( (ret!=ERROR_SUCCESS) && (ret!=ERROR_IO_PENDING) ) return false;
+
+ m_eStatsState = eStatsState_Getting;
+ return true;
+}
+
+bool XboxLeaderboardManager::ReadStats_TopRank(LeaderboardReadListener *callback, int difficulty, EStatsType type , unsigned int startIndex, unsigned int readCount)
+{
+ if (!readStats(difficulty,type)) return false;
+ if (!LeaderboardManager::ReadStats_TopRank(callback, difficulty, type, startIndex, readCount)) return false;
+
+ HANDLE hEnumerator;
+
+ m_numStats = 0;
+ DWORD ret = XUserCreateStatsEnumeratorByRank(
+ 0, // Current title ID
+ startIndex, // Index to start enumerating from
+ readCount, // Number of rows to retrieve
+ 1, // Number of stats specs
+ m_spec, // Stats spec,
+ &m_numStats, // Size of buffer
+ &hEnumerator ); // Enumeration handle
+
+ if( ret != ERROR_SUCCESS ) return false;
+
+ //Allocate a buffer for the stats
+ m_stats = (PXUSER_STATS_READ_RESULTS) new BYTE[m_numStats];
+ if (m_stats == NULL) return false;
+
+ memset(m_stats, 0, m_numStats);
+ memset(&m_overlapped, 0, sizeof(m_overlapped));
+
+ ret = XEnumerate(
+ hEnumerator, // Enumeration handle
+ m_stats, // Buffer
+ m_numStats, // Size of buffer
+ NULL, // Number of rows returned; not used for async
+ &m_overlapped ); // Overlapped structure; not used for sync
+
+ if( (ret!=ERROR_SUCCESS) && (ret!=ERROR_IO_PENDING) ) return false;
+
+ m_eStatsState = eStatsState_Getting;
+ return true;
+}
+
+bool XboxLeaderboardManager::readStats(int difficulty, EStatsType type)
+{
+ //Need to have a session open
+ if (m_hSession==NULL) if(!OpenSession()) return false;
+
+ m_eStatsState = eStatsState_Failed;
+ m_statsRead = false;
+
+ if (m_stats) delete [] m_stats;
+
+ //Setup the spec structure for the read request
+ m_spec = new XUSER_STATS_SPEC[1];
+ m_spec[0].dwViewId = LEADERBOARD_DESCRIPTORS[(int)type][difficulty].m_viewId;
+ m_spec[0].dwNumColumnIds = LEADERBOARD_DESCRIPTORS[(int)type][difficulty].m_columnCount;
+ for (unsigned int i=0; idwNumViews == 0 || m_stats->pViews[0].dwNumRows == 0 )
+ {
+ m_eStatsState = eStatsState_NoResults;
+ if( m_stats )
+ {
+ delete [] m_stats;
+ m_stats = NULL;
+ }
+ }
+ else
+ {
+ m_eStatsState = eStatsState_Ready;
+ }
+ }
+ return true;
+ }
+
+ return false;
+}
+
+int XboxLeaderboardManager::FriendSortFunction(const void* a, const void* b)
+{
+ return ((int)((XUSER_STATS_ROW*)a)->dwRank) - ((int)((XUSER_STATS_ROW*)b)->dwRank);
+}
+
+void XboxLeaderboardManager::SortFriendStats()
+{
+ for( unsigned int leaderboardIndex=0 ; leaderboardIndexdwNumViews ; ++leaderboardIndex )
+ {
+ //First filter out any friends who aren't in the leaderboard
+ XUSER_STATS_ROW* pRow = m_stats->pViews[leaderboardIndex].pRows;
+ //View rows is returned not including XUIDs that aren't in this leaderboard, but we want to recalculate that sort of thing
+ m_stats->pViews[leaderboardIndex].dwTotalViewRows = m_stats->pViews[leaderboardIndex].dwNumRows;
+ for( unsigned int rowIndex=0 ; rowIndexpViews[leaderboardIndex].dwTotalViewRows ; )
+ {
+ if( pRow->dwRank == 0 )
+ {
+ memmove( pRow, pRow + 1, ( ( m_stats->pViews[leaderboardIndex].dwTotalViewRows - rowIndex ) - 1 ) * sizeof(XUSER_STATS_ROW) );
+ m_stats->pViews[leaderboardIndex].dwTotalViewRows--;
+ }
+ else
+ {
+ rowIndex++;
+ pRow++;
+ }
+ }
+
+ //Then sort by rank
+ qsort( m_stats->pViews[leaderboardIndex].pRows, m_stats->pViews[leaderboardIndex].dwTotalViewRows, sizeof(XUSER_STATS_ROW), FriendSortFunction );
+ m_stats->pViews[leaderboardIndex].dwNumRows = m_stats->pViews[leaderboardIndex].dwTotalViewRows;
+ }
+}
+
+#if 0
+void XboxLeaderboardManager::SetStatsRetrieved(bool success)
+{
+ if( m_stats != NULL )
+ {
+ delete [] m_stats;
+ m_stats = NULL;
+ }
+
+ m_statsRead = success;
+ m_eStatsState = eStatsState_Idle;
+}
+#endif
+
+
+// 4J-JEV: Adapted/stolen from 'XUI_Leaderboards'.
+bool XboxLeaderboardManager::getFriends(unsigned int &friendsCount, PlayerUID** friends)
+{
+ DWORD resultsSize;
+ HANDLE hEnumerator;
+ DWORD ret;
+ DWORD numFriends;
+
+ //First, get a list of (up to 100) friends (this is the maximum that the enumerator currently supports)
+ ret = XFriendsCreateEnumerator( ProfileManager.GetLockedProfile(), 0, 100, &resultsSize, &hEnumerator);
+ if(ret!=ERROR_SUCCESS) return false;
+
+ XONLINE_FRIEND *xonlineFriends = (XONLINE_FRIEND*) new BYTE[resultsSize];
+
+ ret = XEnumerate(
+ hEnumerator,
+ xonlineFriends,
+ resultsSize,
+ &numFriends,
+ NULL
+ );
+
+ if (ret!=ERROR_SUCCESS) friendsCount = 0;
+
+ PlayerUID *filteredFriends = new PlayerUID[numFriends+1];
+
+ friendsCount = 0;
+ for (unsigned int friendIndex=0; friendIndexGetMyXUID();
+
+ // Return.
+ *friends = filteredFriends;
+ return true;
+}
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Leaderboards/XboxLeaderboardManager.h b/Minecraft.Client/Xbox/Leaderboards/XboxLeaderboardManager.h
new file mode 100644
index 00000000..c9990901
--- /dev/null
+++ b/Minecraft.Client/Xbox/Leaderboards/XboxLeaderboardManager.h
@@ -0,0 +1,136 @@
+#pragma once
+
+#include
+#include
+
+#include "..\..\Common\Leaderboards\LeaderboardManager.h"
+
+class XboxLeaderboardManager : public LeaderboardManager
+{
+public:
+ enum EStatsState
+ {
+ eStatsState_Idle=0, //No current stats read operation
+ eStatsState_Getting, //Stats read in progress
+ eStatsState_Failed, //Stats read failed
+ eStatsState_Ready, //Stats read completed, ready for use
+ eStatsState_NoResults, //Stats read completed, no results found
+ eNumStatStates,
+ };
+
+protected: // LEADERBOARD DESCRIPTIONS //
+ // From 'XUI_Leaderboards.cpp'.
+
+ // 4J Stu - Because the kills leaderboard doesn't a peaceful entry there are some special
+ // handling to make it skip that. We have re-arranged the order of the leaderboards so
+ // I am making this in case we do it again.
+ // 4J Stu - Made it a member of the class, rather than a #define
+ static const int LEADERBOARD_KILLS_POSITION = 3;
+
+ static const int NUM_LEADERBOARDS = 4;//6; //Number of leaderboards
+ static const int NUM_ENTRIES = 101; //Cache up to this many entries
+ static const int READ_SIZE = 15; //Read this many entries at a time
+
+ struct LeaderboardDescriptor {
+ DWORD m_viewId;
+ DWORD m_columnCount;
+ WORD m_columnIds[8];
+
+ LeaderboardDescriptor( DWORD viewId, DWORD columnCount,
+ WORD columnId_0, WORD columnId_1, WORD columnId_2, WORD columnId_3,
+ WORD columnId_4, WORD columnId_5, WORD columnId_6, WORD columnId_7)
+ {
+ m_viewId = viewId;
+ m_columnCount = columnCount;
+ m_columnIds[0] = columnId_0;
+ m_columnIds[1] = columnId_1;
+ m_columnIds[2] = columnId_2;
+ m_columnIds[3] = columnId_3;
+ m_columnIds[4] = columnId_4;
+ m_columnIds[5] = columnId_5;
+ m_columnIds[6] = columnId_6;
+ m_columnIds[7] = columnId_7;
+ }
+ };
+
+ static const LeaderboardDescriptor LEADERBOARD_DESCRIPTORS[NUM_LEADERBOARDS][4];
+
+
+private:
+
+ EStatsState m_eStatsState; //State of the stats read
+ bool m_statsRead; //Whether or not the stats read operation has completed
+
+ HANDLE m_hSession; //Current session
+ XOVERLAPPED m_overlapped; //Overlapped structure used for async actions
+ XUSER_STATS_SPEC* m_spec; //Spec structure used in reads
+
+ DWORD m_numStats;
+ PXUSER_STATS_READ_RESULTS m_stats; //Structure that stats are read into
+
+ bool m_isQNetSession; //Session is being managed via QNet
+ bool m_endingSession; //Session is currently being ended
+ XOVERLAPPED m_endSessionOverlapped; //Overlapped stucture for end session async action
+
+ XOVERLAPPED m_flushStatsOverlapped;
+
+public:
+ XboxLeaderboardManager();
+ ~XboxLeaderboardManager();
+
+ virtual void Tick();
+
+ //Open a session
+ virtual bool OpenSession();
+
+ //Close a session
+ virtual void CloseSession();
+
+ //Delete a session
+ virtual void DeleteSession();
+
+ //Write the given stats
+ //This is called synchronously and will not free any memory allocated for views when it is done
+ virtual bool WriteStats(unsigned int viewCount, ViewIn views);
+
+ virtual bool ReadStats_Friends(LeaderboardReadListener *callback, int difficulty, EStatsType type, PlayerUID myUID, unsigned int startIndex, unsigned int readCount);
+ virtual bool ReadStats_MyScore(LeaderboardReadListener *callback, int difficulty, EStatsType type, PlayerUID myUID, unsigned int readCount);
+ virtual bool ReadStats_TopRank(LeaderboardReadListener *callback, int difficulty, EStatsType type , unsigned int startIndex, unsigned int readCount);
+
+ //Perform a flush of the stats
+ virtual void FlushStats();
+
+ //Cancel the current operation
+ virtual void CancelOperation();
+
+ virtual bool isIdle() { return m_eStatsState != eStatsState_Getting; }
+
+private:
+ bool readStats(int difficulty, EStatsType type);
+
+ //Check if the stats read operation has completed
+ bool IsStatsReadComplete();
+
+ //Function used by qsort to sort friends
+ static int FriendSortFunction(const void* a, const void* b);
+
+ //Sort the list of friend stats
+ void SortFriendStats();
+
+ bool getFriends(unsigned int &friendsCount, XUID** friends);
+
+#if 0
+public:
+
+ //Should be called once the stats have been retrieved and used by the application
+ void SetStatsRetrieved(bool success);
+
+ EStatsState GetStatsState() { return m_eStatsState; }
+ bool GetStatsRead() { return m_statsRead; }
+
+ PXUSER_STATS_READ_RESULTS GetStats() { return m_stats; }
+#endif
+public:
+ PlayerUID GetMyXUID() { return m_myXUID; }
+
+};
diff --git a/Minecraft.Client/Xbox/MinecraftWindows.ico b/Minecraft.Client/Xbox/MinecraftWindows.ico
new file mode 100644
index 00000000..449296f4
Binary files /dev/null and b/Minecraft.Client/Xbox/MinecraftWindows.ico differ
diff --git a/Minecraft.Client/Xbox/MinecraftWindows.rc b/Minecraft.Client/Xbox/MinecraftWindows.rc
new file mode 100644
index 00000000..69ce5334
Binary files /dev/null and b/Minecraft.Client/Xbox/MinecraftWindows.rc differ
diff --git a/Minecraft.Client/Xbox/Minecraftxex.xml b/Minecraft.Client/Xbox/Minecraftxex.xml
new file mode 100644
index 00000000..5ad0d6f6
--- /dev/null
+++ b/Minecraft.Client/Xbox/Minecraftxex.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Minecraft.Client/Xbox/Network/NetworkPlayerXbox.cpp b/Minecraft.Client/Xbox/Network/NetworkPlayerXbox.cpp
new file mode 100644
index 00000000..37e24f7a
--- /dev/null
+++ b/Minecraft.Client/Xbox/Network/NetworkPlayerXbox.cpp
@@ -0,0 +1,121 @@
+#include "stdafx.h"
+#include "NetworkPlayerXbox.h"
+
+NetworkPlayerXbox::NetworkPlayerXbox(IQNetPlayer *qnetPlayer)
+{
+ m_qnetPlayer = qnetPlayer;
+ m_pSocket = NULL;
+}
+
+unsigned char NetworkPlayerXbox::GetSmallId()
+{
+ return m_qnetPlayer->GetSmallId();
+}
+
+void NetworkPlayerXbox::SendData(INetworkPlayer *player, const void *pvData, int dataSize, bool lowPriority)
+{
+ DWORD flags;
+ flags = QNET_SENDDATA_RELIABLE | QNET_SENDDATA_SEQUENTIAL;
+ if( lowPriority ) flags |= QNET_SENDDATA_LOW_PRIORITY | QNET_SENDDATA_SECONDARY;
+ m_qnetPlayer->SendData(((NetworkPlayerXbox *)player)->m_qnetPlayer, pvData, dataSize, flags);
+}
+
+bool NetworkPlayerXbox::IsSameSystem(INetworkPlayer *player)
+{
+ return ( m_qnetPlayer->IsSameSystem(((NetworkPlayerXbox *)player)->m_qnetPlayer) == TRUE );
+}
+
+int NetworkPlayerXbox::GetSendQueueSizeBytes( INetworkPlayer *player, bool lowPriority )
+{
+ DWORD flags = QNET_GETSENDQUEUESIZE_BYTES;
+ if( lowPriority ) flags |= QNET_GETSENDQUEUESIZE_SECONDARY_TYPE;
+ return m_qnetPlayer->GetSendQueueSize(player ? ((NetworkPlayerXbox *)player)->m_qnetPlayer : NULL , flags);
+}
+
+int NetworkPlayerXbox::GetSendQueueSizeMessages( INetworkPlayer *player, bool lowPriority )
+{
+ DWORD flags = QNET_GETSENDQUEUESIZE_MESSAGES;
+ if( lowPriority ) flags |= QNET_GETSENDQUEUESIZE_SECONDARY_TYPE;
+ return m_qnetPlayer->GetSendQueueSize(player ? ((NetworkPlayerXbox *)player)->m_qnetPlayer : NULL , flags);
+}
+
+int NetworkPlayerXbox::GetCurrentRtt()
+{
+ return m_qnetPlayer->GetCurrentRtt();
+}
+
+bool NetworkPlayerXbox::IsHost()
+{
+ return ( m_qnetPlayer->IsHost() == TRUE );
+}
+
+bool NetworkPlayerXbox::IsGuest()
+{
+ return ( m_qnetPlayer->IsGuest() == TRUE );
+}
+
+bool NetworkPlayerXbox::IsLocal()
+{
+ return ( m_qnetPlayer->IsLocal() == TRUE );
+}
+
+int NetworkPlayerXbox::GetSessionIndex()
+{
+ return m_qnetPlayer->GetSessionIndex();
+}
+
+bool NetworkPlayerXbox::IsTalking()
+{
+ return ( m_qnetPlayer->IsTalking() == TRUE );
+}
+
+bool NetworkPlayerXbox::IsMutedByLocalUser(int userIndex)
+{
+ return ( m_qnetPlayer->IsMutedByLocalUser(userIndex) == TRUE );
+}
+
+bool NetworkPlayerXbox::HasVoice()
+{
+ return ( m_qnetPlayer->HasVoice() == TRUE );
+}
+
+bool NetworkPlayerXbox::HasCamera()
+{
+ return ( m_qnetPlayer->HasCamera() == TRUE );
+}
+
+int NetworkPlayerXbox::GetUserIndex()
+{
+ return m_qnetPlayer->GetUserIndex();
+}
+
+void NetworkPlayerXbox::SetSocket(Socket *pSocket)
+{
+ m_pSocket = pSocket;
+}
+
+Socket *NetworkPlayerXbox::GetSocket()
+{
+ return m_pSocket;
+}
+
+PlayerUID NetworkPlayerXbox::GetUID()
+{
+ return m_qnetPlayer->GetXuid();
+}
+
+const wchar_t *NetworkPlayerXbox::GetOnlineName()
+{
+ return m_qnetPlayer->GetGamertag();
+}
+
+std::wstring NetworkPlayerXbox::GetDisplayName()
+{
+ return m_qnetPlayer->GetGamertag();
+}
+
+IQNetPlayer *NetworkPlayerXbox::GetQNetPlayer()
+{
+ return m_qnetPlayer;
+}
+
diff --git a/Minecraft.Client/Xbox/Network/NetworkPlayerXbox.h b/Minecraft.Client/Xbox/Network/NetworkPlayerXbox.h
new file mode 100644
index 00000000..1822717c
--- /dev/null
+++ b/Minecraft.Client/Xbox/Network/NetworkPlayerXbox.h
@@ -0,0 +1,39 @@
+#pragma once
+
+#include "..\..\Common\Network\NetworkPlayerInterface.h"
+
+// This is an implementation of the INetworkPlayer interface, for Xbox 360. It effectively wraps the IQNetPlayer class in a non-platform-specific way. It is
+// managed by PlatformNetworkManagerXbox.
+
+class NetworkPlayerXbox : public INetworkPlayer
+{
+public:
+ // Common player interface
+ NetworkPlayerXbox(IQNetPlayer *qnetPlayer);
+ virtual unsigned char GetSmallId();
+ virtual void SendData(INetworkPlayer *player, const void *pvData, int dataSize, bool lowPriority);
+ virtual bool IsSameSystem(INetworkPlayer *player);
+ virtual int GetSendQueueSizeBytes( INetworkPlayer *player, bool lowPriority );
+ virtual int GetSendQueueSizeMessages( INetworkPlayer *player, bool lowPriority );
+ virtual int GetCurrentRtt();
+ virtual bool IsHost();
+ virtual bool IsGuest();
+ virtual bool IsLocal();
+ virtual int GetSessionIndex();
+ virtual bool IsTalking();
+ virtual bool IsMutedByLocalUser(int userIndex);
+ virtual bool HasVoice();
+ virtual bool HasCamera();
+ virtual int GetUserIndex();
+ virtual void SetSocket(Socket *pSocket);
+ virtual Socket *GetSocket();
+ virtual const wchar_t *GetOnlineName();
+ virtual std::wstring GetDisplayName();
+ virtual PlayerUID GetUID();
+
+ // Extra xbox-specific things
+ IQNetPlayer *GetQNetPlayer();
+private:
+ IQNetPlayer *m_qnetPlayer;
+ Socket *m_pSocket;
+};
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Network/PlatformNetworkManagerXbox.cpp b/Minecraft.Client/Xbox/Network/PlatformNetworkManagerXbox.cpp
new file mode 100644
index 00000000..a551725b
--- /dev/null
+++ b/Minecraft.Client/Xbox/Network/PlatformNetworkManagerXbox.cpp
@@ -0,0 +1,1769 @@
+#include "stdafx.h"
+#include "..\..\..\Minecraft.World\Socket.h"
+#include "..\..\..\Minecraft.World\StringHelpers.h"
+#include "PlatformNetworkManagerXbox.h"
+#include "NetworkPlayerXbox.h"
+#include "..\..\Common\Network\GameNetworkManager.h"
+
+CPlatformNetworkManagerXbox *g_pPlatformNetworkManager;
+
+VOID CPlatformNetworkManagerXbox::NotifyStateChanged(
+ __in QNET_STATE OldState,
+ __in QNET_STATE NewState,
+ __in HRESULT hrInfo
+ )
+{
+ static const char * c_apszStateNames[] =
+ {
+ "QNET_STATE_IDLE",
+ "QNET_STATE_SESSION_HOSTING",
+ "QNET_STATE_SESSION_JOINING",
+ "QNET_STATE_GAME_LOBBY",
+ "QNET_STATE_SESSION_REGISTERING",
+ "QNET_STATE_SESSION_STARTING",
+ "QNET_STATE_GAME_PLAY",
+ "QNET_STATE_SESSION_ENDING",
+ "QNET_STATE_SESSION_LEAVING",
+ "QNET_STATE_SESSION_DELETING",
+ };
+
+ app.DebugPrintf( "State: %s ==> %s, result 0x%08x.\n",
+ c_apszStateNames[ OldState ],
+ c_apszStateNames[ NewState ],
+ hrInfo );
+ if( NewState == QNET_STATE_SESSION_HOSTING )
+ {
+ m_bLeavingGame = false;
+ m_bLeaveGameOnTick = false;
+ m_bHostChanged = false;
+ g_NetworkManager.StateChange_AnyToHosting();
+ }
+ else if( NewState == QNET_STATE_SESSION_JOINING )
+ {
+ m_bLeavingGame = false;
+ m_bLeaveGameOnTick = false;
+ m_bHostChanged = false;
+ g_NetworkManager.StateChange_AnyToJoining();
+ }
+ else if( NewState == QNET_STATE_IDLE && OldState == QNET_STATE_SESSION_JOINING )
+ {
+ // 4J-PB - now and then we get ERROR_DEVICE_REMOVED when qnet says
+ // " Couldn't join, removed from session!" or
+ //[qnet]: Received data change notification from partially connected player!
+ //[qnet]: Couldn't join, removed from session!
+ // instead of a QNET_E_SESSION_FULL as should be reported
+
+ eJoinFailedReason reason;
+ switch( hrInfo )
+ {
+ case QNET_E_INSUFFICIENT_PRIVILEGES:
+ reason = JOIN_FAILED_INSUFFICIENT_PRIVILEGES;
+ break;
+ case QNET_E_SESSION_FULL:
+ reason = JOIN_FAILED_SERVER_FULL;
+ break;
+ default:
+ reason = JOIN_FAILED_NONSPECIFIC;
+ break;
+ }
+ g_NetworkManager.StateChange_JoiningToIdle(reason);
+ }
+ else if( NewState == QNET_STATE_IDLE && OldState == QNET_STATE_SESSION_HOSTING )
+ {
+ m_bLeavingGame = true;
+ }
+ else if( NewState == QNET_STATE_SESSION_STARTING )
+ {
+ m_lastPlayerEventTimeStart = app.getAppTime();
+
+ g_NetworkManager.StateChange_AnyToStarting();
+ }
+ // Fix for #93148 - TCR 001: BAS Game Stability: Title will crash for the multiplayer client if host of the game will exit during the clients loading to created world.
+ // 4J Stu - If the client joins just as the host is exiting, then they can skip to leaving without passing through ending
+ else if( NewState == QNET_STATE_SESSION_ENDING || (NewState == QNET_STATE_SESSION_LEAVING && OldState == QNET_STATE_GAME_PLAY) )
+ {
+ g_NetworkManager.StateChange_AnyToEnding( OldState == QNET_STATE_GAME_PLAY );
+
+ if( m_pIQNet->IsHost() )
+ {
+ m_bLeavingGame = true;
+ }
+ }
+
+ if( NewState == QNET_STATE_IDLE )
+ {
+ g_NetworkManager.StateChange_AnyToIdle();
+ }
+}
+
+
+VOID CPlatformNetworkManagerXbox::NotifyPlayerJoined(
+ __in IQNetPlayer * pQNetPlayer
+ )
+{
+ const char * pszDescription;
+
+ // 4J Stu - We create a fake socket for every where that we need an INBOUND queue of game data. Outbound
+ // is all handled by QNet so we don't need that. Therefore each client player has one, and the host has one
+ // for each client player.
+ bool createFakeSocket = false;
+ bool localPlayer = false;
+
+ NetworkPlayerXbox *networkPlayer = (NetworkPlayerXbox *)addNetworkPlayer(pQNetPlayer);
+
+ if( pQNetPlayer->IsLocal() )
+ {
+ localPlayer = true;
+ if( pQNetPlayer->IsHost() )
+ {
+ pszDescription = "local host";
+ // 4J Stu - No socket for the localhost as it uses a special loopback queue
+
+ m_machineQNetPrimaryPlayers.push_back( pQNetPlayer );
+ }
+ else
+ {
+ pszDescription = "local";
+
+ // We need an inbound queue on all local players to receive data from the host
+ createFakeSocket = true;
+ }
+ }
+ else
+ {
+ if( pQNetPlayer->IsHost() )
+ {
+ pszDescription = "remote host";
+ }
+ else
+ {
+ pszDescription = "remote";
+
+ // If we are the host, then create a fake socket for every remote player
+ if( m_pIQNet->IsHost() )
+ {
+ createFakeSocket = true;
+ }
+ }
+
+ if( m_pIQNet->IsHost() && !m_bHostChanged )
+ {
+ // Do we already have a primary player for this system?
+ bool systemHasPrimaryPlayer = false;
+ for(AUTO_VAR(it, m_machineQNetPrimaryPlayers.begin()); it < m_machineQNetPrimaryPlayers.end(); ++it)
+ {
+ IQNetPlayer *pQNetPrimaryPlayer = *it;
+ if( pQNetPlayer->IsSameSystem(pQNetPrimaryPlayer) )
+ {
+ systemHasPrimaryPlayer = true;
+ break;
+ }
+ }
+ if( !systemHasPrimaryPlayer )
+ m_machineQNetPrimaryPlayers.push_back( pQNetPlayer );
+ }
+ }
+ g_NetworkManager.PlayerJoining( networkPlayer );
+
+ if( createFakeSocket == true && !m_bHostChanged )
+ {
+ g_NetworkManager.CreateSocket( networkPlayer, localPlayer );
+ }
+
+ app.DebugPrintf( "Player 0x%p \"%ls\" joined; %s; voice %i; camera %i.\n",
+ pQNetPlayer,
+ pQNetPlayer->GetGamertag(),
+ pszDescription,
+ (int) pQNetPlayer->HasVoice(),
+ (int) pQNetPlayer->HasCamera() );
+
+
+ if( m_pIQNet->IsHost() )
+ {
+ // 4J-PB - only the host should do this
+ g_NetworkManager.UpdateAndSetGameSessionData();
+ SystemFlagAddPlayer( networkPlayer );
+ }
+
+ for( int idx = 0; idx < XUSER_MAX_COUNT; ++idx)
+ {
+ if(playerChangedCallback[idx] != NULL)
+ playerChangedCallback[idx]( playerChangedCallbackParam[idx], networkPlayer, false );
+ }
+
+ if(m_pIQNet->GetState() == QNET_STATE_GAME_PLAY)
+ {
+ int localPlayerCount = 0;
+ for(unsigned int idx = 0; idx < XUSER_MAX_COUNT; ++idx)
+ {
+ if( m_pIQNet->GetLocalPlayerByUserIndex(idx) != NULL ) ++localPlayerCount;
+ }
+
+ float appTime = app.getAppTime();
+
+ // Only record stats for the primary player here
+ m_lastPlayerEventTimeStart = appTime;
+ }
+}
+
+
+VOID CPlatformNetworkManagerXbox::NotifyPlayerLeaving(
+ __in IQNetPlayer * pQNetPlayer
+ )
+{
+ //__debugbreak();
+
+ app.DebugPrintf( "Player 0x%p \"%ls\" leaving.\n",
+ pQNetPlayer,
+ pQNetPlayer->GetGamertag() );
+
+ INetworkPlayer *networkPlayer = getNetworkPlayer(pQNetPlayer);
+
+ // Get our wrapper object associated with this player.
+ Socket *socket = networkPlayer->GetSocket();
+ if( socket != NULL )
+ {
+ // If we are in game then remove this player from the game as well.
+ // We may get here either from the player requesting to exit the game,
+ // in which case we they will already have left the game server, or from a disconnection
+ // where we then have to remove them from the game server
+ if( m_pIQNet->IsHost() && !m_bHostChanged )
+ {
+ g_NetworkManager.CloseConnection(networkPlayer);
+ }
+
+ // Free the wrapper object memory.
+ // TODO 4J Stu - We may still be using this at the point that the player leaves the session.
+ // We need this as long as the game server still needs to communicate with the player
+ //delete socket;
+
+ networkPlayer->SetSocket( NULL );
+ }
+
+ if( m_pIQNet->IsHost() && !m_bHostChanged )
+ {
+ if( isSystemPrimaryPlayer(pQNetPlayer) )
+ {
+ IQNetPlayer *pNewQNetPrimaryPlayer = NULL;
+ for(unsigned int i = 0; i < m_pIQNet->GetPlayerCount(); ++i )
+ {
+ IQNetPlayer *pQNetPlayer2 = m_pIQNet->GetPlayerByIndex( i );
+
+ if( pQNetPlayer2 != pQNetPlayer && pQNetPlayer2->IsSameSystem( pQNetPlayer ) )
+ {
+ pNewQNetPrimaryPlayer = pQNetPlayer2;
+ break;
+ }
+ }
+ AUTO_VAR(it, find( m_machineQNetPrimaryPlayers.begin(), m_machineQNetPrimaryPlayers.end(), pQNetPlayer));
+ if( it != m_machineQNetPrimaryPlayers.end() )
+ {
+ m_machineQNetPrimaryPlayers.erase( it );
+ }
+
+ if( pNewQNetPrimaryPlayer != NULL )
+ m_machineQNetPrimaryPlayers.push_back( pNewQNetPrimaryPlayer );
+ }
+
+ g_NetworkManager.UpdateAndSetGameSessionData( networkPlayer );
+ SystemFlagRemovePlayer( networkPlayer );
+
+ }
+
+ g_NetworkManager.PlayerLeaving( networkPlayer );
+
+ for( int idx = 0; idx < XUSER_MAX_COUNT; ++idx)
+ {
+ if(playerChangedCallback[idx] != NULL)
+ playerChangedCallback[idx]( playerChangedCallbackParam[idx], networkPlayer, true );
+ }
+
+ if(m_pIQNet->GetState() == QNET_STATE_GAME_PLAY)
+ {
+ int localPlayerCount = 0;
+ for(unsigned int idx = 0; idx < XUSER_MAX_COUNT; ++idx)
+ {
+ if( m_pIQNet->GetLocalPlayerByUserIndex(idx) != NULL ) ++localPlayerCount;
+ }
+
+ float appTime = app.getAppTime();
+ m_lastPlayerEventTimeStart = appTime;
+ }
+
+ removeNetworkPlayer(pQNetPlayer);
+}
+
+
+VOID CPlatformNetworkManagerXbox::NotifyNewHost(
+ __in IQNetPlayer * pQNetPlayer
+ )
+{
+ app.DebugPrintf( "Player 0x%p \"%ls\" (local %i) is new host.\n",
+ pQNetPlayer,
+ pQNetPlayer->GetGamertag(),
+ (int) pQNetPlayer->IsLocal() );
+
+ m_bHostChanged = true;
+
+ if( m_pIQNet->IsHost() && !IsLeavingGame() )
+ {
+ m_pGameNetworkManager->HostChanged();
+ }
+}
+
+
+VOID CPlatformNetworkManagerXbox::NotifyDataReceived(
+ __in IQNetPlayer * pQNetPlayerFrom,
+ __in DWORD dwNumPlayersTo,
+ __in_ecount(dwNumPlayersTo) IQNetPlayer ** apQNetPlayersTo,
+ __in_bcount(dwDataSize) const BYTE * pbData,
+ __in DWORD dwDataSize
+ )
+{
+ if(m_pIQNet->GetState() == QNET_STATE_SESSION_ENDING)
+ return;
+
+ DWORD dwPlayer;
+
+ // Loop through all the local players that were targeted and print info
+ // regarding this message.
+ /*
+ for( dwPlayer = 0; dwPlayer < dwNumPlayersTo; dwPlayer++ )
+ {
+ app.DebugPrintf( "Received %u bytes of data from \"%ls\" to \"%ls\"\n",
+ dwDataSize,
+ pPlayerFrom->GetGamertag(),
+ apPlayersTo[ dwPlayer ]->GetGamertag());
+
+ }
+ */
+
+ // Loop through all the players and push this data into their read queue
+ for( dwPlayer = 0; dwPlayer < dwNumPlayersTo; dwPlayer++ )
+ {
+ if( apQNetPlayersTo[dwPlayer]->IsHost() )
+ {
+ // If we are the host we care who this came from
+ //app.DebugPrintf( "Pushing data into host read queue for user \"%ls\"\n", pPlayerFrom->GetGamertag());
+ // Push this data into the read queue for the player that sent it
+ INetworkPlayer *pPlayerFrom = getNetworkPlayer(pQNetPlayerFrom);
+ Socket *socket = pPlayerFrom->GetSocket();
+
+ if(socket != NULL)
+ socket->pushDataToQueue(pbData, dwDataSize, false);
+ }
+ else
+ {
+ // If we are not the host the message must have come from the host, so we care more about who it is addressed to
+ INetworkPlayer *pPlayerTo = getNetworkPlayer(apQNetPlayersTo[dwPlayer]);
+ Socket *socket = pPlayerTo->GetSocket();
+ //app.DebugPrintf( "Pushing data into read queue for user \"%ls\"\n", apPlayersTo[dwPlayer]->GetGamertag());
+ if(socket != NULL)
+ socket->pushDataToQueue(pbData, dwDataSize);
+ }
+ }
+}
+
+
+VOID CPlatformNetworkManagerXbox::NotifyWriteStats(
+ __in IQNetPlayer * pQNetPlayer
+ )
+{
+ app.DebugPrintf( "QNet: NotifyWriteStats\n" );
+
+ g_NetworkManager.WriteStats( getNetworkPlayer( pQNetPlayer ) );
+}
+
+
+VOID CPlatformNetworkManagerXbox::NotifyReadinessChanged(
+ __in IQNetPlayer * pQNetPlayer,
+ __in BOOL bReady
+ )
+{
+ app.DebugPrintf( "Player 0x%p readiness is now %i.\n", pQNetPlayer, (int) bReady );
+}
+
+
+VOID CPlatformNetworkManagerXbox::NotifyCommSettingsChanged(
+ __in IQNetPlayer * pQNetPlayer
+ )
+{
+}
+
+
+VOID CPlatformNetworkManagerXbox::NotifyGameSearchComplete(
+ __in IQNetGameSearch * pGameSearch,
+ __in HRESULT hrComplete,
+ __in DWORD dwNumResults
+ )
+{
+ // Not currently used
+}
+
+
+VOID CPlatformNetworkManagerXbox::NotifyGameInvite(
+ __in DWORD dwUserIndex,
+ __in const INVITE_INFO * pInviteInfo
+ )
+{
+ g_NetworkManager.GameInviteReceived( dwUserIndex, pInviteInfo );
+}
+
+
+VOID CPlatformNetworkManagerXbox::NotifyContextChanged(
+ __in const XUSER_CONTEXT * pContext
+ )
+{
+ app.DebugPrintf( "Context 0x%p changed.\n", pContext );
+}
+
+
+VOID CPlatformNetworkManagerXbox::NotifyPropertyChanged(
+ __in const XUSER_PROPERTY * pProperty
+ )
+{
+ app.DebugPrintf( "Property 0x%p changed.\n", pProperty );
+}
+
+bool CPlatformNetworkManagerXbox::Initialise(CGameNetworkManager *pGameNetworkManager, int flagIndexSize)
+{
+ m_pGameNetworkManager = pGameNetworkManager;
+ m_flagIndexSize = flagIndexSize;
+ g_pPlatformNetworkManager = this;
+ for( int i = 0; i < XUSER_MAX_COUNT; i++ )
+ {
+ playerChangedCallback[ i ] = NULL;
+ }
+
+ HRESULT hr;
+ int iResult;
+ DWORD dwResult;
+
+ // Start up XNet with default settings.
+ iResult = XNetStartup( NULL );
+ if( iResult != 0 )
+ {
+ app.DebugPrintf( "Starting up XNet failed (err = %i)!\n", iResult );
+ return false;
+ }
+
+ // Start up XOnline.
+ dwResult = XOnlineStartup();
+ if( dwResult != ERROR_SUCCESS )
+ {
+ app.DebugPrintf( "Starting up XOnline failed (err = %u)!\n", dwResult );
+ XNetCleanup();
+ return false;
+ }
+
+ // Create the QNet object.
+ hr = QNetCreateUsingXAudio2( QNET_SESSIONTYPE_LIVE_STANDARD, this, NULL, g_pXAudio2, &m_pIQNet );
+ if( FAILED( hr ) )
+ {
+ app.DebugPrintf( "Creating QNet object failed (err = 0x%08x)!\n", hr );
+ XOnlineCleanup();
+ XNetCleanup();
+ return false;
+ }
+
+ BOOL enableNotify = FALSE;
+ m_pIQNet->SetOpt( QNET_OPTION_NOTIFY_LISTENER, &enableNotify, sizeof BOOL );
+
+ BOOL enableJip = FALSE;
+ m_pIQNet->SetOpt( QNET_OPTION_JOIN_IN_PROGRESS_ALLOWED, &enableJip, sizeof BOOL );
+ BOOL enableInv = FALSE;
+ m_pIQNet->SetOpt( QNET_OPTION_INVITES_ALLOWED, &enableInv, sizeof BOOL );
+ BOOL enablePres = FALSE;
+ m_pIQNet->SetOpt( QNET_OPTION_PRESENCE_JOIN_MODE, &enablePres, sizeof BOOL );
+
+ // We DO NOT want QNet to handle XN_SYS_SIGNINCHANGED but so far everything else should be fine
+ // We DO WANT QNet to handle XN_LIVE_INVITE_ACCEPTED at a minimum
+ // Receive all types that QNet needs, and filter out the specific ones we don't want later
+ m_notificationListener = XNotifyCreateListener(XNOTIFY_SYSTEM | XNOTIFY_FRIENDS | XNOTIFY_LIVE);
+
+ m_bLeavingGame = false;
+ m_bLeaveGameOnTick = false;
+ m_bHostChanged = false;
+
+ m_bSearchResultsReady = false;
+ m_bSearchPending = false;
+
+ m_bIsOfflineGame = false;
+ m_pSearchParam = NULL;
+ m_SessionsUpdatedCallback = NULL;
+
+ for(unsigned int i = 0; i < XUSER_MAX_COUNT; ++i)
+ {
+ m_searchResultsCount[i] = 0;
+ m_lastSearchStartTime[i] = 0;
+
+ // The results that will be filled in with the current search
+ m_pSearchResults[i] = NULL;
+ m_pQoSResult[i] = NULL;
+ m_pCurrentSearchResults[i] = NULL;
+ m_pCurrentQoSResult[i] = NULL;
+ m_currentSearchResultsCount[i] = 0;
+ }
+
+ // Success!
+ return true;
+}
+
+void CPlatformNetworkManagerXbox::Terminate()
+{
+}
+
+int CPlatformNetworkManagerXbox::GetJoiningReadyPercentage()
+{
+ return 100;
+}
+
+int CPlatformNetworkManagerXbox::CorrectErrorIDS(int IDS)
+{
+ return IDS;
+}
+
+bool CPlatformNetworkManagerXbox::isSystemPrimaryPlayer(IQNetPlayer *pQNetPlayer)
+{
+ bool playerIsSystemPrimary = false;
+ for(AUTO_VAR(it, m_machineQNetPrimaryPlayers.begin()); it < m_machineQNetPrimaryPlayers.end(); ++it)
+ {
+ IQNetPlayer *pQNetPrimaryPlayer = *it;
+ if( pQNetPrimaryPlayer == pQNetPlayer )
+ {
+ playerIsSystemPrimary = true;
+ break;
+ }
+ }
+ return playerIsSystemPrimary;
+}
+
+// We call this twice a frame, either side of the render call so is a good place to "tick" things
+void CPlatformNetworkManagerXbox::DoWork()
+{
+ DWORD dwNotifyId;
+ ULONG_PTR ulpNotifyParam;
+
+ while( XNotifyGetNext(
+ m_notificationListener,
+ 0, // Any notification
+ &dwNotifyId,
+ &ulpNotifyParam)
+ )
+ {
+
+ switch(dwNotifyId)
+ {
+
+ case XN_SYS_SIGNINCHANGED:
+ app.DebugPrintf("Signinchanged - %d\n", ulpNotifyParam);
+ break;
+ case XN_LIVE_INVITE_ACCEPTED:
+ // ignore these - we're catching them from the game listener, so we can get the one from the dashboard
+ break;
+ default:
+ m_pIQNet->Notify(dwNotifyId,ulpNotifyParam);
+ break;
+ }
+
+ }
+
+ TickSearch();
+
+ if( m_bLeaveGameOnTick )
+ {
+ m_pIQNet->LeaveGame(m_migrateHostOnLeave);
+ m_bLeaveGameOnTick = false;
+ }
+
+ m_pIQNet->DoWork();
+}
+
+int CPlatformNetworkManagerXbox::GetPlayerCount()
+{
+ return m_pIQNet->GetPlayerCount();
+}
+
+bool CPlatformNetworkManagerXbox::ShouldMessageForFullSession()
+{
+ return false;
+}
+
+int CPlatformNetworkManagerXbox::GetOnlinePlayerCount()
+{
+ DWORD playerCount = GetPlayerCount();
+ DWORD onlinePlayerCount = 0;
+
+ for(DWORD i = 0; i < playerCount; ++i)
+ {
+ IQNetPlayer *pQNetPlayer = m_pIQNet->GetPlayerByIndex(i);
+ if(!pQNetPlayer->IsLocal())++onlinePlayerCount;
+ }
+ return onlinePlayerCount;
+}
+
+int CPlatformNetworkManagerXbox::GetLocalPlayerMask(int playerIndex)
+{
+ switch(playerIndex)
+ {
+ case 0:
+ return QNET_USER_MASK_USER0;
+ case 1:
+ return QNET_USER_MASK_USER1;
+ case 2:
+ return QNET_USER_MASK_USER2;
+ case 3:
+ return QNET_USER_MASK_USER3;
+ default:
+ return 0;
+ }
+}
+
+bool CPlatformNetworkManagerXbox::AddLocalPlayerByUserIndex( int userIndex )
+{
+ return ( m_pIQNet->AddLocalPlayerByUserIndex(userIndex) == S_OK );
+}
+
+bool CPlatformNetworkManagerXbox::RemoveLocalPlayerByUserIndex( int userIndex )
+{
+ IQNetPlayer *pQNetPlayer = m_pIQNet->GetLocalPlayerByUserIndex(userIndex);
+ INetworkPlayer *pNetworkPlayer = getNetworkPlayer(pQNetPlayer);
+
+ if(pNetworkPlayer != NULL)
+ {
+ Socket *socket = pNetworkPlayer->GetSocket();
+
+ if( socket != NULL )
+ {
+ // We can't remove the player from qnet until we have stopped using it to communicate
+ C4JThread* thread = new C4JThread(&CPlatformNetworkManagerXbox::RemovePlayerOnSocketClosedThreadProc, pNetworkPlayer, "RemovePlayerOnSocketClosed");
+ thread->SetProcessor( CPU_CORE_REMOVE_PLAYER );
+ thread->Run();
+ }
+ else
+ {
+ // Safe to remove the player straight away
+ return ( m_pIQNet->RemoveLocalPlayerByUserIndex(userIndex) == S_OK );
+ }
+ }
+ return true;
+}
+
+bool CPlatformNetworkManagerXbox::IsInStatsEnabledSession()
+{
+
+ DWORD dataSize = sizeof(QNET_LIVE_STATS_MODE);
+ QNET_LIVE_STATS_MODE statsMode;
+ m_pIQNet->GetOpt(QNET_OPTION_LIVE_STATS_MODE, &statsMode , &dataSize );
+
+ // Use QNET_LIVE_STATS_MODE_AUTO if there is another way to check if stats are enabled or not
+ bool statsEnabled = statsMode == QNET_LIVE_STATS_MODE_ENABLED;
+ return m_pIQNet->GetState() != QNET_STATE_IDLE && statsEnabled;
+}
+
+bool CPlatformNetworkManagerXbox::SessionHasSpace(unsigned int spaceRequired /*= 1*/)
+{
+ // This function is used while a session is running, so all players trying to join
+ // should use public slots,
+ DWORD publicSlots = 0;
+ DWORD filledPublicSlots = 0;
+ DWORD privateSlots = 0;
+ DWORD filledPrivateSlots = 0;
+
+ DWORD dataSize = sizeof(DWORD);
+ m_pIQNet->GetOpt(QNET_OPTION_TOTAL_PUBLIC_SLOTS, &publicSlots, &dataSize );
+ m_pIQNet->GetOpt(QNET_OPTION_FILLED_PUBLIC_SLOTS, &filledPublicSlots, &dataSize );
+ m_pIQNet->GetOpt(QNET_OPTION_TOTAL_PRIVATE_SLOTS, &privateSlots, &dataSize );
+ m_pIQNet->GetOpt(QNET_OPTION_FILLED_PRIVATE_SLOTS, &filledPrivateSlots, &dataSize );
+
+ DWORD spaceLeft = (publicSlots - filledPublicSlots) + (privateSlots - filledPrivateSlots);
+
+ return spaceLeft >= spaceRequired;
+}
+
+void CPlatformNetworkManagerXbox::SendInviteGUI(int quadrant)
+{
+}
+
+bool CPlatformNetworkManagerXbox::IsAddingPlayer()
+{
+ return false;
+}
+
+bool CPlatformNetworkManagerXbox::LeaveGame(bool bMigrateHost)
+{
+ if( m_bLeavingGame ) return true;
+
+ m_bLeavingGame = true;
+
+ // If we are a client, wait for all client connections to close
+ // TODO Possibly need to do multiple objects depending on how split screen online works
+ IQNetPlayer *pQNetPlayer = m_pIQNet->GetLocalPlayerByUserIndex(g_NetworkManager.GetPrimaryPad());
+ INetworkPlayer *pNetworkPlayer = getNetworkPlayer(pQNetPlayer);
+
+ if(pNetworkPlayer != NULL)
+ {
+ Socket *socket = pNetworkPlayer->GetSocket();
+
+ if( socket != NULL )
+ {
+ //printf("Waiting for socket closed event\n");
+ DWORD result = socket->m_socketClosedEvent->WaitForSignal(INFINITE);
+
+ // The session might be gone once the socket releases
+ if( IsInSession() )
+ {
+ //printf("Socket closed event has fired\n");
+ // 4J Stu - Clear our reference to this socket
+ pQNetPlayer = m_pIQNet->GetLocalPlayerByUserIndex(g_NetworkManager.GetPrimaryPad());
+ pNetworkPlayer = getNetworkPlayer(pQNetPlayer);
+ if(pNetworkPlayer) pNetworkPlayer->SetSocket( NULL );
+ }
+ delete socket;
+ }
+ else
+ {
+ //printf("Socket is already NULL\n");
+ }
+ }
+
+ // If we are the host wait for the game server to end
+ if(m_pIQNet->IsHost() && g_NetworkManager.ServerStoppedValid())
+ {
+ m_pIQNet->EndGame();
+ g_NetworkManager.ServerStoppedWait();
+ g_NetworkManager.ServerStoppedDestroy();
+ }
+
+ return _LeaveGame(bMigrateHost, true);
+}
+
+bool CPlatformNetworkManagerXbox::_LeaveGame(bool bMigrateHost, bool bLeaveRoom)
+{
+ // 4J Stu - Fix for #10490 - TCR 001 BAS Game Stability: When a party of four players leave a world to join another world without saving the title will crash.
+ // Changed this to make it threadsafe
+ m_bLeaveGameOnTick = true;
+ m_migrateHostOnLeave = bMigrateHost;
+
+ return true;
+}
+
+void CPlatformNetworkManagerXbox::HostGame(int localUsersMask, bool bOnlineGame, bool bIsPrivate, unsigned char publicSlots /*= MINECRAFT_NET_MAX_PLAYERS*/, unsigned char privateSlots /*= 0*/)
+{
+// #ifdef _XBOX
+ // 4J Stu - We probably did this earlier as well, but just to be sure!
+ SetLocalGame( !bOnlineGame );
+ SetPrivateGame( bIsPrivate );
+ SystemFlagReset();
+
+ // Make sure that the Primary Pad is in by default
+ localUsersMask |= GetLocalPlayerMask( g_NetworkManager.GetPrimaryPad() );
+
+ _HostGame( localUsersMask, publicSlots, privateSlots );
+//#endif
+}
+
+void CPlatformNetworkManagerXbox::_HostGame(int usersMask, unsigned char publicSlots /*= MINECRAFT_NET_MAX_PLAYERS*/, unsigned char privateSlots /*= 0*/)
+{
+ HRESULT hr;
+ // Create a session using the standard game type, in multiplayer game mode,
+ // The constants used to specify game mode, context ID and context value are
+ // defined in the title's .spa.h file, generated using the XLAST tool.
+ // TODO 4J Stu - Game mode should be CONTEXT_GAME_MODE_MULTIPLAYER?
+ XUSER_CONTEXT aXUserContexts[] = { { X_CONTEXT_GAME_TYPE, X_CONTEXT_GAME_TYPE_STANDARD },
+ { X_CONTEXT_GAME_MODE, CONTEXT_GAME_MODE_GAMEMODE } };
+
+
+ // We need at least one other slot otherwise it's not multiplayer, is it!
+ if(publicSlots==1 && privateSlots==0)
+ privateSlots = 1;
+
+ //printf("Hosting game with %d public slots and %d private slots\n", publicSlots, privateSlots);
+
+ BOOL enableJip = FALSE;
+ m_pIQNet->SetOpt( QNET_OPTION_JOIN_IN_PROGRESS_ALLOWED, &enableJip, sizeof BOOL );
+ BOOL enableInv = FALSE;
+ m_pIQNet->SetOpt( QNET_OPTION_INVITES_ALLOWED, &enableInv, sizeof BOOL );
+ BOOL enablePres = FALSE;
+ m_pIQNet->SetOpt( QNET_OPTION_PRESENCE_JOIN_MODE, &enablePres, sizeof BOOL );
+
+ // Start hosting a new game
+ // Use only the contexts defined above, and no properties.
+ hr = m_pIQNet->HostGame(
+ g_NetworkManager.GetLockedProfile(), // dwUserIndex
+ usersMask, // dwUserMask
+ publicSlots, // dwPublicSlots
+ privateSlots, // dwPrivateSlots
+ 0, // cProperties
+ NULL, // pProperties
+ ARRAYSIZE( aXUserContexts ), // cContexts
+ aXUserContexts ); // pContexts
+
+ m_hostGameSessionData.netVersion = MINECRAFT_NET_VERSION;
+ m_hostGameSessionData.isJoinable = !IsPrivateGame();
+
+ char* hostName = new char[XUSER_NAME_SIZE];
+ hostName = g_NetworkManager.GetOnlineName( g_NetworkManager.GetPrimaryPad() );
+ memcpy(m_hostGameSessionData.hostName,hostName,XUSER_NAME_SIZE);
+
+ hr = m_pIQNet->SetOpt(
+ QNET_OPTION_QOS_DATA_BUFFER,
+ &m_hostGameSessionData,
+ sizeof(GameSessionData)
+ );
+}
+
+bool CPlatformNetworkManagerXbox::_StartGame()
+{
+ // Set the options that now allow players to join this game
+ BOOL enableJip = TRUE; // Must always be true othewise nobody can join the game while in the PLAY state
+ m_pIQNet->SetOpt( QNET_OPTION_JOIN_IN_PROGRESS_ALLOWED, &enableJip, sizeof BOOL );
+ BOOL enableInv = !IsLocalGame();
+ m_pIQNet->SetOpt( QNET_OPTION_INVITES_ALLOWED, &enableInv, sizeof BOOL );
+ BOOL enablePres = !IsPrivateGame() && !IsLocalGame();
+ m_pIQNet->SetOpt( QNET_OPTION_PRESENCE_JOIN_MODE, &enablePres, sizeof BOOL );
+
+ return ( m_pIQNet->StartGame() == S_OK );
+}
+
+int CPlatformNetworkManagerXbox::JoinGame(FriendSessionInfo *searchResult, int localUsersMask, int primaryUserIndex)
+{
+ // Being a bit over-cautious here, but the xbox code pre-refactoring took a copy of XSESSION_SEARCHRESULT (although not in static memory)
+ // so seems safest to replicate this kind of thing here rather than risk data being pointed to by the searchResult being altered whilst
+ // JoinGameFromSearchResult is running.
+ static XSESSION_SEARCHRESULT searchResultCopy;
+ searchResultCopy = searchResult->searchResult;
+ HRESULT hr = m_pIQNet->JoinGameFromSearchResult(
+ primaryUserIndex, // dwUserIndex
+ localUsersMask, // dwUserMask
+ &searchResultCopy ); // pSearchResult
+
+
+ if( FAILED( hr ) )
+ {
+ app.DebugPrintf( "Failed joining game (err = 0x%08x)!\n", hr );
+ }
+
+ switch( hr )
+ {
+ case S_OK:
+ return CGameNetworkManager::JOINGAME_SUCCESS;
+ case QNET_E_SESSION_FULL:
+ return CGameNetworkManager::JOINGAME_FAIL_SERVER_FULL;
+ default:
+ return CGameNetworkManager::JOINGAME_FAIL_GENERAL;
+ }
+}
+
+bool CPlatformNetworkManagerXbox::SetLocalGame(bool isLocal)
+{
+ if( m_pIQNet->GetState() == QNET_STATE_IDLE )
+ {
+ QNET_SESSIONTYPE sessionType = isLocal ? QNET_SESSIONTYPE_LOCAL : QNET_SESSIONTYPE_LIVE_STANDARD;
+ m_pIQNet->SetOpt(QNET_OPTION_TYPE_SESSIONTYPE, &sessionType , sizeof QNET_SESSIONTYPE);
+
+ // The default value for this is QNET_LIVE_STATS_MODE_AUTO, but that decides based on the players
+ // in when the game starts. As we may want a non-live player to join the game we cannot have stats enabled
+ // when we create the sessions. As a result of this, the NotifyWriteStats callback will not be called for
+ // LIVE players that are connected to LIVE so we write their stats data on a state change.
+ QNET_LIVE_STATS_MODE statsMode = isLocal ? QNET_LIVE_STATS_MODE_DISABLED : QNET_LIVE_STATS_MODE_ENABLED;
+ m_pIQNet->SetOpt(QNET_OPTION_LIVE_STATS_MODE, &statsMode , sizeof QNET_LIVE_STATS_MODE);
+
+ // Also has a default of QNET_LIVE_PRESENCE_MODE_AUTO as above, although the effects are less of an issue
+ QNET_LIVE_PRESENCE_MODE presenceMode = isLocal ? QNET_LIVE_PRESENCE_MODE_NOT_ADVERTISED : QNET_LIVE_PRESENCE_MODE_ADVERTISED;
+ m_pIQNet->SetOpt(QNET_OPTION_LIVE_PRESENCE_MODE, &presenceMode , sizeof QNET_LIVE_PRESENCE_MODE);
+
+ m_bIsOfflineGame = isLocal;
+ app.DebugPrintf("Setting as local game: %s\n", isLocal ? "yes" : "no" );
+ }
+ else
+ {
+ app.DebugPrintf("Tried to change QNet Session type while not in idle state\n");
+ }
+ return true;
+}
+
+void CPlatformNetworkManagerXbox::SetPrivateGame(bool isPrivate)
+{
+ app.DebugPrintf("Setting as private game: %s\n", isPrivate ? "yes" : "no" );
+ m_bIsPrivateGame = isPrivate;
+}
+
+void CPlatformNetworkManagerXbox::RegisterPlayerChangedCallback(int iPad, void (*callback)(void *callbackParam, INetworkPlayer *pPlayer, bool leaving), void *callbackParam)
+{
+ playerChangedCallback[iPad] = callback;
+ playerChangedCallbackParam[iPad] = callbackParam;
+}
+
+void CPlatformNetworkManagerXbox::UnRegisterPlayerChangedCallback(int iPad, void (*callback)(void *callbackParam, INetworkPlayer *pPlayer, bool leaving), void *callbackParam)
+{
+ if(playerChangedCallbackParam[iPad] == callbackParam)
+ {
+ playerChangedCallback[iPad] = NULL;
+ playerChangedCallbackParam[iPad] = NULL;
+ }
+}
+
+void CPlatformNetworkManagerXbox::HandleSignInChange()
+{
+ return;
+}
+
+bool CPlatformNetworkManagerXbox::_RunNetworkGame()
+{
+ // We delay actually starting the session so that we know the game server is running by the time the clients try to join
+ // This does result in a host advantage
+ HRESULT hr = m_pIQNet->StartGame();
+ if(FAILED(hr)) return false;
+
+ // Set the options that now allow players to join this game
+ BOOL enableJip = TRUE; // Must always be true othewise nobody can join the game while in the PLAY state
+ m_pIQNet->SetOpt( QNET_OPTION_JOIN_IN_PROGRESS_ALLOWED, &enableJip, sizeof BOOL );
+ BOOL enableInv = !IsLocalGame();
+ m_pIQNet->SetOpt( QNET_OPTION_INVITES_ALLOWED, &enableInv, sizeof BOOL );
+ BOOL enablePres = !IsPrivateGame() && !IsLocalGame();
+ m_pIQNet->SetOpt( QNET_OPTION_PRESENCE_JOIN_MODE, &enablePres, sizeof BOOL );
+
+ return true;
+}
+
+void CPlatformNetworkManagerXbox::UpdateAndSetGameSessionData(INetworkPlayer *pNetworkPlayerLeaving /*= NULL*/)
+{
+ DWORD playerCount = m_pIQNet->GetPlayerCount();
+
+ if( this->m_bLeavingGame )
+ return;
+
+ if( GetHostPlayer() == NULL )
+ return;
+
+ for(unsigned int i = 0; i < MINECRAFT_NET_MAX_PLAYERS; ++i)
+ {
+ if( i < playerCount )
+ {
+ INetworkPlayer *pNetworkPlayer = GetPlayerByIndex(i);
+
+ // We can call this from NotifyPlayerLeaving but at that point the player is still considered in the session
+ if( pNetworkPlayer != pNetworkPlayerLeaving )
+ {
+ m_hostGameSessionData.players[i] = ((NetworkPlayerXbox *)pNetworkPlayer)->GetUID();
+
+ char *temp;
+ temp = (char *)wstringtofilename( pNetworkPlayer->GetOnlineName() );
+ memcpy(m_hostGameSessionData.szPlayers[i],temp,XUSER_NAME_SIZE);
+ }
+ else
+ {
+ m_hostGameSessionData.players[i] = NULL;
+ memset(m_hostGameSessionData.szPlayers[i],0,XUSER_NAME_SIZE);
+ }
+ }
+ else
+ {
+ m_hostGameSessionData.players[i] = NULL;
+ memset(m_hostGameSessionData.szPlayers[i],0,XUSER_NAME_SIZE);
+ }
+ }
+
+ m_hostGameSessionData.hostPlayerUID = ((NetworkPlayerXbox *)GetHostPlayer())->GetQNetPlayer()->GetXuid();
+ m_hostGameSessionData.m_uiGameHostSettings = app.GetGameHostOption(eGameHostOption_All);
+
+ HRESULT hr = S_OK;
+ hr = m_pIQNet->SetOpt(
+ QNET_OPTION_QOS_DATA_BUFFER,
+ &m_hostGameSessionData,
+ sizeof(GameSessionData)
+ );
+}
+
+int CPlatformNetworkManagerXbox::RemovePlayerOnSocketClosedThreadProc( void* lpParam )
+{
+ INetworkPlayer *pNetworkPlayer = (INetworkPlayer *)lpParam;
+
+ Socket *socket = pNetworkPlayer->GetSocket();
+
+ if( socket != NULL )
+ {
+ //printf("Waiting for socket closed event\n");
+ socket->m_socketClosedEvent->WaitForSignal(INFINITE);
+
+ //printf("Socket closed event has fired\n");
+ // 4J Stu - Clear our reference to this socket
+ pNetworkPlayer->SetSocket( NULL );
+ delete socket;
+ }
+
+ return g_pPlatformNetworkManager->RemoveLocalPlayer( pNetworkPlayer );
+}
+
+bool CPlatformNetworkManagerXbox::RemoveLocalPlayer( INetworkPlayer *pNetworkPlayer )
+{
+ if( pNetworkPlayer->IsLocal() )
+ {
+ return ( m_pIQNet->RemoveLocalPlayerByUserIndex( pNetworkPlayer->GetUserIndex() ) == S_OK );
+ }
+
+ return true;
+}
+
+CPlatformNetworkManagerXbox::PlayerFlags::PlayerFlags(INetworkPlayer *pNetworkPlayer, unsigned int count)
+{
+ // 4J Stu - Don't assert, just make it a multiple of 8! This count is calculated from a load of separate values,
+ // and makes tweaking world/render sizes a pain if we hit an assert here
+ count = (count + 8 - 1) & ~(8 - 1);
+ //assert( ( count % 8 ) == 0 );
+ this->m_pNetworkPlayer = pNetworkPlayer;
+ this->flags = new unsigned char [ count / 8 ];
+ memset( this->flags, 0, count / 8 );
+ this->count = count;
+}
+CPlatformNetworkManagerXbox::PlayerFlags::~PlayerFlags()
+{
+ delete [] flags;
+}
+
+// Add a player to the per system flag storage - if we've already got a player from that system, copy its flags over
+void CPlatformNetworkManagerXbox::SystemFlagAddPlayer(INetworkPlayer *pNetworkPlayer)
+{
+ PlayerFlags *newPlayerFlags = new PlayerFlags( pNetworkPlayer, m_flagIndexSize);
+ // If any of our existing players are on the same system, then copy over flags from that one
+ for( unsigned int i = 0; i < m_playerFlags.size(); i++ )
+ {
+ if( pNetworkPlayer->IsSameSystem(m_playerFlags[i]->m_pNetworkPlayer) )
+ {
+ memcpy( newPlayerFlags->flags, m_playerFlags[i]->flags, m_playerFlags[i]->count / 8 );
+ break;
+ }
+ }
+ m_playerFlags.push_back(newPlayerFlags);
+}
+
+// Remove a player from the per system flag storage - just maintains the m_playerFlags vector without any gaps in it
+void CPlatformNetworkManagerXbox::SystemFlagRemovePlayer(INetworkPlayer *pNetworkPlayer)
+{
+ for( unsigned int i = 0; i < m_playerFlags.size(); i++ )
+ {
+ if( m_playerFlags[i]->m_pNetworkPlayer == pNetworkPlayer )
+ {
+ delete m_playerFlags[i];
+ m_playerFlags[i] = m_playerFlags.back();
+ m_playerFlags.pop_back();
+ return;
+ }
+ }
+}
+
+void CPlatformNetworkManagerXbox::SystemFlagReset()
+{
+ for( unsigned int i = 0; i < m_playerFlags.size(); i++ )
+ {
+ delete m_playerFlags[i];
+ }
+ m_playerFlags.clear();
+}
+
+// Set a per system flag - this is done by setting the flag on every player that shares that system
+void CPlatformNetworkManagerXbox::SystemFlagSet(INetworkPlayer *pNetworkPlayer, int index)
+{
+ if( ( index < 0 ) || ( index >= m_flagIndexSize ) ) return;
+ if( pNetworkPlayer == NULL ) return;
+
+ for( unsigned int i = 0; i < m_playerFlags.size(); i++ )
+ {
+ if( pNetworkPlayer->IsSameSystem(m_playerFlags[i]->m_pNetworkPlayer) )
+ {
+ m_playerFlags[i]->flags[ index / 8 ] |= ( 128 >> ( index % 8 ) );
+ }
+ }
+}
+
+// Get value of a per system flag - can be read from the flags of the passed in player as anything else sent to that
+// system should also have been duplicated here
+bool CPlatformNetworkManagerXbox::SystemFlagGet(INetworkPlayer *pNetworkPlayer, int index)
+{
+ if( ( index < 0 ) || ( index >= m_flagIndexSize ) ) return false;
+ if( pNetworkPlayer == NULL )
+ {
+ return false;
+ }
+
+ for( unsigned int i = 0; i < m_playerFlags.size(); i++ )
+ {
+ if( m_playerFlags[i]->m_pNetworkPlayer == pNetworkPlayer )
+ {
+ return ( ( m_playerFlags[i]->flags[ index / 8 ] & ( 128 >> ( index % 8 ) ) ) != 0 );
+ }
+ }
+ return false;
+}
+
+wstring CPlatformNetworkManagerXbox::GatherStats()
+{
+ return L"Queue messages: " + _toString(((NetworkPlayerXbox *)GetHostPlayer())->GetQNetPlayer()->GetSendQueueSize( NULL, QNET_GETSENDQUEUESIZE_MESSAGES ) )
+ + L" Queue bytes: " + _toString( ((NetworkPlayerXbox *)GetHostPlayer())->GetQNetPlayer()->GetSendQueueSize( NULL, QNET_GETSENDQUEUESIZE_BYTES ) );
+}
+
+wstring CPlatformNetworkManagerXbox::GatherRTTStats()
+{
+ wstring stats(L"Rtt: ");
+
+ wchar_t stat[32];
+
+ for(unsigned int i = 0; i < GetPlayerCount(); ++i)
+ {
+ IQNetPlayer *pQNetPlayer = ((NetworkPlayerXbox *)GetPlayerByIndex( i ))->GetQNetPlayer();
+
+ if(!pQNetPlayer->IsLocal())
+ {
+ ZeroMemory(stat,sizeof(WCHAR)*32);
+ swprintf(stat, 32, L"%d: %d/", i, pQNetPlayer->GetCurrentRtt() );
+ stats.append(stat);
+ }
+ }
+ return stats;
+}
+
+void CPlatformNetworkManagerXbox::TickSearch()
+{
+ if( m_bSearchPending )
+ {
+ if( m_bSearchResultsReady )
+ {
+ m_currentSearchResultsCount[m_lastSearchPad] = m_searchResultsCount[m_lastSearchPad];
+
+ // Store the current search results so that we don't delete them too early
+ if( m_pCurrentSearchResults[m_lastSearchPad] != NULL )
+ {
+ delete m_pCurrentSearchResults[m_lastSearchPad];
+ m_pCurrentSearchResults[m_lastSearchPad] = NULL;
+ }
+ m_pCurrentSearchResults[m_lastSearchPad] = m_pSearchResults[m_lastSearchPad];
+ m_pSearchResults[m_lastSearchPad] = NULL;
+
+ if( m_pCurrentQoSResult[m_lastSearchPad] != NULL )
+ {
+ XNetQosRelease(m_pCurrentQoSResult[m_lastSearchPad]);
+ m_pCurrentQoSResult[m_lastSearchPad] = NULL;
+ }
+ m_pCurrentQoSResult[m_lastSearchPad] = m_pQoSResult[m_lastSearchPad];
+ m_pQoSResult[m_lastSearchPad] = NULL;
+
+ if( m_SessionsUpdatedCallback != NULL ) m_SessionsUpdatedCallback(m_pSearchParam);
+ m_bSearchResultsReady = false;
+ m_bSearchPending = false;
+ }
+ }
+ else
+ {
+ // Don't start searches unless we have registered a callback
+ if( m_SessionsUpdatedCallback != NULL && (m_lastSearchStartTime[g_NetworkManager.GetPrimaryPad()] + MINECRAFT_XSESSION_SEARCH_DELAY_MILLISECONDS) < GetTickCount() )
+ {
+ SearchForGames();
+ }
+ }
+}
+
+void CPlatformNetworkManagerXbox::SearchForGames()
+{
+ // Don't start a new search until we have finished the last one
+ if(m_bSearchPending) return;
+
+ m_lastSearchPad = g_NetworkManager.GetPrimaryPad();
+
+ m_lastSearchStartTime[m_lastSearchPad] = GetTickCount();
+ m_bSearchPending = true;
+ m_bSearchResultsReady = false;
+
+ for(AUTO_VAR(it, friendsSessions[m_lastSearchPad].begin()); it < friendsSessions[m_lastSearchPad].end(); ++it)
+ {
+ delete (*it);
+ }
+ friendsSessions[m_lastSearchPad].clear();
+
+ if( m_pSearchResults[m_lastSearchPad] != NULL )
+ {
+ delete m_pSearchResults[m_lastSearchPad];
+ m_pSearchResults[m_lastSearchPad] = NULL;
+ }
+ if( m_pQoSResult[m_lastSearchPad] != NULL )
+ {
+ XNetQosRelease(m_pQoSResult[m_lastSearchPad]);
+ m_pQoSResult[m_lastSearchPad] = NULL;
+ }
+
+ bool bMultiplayerAllowed = g_NetworkManager.IsSignedInLive( g_NetworkManager.GetPrimaryPad() ) && g_NetworkManager.AllowedToPlayMultiplayer( g_NetworkManager.GetPrimaryPad() );
+
+ if( bMultiplayerAllowed )
+ {
+ // PARTY
+ XPARTY_USER_LIST partyUserList;
+ HRESULT partyResult = XPartyGetUserList( &partyUserList );
+ if((partyResult != XPARTY_E_NOT_IN_PARTY) && (partyUserList.dwUserCount>1))
+ {
+ for(unsigned int i = 0; isessionId, sizeof(SessionID) ) == 0 )
+ {
+ //printf("We already have this session from another player.\n");
+ sessionAlreadyAdded = true;
+ break;
+ }
+ }
+
+ if(!sessionAlreadyAdded)
+ {
+ FriendSessionInfo *sessionInfo = new FriendSessionInfo();
+ sessionInfo->sessionId = partyUserList.Users[i].SessionInfo.sessionID;
+ sessionInfo->hasPartyMember = true;
+ friendsSessions[m_lastSearchPad].push_back(sessionInfo);
+ }
+ }
+ }
+ }
+
+ // FRIENDS
+
+ DWORD bufferSize = 0;
+ HANDLE hFriendsEnumerator;
+ DWORD hr = XFriendsCreateEnumerator(
+ g_NetworkManager.GetPrimaryPad(),
+ 0,
+ MAX_FRIENDS,
+ &bufferSize,
+ &hFriendsEnumerator
+ );
+
+ char *buffer = new char[bufferSize];
+ DWORD itemsReturned;
+ DWORD result = XEnumerate(
+ hFriendsEnumerator,
+ buffer,
+ bufferSize,
+ &itemsReturned,
+ NULL
+ );
+
+ DWORD flagPlayingOnline = XONLINE_FRIENDSTATE_FLAG_ONLINE; // | XONLINE_FRIENDSTATE_FLAG_PLAYING;
+
+ XONLINE_FRIEND *friends = (XONLINE_FRIEND *)buffer;
+ for(unsigned int i = 0; isessionId, sizeof(SessionID) ) == 0 )
+ {
+ //printf("We already have this session from another player.\n");
+ sessionAlreadyAdded = true;
+ break;
+ }
+ }
+
+ if(!sessionAlreadyAdded)
+ {
+ FriendSessionInfo *sessionInfo = new FriendSessionInfo();
+ sessionInfo->sessionId = friends[i].sessionID;
+ friendsSessions[m_lastSearchPad].push_back(sessionInfo);
+ //g_NetworkManager.SearchForGameById(friends[i].sessionID,&SearchForGameCallback, m_hObj);
+ //++m_searches;
+ }
+ }
+ }
+ delete [] buffer;
+ }
+
+ if( friendsSessions[m_lastSearchPad].empty() )
+ {
+ SetSearchResultsReady();
+ return;
+ }
+
+ DWORD sessionIDCount = min( XSESSION_SEARCH_MAX_IDS, friendsSessions[m_lastSearchPad].size() );
+ SessionID *sessionIDList = new SessionID[sessionIDCount];
+
+ for(DWORD i = 0; i < sessionIDCount; ++i)
+ {
+ sessionIDList[i] = friendsSessions[m_lastSearchPad].at(i)->sessionId;
+ }
+
+ DWORD dwStatus = ERROR_SUCCESS;
+ DWORD cbResults = 0;
+ // In this first call, explicitly pass in a null pointer and a buffer size
+ // of 0. This forces the function to set cbResults to the correct buffer
+ // size.
+
+ dwStatus = XSessionSearchByIds(
+ sessionIDCount,
+ sessionIDList,
+ g_NetworkManager.GetPrimaryPad(),
+ &cbResults, // Pass in the address of the size variable
+ NULL,
+ NULL // This example uses the synchronous model
+ );
+
+ XOVERLAPPED *pOverlapped = new XOVERLAPPED();
+ ZeroMemory(pOverlapped, sizeof(XOVERLAPPED));
+
+ // If the function returns ERROR_INSUFFICIENT_BUFFER cbResults has been
+ // changed to reflect the size buffer that will be necessary for this call. Use
+ // the new size to allocate a buffer of the appropriate size.
+ if (ERROR_INSUFFICIENT_BUFFER == dwStatus && cbResults > 0)
+ {
+ // Allocate this on the main thread rather in the search thread which might run out of memory
+ m_pSearchResults[m_lastSearchPad] = (XSESSION_SEARCHRESULT_HEADER *) new BYTE[cbResults];
+
+ if (!m_pSearchResults[m_lastSearchPad])
+ {
+ dwStatus = ERROR_OUTOFMEMORY;
+ // Handle this "out of title memory" case and abort the read.
+ }
+
+ ZeroMemory(m_pSearchResults[m_lastSearchPad], cbResults);
+
+ // Next, call the function again with the exact same parameters, except
+ // this time use the modified buffer size and a pointer to a buffer that
+ // matches it.
+ dwStatus = XSessionSearchByIds(
+ sessionIDCount,
+ sessionIDList,
+ g_NetworkManager.GetPrimaryPad(),
+ &cbResults, // Pass in the address of the size variable
+ m_pSearchResults[m_lastSearchPad],
+ pOverlapped
+ );
+ }
+
+ // Test the result of either the first call (if it failed with
+ // something other than ERROR_INSUFFICIENT_BUFFER) or the subsequent call.
+ // If the function does not succeed after allocating a buffer of the appropriate size
+ // succeed, something else is wrong.
+ if (ERROR_IO_PENDING != dwStatus)//ERROR_SUCCESS != dwStatus)
+ {
+ // Handle other errors.
+ app.DebugPrintf("An error occured while enumerating sessions\n");
+ SetSearchResultsReady();
+
+ delete [] sessionIDList;
+ }
+ else if ( cbResults > 0 )
+ {
+ SearchForGamesData *threadData = new SearchForGamesData();
+ threadData->sessionIDCount = sessionIDCount;
+ threadData->searchBuffer = m_pSearchResults[m_lastSearchPad];
+ threadData->ppQos = &m_pQoSResult[m_lastSearchPad];
+ threadData->pOverlapped = pOverlapped;
+ threadData->sessionIDList = sessionIDList;
+
+ m_SearchingThread = new C4JThread(&CPlatformNetworkManagerXbox::SearchForGamesThreadProc, threadData, "SearchForGames");
+ m_SearchingThread->SetProcessor( 2 );
+ m_SearchingThread->Run();
+ }
+ else
+ {
+ SetSearchResultsReady();
+ }
+}
+
+int CPlatformNetworkManagerXbox::SearchForGamesThreadProc( void* lpParameter )
+{
+ SearchForGamesData *threadData = (SearchForGamesData *)lpParameter;
+
+ DWORD sessionIDCount = threadData->sessionIDCount;
+
+ XOVERLAPPED *pOverlapped = threadData->pOverlapped;
+
+ DWORD dwStatus = ERROR_SUCCESS;
+ DWORD cbResults = sessionIDCount;
+ XSESSION_SEARCHRESULT_HEADER *pSearchResults = (XSESSION_SEARCHRESULT_HEADER *)threadData->searchBuffer;
+
+ while( !XHasOverlappedIoCompleted(pOverlapped) )
+ {
+ Sleep(100);
+ }
+ delete pOverlapped;
+ delete [] threadData->sessionIDList;
+
+ if( pSearchResults->dwSearchResults == 0 )
+ {
+ g_pPlatformNetworkManager->SetSearchResultsReady();
+ return 0;
+ }
+
+ // TODO 4J Stu - Is there a nicer way to allocate less here?
+ const XNADDR *QoSxnaddr[XSESSION_SEARCH_MAX_IDS];// = new XNADDR*[sessionIDCount];
+ const SessionID *QoSxnkid[XSESSION_SEARCH_MAX_IDS];// = new XNKID*[sessionIDCount]; // Note SessionID is just typedef'd to be a XNKID on xbox
+ const XNKEY *QoSxnkey[XSESSION_SEARCH_MAX_IDS];// = new XNKEY*[sessionIDCount];
+
+
+ for(DWORD i = 0; i < pSearchResults->dwSearchResults; ++i)
+ {
+ QoSxnaddr[i] = &pSearchResults->pResults[i].info.hostAddress;
+ QoSxnkid[i] = &pSearchResults->pResults[i].info.sessionID;
+ QoSxnkey[i] = &pSearchResults->pResults[i].info.keyExchangeKey;
+ }
+ // Create an event object that is autoreset with an initial state of "not signaled".
+ // Pass this event handle to the QoSLookup to receive notification of each QoS lookup.
+ HANDLE QoSLookupHandle = CreateEvent(NULL, false, false, NULL);
+
+ *threadData->ppQos = new XNQOS();
+
+ INT iRet = XNetQosLookup(
+ pSearchResults->dwSearchResults, // Number of remote Xbox 360 consoles to probe
+ QoSxnaddr, // Array of pointers to XNADDR structures
+ QoSxnkid, // Array of pointers to XNKID structures that contain session IDs for the remote Xbox 360 consoles
+ QoSxnkey, // Array of pointers to XNKEY structures that contain key-exchange keys for the remote Xbox 360 consoles
+ 0, // Number of security gateways to probe
+ NULL, // Pointer to an array of IN_ADDR structures that contain the IP addresses of the security gateways
+ NULL, // Pointer to an array of service IDs for the security gateway
+ 8, // Number of desired probe replies to receive
+ 0, // Maximum upstream bandwidth that the outgoing QoS probe packets can consume
+ 0, // Flags
+ QoSLookupHandle, // Event handle
+ threadData->ppQos ); // Pointer to a pointer to an XNQOS structure that receives the results from the QoS probes
+
+ if( 0 != iRet )
+ {
+ app.DebugPrintf( "XNetQosLookup failed with error 0x%08x", iRet);
+ g_pPlatformNetworkManager->SetSearchResultsReady();
+ }
+ else
+ {
+
+ //m_bQoSTesting = TRUE;
+
+ // Wait for results to all complete. cxnqosPending will eventually hit zero.
+ // Pause thread waiting for QosLookup events to be triggered.
+ while ( (*threadData->ppQos)->cxnqosPending != 0 )
+ {
+ // 4J Stu - We could wait for INFINITE if we weren't watching for the kill flag
+ WaitForSingleObject(QoSLookupHandle, 100);
+ }
+
+ // Close handle
+ CloseHandle( QoSLookupHandle );
+
+ g_pPlatformNetworkManager->SetSearchResultsReady(pSearchResults->dwSearchResults);
+ }
+
+ return 0;
+}
+
+void CPlatformNetworkManagerXbox::SetSearchResultsReady(int resultCount )
+{
+ m_bSearchResultsReady = true;
+ m_searchResultsCount[m_lastSearchPad] = resultCount;
+}
+
+vector *CPlatformNetworkManagerXbox::GetSessionList(int iPad, int localPlayers, bool partyOnly)
+{
+ vector *filteredList = new vector();;
+
+ const XSESSION_SEARCHRESULT *pSearchResult;
+ const XNQOSINFO * pxnqi;
+
+ if( m_currentSearchResultsCount[iPad] > 0 )
+ {
+ // Loop through all the results.
+ for( DWORD dwResult = 0; dwResult < m_currentSearchResultsCount[iPad]; dwResult++ )
+ {
+ pSearchResult = &m_pCurrentSearchResults[iPad]->pResults[dwResult];
+
+ // No room for us, so ignore it
+ // 4J Stu - pSearchResult should never be NULL, but just in case...
+ if(pSearchResult == NULL || pSearchResult->dwOpenPublicSlots < localPlayers) continue;
+
+ bool foundSession = false;
+ FriendSessionInfo *sessionInfo = NULL;
+ AUTO_VAR(itFriendSession, friendsSessions[iPad].begin());
+ for(itFriendSession = friendsSessions[iPad].begin(); itFriendSession < friendsSessions[iPad].end(); ++itFriendSession)
+ {
+ sessionInfo = *itFriendSession;
+ if(memcmp( &pSearchResult->info.sessionID, &sessionInfo->sessionId, sizeof(SessionID) ) == 0 && (!partyOnly || (partyOnly && sessionInfo->hasPartyMember) ) )
+ {
+ sessionInfo->searchResult = *pSearchResult;
+ sessionInfo->displayLabel = new wchar_t[100];
+ ZeroMemory( sessionInfo->displayLabel, 100 * sizeof(wchar_t) );
+ foundSession = true;
+ break;
+ }
+ }
+
+ // We received a search result for a session no longer in our list of friends sessions
+ if(!foundSession) continue;
+
+ // Print some info about this result.
+ app.DebugPrintf( "Search result %u:\n", dwResult );
+ //app.DebugPrintf( " public slots open = %u, filled = %u\n", pSearchResult->dwOpenPublicSlots, pSearchResult->dwFilledPublicSlots );
+ //app.DebugPrintf( " private slots open = %u, filled = %u\n", pSearchResult->dwOpenPrivateSlots, pSearchResult->dwFilledPrivateSlots );
+
+ // See if this result was contacted successfully via QoS probes.
+ pxnqi = &m_pCurrentQoSResult[iPad]->axnqosinfo[dwResult];
+ if( pxnqi->bFlags & XNET_XNQOSINFO_TARGET_CONTACTED )
+ {
+ // Print the round trip time and the rough estimation of
+ // bandwidth.
+ //app.DebugPrintf( " RTT min = %u, med = %u\n", pxnqi->wRttMinInMsecs, pxnqi->wRttMedInMsecs );
+ //app.DebugPrintf( " bps up = %u, down = %u\n", pxnqi->dwUpBitsPerSec, pxnqi->dwDnBitsPerSec );
+
+ if(pxnqi->cbData > 0)
+ {
+ sessionInfo->data = *(GameSessionData *)pxnqi->pbData;
+
+ wstring gamerName = convStringToWstring(sessionInfo->data.hostName);
+#ifndef _CONTENT_PACKAGE
+ if(app.DebugSettingsOn() && (app.GetGameSettingsDebugMask()&(1L<displayLabel,app.GetString(IDS_GAME_HOST_NAME),L"WWWWWWWWWWWWWWWW");
+ }
+ else
+#endif
+ {
+ swprintf(sessionInfo->displayLabel,app.GetString(IDS_GAME_HOST_NAME),gamerName.c_str() );
+ }
+ }
+ else
+ {
+ swprintf(sessionInfo->displayLabel,app.GetString(IDS_GAME_HOST_NAME_UNKNOWN));
+ }
+ sessionInfo->displayLabelLength = wcslen( sessionInfo->displayLabel );
+
+ // If this host wasn't disabled use this one.
+ if( !( pxnqi->bFlags & XNET_XNQOSINFO_TARGET_DISABLED ) &&
+ sessionInfo->data.netVersion == MINECRAFT_NET_VERSION &&
+ sessionInfo->data.isJoinable)
+ {
+ //printf("This game is valid\n");
+ //if( foundSession ) friendsSessions.erase(itFriendSession);
+ FriendSessionInfo *newInfo = new FriendSessionInfo();
+ newInfo->data = sessionInfo->data;
+ newInfo->displayLabel = new wchar_t[100];
+ memcpy(newInfo->displayLabel, sessionInfo->displayLabel, 100 * sizeof(wchar_t) );
+ newInfo->displayLabelLength = sessionInfo->displayLabelLength;
+ newInfo->hasPartyMember = sessionInfo->hasPartyMember;
+ newInfo->searchResult = sessionInfo->searchResult;
+ newInfo->sessionId = sessionInfo->sessionId;
+ filteredList->push_back(newInfo);
+ }
+ #ifndef _CONTENT_PACKAGE
+ if( sessionInfo->data.netVersion != MINECRAFT_NET_VERSION )
+ {
+ wprintf(L"%ls version of %d does not match our version of %d\n", sessionInfo->displayLabel, sessionInfo->data.netVersion, MINECRAFT_NET_VERSION);
+ }
+ #endif
+ }
+ }
+ }
+
+ return filteredList;
+}
+
+// This runs through the search results for a session matching sessionId, then returns the full details in foundSessionInfo
+bool CPlatformNetworkManagerXbox::GetGameSessionInfo(int iPad, SessionID sessionId, FriendSessionInfo *foundSessionInfo)
+{
+ HRESULT hr = E_FAIL;
+
+ const XSESSION_SEARCHRESULT *pSearchResult;
+ const XNQOSINFO * pxnqi;
+
+ if( m_currentSearchResultsCount[iPad] > 0 )
+ {
+ // Loop through all the results.
+ for( DWORD dwResult = 0; dwResult < m_currentSearchResultsCount[iPad]; dwResult++ )
+ {
+ pSearchResult = &m_pCurrentSearchResults[iPad]->pResults[dwResult];
+
+ if(memcmp( &pSearchResult->info.sessionID, &sessionId, sizeof(SessionID) ) != 0) continue;
+
+ bool foundSession = false;
+ FriendSessionInfo *sessionInfo = NULL;
+ AUTO_VAR(itFriendSession, friendsSessions[iPad].begin());
+ for(itFriendSession = friendsSessions[iPad].begin(); itFriendSession < friendsSessions[iPad].end(); ++itFriendSession)
+ {
+ sessionInfo = *itFriendSession;
+ if(memcmp( &pSearchResult->info.sessionID, &sessionInfo->sessionId, sizeof(SessionID) ) == 0)
+ {
+ sessionInfo->searchResult = *pSearchResult;
+ sessionInfo->displayLabel = new wchar_t[100];
+ ZeroMemory( sessionInfo->displayLabel, 100 * sizeof(wchar_t) );
+ foundSession = true;
+ break;
+ }
+ }
+
+ // We received a search result for a session no longer in our list of friends sessions
+ if(!foundSession) break;
+
+ // See if this result was contacted successfully via QoS probes.
+ pxnqi = &m_pCurrentQoSResult[iPad]->axnqosinfo[dwResult];
+ if( pxnqi->bFlags & XNET_XNQOSINFO_TARGET_CONTACTED )
+ {
+
+ if(pxnqi->cbData > 0)
+ {
+ sessionInfo->data = *(GameSessionData *)pxnqi->pbData;
+
+ wstring gamerName = convStringToWstring(sessionInfo->data.hostName);
+ swprintf(sessionInfo->displayLabel,app.GetString(IDS_GAME_HOST_NAME),L"MWWWWWWWWWWWWWWM");// gamerName.c_str() );
+ }
+ else
+ {
+ swprintf(sessionInfo->displayLabel,app.GetString(IDS_GAME_HOST_NAME_UNKNOWN));
+ }
+ sessionInfo->displayLabelLength = wcslen( sessionInfo->displayLabel );
+
+ // If this host wasn't disabled use this one.
+ if( !( pxnqi->bFlags & XNET_XNQOSINFO_TARGET_DISABLED ) &&
+ sessionInfo->data.netVersion == MINECRAFT_NET_VERSION &&
+ sessionInfo->data.isJoinable)
+ {
+ foundSessionInfo->data = sessionInfo->data;
+ if(foundSessionInfo->displayLabel != NULL) delete [] foundSessionInfo->displayLabel;
+ foundSessionInfo->displayLabel = new wchar_t[100];
+ memcpy(foundSessionInfo->displayLabel, sessionInfo->displayLabel, 100 * sizeof(wchar_t) );
+ foundSessionInfo->displayLabelLength = sessionInfo->displayLabelLength;
+ foundSessionInfo->hasPartyMember = sessionInfo->hasPartyMember;
+ foundSessionInfo->searchResult = sessionInfo->searchResult;
+ foundSessionInfo->sessionId = sessionInfo->sessionId;
+
+ hr = S_OK;
+ }
+ }
+ }
+ }
+
+ return ( hr == S_OK );
+}
+
+void CPlatformNetworkManagerXbox::SetSessionsUpdatedCallback( void (*SessionsUpdatedCallback)(LPVOID pParam), LPVOID pSearchParam )
+{
+ m_SessionsUpdatedCallback = SessionsUpdatedCallback; m_pSearchParam = pSearchParam;
+}
+
+void CPlatformNetworkManagerXbox::GetFullFriendSessionInfo( FriendSessionInfo *foundSession, void (* FriendSessionUpdatedFn)(bool success, void *pParam), void *pParam )
+{
+ FriendSessionUpdatedFn(true, pParam);
+}
+
+void CPlatformNetworkManagerXbox::ForceFriendsSessionRefresh()
+{
+ app.DebugPrintf("Resetting friends session search data\n");
+ for(unsigned int i = 0; i < XUSER_MAX_COUNT; ++i)
+ {
+ m_searchResultsCount[i] = 0;
+ m_lastSearchStartTime[i] = 0;
+ delete m_pSearchResults[i];
+ m_pSearchResults[i] = NULL;
+ }
+}
+
+INetworkPlayer *CPlatformNetworkManagerXbox::addNetworkPlayer(IQNetPlayer *pQNetPlayer)
+{
+ NetworkPlayerXbox *pNetworkPlayer = new NetworkPlayerXbox(pQNetPlayer);
+ pQNetPlayer->SetCustomDataValue((ULONG_PTR)pNetworkPlayer);
+ currentNetworkPlayers.push_back( pNetworkPlayer );
+ return pNetworkPlayer;
+}
+
+void CPlatformNetworkManagerXbox::removeNetworkPlayer(IQNetPlayer *pQNetPlayer)
+{
+ INetworkPlayer *pNetworkPlayer = getNetworkPlayer(pQNetPlayer);
+ for( AUTO_VAR(it, currentNetworkPlayers.begin()); it != currentNetworkPlayers.end(); it++ )
+ {
+ if( *it == pNetworkPlayer )
+ {
+ currentNetworkPlayers.erase(it);
+ return;
+ }
+ }
+}
+
+INetworkPlayer *CPlatformNetworkManagerXbox::getNetworkPlayer(IQNetPlayer *pQNetPlayer)
+{
+ return pQNetPlayer ? (INetworkPlayer *)(pQNetPlayer->GetCustomDataValue()) : NULL;
+}
+
+
+INetworkPlayer *CPlatformNetworkManagerXbox::GetLocalPlayerByUserIndex(int userIndex )
+{
+ return getNetworkPlayer(m_pIQNet->GetLocalPlayerByUserIndex(userIndex));
+}
+
+INetworkPlayer *CPlatformNetworkManagerXbox::GetPlayerByIndex(int playerIndex)
+{
+ return getNetworkPlayer(m_pIQNet->GetPlayerByIndex(playerIndex));
+}
+
+INetworkPlayer * CPlatformNetworkManagerXbox::GetPlayerByXuid(PlayerUID xuid)
+{
+ return getNetworkPlayer( m_pIQNet->GetPlayerByXuid(xuid)) ;
+}
+
+INetworkPlayer * CPlatformNetworkManagerXbox::GetPlayerBySmallId(unsigned char smallId)
+{
+ return getNetworkPlayer(m_pIQNet->GetPlayerBySmallId(smallId));
+}
+
+INetworkPlayer *CPlatformNetworkManagerXbox::GetHostPlayer()
+{
+ return getNetworkPlayer(m_pIQNet->GetHostPlayer());
+}
+
+bool CPlatformNetworkManagerXbox::IsHost()
+{
+ return m_pIQNet->IsHost() && !m_bHostChanged;
+}
+
+bool CPlatformNetworkManagerXbox::JoinGameFromInviteInfo( int userIndex, int userMask, const INVITE_INFO *pInviteInfo)
+{
+ return ( m_pIQNet->JoinGameFromInviteInfo( userIndex, userMask, pInviteInfo ) == S_OK);
+}
+
+void CPlatformNetworkManagerXbox::SetSessionTexturePackParentId( int id )
+{
+ m_hostGameSessionData.texturePackParentId = id;
+}
+
+void CPlatformNetworkManagerXbox::SetSessionSubTexturePackId( int id )
+{
+ m_hostGameSessionData.subTexturePackId = id;
+}
+
+void CPlatformNetworkManagerXbox::Notify(int ID, ULONG_PTR Param)
+{
+ m_pIQNet->Notify( ID, Param );
+}
+
+bool CPlatformNetworkManagerXbox::IsInSession()
+{
+ return m_pIQNet->GetState() != QNET_STATE_IDLE;
+}
+
+bool CPlatformNetworkManagerXbox::IsInGameplay()
+{
+ return m_pIQNet->GetState() == QNET_STATE_GAME_PLAY;
+}
+
+bool CPlatformNetworkManagerXbox::IsReadyToPlayOrIdle()
+{
+ return true;
+}
diff --git a/Minecraft.Client/Xbox/Network/PlatformNetworkManagerXbox.h b/Minecraft.Client/Xbox/Network/PlatformNetworkManagerXbox.h
new file mode 100644
index 00000000..7c6112b4
--- /dev/null
+++ b/Minecraft.Client/Xbox/Network/PlatformNetworkManagerXbox.h
@@ -0,0 +1,184 @@
+#pragma once
+using namespace std;
+#include
+#include
+#include "..\..\..\Minecraft.World\C4JThread.h"
+#include "..\..\Common\Network\NetworkPlayerInterface.h"
+#include "..\..\Common\Network\PlatformNetworkManagerInterface.h"
+#include "..\..\Common\Network\SessionInfo.h"
+
+// This is how often we allow a search for new games
+#define MINECRAFT_XSESSION_SEARCH_DELAY_MILLISECONDS 30000
+
+// This is the xbox 360 specific implementation of CPlatformNetworkManager. It is implemented using QNET. There shouldn't be any general game code in here, this class is
+// for providing a bridge between the common game-side network implementation, and the lowest level platform specific libraries (QNET in this case).
+
+class CPlatformNetworkManagerXbox : public CPlatformNetworkManager, public IQNetCallbacks
+{
+ friend class CGameNetworkManager;
+public:
+ virtual bool Initialise(CGameNetworkManager *pGameNetworkManager, int flagIndexSize);
+ virtual void Terminate();
+ virtual int GetJoiningReadyPercentage();
+ virtual int CorrectErrorIDS(int IDS);
+
+ virtual void DoWork();
+ virtual int GetPlayerCount();
+ virtual int GetOnlinePlayerCount();
+ virtual int GetLocalPlayerMask(int playerIndex);
+ virtual bool AddLocalPlayerByUserIndex( int userIndex );
+ virtual bool RemoveLocalPlayerByUserIndex( int userIndex );
+ virtual INetworkPlayer *GetLocalPlayerByUserIndex( int userIndex );
+ virtual INetworkPlayer *GetPlayerByIndex(int playerIndex);
+ virtual INetworkPlayer * GetPlayerByXuid(PlayerUID xuid);
+ virtual INetworkPlayer * GetPlayerBySmallId(unsigned char smallId);
+ virtual bool ShouldMessageForFullSession();
+
+ virtual INetworkPlayer *GetHostPlayer();
+ virtual bool IsHost();
+ virtual bool JoinGameFromInviteInfo( int userIndex, int userMask, const INVITE_INFO *pInviteInfo);
+ virtual bool LeaveGame(bool bMigrateHost);
+
+ virtual bool IsInSession();
+ virtual bool IsInGameplay();
+ virtual bool IsInStatsEnabledSession();
+ virtual bool IsReadyToPlayOrIdle();
+ virtual bool SessionHasSpace(unsigned int spaceRequired = 1);
+ virtual void SendInviteGUI(int quadrant);
+ virtual bool IsAddingPlayer();
+
+ virtual void HostGame(int localUsersMask, bool bOnlineGame, bool bIsPrivate, unsigned char publicSlots = MINECRAFT_NET_MAX_PLAYERS, unsigned char privateSlots = 0);
+ virtual int JoinGame(FriendSessionInfo *searchResult, int localUsersMask, int primaryUserIndex );
+ virtual bool SetLocalGame(bool isLocal);
+ virtual bool IsLocalGame() { return m_bIsOfflineGame; }
+ virtual void SetPrivateGame(bool isPrivate);
+ virtual bool IsPrivateGame() { return m_bIsPrivateGame; }
+ virtual bool IsLeavingGame() { return m_bLeavingGame; }
+ virtual void ResetLeavingGame() { m_bLeavingGame = true; }
+
+ virtual void RegisterPlayerChangedCallback(int iPad, void (*callback)(void *callbackParam, INetworkPlayer *pPlayer, bool leaving), void *callbackParam);
+ virtual void UnRegisterPlayerChangedCallback(int iPad, void (*callback)(void *callbackParam, INetworkPlayer *pPlayer, bool leaving), void *callbackParam);
+
+ virtual void HandleSignInChange();
+
+ virtual bool _RunNetworkGame();
+
+private:
+ bool isSystemPrimaryPlayer(IQNetPlayer *pQNetPlayer);
+ virtual bool _LeaveGame(bool bMigrateHost, bool bLeaveRoom);
+ virtual void _HostGame(int dwUsersMask, unsigned char publicSlots = MINECRAFT_NET_MAX_PLAYERS, unsigned char privateSlots = 0);
+ virtual bool _StartGame();
+
+ IQNet * m_pIQNet; // pointer to QNet interface
+
+ HANDLE m_notificationListener;
+
+ vector m_machineQNetPrimaryPlayers; // collection of players that we deem to be the main one for that system
+
+ bool m_bLeavingGame;
+ bool m_bLeaveGameOnTick;
+ bool m_migrateHostOnLeave;
+ bool m_bHostChanged;
+
+ bool m_bIsOfflineGame;
+ bool m_bIsPrivateGame;
+ int m_flagIndexSize;
+
+ // This is only maintained by the host, and is not valid on client machines
+ GameSessionData m_hostGameSessionData;
+ CGameNetworkManager *m_pGameNetworkManager;
+public:
+ virtual void UpdateAndSetGameSessionData(INetworkPlayer *pNetworkPlayerLeaving = NULL);
+
+private:
+ // TODO 4J Stu - Do we need to be able to have more than one of these?
+ void (*playerChangedCallback[XUSER_MAX_COUNT])(void *callbackParam, INetworkPlayer *pPlayer, bool leaving);
+ void *playerChangedCallbackParam[XUSER_MAX_COUNT];
+
+ static int RemovePlayerOnSocketClosedThreadProc( void* lpParam );
+ virtual bool RemoveLocalPlayer( INetworkPlayer *pNetworkPlayer );
+
+ // Things for handling per-system flags
+ class PlayerFlags
+ {
+ public:
+ INetworkPlayer *m_pNetworkPlayer;
+ unsigned char *flags;
+ unsigned int count;
+ PlayerFlags(INetworkPlayer *pNetworkPlayer, unsigned int count);
+ ~PlayerFlags();
+ };
+ vector m_playerFlags;
+ void SystemFlagAddPlayer(INetworkPlayer *pNetworkPlayer);
+ void SystemFlagRemovePlayer(INetworkPlayer *pNetworkPlayer);
+ void SystemFlagReset();
+public:
+ virtual void SystemFlagSet(INetworkPlayer *pNetworkPlayer, int index);
+ virtual bool SystemFlagGet(INetworkPlayer *pNetworkPlayer, int index);
+
+ // For telemetry
+private:
+ float m_lastPlayerEventTimeStart;
+
+public:
+ wstring GatherStats();
+ wstring GatherRTTStats();
+
+private:
+ vector friendsSessions[XUSER_MAX_COUNT];
+ int m_searchResultsCount[XUSER_MAX_COUNT];
+ int m_lastSearchStartTime[XUSER_MAX_COUNT];
+
+ // The results that will be filled in with the current search
+ XSESSION_SEARCHRESULT_HEADER *m_pSearchResults[XUSER_MAX_COUNT];
+ XNQOS *m_pQoSResult[XUSER_MAX_COUNT];
+
+ // The results from the previous search, which are currently displayed in the game
+ XSESSION_SEARCHRESULT_HEADER *m_pCurrentSearchResults[XUSER_MAX_COUNT];
+ XNQOS *m_pCurrentQoSResult[XUSER_MAX_COUNT];
+ int m_currentSearchResultsCount[XUSER_MAX_COUNT];
+
+ int m_lastSearchPad;
+ bool m_bSearchResultsReady;
+ bool m_bSearchPending;
+ LPVOID m_pSearchParam;
+ void (*m_SessionsUpdatedCallback)(LPVOID pParam);
+
+ C4JThread* m_SearchingThread;
+
+ void TickSearch();
+ void SearchForGames();
+ static int SearchForGamesThreadProc( void* lpParameter );
+
+ void SetSearchResultsReady(int resultCount = 0);
+
+ vectorcurrentNetworkPlayers;
+ INetworkPlayer *addNetworkPlayer(IQNetPlayer *pQNetPlayer);
+ void removeNetworkPlayer(IQNetPlayer *pQNetPlayer);
+ static INetworkPlayer *getNetworkPlayer(IQNetPlayer *pQNetPlayer);
+
+ virtual void SetSessionTexturePackParentId( int id );
+ virtual void SetSessionSubTexturePackId( int id );
+ virtual void Notify(int ID, ULONG_PTR Param);
+
+public:
+ virtual vector *GetSessionList(int iPad, int localPlayers, bool partyOnly);
+ virtual bool GetGameSessionInfo(int iPad, SessionID sessionId,FriendSessionInfo *foundSession);
+ virtual void SetSessionsUpdatedCallback( void (*SessionsUpdatedCallback)(LPVOID pParam), LPVOID pSearchParam );
+ virtual void GetFullFriendSessionInfo( FriendSessionInfo *foundSession, void (* FriendSessionUpdatedFn)(bool success, void *pParam), void *pParam );
+ virtual void ForceFriendsSessionRefresh();
+
+ // IQNetcallback interface functions
+ VOID NotifyStateChanged( __in QNET_STATE OldState, __in QNET_STATE NewState, __in HRESULT hrInfo );
+ VOID NotifyPlayerJoined( __in IQNetPlayer *pQNetPlayer );
+ VOID NotifyPlayerLeaving(__in IQNetPlayer *pQNetPlayer );
+ VOID NotifyNewHost( __in IQNetPlayer * pQNetPlayer);
+ VOID NotifyDataReceived( __in IQNetPlayer * pQNetPlayerFrom, __in DWORD dwNumPlayersTo, __in_ecount(dwNumPlayersTo) IQNetPlayer ** apQNetPlayersTo, __in_bcount(dwDataSize) const BYTE * pbData, __in DWORD dwDataSize);
+ VOID NotifyWriteStats( __in IQNetPlayer * pQNetPlayer );
+ VOID NotifyReadinessChanged(__in IQNetPlayer * pQNetPlayer, __in BOOL bReady);
+ VOID NotifyCommSettingsChanged(__in IQNetPlayer * pQNetPlayer);
+ VOID NotifyGameSearchComplete(__in IQNetGameSearch * pGameSearch, __in HRESULT hrComplete, __in DWORD dwNumResults);
+ VOID NotifyGameInvite( __in DWORD dwUserIndex, __in const INVITE_INFO * pInviteInfo );
+ VOID NotifyContextChanged( __in const XUSER_CONTEXT * pContext);
+ VOID NotifyPropertyChanged( __in const XUSER_PROPERTY * pProperty);
+};
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Network/extra.h b/Minecraft.Client/Xbox/Network/extra.h
new file mode 100644
index 00000000..d09b18b7
--- /dev/null
+++ b/Minecraft.Client/Xbox/Network/extra.h
@@ -0,0 +1,4 @@
+
+#pragma once
+
+const int MINECRAFT_NET_MAX_PLAYERS = 8;
diff --git a/Minecraft.Client/Xbox/ReleaseBuild/ReleaseAutobuild.cmd b/Minecraft.Client/Xbox/ReleaseBuild/ReleaseAutobuild.cmd
new file mode 100644
index 00000000..b933b541
--- /dev/null
+++ b/Minecraft.Client/Xbox/ReleaseBuild/ReleaseAutobuild.cmd
@@ -0,0 +1,11 @@
+
+"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" "..\..\..\Minecraft360.sln" /Clean Release /ProjectConfig Release /Out cleanr.txt /NoLogo
+"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" "..\..\..\Minecraft360.sln" /Build Release /ProjectConfig Release /Out buildr.txt /NoLogo
+
+perl build.plx
+
+REM zip it
+
+zipthebuild.cmd
+
+pause
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/ReleaseBuild/build.plx b/Minecraft.Client/Xbox/ReleaseBuild/build.plx
new file mode 100644
index 00000000..f3f17138
--- /dev/null
+++ b/Minecraft.Client/Xbox/ReleaseBuild/build.plx
@@ -0,0 +1,131 @@
+#! /usr/bin/perl -w
+use warnings;
+use File::Copy::Recursive qw(fcopy rcopy dircopy fmove rmove dirmove);
+
+open FH, '..\Xbox_BuildVer.h' or die $!;
+
+my $lineno=1;
+my $index;
+
+while()
+{
+ $lineno++;
+
+ $index = rindex($_,'#define VER_PRODUCTBUILD ');
+ my($line) = $_;
+ chomp($line);
+ if($index>-1)
+ {
+ @build = split(/ +/, $line);
+
+ $buildnum = sprintf("%4d", $build[2]);
+ $buildnum=~ tr/ /0/;
+ }
+}
+
+my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
+
+##print 'Build num is Minecraft_', $year-100,'.',$mon+1,'.',$mday,'.',$buildnum;
+
+$buildname=sprintf("Minecraft_%02d.%02d.%02d.%s_Release", $year-100,$mon+1,$mday,$buildnum);
+$builddir=sprintf("c:/MinecraftReleaseBuilds/%s",$buildname);
+
+
+print $builddir;
+
+## now create the build directories
+
+$dir = 'c:/MinecraftReleaseBuilds/';
+
+unless(-d $dir)
+{
+ mkdir $dir or die;
+}
+
+$dir = 'c:/MinecraftReleaseBuilds/pdbs/';
+
+unless(-d $dir)
+{
+ mkdir $dir or die;
+}
+
+$dir = 'c:/MinecraftReleaseBuilds/Zips/';
+
+unless(-d $dir)
+{
+ mkdir $dir or die;
+}
+
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftReleaseBuilds/%s/Docs",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftReleaseBuilds/%s/Minecraft360",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftReleaseBuilds/%s/Minecraft360/Saves",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+## Now copy the files in
+
+## docs
+$target=sprintf("c:/MinecraftReleaseBuilds/%s/Docs/4J Minecraft XBLA Design Changes & Additions v1.0.docx",$buildname);
+fcopy('../Docs/4J Minecraft XBLA Design Changes & Additions v1.0.docx',$target) or die $!;
+$target=sprintf("c:/MinecraftReleaseBuilds/%s/Docs/Minecraft_XBLA_TIS_Nov2011.xls",$buildname);
+fcopy('../Docs/Minecraft_XBLA_TIS_Nov2011.xls',$target) or die $!;
+$target=sprintf("c:/MinecraftReleaseBuilds/%s/Docs/Minecraft_XBLA_TIS_Nov2011_Asia_SYA111511.xls",$buildname);
+fcopy('../Docs/Minecraft_XBLA_TIS_Nov2011_Asia_SYA111511.xls',$target) or die $!;
+$target=sprintf("c:/MinecraftReleaseBuilds/%s/Docs/Minecraft_XBLA_TIS_Nov2011_EU.xls",$buildname);
+fcopy('../Docs/Minecraft_XBLA_TIS_Nov2011_EU.xls',$target) or die $!;
+$target=sprintf("c:/MinecraftReleaseBuilds/%s/Docs/Xbox Live Avatar Items - Minecraft.xlsx",$buildname);
+fcopy('../Docs/Xbox Live Avatar Items - Minecraft.xlsx',$target) or die $!;
+
+## xex
+$target=sprintf("c:/MinecraftReleaseBuilds/%s/Minecraft360/Minecraft_Release.xex",$buildname);
+fcopy('../../Release/Minecraft.Client.xex',$target) or die $!;
+
+## game data
+$target=sprintf("c:/MinecraftReleaseBuilds/%s/Minecraft360/res/",$buildname);
+rcopy('../res/',$target) or die $!;
+$target=sprintf("c:/MinecraftReleaseBuilds/%s/Minecraft360/Tutorial/TutorialLevel.mcs",$buildname);
+rcopy('../Tutorial/TutorialLevel.mcs',$target) or die $!;
+##$target=sprintf("c:/MinecraftReleaseBuilds/%s/Minecraft360/Trial/TrialLevel.mcs",$buildname);
+##rcopy('../Trial/TrialLevel.mcs',$target) or die $!;
+$target=sprintf("c:/MinecraftReleaseBuilds/%s/Minecraft360/584111F70AAAAAAA",$buildname);
+rcopy('../584111F70AAAAAAA',$target) or die $!;
+$target=sprintf("c:/MinecraftReleaseBuilds/%s/Minecraft360/AvatarAwards",$buildname);
+rcopy('../AvatarAwards',$target) or die $!;
+
+## release files
+$target=sprintf("c:/MinecraftReleaseBuilds/pdbs/%s/Release/Default.exe",$buildname);
+fcopy('../../Release/Minecraft.Client.exe',$target) or die $!;
+$target=sprintf("c:/MinecraftReleaseBuilds/pdbs/%s/Release/Default.pdb",$buildname);
+fcopy('../../Release/Minecraft.Client.pdb',$target) or die $!;
+$target=sprintf("c:/MinecraftReleaseBuilds/pdbs/%s/Release/Default.xdb",$buildname);
+fcopy('../../Release/Minecraft.Client.xdb',$target) or die $!;
+
+# Cheat save
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Cheats/Content/E0000C2E8D782D00/584111F7/00000001/Save2012 11718 748.bin",$buildname);
+fcopy('../Cheats/E0000C2E8D782D00/584111F7/00000001/Save2012 11718 748.bin',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Cheats/Content/E0000C2E8D782D00/FFFE07D1/00010000/E0000C2E8D782D00",$buildname);
+fcopy('../Cheats/E0000C2E8D782D00/FFFE07D1/00010000/E0000C2E8D782D00',$target) or die $!;
+
+open FH, "+>", 'zipthebuild.cmd' or die $!;
+
+$zipline = sprintf("\"C:\\Program Files (x86)\\winzip\\wzzip\" -p -r -ex c:\\MinecraftReleaseBuilds\\Zips\\%s.zip c:\\MinecraftReleaseBuilds\\%s\\*",$buildname,$buildname);
+
+print FH $zipline;
+close FH;
diff --git a/Minecraft.Client/Xbox/ReleaseBuild/launchCMD.cmd b/Minecraft.Client/Xbox/ReleaseBuild/launchCMD.cmd
new file mode 100644
index 00000000..d21751d7
--- /dev/null
+++ b/Minecraft.Client/Xbox/ReleaseBuild/launchCMD.cmd
@@ -0,0 +1 @@
+cmd &
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Resource.h b/Minecraft.Client/Xbox/Resource.h
new file mode 100644
index 00000000..55435726
Binary files /dev/null and b/Minecraft.Client/Xbox/Resource.h differ
diff --git a/Minecraft.Client/Xbox/Sentient/DynamicConfigurations.cpp b/Minecraft.Client/Xbox/Sentient/DynamicConfigurations.cpp
new file mode 100644
index 00000000..5d2b9763
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/DynamicConfigurations.cpp
@@ -0,0 +1,167 @@
+#include "stdafx.h"
+#include "Include\SenClientMain.h"
+#include "Include\SenClientDynamicConfig.h"
+#include "DynamicConfigurations.h"
+
+
+MinecraftDynamicConfigurations::Dynamic_Config_Trial_Data MinecraftDynamicConfigurations::trialData;
+
+bool MinecraftDynamicConfigurations::s_bFirstUpdateStarted = false;
+bool MinecraftDynamicConfigurations::s_bUpdatedConfigs[MinecraftDynamicConfigurations::eDynamic_Config_Max];
+MinecraftDynamicConfigurations::EDynamic_Configs MinecraftDynamicConfigurations::s_eCurrentConfig = MinecraftDynamicConfigurations::eDynamic_Config_Max;
+size_t MinecraftDynamicConfigurations::s_currentConfigSize = 0;
+size_t MinecraftDynamicConfigurations::s_dataWrittenSize = 0;
+byte *MinecraftDynamicConfigurations::s_dataWritten = NULL;
+
+void MinecraftDynamicConfigurations::Tick()
+{
+ if(!s_bFirstUpdateStarted)
+ {
+ UpdateAllConfigurations();
+ s_bFirstUpdateStarted = true;
+ }
+}
+
+DWORD MinecraftDynamicConfigurations::GetTrialTime()
+{
+ return trialData.trialTimeSeconds;
+}
+
+void MinecraftDynamicConfigurations::UpdateAllConfigurations()
+{
+ for(DWORD i = 0; i < eDynamic_Config_Max; ++i)
+ {
+ s_bUpdatedConfigs[i] = false;
+ }
+ UpdateNextConfiguration();
+}
+
+void MinecraftDynamicConfigurations::UpdateNextConfiguration()
+{
+ EDynamic_Configs update = eDynamic_Config_Max;
+ for(DWORD i = 0; i < eDynamic_Config_Max; ++i)
+ {
+ if(!s_bUpdatedConfigs[i])
+ {
+ update = (EDynamic_Configs)i;
+ break;
+ }
+ }
+ if( update < eDynamic_Config_Max )
+ {
+ UpdateConfiguration( update );
+ }
+}
+
+void MinecraftDynamicConfigurations::UpdateConfiguration(EDynamic_Configs id)
+{
+ app.DebugPrintf("DynamicConfig: Attempting to update dynamic configuration %d\n", id);
+
+ HRESULT hr = Sentient::SenDynamicConfigGetSize( id, &s_currentConfigSize, &MinecraftDynamicConfigurations::GetSizeCompletedCallback, NULL);
+
+ switch(hr)
+ {
+ case S_OK:
+ s_eCurrentConfig = id;
+ //The server call was spawned successfully.
+ break;
+ case E_FAIL:
+ app.DebugPrintf("DynamicConfig: Failed to get size for config\n");
+ //Sentient failed to spawn the call to the server.
+ //An unknown error occurred. For more information, see the debug log that is available when you compile your application against the debug version of the library (SenCoreD.lib).
+ break;
+ case Sentient::SENTIENT_E_NOT_INITIALIZED:
+ app.DebugPrintf("DynamicConfig: Failed to get size for config as sentient not initialized\n");
+ //Sentient is not initialized. You must call SentientInitialize before you call this function.
+ break;
+ case E_POINTER:
+ app.DebugPrintf("DynamicConfig: Failed to get size for config as pointer is invalid\n");
+ //The out_size pointer is NULL.
+ break;
+ }
+ if(FAILED(hr) )
+ {
+ s_bUpdatedConfigs[s_eCurrentConfig] = true;
+ UpdateNextConfiguration();
+ }
+}
+
+void MinecraftDynamicConfigurations::GetSizeCompletedCallback(HRESULT taskResult, void *userCallbackData)
+{
+ if( HRESULT_SUCCEEDED(taskResult) )
+ {
+ s_dataWritten = new byte[s_currentConfigSize];
+ HRESULT hr = Sentient::SenDynamicConfigGetBytes(
+ s_eCurrentConfig,
+ s_currentConfigSize,
+ &s_dataWrittenSize,
+ s_dataWritten,
+ &MinecraftDynamicConfigurations::GetDataCompletedCallback,
+ NULL
+ );
+
+ switch(hr)
+ {
+ case S_OK:
+ //The server call was spawned successfully.
+ break;
+ case E_FAIL:
+ app.DebugPrintf("DynamicConfig : Failed to get bytes for config\n");
+ //Sentient failed to spawn the call to the server.
+ //An unknown error occurred. For more information, see the debug log that is available when you compile your application against the debug version of the library (SenCoreD.lib).
+ break;
+ case Sentient::SENTIENT_E_NOT_INITIALIZED:
+ app.DebugPrintf("DynamicConfig : Failed to get bytes for config as sentient not initialized\n");
+ //Sentient is not initialized. You must call SentientInitialize before you call this function.
+ break;
+ case E_POINTER:
+ app.DebugPrintf("DynamicConfig: Failed to get bytes for config as pointer is NULL\n");
+ //The out_size pointer is NULL.
+ break;
+ }
+ if(FAILED(hr) )
+ {
+ s_bUpdatedConfigs[s_eCurrentConfig] = true;
+ UpdateNextConfiguration();
+ }
+ }
+ else
+ {
+ s_bUpdatedConfigs[s_eCurrentConfig] = true;
+ UpdateNextConfiguration();
+ app.DebugPrintf("MinecraftDynamicConfigurations::GetSizeCompletedCallback : FAILED\n");
+ }
+}
+
+void MinecraftDynamicConfigurations::GetDataCompletedCallback(HRESULT taskResult, void *userCallbackData)
+{
+ if(HRESULT_SUCCEEDED(taskResult) && s_currentConfigSize == s_dataWrittenSize)
+ {
+ switch(s_eCurrentConfig)
+ {
+ case eDynamic_Config_Trial:
+ {
+ int version = *(int *)s_dataWritten;
+ switch(version)
+ {
+ case DYNAMIC_CONFIG_TRIAL_VERSION:
+ //case 1:
+ memcpy(&trialData,s_dataWritten+4,sizeof(_dynamic_config_trial_data_version1));
+ app.DebugPrintf("Updated dynamic config TRIAL: timer is %d\n", trialData.trialTimeSeconds);
+ break;
+ };
+ }
+ break;
+ };
+ }
+ else
+ {
+ app.DebugPrintf("MinecraftDynamicConfigurations::GetDataCompletedCallback : FAILED\n");
+ }
+
+ delete [] s_dataWritten;
+ s_dataWritten = NULL;
+
+ s_bUpdatedConfigs[s_eCurrentConfig] = true;
+ UpdateNextConfiguration();
+}
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Sentient/DynamicConfigurations.h b/Minecraft.Client/Xbox/Sentient/DynamicConfigurations.h
new file mode 100644
index 00000000..61b206eb
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/DynamicConfigurations.h
@@ -0,0 +1,68 @@
+#pragma once
+
+// 4J Stu - This file defines the id's for the dynamic configurations that we are currently using
+// as well as the format of the data in them
+
+/***********************
+*
+* TRIAL TIMER
+*
+************************/
+
+#define DYNAMIC_CONFIG_TRIAL_ID 0
+#define DYNAMIC_CONFIG_TRIAL_VERSION 1
+#define DYNAMIC_CONFIG_DEFAULT_TRIAL_TIME 2400 //40 mins 1200 // 20 mins //300; // 5 minutes
+
+class MinecraftDynamicConfigurations
+{
+private:
+ enum EDynamic_Configs
+ {
+ eDynamic_Config_Trial,
+
+ eDynamic_Config_Max,
+ };
+
+ /***********************
+ *
+ * TRIAL TIMER
+ *
+ ************************/
+
+ // 4J Stu - The first 4 bytes define a version number, that defines the structure of the data
+ // After reading those bytes into a DWORD, the remainder of the data should be the size of the
+ // relevant struct and can be cast to the struct
+ struct _dynamic_config_trial_data_version1
+ {
+ // The time in seconds that the player can play the trial for
+ DWORD trialTimeSeconds;
+
+ _dynamic_config_trial_data_version1() { trialTimeSeconds = DYNAMIC_CONFIG_DEFAULT_TRIAL_TIME; }
+ };
+
+ typedef _dynamic_config_trial_data_version1 Dynamic_Config_Trial_Data;
+
+ // Stored configurations
+ static Dynamic_Config_Trial_Data trialData;
+
+ static bool s_bFirstUpdateStarted;
+ static bool s_bUpdatedConfigs[eDynamic_Config_Max];
+ static EDynamic_Configs s_eCurrentConfig;
+ static size_t s_currentConfigSize;
+
+ static size_t s_dataWrittenSize;
+ static byte *s_dataWritten;
+
+public:
+ static void Tick();
+
+ static DWORD GetTrialTime();
+
+private:
+ static void UpdateAllConfigurations();
+ static void UpdateNextConfiguration();
+ static void UpdateConfiguration(EDynamic_Configs id);
+
+ static void GetSizeCompletedCallback(HRESULT taskResult, void *userCallbackData);
+ static void GetDataCompletedCallback(HRESULT taskResult, void *userCallbackData);
+};
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientAvatar.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientAvatar.h
new file mode 100644
index 00000000..dfccfd3b
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientAvatar.h
@@ -0,0 +1,419 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client AvatarSuperstars Avatar API
+//
+// Include this to get access to all Avatar-related Sentient features.
+
+#pragma once
+
+#include "SenClientRawData.h"
+#include "SenClientResource.h"
+#include "SenClientSys.h"
+#include "SenClientXML.h"
+
+#include
+#include
+
+namespace Sentient
+{
+ //====================//
+ // //
+ // Avatar Types //
+ // //
+ //====================//
+
+ // When enumerating avatars, these are the options for pre-sorting the
+ // returned list.
+ enum SenAvatarSortBy
+ {
+ SenAvatarSortBy_Default = 0,
+ // ... TBD ...
+
+ };
+
+ // This structure contains the information needed to download the
+ // raw data for a given gender.
+ struct SenAvatarGenderInfo
+ {
+ SenRawDataTransferInfo metadata;
+ SenRawDataTransferInfo assets;
+ SenRawDataTransferInfo xml;
+ SenRawDataTransferInfo icon;
+ };
+
+ // This structure contains the original uploaded info plus info
+ // needed to download raw data.
+ struct SenAvatarInfo : public SenResourceInfo
+ {
+ int vipLevel;
+ SenAvatarGenderInfo female;
+ SenAvatarGenderInfo male;
+ };
+
+ struct SenAvatarPalette
+ {
+ XMCOLOR entry[3];
+ };
+
+ struct SenAvatarNamedPalette : SenAvatarPalette
+ {
+ wchar_t name[57+1];
+ };
+
+ /// @brief Extra avatar information.
+ ///
+ /// @details This structure contains additional data about the avatar, such as localized strings and palettes.
+ ///
+ struct SenAvatarExtraInfo
+ {
+ wchar_t title[XMARKETPLACE_MAX_TITLE_NAME_LENGTH+1]; ///< The localized game title associated with the avatar.
+ wchar_t name[XMARKETPLACE_MAX_OFFER_NAME_LENGTH+1]; ///< The localized name associated with the avatar.
+ wchar_t description[XMARKETPLACE_MAX_OFFER_SELL_TEXT_LENGTH+1]; ///< The localized short description associated with the avatar.
+
+ size_t paletteCount;
+ SenAvatarNamedPalette palette[16];
+ };
+
+ //========================//
+ // //
+ // Avatar Functions //
+ // //
+ //========================//
+
+ /// @brief Search the database for all the avatars that match the search criteria.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console. Note: This is NOT a XUID.
+ ///
+ /// @param[in] avatarInfoCountMax
+ /// The number of SenAvatarInfo structures available in @a out_avatarInfoList.
+ ///
+ /// @param[out] out_avatarInfoCount
+ /// This is the number of entries actually enumerated by the call.
+ ///
+ /// @param[out] out_avatarInfoList
+ /// The structures to fill in with the enumerated information.
+ /// It is assumed that this is preallocated to at least @a avatarInfoCountMax entries.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_GUEST_ACCESS_VIOLATION: A guest may not spawn this call.
+ /// E_POINTER: out_avatarInfoList is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details Enumerates in default order, at the current time, for all titles.
+ ///
+ /// @related SenAvatarDownloadExtraInfo()
+ /// @related SenAvatarDownloadMetadata()
+ /// @related SenAvatarDownloadAssets()
+ /// @related SenAvatarDownloadIcon()
+ ///
+ HRESULT SenAvatarEnumerate(
+ int userIndex,
+ size_t avatarInfoCountMax,
+ size_t *out_avatarInfoCount,
+ SenAvatarInfo *out_avatarInfoList,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ // Search the database for a specific avatar at the current time.
+ /// @brief Search the database for a specific avatar at the current time
+ ///
+ /// @param[in] titleID
+ /// The ID of the title that the avatar item is associated with.
+ ///
+ /// @param[in] resourceID
+ /// The ID of the specific asset about which information should be returned.
+ ///
+ /// @param[out] out_avatarInfo
+ /// The structures to fill in with the information.
+ /// It is assumed that this is preallocated to at least 1 entry.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_GUEST_ACCESS_VIOLATION: A guest may not spawn this call.
+ /// E_POINTER: out_avatarInfo is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @related SenAvatarEnumerate()
+ /// @related SenAvatarDownloadExtraInfo()
+ /// @related SenAvatarDownloadMetadata()
+ /// @related SenAvatarDownloadAssets()
+ /// @related SenAvatarDownloadIcon()
+ ///
+ HRESULT SenAvatarFind(
+ SenSysTitleID titleID,
+ SenResourceID resourceID,
+ SenAvatarInfo *out_avatarInfo,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ /// @brief Download the avatar metadata to the client.
+ ///
+ /// @param[in] avatarInfo
+ /// The info describing the attributes and data of the avatar asset.
+ /// This is obtained from SenAvatarEnumerate().
+ ///
+ /// @param[in] male
+ /// Whether or not to receive information about the male avatar (vs. the female)
+ ///
+ /// @param[in] dataSizeMax
+ /// Used to indicate the size of the buffer pointed to by @a out_data.
+ /// If the actual size of the data exceeds this, you will receive an error.
+ /// It is assumed that this is at least @a avatarInfo.[fe]male.metadata.GetBufferSize() bytes.
+ ///
+ /// @param[out] out_data
+ /// The buffer to fill in with the metadata.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_INVALIDARG: avatarInfo.resourceID or avatarInfo.[fe]male.metadata is invalid.
+ /// E_POINTER: out_data is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @related SenAvatarEnumerate()
+ /// @related SenAvatarDownloadExtraInfo()
+ /// @related SenAvatarDownloadAssets()
+ /// @related SenAvatarDownloadIcon()
+ ///
+ HRESULT SenAvatarDownloadMetadata(
+ const SenAvatarInfo &avatarInfo,
+ bool male,
+ size_t dataSizeMax,
+ void *out_data,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ /// @brief Download the avatar asset binary data to the client.
+ ///
+ /// @param[in] avatarInfo
+ /// The info describing the attributes and data of the avatar asset.
+ /// This is obtained from SenAvatarEnumerate().
+ ///
+ /// @param[in] male
+ /// Whether or not to receive information about the male avatar (vs. the female)
+ ///
+ /// @param[in] dataSizeMax
+ /// Used to indicate the size of the buffer pointed to by @a out_data.
+ /// If the actual size of the data exceeds this, you will receive an error.
+ /// It is assumed that this is at least @a avatarInfo.[fe]male.assets.GetBufferSize() bytes.
+ ///
+ /// @param[out] out_data
+ /// The buffer to fill in with the asset data.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_INVALIDARG: avatarInfo.resourceID or avatarInfo.[fe]male.assets is invalid.
+ /// E_POINTER: out_data is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @related SenAvatarEnumerate()
+ /// @related SenAvatarDownloadExtraInfo()
+ /// @related SenAvatarDownloadMetadata()
+ /// @related SenAvatarDownloadIcon()
+ ///
+ HRESULT SenAvatarDownloadAssets(
+ const SenAvatarInfo &avatarInfo,
+ bool male,
+ size_t dataSizeMax,
+ void *out_data,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ /// @brief Download the avatar icon binary data to the client.
+ ///
+ /// @param[in] avatarInfo
+ /// The info describing the attributes and data of the avatar asset.
+ /// This is obtained from SenAvatarEnumerate().
+ ///
+ /// @param[in] male
+ /// Whether or not to receive information about the male avatar (vs. the female)
+ ///
+ /// @param[in] dataSizeMax
+ /// Used to indicate the size of the buffer pointed to by @a out_data.
+ /// If the actual size of the data exceeds this, you will receive an error.
+ /// It is assumed that this is at least @a avatarInfo.[fe]male.icon.GetBufferSize() bytes.
+ ///
+ /// @param[out] out_data
+ /// The buffer to fill in with the binary icon data.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_INVALIDARG: avatarInfo.resourceID or avatarInfo.[fe]male.icon is invalid.
+ /// E_POINTER: out_data is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @related SenAvatarEnumerate()
+ /// @related SenAvatarDownloadExtraInfo()
+ /// @related SenAvatarDownloadMetadata()
+ /// @related SenAvatarDownloadAssets()
+ ///
+ HRESULT SenAvatarDownloadIcon(
+ const SenAvatarInfo &avatarInfo,
+ bool male,
+ size_t dataSizeMax,
+ void *out_data,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ /// @brief Download extra information about a given avatar to the client.
+ ///
+ /// @param[in] avatarInfo
+ /// The info describing the attributes and data of the avatar.
+ /// This is obtained from SenAvatarEnumerate().
+ ///
+ /// @param[in] male
+ /// Whether or not to receive information about the male avatar (vs. the female).
+ ///
+ /// @param[out] out_avatarExtraInfo
+ /// The structure to populate with extra information.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_INVALIDARG: avatarInfo.resourceID or avatarInfo.xml is invalid.
+ /// E_POINTER: out_avatarExtraInfo is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details On completion, the structure will contain extra information, such as localized strings.
+ ///
+ /// @related SenAvatarEnumerate()
+ /// @related SenAvatarDownloadMetadata()
+ /// @related SenAvatarDownloadAssets()
+ /// @related SenAvatarDownloadIcon()
+ ///
+ HRESULT SenAvatarDownloadExtraInfo(
+ const SenAvatarInfo &avatarInfo,
+ bool male,
+ SenAvatarExtraInfo *out_avatarExtraInfo,
+ SenSysCompletedCallback userCallback, void *userCallbackData );
+
+ // Download the raw binary data to the client.
+ // It is assumed that out_data is preallocated to (at least) dataSizeMax bytes,
+ // which in turn should be at least avatarInfo.[fe]male.xml.GetBufferSize() bytes.
+ HRESULT SenAvatarDownloadXML(
+ const SenAvatarInfo &avatarInfo,
+ bool male,
+ size_t dataSizeMax,
+ void *out_data,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ // Obtain a wide, localized string with a given avatar's game title.
+ //
+ // Assumes you have already downloaded the XML and run it through
+ // SenXMLParse() to get a SenXML struct.
+ //
+ // First method, filling a fixed-size buffer:
+ //
+ // wchar_t buffer[1234];
+ // SenAvatarXMLGetTitle( xml, loc, _countof(buffer), NULL, buffer );
+ //
+ // Second method, filling a dynamically-allocated buffer:
+ //
+ // size_t bufferLength;
+ // SenAvatarXMLGetTitle( xml, loc, 0, &bufferLength, NULL );
+ // wchar_t buffer = new wchar_t[bufferLength];
+ // SenAvatarXMLGetTitle( xml, loc, bufferLength, NULL, buffer );
+ //
+ // Note that bufferLength is in wchars, and includes the terminating nul.
+ // The actual length of the _string_ is (*out_bufferLength - 1).
+ //
+ HRESULT SenAvatarXMLGetTitle(
+ const SenXML &senXML,
+ size_t bufferLengthMax,
+ size_t *out_bufferLength, // optional
+ wchar_t *out_buffer ); // optional
+
+ // Obtain a wide, localized string with a given avatar's name.
+ // See the similar SenAvatarGetTitle() for details.
+ HRESULT SenAvatarXMLGetName(
+ const SenXML &senXML,
+ size_t bufferLengthMax,
+ size_t *out_bufferLength, // optional
+ wchar_t *out_buffer ); // optional
+
+ // Obtain a wide, localized string with a given avatar's description.
+ // See the similar SenAvatarGetTitle() for details.
+ HRESULT SenAvatarXMLGetDescription(
+ const SenXML &senXML,
+ size_t bufferLengthMax,
+ size_t *out_bufferLength, // optional
+ wchar_t *out_buffer ); // optional
+
+ // Obtain the number of custom avatar palettes.
+ HRESULT SenAvatarXMLGetPaletteCount(
+ const SenXML &senXML,
+ size_t *out_paletteCount );
+
+ // Obtain the localized name for an avatar palettes.
+ // See the similar SenAvatarGetTitle() for details.
+ HRESULT SenAvatarXMLGetPaletteName(
+ const SenXML &senXML,
+ int paletteIndex,
+ size_t bufferLengthMax,
+ size_t *out_bufferLength, // optional
+ wchar_t *out_buffer ); // optional
+
+ // Obtain a single palette at a given index in the list of palettes
+ // for a given avatar.
+ HRESULT SenAvatarXMLGetPalette(
+ const SenXML &senXML,
+ int paletteIndex,
+ SenAvatarPalette *out_palette );
+
+ // Extract all palette entries at once.
+ // It is assumed that out_paletteList is preallocated to (at least)
+ // paletteCountMax entries.
+ HRESULT SenAvatarXMLGetPalettes(
+ const SenXML &senXML,
+ size_t paletteCountMax,
+ size_t *out_paletteCount, // optional
+ SenAvatarPalette *out_paletteList );
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientBoxArt.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientBoxArt.h
new file mode 100644
index 00000000..09662243
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientBoxArt.h
@@ -0,0 +1,409 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client BoxArt API
+//
+// Include this to get access to all BoxArt-related Sentient features.
+
+#pragma once
+
+#include "SenClientRawData.h"
+#include "SenClientResource.h"
+#include "SenClientSys.h"
+#include "SenClientXML.h"
+
+#include
+
+namespace Sentient
+{
+ //====================//
+ // //
+ // BoxArt Types //
+ // //
+ //====================//
+
+ /// @brief Box Art sorting options.
+ ///
+ /// @details When enumerating box Art, these are the options for pre-sorting the returned list.
+ ///
+ enum SenBoxArtSortBy
+ {
+ /// Sort by the default order (currently just the order stored on the server).
+ SenBoxArtSortBy_Default = 0,
+ };
+
+ /// @brief Box art command/action types.
+ ///
+ /// @details When the user selects box art, these are the options for generating the resulting action.
+ ///
+ enum SenBoxArtCommand
+ {
+ /// The game should call up the marketplace UI with info.GetOfferID().
+ SenBoxArtCommand_Store = 0,
+
+ // (more commands TBD)
+ };
+
+ /// @brief Basic box art information.
+ ///
+ /// @details This structure contains the original uploaded info plus any info implied by the raw data that was uploaded (e.g. data sizes).
+ ///
+ struct SenBoxArtInfo : public SenResourceInfo
+ {
+ SenRawDataTransferInfo image; ///< Points to a file, typically JPG or PNG, which can be passed to D3DXCreateTextureFromFileInMemory().
+ SenRawDataTransferInfo xml; ///< Points to an opaque XML file used to hold extended information about the box art. Use SenBoxArtDownloadExtraInfo() to retrieve.
+
+ SenBoxArtCommand command; ///< What to do when the box art is selected.
+ INT32 commandData0; ///< 32 bits of arbitrary data to go with command. (e.g. offerID high bits)
+ INT32 commandData1; ///< 32 bits of arbitrary data to go with command. (e.g. offerID low bits)
+
+ UINT32 friendsWithTitle; ///< Number of friends owning the title this box art is associated with.
+
+ /// @brief
+ /// Get the offerID associated with this box art.
+ ///
+ /// @details
+ /// If command==SenBoxArtCommand_Store, this returns commandData0,1 as a SenSysOfferID.
+ /// Otherwise, it returns SenSysOfferID_Invalid.
+ ///
+ SenSysOfferID GetOfferID() const;
+ };
+
+ /// @brief Extra box art information.
+ ///
+ /// @details This structure contains additional data about box art, such as localized strings.
+ ///
+ struct SenBoxArtExtraInfo
+ {
+ wchar_t title[XMARKETPLACE_MAX_OFFER_NAME_LENGTH+1]; ///< The localized title associated with the offer.
+ wchar_t description[XMARKETPLACE_MAX_OFFER_SELL_TEXT_LENGTH+1]; ///< The localized short description associated with the offer.
+ };
+
+ //========================//
+ // //
+ // BoxArt Functions //
+ // //
+ //========================//
+
+
+ /// @brief Search the database for all the box arts that match the search criteria.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console. Note: This is NOT a XUID.
+ ///
+ /// @param[in] boxArtInfoCountMax
+ /// The number of SenBoxArtInfo structures available in @a out_boxArtInfoList.
+ ///
+ /// @param[out] out_boxArtInfoCount
+ /// This is the number of entries actually enumerated by the call.
+ ///
+ /// @param[out] out_boxArtInfoList
+ /// The structures to fill in with the enumerated information.
+ /// It is assumed that this is preallocated to at least @a boxArtInfoCountMax entries.
+ ///
+ /// @param[out] out_senHandle
+ /// Provides a handle to the async task, which will allow for calling SentientCancel
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_GUEST_ACCESS_VIOLATION: A guest may not spawn this call.
+ /// E_POINTER: out_boxArtInfoList is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details Enumerates in default order, at the current time, for all titles, the box art available to display.
+ ///
+ /// @related SenBoxArtDownloadImage()
+ /// @related SenBoxArtDownloadXML()
+ ///
+ HRESULT SenBoxArtEnumerate(
+ int userIndex,
+ size_t boxArtInfoCountMax,
+ size_t *out_boxArtInfoCount,
+ SenBoxArtInfo *out_boxArtInfoList,
+ SenHandle *out_senHandle,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ /// @brief Download the raw box art image data to the client.
+ ///
+ /// @param[in] boxArtInfo
+ /// The info describing the attributes and data of the box art.
+ /// This is obtained from SenBoxArtEnumerate().
+ ///
+ /// @param[in] dataSizeMax
+ /// Used to indicate the size of the buffer pointed to by @a out_data.
+ /// If the actual size of the data exceeds this, you will receive an error.
+ /// It is assumed that this is at least @a boxArtInfo.image.GetBufferSize() bytes.
+ ///
+ /// @param[out] out_data
+ /// The buffer to fill in with the raw image data.
+ ///
+ /// @param[out] out_senHandle
+ /// Provides a handle to the async task, which will allow for calling SentientCancel
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_INVALIDARG: boxArtInfo.resourceID or boxArtInfo.image is invalid.
+ /// E_POINTER: out_data is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details The data is expected to contain a PNG or JPG file, suitable for use with D3DXCreateTextureFromFileInMemory().
+ ///
+ /// @related SenBoxArtEnumerate()
+ /// @related SenBoxArtDownloadXML()
+ ///
+ HRESULT SenBoxArtDownloadImage(
+ const SenBoxArtInfo &boxArtInfo,
+ size_t dataSizeMax,
+ void *out_data,
+ SenHandle *out_senHandle,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ /// @brief Download extra information about a give box art to the client.
+ ///
+ /// @param[in] boxArtInfo
+ /// The info describing the attributes and data of the box art.
+ /// This is obtained from SenBoxArtEnumerate().
+ ///
+ /// @param[out] out_boxArtExtraInfo
+ /// The structure to populate with extra information.
+ ///
+ /// @param[out] out_senHandle
+ /// Provides a handle to the async task, which will allow for calling SentientCancel
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_INVALIDARG: boxArtInfo.resourceID or boxArtInfo.xml is invalid.
+ /// E_POINTER: out_boxArtExtraInfo is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details On completion, the structure will contain extra information, such as localized strings.
+ ///
+ /// @related SenBoxArtEnumerate()
+ /// @related SenBoxArtDownloadImage()
+ ///
+ HRESULT SenBoxArtDownloadExtraInfo(
+ const SenBoxArtInfo &boxArtInfo,
+ SenBoxArtExtraInfo *out_boxArtExtraInfo,
+ SenHandle *out_senHandle,
+ SenSysCompletedCallback userCallback, void *userCallbackData );
+
+ /// @brief Download the raw box art xml data to the client.
+ ///
+ /// @param[in] boxArtInfo
+ /// The info describing the attributes and data of the box art.
+ /// This is obtained from SenBoxArtEnumerate().
+ ///
+ /// @param[in] dataSizeMax
+ /// Used to indicate the size of the buffer pointed to by @a out_data.
+ /// If the actual size of the data exceeds this, you will receive an error.
+ /// It is assumed that this is at least @a boxArtInfo.xml.GetBufferSize() bytes.
+ ///
+ /// @param[out] out_data
+ /// The buffer to fill in with the raw image data.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_INVALIDARG: boxArtInfo.resourceID or boxArtInfo.xml is invalid.
+ /// E_POINTER: out_data is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details The data is expected to contain a UTF-8 XML file, though those details
+ /// are irrelevant, as the contents are parsed transparently with SenXMLParse().
+ ///
+ /// @related SenBoxArtEnumerate()
+ /// @related SenBoxArtDownloadImage()
+ ///
+ /// @deprecated Use SenBoxArtDownloadExtraInfo() instead.
+ ///
+ __declspec(deprecated("This function is deprecated, use SenBoxArtDownloadExtraInfo instead")) HRESULT SenBoxArtDownloadXML(
+ const SenBoxArtInfo &boxArtInfo,
+ size_t dataSizeMax,
+ void *out_data,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ /// @brief Obtain a wide, localized string describing a given box art's game title.
+ ///
+ /// @param[in] senXML
+ /// This is the result of a call to SenXMLParse() with the results of
+ /// SenBoxArtDownloadXML().
+ ///
+ /// @param[in] culture
+ /// This is the result of a call to SenCultureFind() or SenCultureGet*().
+ /// You may also pass NULL to use the culture set with SenCultureSetCurrent().
+ ///
+ /// @param[in] bufferLength
+ /// Note that bufferLength is in wchars, and needs to _include_ space for the terminating nul.
+ ///
+ /// @param[out] out_bufferLength
+ /// Used to return the actual number of wchars written to the buffer, including the terminating nul.
+ /// The actual length of the _string_ is (*out_bufferLength - 1).
+ /// Pass @a out_bufferLength = NULL if you don't care about the actual size.
+ ///
+ /// @param[out] out_buffer
+ /// The buffer to fill in with the string.
+ /// It is assumed that this is preallocated to at least @a bufferLength wchars.
+ /// Pass @a out_buffer = NULL if you are only interested in finding out the necessary buffer size.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_UNEXPECTED: passed a NULL culture without a default culture being set first.
+ /// E_INVALIDARG: senXML does not contain parsed XML data.
+ /// E_FAIL: Failed to locate text.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details Assumes you have already downloaded the XML and run it through
+ /// SenXMLParse() to get a SenXML struct.
+ ///
+ /// First method, filling a fixed-size buffer:
+ ///
+ /// wchar_t buffer[1234];
+ /// SenBoxArtXMLGetTitle( xml, culture, _countof(buffer), NULL, buffer );
+ ///
+ /// Second method, filling a dynamically-allocated buffer:
+ ///
+ /// size_t bufferLength;
+ /// SenBoxArtXMLGetTitle( xml, culture, 0, &bufferLength, NULL );
+ /// wchar_t buffer = new wchar_t[bufferLength];
+ /// SenBoxArtXMLGetTitle( xml, culture, bufferLength, NULL, buffer );
+ ///
+ /// @related SenBoxArtDownloadXML()
+ /// @related SenXMLParse()
+ ///
+ /// @deprecated Use SenBoxArtDownloadExtraInfo() instead.
+ ///
+ __declspec(deprecated("This function is deprecated, use SenBoxArtDownloadExtraInfo instead")) HRESULT SenBoxArtXMLGetTitle(
+ const SenXML &senXML,
+ size_t bufferLengthMax,
+ size_t *out_bufferLength,
+ wchar_t *out_buffer );
+
+ /// @brief Obtain a wide, localized string describing a given box art's game title.
+ ///
+ /// @param[in] senXML
+ /// This is the result of a call to SenXMLParse() with the results of
+ /// SenBoxArtDownloadXML().
+ ///
+ /// @param[in] culture
+ /// This is the result of a call to SenCultureFind() or SenCultureGet*().
+ /// You may also pass NULL to use the culture set with SenCultureSetCurrent().
+ ///
+ /// @param[in] bufferLength
+ /// Note that bufferLength is in wchars, and needs to _include_ space for the terminating nul.
+ ///
+ /// @param[out] out_bufferLength
+ /// Used to return the actual number of wchars written to the buffer, including the terminating nul.
+ /// The actual length of the _string_ is (*out_bufferLength - 1).
+ /// Pass @a out_bufferLength = NULL if you don't care about the actual size.
+ ///
+ /// @param[out] out_buffer
+ /// The buffer to fill in with the string.
+ /// It is assumed that this is preallocated to at least @a bufferLength wchars.
+ /// Pass @a out_buffer = NULL if you are only interested in finding out the necessary buffer size.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_UNEXPECTED: passed a NULL culture without a default culture being set first.
+ /// E_INVALIDARG: senXML does not contain parsed XML data.
+ /// E_FAIL: Failed to locate text.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details Assumes you have already downloaded the XML and run it through
+ /// SenXMLParse() to get a SenXML struct.
+ ///
+ /// First method, filling a fixed-size buffer:
+ ///
+ /// wchar_t buffer[1234];
+ /// SenBoxArtXMLGetDescription( xml, culture, _countof(buffer), NULL, buffer );
+ ///
+ /// Second method, filling a dynamically-allocated buffer:
+ ///
+ /// size_t bufferLength;
+ /// SenBoxArtXMLGetDescription( xml, culture, 0, &bufferLength, NULL );
+ /// wchar_t buffer = new wchar_t[bufferLength];
+ /// SenBoxArtXMLGetDescription( xml, culture, bufferLength, NULL, buffer );
+ ///
+ /// @related SenBoxArtDownloadXML()
+ /// @related SenXMLParse()
+ ///
+ /// @deprecated Use SenBoxArtDownloadExtraInfo() instead.
+ ///
+ __declspec(deprecated("This function is deprecated, use SenBoxArtDownloadExtraInfo instead")) HRESULT SenBoxArtXMLGetDescription(
+ const SenXML &senXML,
+ size_t bufferLengthMax,
+ size_t *out_bufferLength,
+ wchar_t *out_buffer );
+
+ /// @brief Download the raw box art image data to the client.
+ ///
+ /// @param[in] boxArtInfo
+ /// The info describing the attributes and data of the box art.
+ /// This is obtained from SenBoxArtEnumerate().
+ ///
+ /// @param[in] dataSizeMax
+ /// Used to indicate the size of the buffer pointed to by @a out_data.
+ /// If the actual size of the data exceeds this, you will receive an error.
+ /// It is assumed that this is at least @a boxArtInfo.image.GetBufferSize() bytes.
+ ///
+ /// @param[out] out_data
+ /// The buffer to fill in with the raw image data.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_INVALIDARG: boxArtInfo.resourceID or boxArtInfo.image is invalid.
+ /// E_POINTER: out_data is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details The data is expected to contain a PNG or JPG file, suitable for use with D3DXCreateTextureFromFileInMemory().
+ ///
+ /// @related SenBoxArtEnumerate()
+ /// @related SenBoxArtDownloadXML()
+ ///
+ __declspec(deprecated("This function is deprecated, use the overload with a SenHandle out param instead")) HRESULT SenBoxArtDownloadImage(
+ const SenBoxArtInfo &boxArtInfo,
+ size_t dataSizeMax,
+ void *out_data,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientConfig.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientConfig.h
new file mode 100644
index 00000000..81c2f3cc
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientConfig.h
@@ -0,0 +1,116 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client ConfigFile API
+//
+// Include this to get access to all ConfigFile-related Sentient features.
+
+#pragma once
+
+#include "SenClientRawData.h"
+#include "SenClientResource.h"
+#include "SenClientSys.h"
+
+
+namespace Sentient
+{
+ //==============================//
+ // //
+ // Game Config File Types //
+ // //
+ //==============================//
+
+ /// @brief Basic config file information.
+ ///
+ /// @details This structure contains the original uploaded info plus any info implied by the raw data that was uploaded (e.g. data sizes).
+ ///
+ struct SenConfigInfo : public SenResourceInfo
+ {
+ SenRawDataTransferInfo config; ///< Points to a generic data block, whose format is determined by the game.
+ };
+
+
+ //==================================//
+ // //
+ // Game Config File Functions //
+ // //
+ //==================================//
+
+ /// @brief Find a config file by ID.
+ ///
+ /// @param[in] resourceID
+ /// Which config file to find, e.g. "SenResourceID_Config_0 + 4".
+ ///
+ /// @param[out] out_configInfo
+ /// The structure to fill in with the found information.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_POINTER: out_configInfo is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details Search the database for a specific config file at the current time.
+ ///
+ /// @deprecated This function is deprecated. Use SenDynamicConfigGetSize() instead
+ ///
+ /// @related SenConfigFileDownload()
+ ///
+ __declspec(deprecated("Use SenDynamicConfigGetSize() instead"))
+ HRESULT SenConfigFileFind(
+ SenResourceID resourceID,
+ SenConfigInfo *out_configInfo,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ /// @brief Download the raw config file data to the client.
+ ///
+ /// @param[in] configInfo
+ /// The info describing the attributes and data of the config file.
+ /// This is obtained from SenConfigFileFind().
+ ///
+ /// @param[in] dataSizeMax
+ /// Used to indicate the size of the buffer pointed to by @a out_data.
+ /// If the actual size of the data exceeds this, you will receive an error.
+ /// It is assumed that this is at least @a configInfo.config.GetBufferSize() bytes.
+ ///
+ /// @param[out] out_data
+ /// The buffer to fill in with the raw image data.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_INVALIDARG: configInfo.resourceID or configInfo.config is invalid.
+ /// E_POINTER: out_data is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details The data format is determined entirely by the game code and is never examined or processed by Sentient.
+ ///
+ /// @deprecated This function is deprecated. Use SenDynamicConfigGetSize() instead
+ ///
+ /// @related SenConfigFileFind()
+ ///
+ __declspec(deprecated("Use SenDynamicConfigGetBytes() instead"))
+ HRESULT SenConfigFileDownload(
+ const SenConfigInfo &configInfo,
+ size_t dataSizeMax,
+ void *out_data,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientCore.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientCore.h
new file mode 100644
index 00000000..f86eb92a
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientCore.h
@@ -0,0 +1,74 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client Core API
+//
+// Include this to get access to ALL core Sentient features.
+
+#pragma once
+
+#include "SenClientConfig.h"
+#include "SenClientCulture.h"
+#include "SenClientFile.h"
+#include "SenClientMain.h"
+#include "SenClientPackage.h"
+#include "SenClientRawData.h"
+#include "SenClientResource.h"
+#include "SenClientStats.h"
+#include "SenClientSys.h"
+#include "SenClientUtil.h"
+#include "SenClientXML.h"
+#include "SenClientUser.h"
+
+
+// REVIEW: is this block of text still relevant?
+
+/* API Design considerations
+
+ 1. All functions will return S_OK if they succeed or either E_FAIL or an HRESULT error code
+ if they fail. Callers should use the standard SUCCEEDED(hr) or FAILED(hr) macros to
+ test the results, as it eliminates errors due to misconceptions about what exactly is
+ an HRESULT error vs. success/status.
+
+ PLEASE NOTE: S_FALSE is for successfully returning a false, and does *not* qualify as an
+ error code. It should not be used for fail cases. Use only codes like E_FAIL,
+ E_OUTOFMEMORY, E_INVALIDARG, E_POINTER, etc. for failures. Most error codes contain "E_"
+ at or near the start of the name, but you can always tell by whether the top bit is set.
+
+ 2. The API is not thread safe at this time, so all calls must be made from the same thread.
+
+ 3. Many functions are designed for asynchronous use, and will internally create a task that
+ will only finish after feedback from the server.
+ a. These functions can be either blocking or asynchronous. If the callback pointer is NULL
+ then it is a blocking call.
+ b. If the call is asynchronous, then it will always return instantly, and will return S_OK
+ if a task has been created.
+ 1. If the task is created then at some point the callback will be called once the task
+ finishes, regardless of whether the task succeeds or fails. The task result is then
+ passed into the callback
+ 2. However, if the call fails to create a task (due to bad parameters or something else)
+ and returns something other than S_OK, it will *not* call the callback.
+ c. If the call is blocking, the return value will be the task result value.
+ d. The recommended usage is to use async calls, but if a game run all Sentient calls from a
+ worker thread then using blocking calls could work.
+
+ 4. The order in which async calls complete is not guaranteed.
+ a. Similarly, if one or more async calls are started, and a blocking call is performed, the
+ async calls may or may not finish before the blocking call returns ( as the blocking call
+ just calls SentientUpdate() until it completes ).
+
+ 5. All async functions that take pointers will assume that the pointers point valid memory for the
+ duration of the task, and that the game does not free or overwrite the memory until the task
+ is completed.
+
+ 6. All output variables (but not output buffers) are cleared even if the function call fails.
+
+ 7. Functions that return buffers of data, will have to have the buffer allocated before being called.
+ NOTE: This is changed from the first release (october 2010)
+
+ 8. There are multiple sets of functionality that relies on "blobs" - a blob is a custom (usually
+ game-specific) chunk of binary data that the Sentient does not know anything about.
+*/
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientCulture.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientCulture.h
new file mode 100644
index 00000000..8fb6b642
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientCulture.h
@@ -0,0 +1,61 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client Culture API
+//
+// Include this to get access to all Culture-related Sentient features.
+
+#pragma once
+#include "SenClientTypes.h"
+
+namespace Sentient
+{
+ //=========================//
+ // //
+ // Culture Functions //
+ // //
+ //=========================//
+
+ /// @brief Set the current culture to the one specified, if possible.
+ ///
+ /// @param[in] dwLanguage
+ /// the DWORD id as defined in xconfig.h (e.g. XC_LANGUAGE_ENGLISH) for the language to use
+
+ /// @param[in] dwLocale
+ /// the DWORD id as defined in xconfig.h (e.g. XC_LOCALE_GREAT_BRITAIN) for the region to use
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_FAIL: Failed to find the given culture.
+ /// S_OK: Current culture set successfully.
+ ///
+ /// @details Set the current culture to the one specified, if possible (if not english will be used).
+ /// This should only be called during title launch if it is determined that the console is set to a lanuage unsupported by the title.
+ /// This method should only be called once, right after calling SentientInitialize()
+ /// This is the culture that will be used when any string routine is called.
+ /// By default, this is set to the system culture & region.
+ ///
+ HRESULT SetCurrentCulture(
+ __in DWORD dwLanguage,
+ __in DWORD dwLocale
+ );
+
+ /// @brief Set the current culture to English (no region)
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_FAIL: Failed to find the given culture.
+ /// S_OK: Current culture set successfully.
+ ///
+ /// @details Set the current culture English.
+ /// This should only be called during title launch if it is determined that the console is set to a lanuage unsupported by the title.
+ /// This method should only be called once, right after calling SentientInitialize()
+ /// This is the culture that will be used when any string routine is called.
+ /// By default, Sentient uses the console's culture & region.
+ ///
+ __inline HRESULT SetCurrentCultureEnglish() { return SetCurrentCulture(XC_LANGUAGE_ENGLISH, 0); }
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenBoxArt.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenBoxArt.h
new file mode 100644
index 00000000..050d86bf
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenBoxArt.h
@@ -0,0 +1,44 @@
+#pragma once
+
+#include "SenClientBoxArt.h"
+#include "SenClientCultureBackCompat_SenCore.h"
+
+namespace Sentient
+{
+#pragma warning(disable:4996)
+
+ __declspec(deprecated("This function is deprecated. See the function body for an example of using the new API."))
+ __inline HRESULT SenBoxArtDownloadExtraInfo(
+ const SenBoxArtInfo &boxArtInfo,
+ const SenCultureInfo *culture,
+ SenBoxArtExtraInfo *out_boxArtExtraInfo,
+ SenHandle *out_senHandle,
+ SenSysCompletedCallback userCallback, void *userCallbackData )
+ {
+ return SenBoxArtDownloadExtraInfo(boxArtInfo, out_boxArtExtraInfo, out_senHandle, userCallback, userCallbackData);
+ }
+
+ __declspec(deprecated("This function is deprecated, use SenBoxArtDownloadExtraInfo instead"))
+ __inline HRESULT SenBoxArtXMLGetTitle(
+ const SenXML &senXML,
+ const SenCultureInfo *culture,
+ size_t bufferLengthMax,
+ size_t *out_bufferLength,
+ wchar_t *out_buffer )
+ {
+ return SenBoxArtXMLGetTitle(senXML, bufferLengthMax, out_bufferLength, out_buffer);
+ }
+
+ __declspec(deprecated("This function is deprecated, use SenBoxArtDownloadExtraInfo instead"))
+ __inline HRESULT SenBoxArtXMLGetDescription(
+ const SenXML &senXML,
+ const SenCultureInfo *culture,
+ size_t bufferLengthMax,
+ size_t *out_bufferLength,
+ wchar_t *out_buffer )
+ {
+ return SenBoxArtXMLGetDescription(senXML, bufferLengthMax, out_bufferLength, out_buffer);
+ }
+
+#pragma warning(default:4996)
+}
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenClientUGC.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenClientUGC.h
new file mode 100644
index 00000000..b36fd6e5
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenClientUGC.h
@@ -0,0 +1,72 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client UGC API - Backwards compat file for SenCulture removal
+//
+// Include this to get access to all UGC related backwards compatibility with the old SenCulture
+
+#pragma once
+
+#include "SenClientUGC.h"
+#include "SenClientCultureBackCompat_SenCore.h"
+
+
+namespace Sentient
+{
+ /// @brief Retrieves a collection of feeds that are viewable by the
+ /// current user.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console.
+ /// Note: This is NOT a XUID.
+ ///
+ /// @param[in] culture
+ /// This is the result of a call to SenCultureFind() or SenCultureGet*().
+ /// You may also pass NULL to use the culture set with SenCultureSetCurrent().
+ /// May be NULL for default culture.
+ ///
+ /// @param[in] maxResults
+ /// Used to indicate the number of items to be returned by @a out_feedInfo.
+ /// If the actual number of items exceeds this, you will receive an error.
+ ///
+ /// @param[out] out_feedInfo
+ /// Pointer to a collection of structures to fill with SenUGCFeedInfo data.
+ ///
+ /// @param[out] out_resultCount
+ /// The number of entries actually enumerated by the call.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code,
+ /// the userCallback will be called at the end of the
+ /// asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
+ /// Specific values include:
+ /// E_POINTER: out_feedInfo or out_resultCount are null.
+ ///
+ /// @details
+ ///
+ /// @related SenUGCGetFeed()
+ ///
+ /// @deprecated Use SenUGCEnumerateFeeds() without SenCulture
+ ///
+ __declspec(deprecated("This function is deprecated. See the function body for an example of using the new API."))
+ __inline HRESULT SenUGCEnumerateFeeds(
+ int userIndex,
+ const SenCultureInfo *culture,
+ size_t maxResults,
+ SenUGCFeedInfo *out_feedInfo,
+ size_t *out_resultCount,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData)
+ {
+ return SenUGCEnumerateFeeds(userIndex, maxResults, out_feedInfo, out_resultCount, userCallback, userCallbackData);
+ }
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenCore.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenCore.h
new file mode 100644
index 00000000..df980fb5
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenCore.h
@@ -0,0 +1,81 @@
+#pragma once
+
+#include "SenClientCulture.h"
+
+namespace Sentient
+{
+
+//enum
+//{
+// // Note that these include a terminating nul.
+// SenCulture_DescSizeMax = 80,
+// SenCulture_NameSizeMax = 12,
+//};
+
+struct SenCultureInfo
+{
+ wchar_t name[12]; // e.g. { L"en", L"en-CA", L"en-GB", L"" }
+ wchar_t desc[80]; // e.g. L"English (United States)"
+ size_t nameCount; // e.g. 1
+ const SenCultureInfo *parent;
+};
+
+static SenCultureInfo s_defaultculture;
+
+__declspec(deprecated("This function is deprecated, and should not be used"))
+__inline const wchar_t *SenCultureGetSystemLanguageString()
+{
+ return L"en";
+}
+
+__declspec(deprecated("This function is deprecated, and should not be used"))
+__inline const wchar_t *SenCultureGetSystemLocaleString()
+{
+ return L"US";
+}
+
+__declspec(deprecated("This function is deprecated, and should not be used"))
+const wchar_t *SenCultureGetSystemCultureString();
+//{
+// return L"en-US";
+//}
+
+__declspec(deprecated("This function is deprecated, and should not be used"))
+__inline const SenCultureInfo *SenCultureFind( const wchar_t *name )
+{
+ return &s_defaultculture;
+}
+
+__declspec(deprecated("This function is deprecated, and should not be used"))
+__inline const SenCultureInfo *SenCultureGetParent( const SenCultureInfo *culture )
+{
+ return &s_defaultculture;
+}
+
+__declspec(deprecated("This function is deprecated, and should not be used"))
+__inline HRESULT SenCultureSetCurrent( const wchar_t name[] )
+{
+ return E_FAIL;
+}
+
+__declspec(deprecated("This function is deprecated, and should not be used"))
+__inline const SenCultureInfo *SenCultureGetCurrent()
+{
+ return &s_defaultculture;
+}
+
+
+__declspec(deprecated("This function is deprecated, and should not be used"))
+__inline HRESULT SenCultureSetDefault( const wchar_t name[] )
+{
+ return E_FAIL;
+}
+
+
+__declspec(deprecated("This function is deprecated, and should not be used"))
+__inline const SenCultureInfo *SenCultureGetDefault()
+{
+ return &s_defaultculture;
+}
+
+}
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenNews.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenNews.h
new file mode 100644
index 00000000..0c4d9450
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenNews.h
@@ -0,0 +1,16 @@
+#pragma once
+
+#include "SenClientCultureBackCompat_SenCore.h"
+#include "SenClientNews.h"
+
+namespace Sentient
+{
+__declspec(deprecated("This function is deprecated. See the function body for an example of using the new API."))
+__inline HRESULT SenGetTickerMessage(
+ int userIndex,
+ const SenCultureInfo *culture,
+ SenTickerData *out_tickerData )
+{
+ return SenGetTickerMessage(userIndex, out_tickerData);
+}
+}
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenSuperstars.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenSuperstars.h
new file mode 100644
index 00000000..31e1eff4
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientCultureBackCompat_SenSuperstars.h
@@ -0,0 +1,101 @@
+#pragma once
+
+#include "SenClientCultureBackCompat_SenCore.h"
+#include "SenClientFame.h"
+#include "SenClientAvatar.h"
+
+namespace Sentient
+{
+ __declspec(deprecated("This function is deprecated. See the function body for an example of using the new API."))
+ __inline HRESULT SenGetAwardMessage(
+ int userIndex,
+ const SenCultureInfo *culture,
+ SenAwardMessageData *out_awardData )
+ {
+ return SenGetAwardMessage(userIndex, out_awardData);
+ }
+
+ __declspec(deprecated("This function is deprecated. See the function body for an example of using the new API."))
+ __inline HRESULT SenGetVIPLevelName(
+ const SenCultureInfo *culture,
+ unsigned int vipLevel,
+ size_t maxNameLength,
+ wchar_t *out_name)
+ {
+ return SenGetVIPLevelName(vipLevel, maxNameLength, out_name);
+ }
+
+ __declspec(deprecated("This function is deprecated. See the function body for an example of using the new API."))
+ __inline HRESULT SenGetFameDisplayData(
+ int userIndex,
+ const SenCultureInfo *culture,
+ size_t startIndex,
+ size_t maxDisplayDataCount,
+ size_t *out_dataCount,
+ SenFameDisplayData *out_displayData )
+ {
+ return SenGetFameDisplayData(userIndex, startIndex, maxDisplayDataCount, out_dataCount, out_displayData);
+ }
+
+
+ __declspec(deprecated("This function is deprecated. See the function body for an example of using the new API."))
+ __inline HRESULT SenAvatarDownloadExtraInfo(
+ const SenAvatarInfo &avatarInfo,
+ bool male,
+ const SenCultureInfo *culture,
+ SenAvatarExtraInfo *out_avatarExtraInfo,
+ SenSysCompletedCallback userCallback, void *userCallbackData )
+ {
+ return SenAvatarDownloadExtraInfo(
+ avatarInfo,
+ male,
+ culture,
+ out_avatarExtraInfo,
+ userCallback, userCallbackData );
+ }
+
+ __declspec(deprecated("This function is deprecated. See the function body for an example of using the new API."))
+ __inline HRESULT SenAvatarXMLGetTitle(
+ const SenXML &senXML,
+ const SenCultureInfo *culture, // optional
+ size_t bufferLengthMax,
+ size_t *out_bufferLength, // optional
+ wchar_t *out_buffer )
+ {
+ return SenAvatarXMLGetTitle(senXML, bufferLengthMax, out_bufferLength, out_buffer);
+ }
+
+ __declspec(deprecated("This function is deprecated. See the function body for an example of using the new API."))
+ __inline HRESULT SenAvatarXMLGetName(
+ const SenXML &senXML,
+ const SenCultureInfo *culture,
+ size_t bufferLengthMax,
+ size_t *out_bufferLength, // optional
+ wchar_t *out_buffer )
+ {
+ return SenAvatarXMLGetName(senXML, bufferLengthMax, out_bufferLength, out_buffer);
+ }
+
+ __declspec(deprecated("This function is deprecated. See the function body for an example of using the new API."))
+ __inline HRESULT SenAvatarXMLGetDescription(
+ const SenXML &senXML,
+ const SenCultureInfo *culture, // optional
+ size_t bufferLengthMax,
+ size_t *out_bufferLength, // optional
+ wchar_t *out_buffer )
+ {
+ return SenAvatarXMLGetDescription(senXML, bufferLengthMax, out_bufferLength, out_buffer);
+ }
+
+ __declspec(deprecated("This function is deprecated. See the function body for an example of using the new API."))
+ __inline HRESULT SenAvatarXMLGetPaletteName(
+ const SenXML &senXML,
+ int paletteIndex,
+ const SenCultureInfo *culture, // optional
+ size_t bufferLengthMax,
+ size_t *out_bufferLength, // optional
+ wchar_t *out_buffer )
+ {
+ return SenAvatarXMLGetPaletteName(senXML, paletteIndex, bufferLengthMax, out_bufferLength, out_buffer);
+ }
+}
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientDynamicConfig.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientDynamicConfig.h
new file mode 100644
index 00000000..d6c5cb64
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientDynamicConfig.h
@@ -0,0 +1,170 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client DynamicConfig API
+//
+// Include this to get access to all DynamicConfig-related Sentient features
+
+#pragma once
+
+#include "SenClientSys.h"
+
+namespace Sentient
+{
+
+ /// @brief Gets the size of a config file, so memory can be allocated
+ ///
+ /// @param[in] titleID
+ /// Which title's config file to search for.
+ ///
+ /// @param[in] resourceID
+ /// Which config file to find.
+ ///
+ /// @param[out] out_size
+ /// The size of the file, in bytes.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_POINTER: size is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details Search the service for a specific config file at the current time.
+ ///
+ /// @related SenDynamicConfigFileGetBytes()
+ ///
+ HRESULT SenDynamicConfigGetSize(
+ __in unsigned int titleID,
+ __in unsigned int resourceID,
+ __out size_t* out_size,
+ __in SenSysCompletedCallback userCallback,
+ __in void *userCallbackData );
+
+
+ /// @brief Gets the size of a config file, so memory can be allocated
+ ///
+ /// @param[in] resourceID
+ /// Which config file to find.
+ ///
+ /// @param[out] out_size
+ /// The size of the file, in bytes.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_POINTER: size is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details Search the service for a specific config file at the current time.
+ ///
+ /// @related SenDynamicConfigFileGetBytes()
+ ///
+ __inline HRESULT SenDynamicConfigGetSize(
+ __in unsigned int resourceID,
+ __out size_t* out_size,
+ __in SenSysCompletedCallback userCallback,
+ __in void *userCallbackData )
+ {
+ return SenDynamicConfigGetSize(SenSysTitleID_This, resourceID, out_size, userCallback, userCallbackData);
+ }
+
+
+ /// @brief Gets the contents of a config file
+ ///
+ /// @param[in] titleID
+ /// Which title's config file to search for.
+ ///
+ /// @param[in] resourceID
+ /// Which config file to return.
+ ///
+ /// @param[in] dataSizeMax
+ /// Maximum number of bytes to return.
+ ///
+ /// @param[out] out_bytesWritten
+ /// The number of bytes written into the buffer.
+ ///
+ /// @param[out] out_data
+ /// The buffer that receives the contents of the file.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_POINTER: out_data is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details Search the service for a specific config file at the current time.
+ ///
+ /// @related SenDynamicConfigFileGetSize()
+ ///
+ HRESULT SenDynamicConfigGetBytes(
+ __in unsigned int titleID,
+ __in unsigned int resourceID,
+ __in size_t dataSizeMax,
+ __out_opt size_t* out_bytesWritten,
+ __out void *out_data,
+ __in SenSysCompletedCallback userCallback,
+ __in void *userCallbackData );
+
+
+ /// @brief Gets the contents of a config file
+ ///
+ /// @param[in] resourceID
+ /// Which config file to return.
+ ///
+ /// @param[in] dataSizeMax
+ /// Maximum number of bytes to return.
+ ///
+ /// @param[out] out_bytesWritten
+ /// The number of bytes written into the buffer.
+ ///
+ /// @param[out] out_data
+ /// The buffer that receives the contents of the file.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_POINTER: out_data is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details Search the service for a specific config file at the current time.
+ ///
+ /// @related SenDynamicConfigFileGetSize()
+ ///
+ __inline HRESULT SenDynamicConfigGetBytes(
+ __in unsigned int resourceID,
+ __in size_t dataSizeMax,
+ __out_opt size_t* out_bytesWritten,
+ __out void *out_data,
+ __in SenSysCompletedCallback userCallback,
+ __in void *userCallbackData )
+ {
+ return SenDynamicConfigGetBytes(SenSysTitleID_This, resourceID, dataSizeMax, out_bytesWritten, out_data, userCallback, userCallbackData);
+ }
+}
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientFame.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientFame.h
new file mode 100644
index 00000000..1e823075
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientFame.h
@@ -0,0 +1,572 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client AvatarSuperstars Fame API
+//
+// Include this to get access to all Fame-related Sentient features.
+
+#pragma once
+
+#include "SenClientSys.h"
+
+namespace Sentient
+{
+ /**********************
+ ***** Fame Types *****
+ **********************/
+ enum SenFameVIPLevel
+ {
+ SenFameVIPLevel_Unknown = 0xFFFFFFFF,
+ SenFameVIPLevel_Fan = 0,
+ SenFameVIPLevel_Newcomer = 1,
+ SenFameVIPLevel_UpAndComing = 2,
+ SenFameVIPLevel_Headliner = 3,
+ SenFameVIPLevel_Star = 4,
+ SenFameVIPLevel_Superstar = 5,
+ };
+
+ /// @brief Information about a user's VIP status
+ ///
+ /// @details This structure contains the user's current VIP level and fame points
+ ///
+ struct SenFameVIPData
+ {
+ PlayerUID user; ///< ID for the user whose VIP status this instance describes
+ unsigned int vipLevel; ///< Current VIP level [0-n]
+ unsigned int lastAckedVIPLevel; ///< VIP level last time this structure was acknowledged by a Sentient client
+ unsigned int famePointsCurrent; ///< Fame Points accrued across all Fame titles since the last VIP level passed.
+ unsigned int famePointsWeek; ///< Fame Points accrued across all Fame titles this week.
+ unsigned int famePointsLifetime; ///< Fame Points accrued across all Fame titles over the user's entire history.
+ unsigned int pointsToNextLevel; ///< Incremental Fame Points that must be acquired to gain a new VIP level.
+ unsigned int superstarCounter; ///< Number of times the user has achieved the maximum possible VIP level.
+ SYSTEMTIME vipLevelExpiresAt; ///< Date at which current VIP level will expire. Only relevant when vipLevelExpires is true.
+ bool vipLevelExpires; ///< Whether or not the current VIP level will expire.
+ };
+
+ /// @brief Information about a single row in a Fame leaderboard
+ ///
+ /// @details This structure contains the identity of the user and summary information about their Fame status
+ ///
+ struct SenFameLeaderboardEntry
+ {
+ PlayerUID user; ///< ID for the user this row describes
+ unsigned int vipLevel; ///< Current VIP level[0-n]
+ unsigned int famePoints; ///< Fame Points accrued. May be weekly or lifetime depending on leaderboard type queried.
+ unsigned int superstarCounter; ///< Number of times the user has achieved the maximum possible VIP level.
+ unsigned int rank; ///< Global rank in the leaderboard [1-n]
+ };
+
+ /// @brief Leaderboard query ranking options
+ ///
+ /// @details When querying leaderboards, these are the options for how the leaderboard is ranked.
+ ///
+ enum SenFameLeaderboardRankType
+ {
+ SenFameLeaderboardRankType_Week, ///< Return ranking for fame points earned this week.
+ SenFameLeaderboardRankType_Lifetime, ///< Return ranking for fame points earned all time
+ SenFameLeaderboardRankType_Superstar ///< Return ranking for superstar counter
+ };
+
+ /// @brief Leaderboard query filter options
+ ///
+ /// @details When querying leaderboards, these are the options for how the leaderboard is filtered.
+ ///
+ enum SenFameLeaderboardFilter
+ {
+ SenFameLeaderboardFilter_Everyone = 0, ///< Return the unfiltered leaderboard
+ SenFameLeaderboardFilter_Friends, ///< Filter leaderboard by friends.
+ };
+
+ /// @brief Information about the parameters for a leaderboard query
+ ///
+ /// @details This structure should be filled in to specify parameters for a leaderboard query
+ ///
+ struct SenFameLeaderboardRequest
+ {
+ SenFameLeaderboardRankType type; ///< Ranking option for this query.
+ SenFameLeaderboardFilter filter; ///< Filter option for this query.
+ int startIndex; ///< Rank at which leaderboard query should start. Set to -1 to center on querying user.
+ };
+
+ /// @brief Information about the results of a leaderboard query
+ ///
+ /// @details This structure contains information about the results of a leaderboard query.
+ ///
+ struct SenFameLeaderboardResults
+ {
+ unsigned int playerIndex; ///< When playerIndex < numEntriesReturned, provides the index into result set at which the row for the querying user is located.
+ size_t numEntriesReturned; ///< Number of rows returned by the query.
+ size_t numLeaderboardEntries; ///< Total number of rows in the leaderboard.
+ };
+
+ /// @brief Fame progress (challenge) types
+ ///
+ /// @details Defines a set of well-known challenge types, plus a range for titles to use for their custom challenge types
+ ///
+ enum SenFameProgressID
+ {
+ SenFameProgressID_TitleDefinedFirst = 0, ///< First possible ID for a title-defined challenge.
+ SenFameProgressID_TitleDefinedLast = 1023, ///< Last possible ID for a title-defined challenge.
+
+ SenFameProgressID_FirstPlay = 1024, ///< Challenge tracks the first time a user plays a given title. This challenge is implemented on the Sentient server. Do not submit updates for it.
+ SenFameProgressID_AvatarAward1, ///< Challenge tracks the user receiving the first available Avatar Award. Progress against this challenge must be submitted by titles.
+ SenFameProgressID_AvatarAward2, ///< Challenge tracks the user receiving the second available Avatar Award. Progress against this challenge must be submitted by titles.
+ SenFameProgressID_FriendsOwnTitle,
+
+ // These challenges are not currently implemented. Contact senhelp@microsoft.com before using.
+ SenFameProgressID_MPWithFriend,
+ SenFameProgressID_MPWithVIP1,
+ SenFameProgressID_MPWithVIP2,
+ SenFameProgressID_MPWithVIP3,
+ SenFameProgressID_MPWithVIP4,
+ SenFameProgressID_MPWithVIP5,
+ SenFameProgressID_FriendsAtVIP1,
+ SenFameProgressID_FriendsAtVIP2,
+ SenFameProgressID_FriendsAtVIP3,
+ SenFameProgressID_FriendsAtVIP4,
+ SenFameProgressID_FriendsAtVIP5,
+
+ SenFameProgressID_Invalid = 0xffffffff ///< Reserved identifier for an invalid challenge.
+ };
+
+ /// @brief Constants that may be reported when Fame APIs return a count.
+ enum SenFameCount : unsigned int
+ {
+ SenFameCount_Unbounded = 0xffffffff ///< Indicates that there is no fixed limit on the number of items.
+ };
+
+ /// @brief Information about a granted award (milestone)
+ ///
+ /// @details When querying for awards, this structure will be filled out with summary information about any award granted to the user.
+ struct SenAwardMessageData
+ {
+ wchar_t awardDesc[128]; ///< Localized string containing a message for display.
+ unsigned int awardPoints; ///< Fame Points granted as a result of this award.
+ unsigned int awardTrigger; ///< Progress within the associated Challenge that caused the award to trigger.
+ };
+
+ /// @brief Measures a time period.
+ ///
+ /// @details Provides a display-friendly way to report time differences - e.g. the time until the current Fame week expires.
+ struct SenFameTime
+ {
+ int days;
+ int hours;
+ int minutes;
+ int seconds;
+ };
+
+ /// @brief Information about a user's progress against a single Challenge
+ ///
+ /// @details Provides a display-friendly format for retrieving information about a user's progress against Fame Challenges.
+ ///
+ struct SenFameDisplayData
+ {
+ wchar_t milestoneTypeDescription[128]; ///< Localized string that describes the challenge.
+ SenFameProgressID milestoneTypeID; ///< ID for the Challenge.
+ unsigned int milestoneCount; ///< Total number of milestones (awards) available for this Challenge. May be SenFameCount_Unbounded.
+ unsigned int currentMilestone; ///< Index of the milestone the user is currently working towards (i.e. 0 indicates no milestones have been passed).
+ unsigned int xpSinceLastMilestone; ///< Progress achieved since the last milestone in this Challenge was passed.
+ unsigned int xpToNextMilestone; ///< Progress required to hit the next milestone in this Challenge. Expressed as the progress difference between milestones, i.e. does not vary with xpSinceLastMilestone
+ unsigned int famePointsSoFar; ///< Fame Points achieved in this Challenge.
+ unsigned int famePointsMaximum; ///< Total Fame Points available from this Challenge. May be SenFameCount_Unbounded.
+ bool isWeekly; ///< When true, progress against this Challenge is reset weekly.
+ };
+
+ /// @brief Information about a participant in a multiplayer game.
+ ///
+ /// @details Use for reporting information about multiplayer games to the Sentient server.
+ ///
+ struct SenFameMPGameParticipant
+ {
+ PlayerUID user; ///< ID of a user who should be credited with participation in the game.
+ bool winner; ///< When true, this user should be considered among the winners of the game. There are no restrictions on the number of 'winners' a game may have.
+ };
+
+
+ /**************************
+ ***** Fame Functions *****
+ **************************/
+
+ /// @brief Query the server for VIP status information for a collection of arbitrary users.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console. Note: This is NOT a XUID.
+ ///
+ /// @param[in] userIDCount
+ /// The number of valid XUIDs in @a userIDArray
+ ///
+ /// @param[in] userIDArray
+ /// Users for whom VIP data should be retrieved.
+ ///
+ /// @param[out] out_userFameVIPArray
+ /// The structures to fill in with the retrieved information.
+ /// It is assumed that this is preallocated to at least @a userIDCount entries.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_GUEST_ACCESS_VIOLATION: A guest may not spawn this call.
+ /// E_POINTER: out_userFameVIPArray is NULL.
+ /// SENTIENT_E_TOO_MANY_CALLS: This call has been rejected to avoid excessive server load. Try again later.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details This overload can be used to retrieve VIP status for friends or remote participants in a multiplayer session.
+ /// For local users, prefer SenGetFameVIPLevel(int, SenFameVIPData*)
+ ///
+ HRESULT SenGetFameVIPLevel(
+ int userIndex,
+ size_t userIDCount,
+ const PlayerUID *userIDArray,
+ SenFameVIPData *out_userFameVIPArray,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ /// @brief Query for VIP status information for a local user.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console. Note: This is NOT a XUID.
+ ///
+ /// @param[out] out_fameVIPData
+ /// The structure to fill in with the retrieved information.
+ /// It is assumed that this is preallocated to fit at least 1 entry.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_GUEST_ACCESS_VIOLATION: A guest may not spawn this call.
+ /// E_POINTER: out_fameVIPData is NULL.
+ /// SENTIENT_S_OPERATION_IN_PROGRESS: The call could not be completed immediately and out_fameVIPData has not been filled in.
+ /// S_OK: The operation completed successfully.
+ ///
+ /// @details This overload is preferred when retrieving information about local users.
+ /// There are no restrictions on the call frequency and it will typically return immediately.
+ /// In rare cases where SENTIENT_S_OPERATION_IN_PROGRESS is returned the title should call again
+ /// on the next scheduled iteration of their Sentient update loop.
+ ///
+ HRESULT SenGetFameVIPLevel(
+ int userIndex,
+ SenFameVIPData *out_fameVIPData );
+
+ /// @brief Acknowledge a change in user VIP level reported by the server.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console. Note: This is NOT a XUID.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_GUEST_ACCESS_VIOLATION: A guest may not spawn this call.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details When retrieving user VIP status, the server will include the user's last VIP level
+ /// for which it has not received an acknowledgement message. Titles can use this information
+ /// to highlight changes in VIP level. Once a change has been messaged titles should
+ /// call this API to clear the server state.
+ HRESULT SenAcknowledgeVIPLevelChange(
+ int userIndex );
+
+ /// @brief Query a Fame leaderboard
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console. Note: This is NOT a XUID.
+ ///
+ /// @param[in] leaderboardRequest
+ /// Defines the parameters for the leaderboard query.
+ ///
+ /// @param[in] entryCountMax
+ /// The maximum number of leaderboard rows to return.
+ ///
+ /// @param[out] out_entryArray
+ /// The structures to fill in with the rows returned from the leaderboard query.
+ /// It is assumed that this is preallocated to hold at least entryCountMax entries.
+ ///
+ /// @param[out] out_leaderboardResults
+ /// Summary information about the results of the leaderboard query.
+ ///
+ /// @param[out] out_senHandle
+ /// Provides a handle to the async task, which will allow for calling SentientCancel
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_GUEST_ACCESS_VIOLATION: A guest may not spawn this call.
+ /// E_POINTER: out_entryArray or out_leaderboardResults is NULL.
+ /// E_INVALIDARG: userCallback is NULL and out_senHandle is non-NULL. Task handles are not supported for synchronous requests.
+ /// SENTIENT_E_TOO_MANY_CALLS: This call has been rejected to avoid excessive server load. Try again later.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ HRESULT SenGetFameLeaderboard(
+ int userIndex,
+ const SenFameLeaderboardRequest &leaderboardRequest,
+ size_t entryCountMax,
+ SenFameLeaderboardEntry *out_entryArray,
+ SenFameLeaderboardResults *out_leaderboardResults,
+ SenHandle *out_senHandle,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+
+ /// @brief Poll for notifications of when a user passes a Fame milestone.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console. Note: This is NOT a XUID.
+ ///
+ /// @param[out] out_awardData
+ /// Structure to fill in with information about any new award.
+ ///
+ /// @return SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_GUEST_ACCESS_VIOLATION: A guest may not spawn this call.
+ /// E_POINTER: out_awardData is NULL.
+ /// SENTIENT_S_OPERATION_IN_PROGRESS: The call could not be completed immediately and out_awardData has not been filled in.
+ /// S_FALSE: The operation completed successfully but there were no awards to report. out_awardData has not been filled in.
+ /// S_OK: The operation completed successfully and there was a valid award to report. out_awardData contains information about the award.
+ ///
+ /// @details There are no restrictions on how frequently this API may be called, and it returnes immediately, so titles should poll
+ /// in all states where they can display award messages. When a message is returned it is popped from an internal queue
+ /// and will not be returned again by further calls.
+ ///
+ HRESULT SenGetAwardMessage(
+ int userIndex,
+ SenAwardMessageData *out_awardData );
+
+ /// @brief Retrieve the time left before weekly fame progress is reset.
+ ///
+ /// @param[out] out_timeRemaining
+ /// Structure to fill in with information about time remaining.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_POINTER: out_timeRemaining is NULL.
+ /// SENTIENT_S_OPERATION_IN_PROGRESS: The call could not be completed immediately and out_timeRemaining has not been filled in.
+ /// E_FAIL: Internal failure. Check log for output.
+ /// S_OK: Call completed successfully and out_timeRemaining has been filled in.
+ ///
+ /// @details Some Fame Challenges are reset weekly. Use this API when displaying a timer for the reset.
+ ///
+ HRESULT SenGetTimeLeftInFameWeek(
+ SenFameTime *out_timeRemaining );
+
+ //
+ /// @brief Retrieve the time left before transient VIP level is reset.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console. Note: This is NOT a XUID.
+ ///
+ /// @param[out] out_timeRemaining
+ /// Structure to fill in with information about time remaining.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_GUEST_ACCESS_VIOLATION: A guest may not spawn this call.
+ /// E_POINTER: out_timeRemaining is NULL.
+ /// SENTIENT_S_OPERATION_IN_PROGRESS: The call could not be completed immediately and out_timeRemaining has not been filled in.
+ /// S_FALSE: The VIP level of the supplied user does not expire. out_timeRemaining has not been filled in.
+ /// E_FAIL: Internal failure. Check log for output.
+ /// S_OK: Call completed successfully and out_timeRemaining has been filled in.
+ ///
+ /// @details Some VIP levels are reset if the user does not actively maintain them. Use this API
+ /// when displaying a timer for the reset.
+ ///
+ HRESULT SenGetTimeLeftInVIPLevel(
+ int userIndex,
+ SenFameTime *out_timeRemaining );
+
+ /// @brief Get a localized string that names the given VIP level.
+ ///
+ /// @param[in] vipLevel
+ /// The level whose name should be returned.
+ ///
+ /// @param[in] maxNameLength
+ /// The maximum length (including null terminating character) of the string to return.
+ ///
+ /// @param[out] out_name
+ /// The string to fill in with the VIP level name.
+ /// It is assumed that this is preallocated to fit at least @a maxNameLength characters.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_POINTER: out_name is NULL.
+ /// E_INVALIDARG: vipLevel is outside the range of known VIP levels.
+ /// SENTIENT_S_OPERATION_IN_PROGRESS: The call could not be completed immediately and out_name has not been filled in.
+ /// S_OK: The operation completed successfully.
+ ///
+ /// @details Titles can use this API to get the server-defined name for a VIP level for additional flexibility post-release.
+ /// In rare cases where SENTIENT_S_OPERATION_IN_PROGRESS is returned the title should call again
+ /// on the next scheduled iteration of their Sentient update loop.
+ ///
+ HRESULT SenGetVIPLevelName(
+ unsigned int vipLevel,
+ size_t maxNameLength,
+ wchar_t *out_name);
+
+
+ /// @brief Get the maximum number of items that will be returned by a call to SenGetFameDisplayData
+ ///
+ /// @param[out] out_count
+ /// Location to be filled in with the number of display data items available.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_GUEST_ACCESS_VIOLATION: A guest may not spawn this call.
+ /// E_POINTER: out_count is NULL.
+ /// SENTIENT_S_OPERATION_IN_PROGRESS: The call could not be completed immediately and out_count has not been filled in.
+ /// E_FAIL: Internal failure. Check log for output.
+ /// S_OK: The operation completed successfully.
+ ///
+ /// @details Titles can use this API to ensure that they allocate a buffer of appropriate size
+ /// before making a call to SenGetFameDisplayData.
+ ///
+ HRESULT SenGetFameDisplayDataCount(
+ size_t *out_count );
+
+ /// @brief Retrieve a summary of a user's progress against Fame Challenges.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console. Note: This is NOT a XUID.
+ ///
+ /// @param[in] startIndex
+ /// Global index of first item to return.
+ /// This parameter can be used to support results paging.
+ ///
+ /// @param[in] maxDisplayDataCount
+ /// Maximum number of items to return.
+ ///
+ /// @param[out] out_dataCount
+ /// Location to fill in with number of items actually returned.
+ ///
+ /// @param[out] out_displayData
+ /// The structures to fill in with the retrieved information.
+ /// It is assumed that this is preallocated to at least @a maxDisplayDataCount entries.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_GUEST_ACCESS_VIOLATION: A guest may not spawn this call.
+ /// E_POINTER: out_dataCount or out_displayData is NULL.
+ /// E_INVALIDARG: startIndex is greater than the total number of items available.
+ /// SENTIENT_S_OPERATION_IN_PROGRESS: The call could not be completed immediately and output parameters have not been filled in.
+ /// E_FAIL: Internal failure. Check log for output.
+ /// S_OK: The operation completed successfully.
+ ///
+ /// @details For titles with weekly Challenge rotations, only Challenges active for the current week are reported.
+ /// Use SenGetFameDisplayDataCount() to dynamically size a buffer large enough to obtain all the display data entries
+ /// in a single call, or use the startIndex parameter for paging.
+ ///
+ HRESULT SenGetFameDisplayData(
+ int userIndex,
+ size_t startIndex,
+ size_t maxDisplayDataCount,
+ size_t *out_dataCount,
+ SenFameDisplayData *out_displayData );
+
+ /// @brief Notify Sentient about user progress against a Fame Challenge.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console. Note: This is NOT a XUID.
+ ///
+ /// @param[in] milestoneTypeID
+ /// The id of the Challenge for which progress has been achieved.
+ ///
+ /// @param[in] xpGained
+ /// Incremental progress. For binary milestones this can be safely set to 1 each time the awarding event takes place.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_GUEST_ACCESS_VIOLATION: A guest may not spawn this call.
+ /// SENTIENT_E_BUFFER_EXHAUSTED: The progress update failed because Sentient's internal buffer is full.
+ /// E_FAIL: Internal failure. Check log for output.
+ /// S_OK: The operation completed successfully.
+ ///
+ /// @details Titles should call this API whenever a user makes progress against a Fame Challenge. Long-term storage for progress exists
+ /// on the Sentient server, but it may be buffered on the client to prevent excessive server load. Titles should call
+ /// SenFlushFameProgress as appropriate (e.g. on game save) to ensure that all progress writes are committed to the server.
+ /// Titles should not submit updates against Fame Challenges whose progress is determined by the server(e.g. First Play)
+ HRESULT SenUpdateFameProgress(
+ int userIndex,
+ unsigned int milestoneTypeID,
+ unsigned int xpGained );
+
+ /// @brief Ensure that all progress writes are committed to the Sentient server.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console. Note: This is NOT a XUID.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_GUEST_ACCESS_VIOLATION: A guest may not spawn this call.
+ /// SENTIENT_E_TOO_MANY_CALLS: This call has been rejected to avoid excessive server load. Try again later.
+ /// E_FAIL: Failed to spawn server call. This may be because there is already a flush scheduled.
+ /// S_OK: The operation completed successfully.
+ ///
+ /// @details Long-term storage for progress exists on the Sentient server, but it may be buffered on the client to
+ /// prevent excessive server load. Titles should call this API as appropriate (e.g. on game save) to ensure
+ /// that all progress writes are committed to the server. The callback parameters provide a mechanism for
+ /// detecting when the server call has completed and updating user interface appropriately.
+ /// When there is no local data that needs flushing, the supplied callback will be invoked before execution
+ /// returns from this function, and the return code will be S_OK.
+ ///
+ HRESULT SenFlushFameProgress(
+ int userIndex,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ /// @brief Inform the Sentient server about the results of a multiplayer game.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console. Note: This is NOT a XUID.
+ ///
+ /// @param[in] participantCount
+ /// The number of valid items in @a participants.
+ ///
+ /// @param[in] participants
+ /// Structures describing the users who participated in this multiplayer game.
+ ///
+ /// @param[out] out_senHandle
+ /// Provides a handle to the async task, which will allow for calling SentientCancel
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_GUEST_ACCESS_VIOLATION: A guest may not spawn this call.
+ /// E_INVALIDARG: Either userCallback is NULL and out_senHandle is non-NULL, or participantCount is less than 2.
+ /// E_POINTER: participants is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details Titles should report multiplayer sessions to the Sentient server via this API in order to support
+ /// tracking of progress against certain Fame Challenges. For proper tracking each user in the multiplayer
+ /// session should independently call this function on completion of a game.
+ HRESULT SenRegisterFameMPGame(
+ int userIndex,
+ size_t participantCount,
+ const SenFameMPGameParticipant *participants,
+ SenHandle *out_senHandle,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientFile.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientFile.h
new file mode 100644
index 00000000..0ec968c8
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientFile.h
@@ -0,0 +1,134 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client File API
+//
+// Include this to get access to all File-related Sentient features.
+
+#pragma once
+
+#include "SenClientTypes.h"
+
+
+namespace Sentient
+{
+ //=======================//
+ // //
+ // File Data Types //
+ // //
+ //=======================//
+
+ struct SenRawDataTransferInfo;
+
+ /// @brief A unique file identifier.
+ ///
+ /// @details A SenFileID represents a unique revision of a file in the file DB.
+ /// These should only be obtained from the API and never specified manually,
+ /// with the exception of the SenFileID_Invalid enumeration below.
+ enum SenFileID : INT32
+ {
+ /// A non-existent file. This is expected when a file is not found, for instance.
+ SenFileID_Invalid = 0x00000000,
+ };
+
+ /// @brief Stores a digest of a file.
+ ///
+ /// @details This is a 128-bit digest, checksum, CRC, etc. (currently an MD5) of a file.
+ /// We typically use this to determine whether a file's contents are different or corrupt.
+ ///
+ struct SenFileDigest
+ {
+ UINT8 value[16]; ///< The raw bytes of the digest.
+ };
+
+ /// @brief Basic file transfer information.
+ ///
+ /// @details Resource-specific data structures use this, or a SenPackageFileTransferInfo,
+ /// to indicate how one can transfer a file to the console.
+ /// The internal file download routine takes this structure directly.
+ ///
+ struct SenFileTransferInfo
+ {
+ SenFileID fileID; ///< Used for locating the file data on the server.
+ SenSysFileSize fileSize; ///< The expected size of the file data. Don't read this directly--use the GetFileSize() method;
+ SenFileDigest digest; ///< The expected file digest of the file data.
+
+ /// @brief Test to see if this contains a real file.
+ ///
+ /// @details Returns true if this structure appears to refer to an actual file,
+ /// but does not tell you if the file actually exists on the server.
+ /// Attempt to download the file to determine whether or not it exists.
+ ///
+ bool IsValid() const;
+
+ /// @brief Get the actual data size.
+ ///
+ /// @details Returns the exact size of the data--no rounding. Do NOT use this for
+ /// allocating destination buffers. Use GetBufferSize() for that.
+ ///
+ SenSysFileSize GetFileSize() const;
+
+ /// @brief Get the buffer size necessary to download the data.
+ ///
+ /// @details This will return a size which is greater than or equal to the data size.
+ /// It may be rounded up somewhat (to, e.g. a 2k boundary) for the purposes
+ /// of more efficient data transfers. Make absolutely certain that you use
+ /// THIS size for allocating destination buffers, and NOT GetFileSize().
+ ///
+ SenSysFileSize GetBufferSize() const;
+ };
+
+
+ //======================//
+ // //
+ // File Functions //
+ // //
+ //======================//
+
+ // Handy utility functions to handle digests:
+
+ /// @brief Calculate a SenFileDigest from a buffer.
+ ///
+ /// @param[in] dataSize
+ /// Number of bytes in data.
+ ///
+ /// @param[in] data
+ /// The actual raw data of the file.
+ ///
+ /// @return A SenFileDigest calculated from the passed data.
+ ///
+ /// @details Calculate a SenFileDigest from a buffer. Currently, this is an MD5.
+ ///
+ /// @related SenFileDownload()
+ /// @related SenFileDigestCreate()
+ ///
+ SenFileDigest SenFileDigestCreate( size_t dataSize, const BYTE *data );
+
+ /// @brief Compare two SenFileDigests for equality.
+ ///
+ /// @param[in] value0
+ /// This is the left value for the comparison.
+ ///
+ /// @param[in] value1
+ /// This is the right value for the comparison.
+ ///
+ /// @return Returns a bool: true if value0==value1, false if not.
+ ///
+ bool operator ==( const SenFileDigest &value0, const SenFileDigest &value1 );
+
+ /// @brief Compare two SenFileDigests for inequality.
+ ///
+ /// @param[in] value0
+ /// This is the left value for the comparison.
+ ///
+ /// @param[in] value1
+ /// This is the right value for the comparison.
+ ///
+ /// @return Returns a bool: true if value0!=value1, false if not.
+ ///
+ bool operator !=( const SenFileDigest &value0, const SenFileDigest &value1 );
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientHelp.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientHelp.h
new file mode 100644
index 00000000..1940971c
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientHelp.h
@@ -0,0 +1,13 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client AvatarSuperstars HelpFile API
+//
+// Include this to get access to all HelpFile-related Sentient features.
+
+#pragma once
+
+// SenHelp functionality has been deprecated (and removed)
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientMain.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientMain.h
new file mode 100644
index 00000000..416d4dea
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientMain.h
@@ -0,0 +1,85 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client Main API
+//
+// Include this to get access to all core Sentient features.
+
+#pragma once
+
+#include "SenClientTypes.h"
+
+
+namespace Sentient
+{
+ //=======================//
+ // //
+ // Main Data Types //
+ // //
+ //=======================//
+
+ // None at the moment.
+
+
+ //======================//
+ // //
+ // Main Functions //
+ // //
+ //======================//
+
+ /// @brief Initialize and start Sentient.
+ ///
+ /// @param[in] titleID
+ /// Tells Sentient what our titleID is.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// E_FAIL (and other E_* codes): Failed to initialize.
+ /// S_OK: Initialized successfully.
+ ///
+ /// @details Call this on startup to set up networking system and initialize internal buffers.
+ ///
+ HRESULT SentientInitialize(
+ SenSysTitleID titleID );
+
+ /// @brief Update Sentient's internal state.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine overall success.
+ /// The return code contains information about the status of the connection to sentient, including:
+ /// S_OK: we have a working connection to the Sentient server.
+ /// SENTIENT_S_NOT_SIGNED_IN_TO_LIVE: no live enabled user user is currently signed in to live.
+ /// SENTIENT_S_INITIALIZING_CONNECTION: a user has signed in, and we have started first connection attempt, but we have neither succeeded nor failed yet.
+ /// SENTIENT_S_SERVER_CONNECTION_FAILED: a connection attempt has failed, or that an existing connection was lost.
+ ///
+ /// @details Call this every frame to handle network message pumping and to trigger asynchronous callbacks on completed ( or failed ) tasks.
+ ///
+ HRESULT SentientUpdate();
+
+ /// @brief Stop and uninitialize Sentient.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// E_FAIL (and other E_* codes): Failed to shut down.
+ /// S_OK: Shut down successfully.
+ /// Note that one should consider the library shut down even if an error code is returned.
+ ///
+ /// @details Call this on app/game shutdown. (not necessary on X360)
+ ///
+ HRESULT SentientShutdown();
+
+ /// @brief Cancel an asynchronous task.
+ ///
+ /// @param[in] task
+ /// The task to cancel.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// E_FAIL (and other E_* codes): Failed to cancel task.
+ /// S_OK: Task cancelled successfully.
+ ///
+ /// @detail Call this to immediately cancel any task that exposes a SenHandle.
+ /// The completion callback will be invoked on a successful cancel.
+ ///
+ HRESULT SentientCancel( SenHandle task );
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientMarkers.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientMarkers.h
new file mode 100644
index 00000000..1eac8fec
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientMarkers.h
@@ -0,0 +1,55 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client UGC API
+//
+// Include this to get access to Markers.
+
+#pragma once
+
+#include "SenClientSys.h"
+
+
+namespace Sentient
+{
+ /************************
+ ***** Marker Types *****
+ ************************/
+
+ struct SenMarker
+ {
+ float x, y, z;
+ PlayerUID user;
+ int userData;
+ int userData2;
+ };
+
+
+ /****************************
+ ***** Marker Functions *****
+ ****************************/
+
+ HRESULT SenMarkerAdd(
+ int userIndex,
+ SenSysTitleID titleID,
+ SenUGCID ugcID,
+ const SenMarker *marker );
+
+ HRESULT SenMarkerGetWithinArea(
+ SenSysTitleID titleID,
+ SenUGCID ugcID,
+ float xMin, float yMin, float zMin,
+ float xMax, float yMax, float zMax,
+ int maxCount,
+ PlayerUID friendsOf,
+ int minTag,
+ int maxTag,
+ int tagMask,
+ SenMarker **out_buffer,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientNews.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientNews.h
new file mode 100644
index 00000000..22c39a1e
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientNews.h
@@ -0,0 +1,91 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client News API
+//
+// Include this to get access to all News-related Sentient features.
+
+#pragma once
+
+#include "SenClientTypes.h"
+
+
+namespace Sentient
+{
+
+ // Maximum number of items that will be returned from the service
+ static const size_t MAX_NEWS_ITEM_COUNT = 20;
+
+ // Default news cache expire time
+ // News cache expire time controls the duration between service synchronization.
+ // This duration is measured in seconds. Default value is 6 minutes
+ static const int CACHE_EXPIRE = 5 * 60 * 1000;
+
+ // Extern linkage for News Item Count
+ extern size_t newsItemCount;
+ class NewsItemCountClass
+ {
+ public: NewsItemCountClass() { newsItemCount = MAX_NEWS_ITEM_COUNT; };
+ };
+ static NewsItemCountClass newsItemCountClass;
+
+ // Extern linkage for cache expire
+ extern int cacheExpire;
+ class CacheExpireTimeoutClass
+ {
+ public: CacheExpireTimeoutClass() { cacheExpire = CACHE_EXPIRE; };
+ };
+ static CacheExpireTimeoutClass cacheExpireTimeoutClass;
+
+ // Default characters per second
+ // Used for displaying local news messages through the PostLocalNews API
+ // Used for displaying default news messages through the SetDefaultNewsStrings API
+ static const float DEFAULT_CHARS_PER_SEC = 2.0f;
+
+ // Max size for news ticker messages
+ static const size_t MAX_NEWS_TICKER_MESSAGE_SIZE = 256;
+
+ /**************************
+ ***** News Types *****
+ **************************/
+
+ enum SenTickerMessageType
+ {
+ SenTickerMessageType_Text = 0,
+ SenTickerMessageType_MarketplaceOffer,
+ SenTickerMessageType_Max
+ };
+
+ struct SenTickerData
+ {
+ wchar_t message[MAX_NEWS_TICKER_MESSAGE_SIZE];
+ SenTickerMessageType messageType;
+ INT64 data1;
+ INT64 data2;
+ float charPerSec;
+ };
+
+ /**************************
+ ***** News Functions *****
+ **************************/
+
+ // Ticker messages need to be pulled whenever the ticker is displayed. Call this function to get the next message to display
+
+ /// @brief public
+ ///
+ /// @param[in\out] userIndex
+ /// @param[in\out] out_tickerData
+ ///
+ /// @return HRESULT
+ ///
+ /// @details
+ ///
+ /// @related
+ HRESULT SenGetTickerMessage(
+ int userIndex,
+ SenTickerData *out_tickerData );
+
+} // namespace Sentient
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientPackage.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientPackage.h
new file mode 100644
index 00000000..c4ebafa6
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientPackage.h
@@ -0,0 +1,73 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client Package API
+//
+// Include this to get access to all Package-related Sentient features.
+
+#pragma once
+
+#include "SenClientTypes.h"
+
+
+namespace Sentient
+{
+ //==========================//
+ // //
+ // Package Data Types //
+ // //
+ //==========================//
+
+ /// Private.
+ struct SenPackageInfo;
+
+ /// @brief Basic file transfer information.
+ ///
+ /// @details Resource-specific data structures use this, or a SenFileTransferInfo,
+ /// to indicate how one can transfer a file to the console.
+ /// The internal package file download routine takes this structure directly.
+ ///
+ struct SenPackageFileTransferInfo
+ {
+ const SenPackageInfo *package;
+ const char *filename;
+ SenSysFileSize fileSize;
+
+ /// @brief Test to see if this contains a real file.
+ ///
+ /// @details Returns true if this structure appears to refer to an actual file,
+ /// but does not tell you if the file actually exists in a package.
+ /// Attempt to download the file to determine whether or not it exists.
+ ///
+ bool IsValid() const;
+
+ /// @brief Get the actual data size.
+ ///
+ /// @details Returns the exact size of the data--no rounding. Do NOT use this for
+ /// allocating destination buffers. Use GetBufferSize() for that.
+ ///
+ SenSysFileSize GetFileSize() const;
+
+ /// @brief Get the buffer size necessary to download the data.
+ ///
+ /// @details This will return a size which is greater than or equal to the data size.
+ /// It may be rounded up somewhat (to, e.g. a 2k boundary) for the purposes
+ /// of more efficient data transfers. Make absolutely certain that you use
+ /// THIS size for allocating destination buffers, and NOT GetFileSize().
+ ///
+ SenSysFileSize GetBufferSize() const;
+ };
+
+
+ //=========================//
+ // //
+ // Package Functions //
+ // //
+ //=========================//
+
+ // None at the moment.
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientRawData.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientRawData.h
new file mode 100644
index 00000000..ba05af67
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientRawData.h
@@ -0,0 +1,83 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client RawData API
+//
+// Include this to get access to all RawData-related Sentient features.
+
+#pragma once
+
+#include "SenClientFile.h"
+#include "SenClientPackage.h"
+
+
+namespace Sentient
+{
+ //==========================//
+ // //
+ // RawData Data Types //
+ // //
+ //==========================//
+
+ /// @brief Raw data transfer information type.
+ ///
+ /// @details Used to denote what kind of raw data is being described in a SenRawDataTransferInfo.
+ ///
+ enum SenRawDataType
+ {
+ /// A SenRawDataTransferInfo with this type contains nothing.
+ SenRawDataType_Invalid,
+
+ /// A SenRawDataTransferInfo with this type contains a SenFileTransferInfo.
+ SenRawDataType_File,
+
+ /// A SenRawDataTransferInfo with this type contains a SenPackageFileTransferInfo.
+ SenRawDataType_Package,
+ };
+
+ /// @brief Basic raw data transfer information.
+ ///
+ /// @details This structure contains enough information to retrieve any data.
+ /// Note: The choice of package vs. file is made internally.
+ /// Developers may use these struct contents for debugging purposes, but
+ /// should never rely on anything below the level of this struct and its
+ /// methods in their own code. All manipulation/exploration should be API-based.
+ ///
+ struct SenRawDataTransferInfo
+ {
+ SenRawDataType type; ///< Indicates which part of the union below to use.
+ union
+ {
+ SenFileTransferInfo file; ///< Only valid if type == SenRawDataType_File;
+ SenPackageFileTransferInfo package; ///< Only valid if type == SenRawDataType_Package;
+ };
+
+ /// @brief Test to see if this contains a real file.
+ ///
+ /// @details Returns true if this structure appears to refer to an actual file,
+ /// but does not tell you if the file actually exists.
+ /// Attempt to download the file to determine whether or not it exists.
+ ///
+ bool IsValid() const;
+
+ /// @brief Get the actual data size.
+ ///
+ /// @details Returns the exact size of the data--no rounding. Do NOT use this for
+ /// allocating destination buffers. Use GetBufferSize() for that.
+ ///
+ SenSysFileSize GetFileSize() const;
+
+ /// @brief Get the buffer size necessary to download the data.
+ ///
+ /// @details This will return a size which is greater than or equal to the data size.
+ /// It may be rounded up somewhat (to, e.g. a 2k boundary) for the purposes
+ /// of more efficient data transfers. Make absolutely certain that you use
+ /// THIS size for allocating destination buffers, and NOT GetFileSize().
+ ///
+ SenSysFileSize GetBufferSize() const;
+ };
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientResource.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientResource.h
new file mode 100644
index 00000000..e8405d5e
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientResource.h
@@ -0,0 +1,111 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client Resource API
+//
+// Include this to get access to all Resource-related Sentient features.
+
+#pragma once
+
+#include "SenClientTypes.h"
+
+
+namespace Sentient
+{
+ //======================//
+ // //
+ // Resource Types //
+ // //
+ //======================//
+
+ /// @brief Resource types/categories.
+ ///
+ /// @details This value is normally used to fill the top 8 bits of a resource ID, with the bottom 24 being an index.
+ ///
+ enum SenResourceType : INT8
+ {
+ SenResourceType_Invalid,
+ SenResourceType_Avatar,
+ SenResourceType_BoxArt,
+ SenResourceType_Config,
+ SenResourceType_Help,
+ };
+
+ /// @brief Resource types/categories.
+ ///
+ /// @details The top 8 bits are always the SenResourceType. The bottom 24 are typically an index into the category.
+ /// These categories do not overlap, so that we can choose to store different resource types in the same or
+ /// different tables, depending on what is more useful. Note, though, that you should expect E_INVALIDARG
+ /// back if you pass an ID from one category to a call wanting a different category.
+ /// Some categories' IDs will be hardwired/assumed, while others will be generated inside of Microsoft (e.g. box art).
+ ///
+ enum SenResourceID : INT32
+ {
+ /// This is used to indicate a failed search, an invalid resource structure, or sometimes to substitute for a default.
+ SenResourceID_Invalid = (INT32)SenResourceType_Invalid << 24,
+
+ /// This is the first VIP reward costume and there is one for each title.
+ SenResourceID_Superstar_0 = (INT32)SenResourceType_Avatar << 24,
+ /// This is the second VIP reward costume and there is one for each title.
+ SenResourceID_Superstar_1,
+ /// This is the third VIP reward costume and there is one for each title.
+ SenResourceID_Superstar_2,
+ /// This is the fourth VIP reward costume and there is only one, shared across all titles.
+ SenResourceID_Superstar_3,
+ /// This is the fifth VIP reward costume and there is only one, shared across all titles.
+ SenResourceID_Superstar_4,
+
+ /// This is used for the cross-sell screen and contains things such as an image, offerID, strings, etc.
+ SenResourceID_BoxArt_0 = (INT32)SenResourceType_BoxArt << 24,
+
+ /// This is used for game-private config files, and is only the base of the range.
+ /// Titles may use the entire 24-bit space for various custom config files.
+ SenResourceID_Config_0 = (INT32)SenResourceType_Config << 24,
+
+ /// This is used for server-supplied help files/text.
+ /// At the moment, this is not supported.
+ SenResourceID_Help_0 = (INT32)SenResourceType_Help << 24,
+
+ };
+
+ /// @brief Resource schedule priority.
+ ///
+ /// @details This is currently reserved for later use in overriding one resource with another on a schedule.
+ /// It is not currently used and may be changed at a later date.
+ ///
+ typedef INT32 SenResourcePriority;
+ enum
+ {
+ SenResourcePriority_Default = 0,
+ };
+
+ /// @brief Generic resource information.
+ ///
+ /// @details This structure contains enough information to uniquely identify
+ /// one resource at a given time on the schedule, e.g. an avatar or
+ /// box art at 3am. (Note that schedules are not currently used and
+ /// may be re-architected in the future.)
+ ///
+ struct SenResourceInfo
+ {
+ SenSysTitleID titleID; ///< This is the title the resource is assigned to, or SenTitleID_Shared for all.
+ SenResourceID resourceID; ///< This is the resource ID within the title's space.
+
+ SenResourcePriority priority; ///< Schedule priority. This is not currently used and may be changed at a later date.
+ SYSTEMTIME begins; ///< Scheduled begin time (inclusive). This is not currently used and may be changed at a later date.
+ SYSTEMTIME ends; ///< Scheduled end time (exclusive). This is not currently used and may be changed at a later date.
+ };
+
+
+ //==========================//
+ // //
+ // Resource Functions //
+ // //
+ //==========================//
+
+ // None at the moment.
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientStats.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientStats.h
new file mode 100644
index 00000000..0ee41a47
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientStats.h
@@ -0,0 +1,133 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client Stats API
+//
+// Include this to get access to all Stats-related Sentient features.
+
+#pragma once
+
+#include "SenClientTypes.h"
+
+
+namespace Sentient
+{
+ /***********************
+ ***** Stats Types *****
+ ***********************/
+
+ #define SenStatID_Custom 128
+
+ // Stats
+ #define SenStatFlag_Normal 1
+ #define SenStatFlag_Time 2
+ #define SenStatFlag_TimeEnd 4
+
+ // Params
+ #define SenStatValueFlag_Inc 1
+ #define SenStatValueFlag_Accum 2
+ #define SenStatValueFlag_Min 4
+ #define SenStatValueFlag_Max 8
+
+ // Enable Logging if we are in debug build
+#ifdef _DEBUG
+ #define SEN_LOGTELEMETRY
+#endif
+
+ struct SenStat
+ {
+ DWORD dwUserID;
+ DWORD dwStatID;
+ DWORD dwFlags; // SenStatFlag_*
+ DWORD dwNumProperties;
+ CHAR* arrProperties;
+ DWORD dwNumValues;
+ CHAR* arrValues;
+ DWORD* arrValueFlags; // SenStatValueFlag_*
+ };
+
+
+ /***************************
+ ***** Stats Functions *****
+ ***************************/
+
+ /// @brief Submit a stat entry to the sentient system
+ ///
+ /// @param[in] pStat
+ /// The pointer to SenStat structure. The SentientStatsSend function is usually called from the autogenerated fuctions
+ /// which use as [in] parameters the userIndex(0 through 3) and the set of the stat properties/values. The rest of the SenStat structure memebers are
+ /// created automatically from the stat xml file generated code.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ /// @details Calls to this function should use generated Telemetry code, rather than
+ /// calling the function from title code
+ HRESULT SentientStatsSend( SenStat *pStat );
+
+ /// @brief Sets the send interval for Telemetry. Only works in debug builds
+ ///
+ /// @param[in] dwIntervalMs
+ /// The new send interval, in milliseconds. This value is capped at a minimum of 250 ms.
+ ///
+ /// @details The body of this function is conditionally compiled out of non-debug builds.
+ ///
+ void SentientSetStatSendInterval( DWORD dwIntervalMs );
+
+ /// @brief Requests that Sentient immediately send any stats being buffered
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_TOO_MANY_CALLS: You tried to flush too quickly after a previous flush.
+ /// S_OK: Buffered stats will be flushed to the server on the next Sentient::Update() call
+ ///
+ /// @details This API can only be called once every minute. Any attempts to call the API more frequently
+ /// will result in the call being throttled, and the API returning SENTIENT_E_TOO_MANY_CALLS
+ /// Data is not actually sent until the next Sentient::Update() call
+ HRESULT SentientFlushStats( );
+
+ /// @brief Requests that Sentient immediately send any stats being buffered because the title is exiting
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_TOO_MANY_CALLS: You tried to flush on Exit more than once
+ /// S_OK: Buffered stats will be flushed to the server on the next Sentient::Update() call
+ ///
+ /// @details This API can only be called ONCE. Any attempts to call the API more frequently
+ /// will result in the call being throttled, and the API returning SENTIENT_E_TOO_MANY_CALLS
+ /// Data is not actually sent until the next Sentient::Update() call
+ HRESULT SentientFlushStatsOnExit( );
+
+ /// @brief Requests that Sentient immediately send any stats being buffered because the title is going to the marketplace and may not return
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// SENTIENT_E_TOO_MANY_CALLS: You tried to flush on MarketPlace too many times
+ /// S_OK: Buffered stats will be flushed to the server on the next Sentient::Update() call
+ ///
+ /// @details Any attempts to call the API too frequently will result in the call being throttled,
+ /// and the API returning SENTIENT_E_TOO_MANY_CALLS
+ /// Data is not actually sent until the next Sentient::Update() call
+ HRESULT SentientFlushStatsOnMarketPlace( );
+
+ /// @brief Tells Sentient that an important point in the game was hit and that events should be sent as soon as possible
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// S_OK: Buffered stats will be flushed to the server within the next minute
+ ///
+ /// @details This API should be caleld when the game hits an important event or point.
+ /// Sentient Will send the event data to the server within the next minute, calling this method frequently will not cause any additional sends
+ HRESULT SentientFlushStatsOnKeyEvent( );
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build log out the stat to a file for testing
+ void SentientDebugLogStatSend(const char *statName, const SenStat *pStat);
+#endif
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientSuperstars.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientSuperstars.h
new file mode 100644
index 00000000..b7d72a63
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientSuperstars.h
@@ -0,0 +1,20 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client AvatarSuperstars API
+//
+// Include this to get access to all Superstars-related Sentient features.
+
+#pragma once
+
+// Independent Sentient libraries that get rolled into Superstars
+#include "SenClientNews.h"
+#include "SenClientBoxArt.h"
+
+// Superstars-specific includes
+#include "SenClientAvatar.h"
+#include "SenClientHelp.h"
+#include "SenClientFame.h"
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientSys.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientSys.h
new file mode 100644
index 00000000..dc33098b
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientSys.h
@@ -0,0 +1,58 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client System API
+//
+// Include this to get access to all System Sentient features.
+
+#pragma once
+
+#include "SenClientTypes.h"
+
+
+namespace Sentient
+{
+ /************************
+ ***** System Types *****
+ ************************/
+
+ // Standardized callback that all asynchronous functions call either on completion or on failure.
+ typedef void (*SenSysCompletedCallback)( HRESULT taskResult, void *userCallbackData );
+
+ typedef void *(*SenSysMemAllocCallback)( size_t size );
+
+ typedef void (*SenSysMemFreeCallback)( void *ptr );
+
+ typedef void (*SenSysOutputCallback)( const wchar_t *outputString );
+
+
+ /****************************
+ ***** System Functions *****
+ ****************************/
+
+#ifdef _XBOX
+ // Call this to get the XDK version number that Sentient was compiled against
+ int SenSysGetXDKVersion();
+#endif
+#ifdef __WINLIVE__
+ // Call this to get the GFWL version number that Sentient was compiled against
+ int SenSysGetGFWLSDKVersion();
+#endif
+
+ // Sentient calls this to get total allocated memory.
+ // (this is only tracked in debug mode - in release mode, this will return 0)
+ size_t SenSysMemAllocated();
+
+ // Redirects all of Sentient's internal memory allocs to a custom allocator.
+ void SenSysSetMemAllocCallback( SenSysMemAllocCallback callback );
+
+ // Redirects all of Sentient's internal memory frees to a custom allocator.
+ void SenSysSetMemFreeCallback( SenSysMemFreeCallback callback );
+
+ // Redirects all of Sentient's internal output to a custom routine.
+ void SenSysSetOutputCallback( SenSysOutputCallback callback );
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientTypes.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientTypes.h
new file mode 100644
index 00000000..1a1827a2
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientTypes.h
@@ -0,0 +1,160 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client Types
+//
+// Include this to get access to all basic Sentient Types.
+
+#pragma once
+
+// These guarantees the presence of UINT32 et al, which we will be using
+// for specific bitsized-types until we decide to switch to C++0x-style
+// uint32_t (et al) types.
+
+#if defined(_XBOX)
+
+ #include
+ #include
+
+#else
+
+ #define NOD3D
+ #define WIN32_LEAN_AND_MEAN
+ #include
+ //#include
+
+#endif
+
+#include
+
+
+namespace Sentient
+{
+ //============================//
+ // //
+ // Sentient Basic Types //
+ // //
+ //============================//
+
+ /// @brief A low-resolution timestamp.
+ ///
+ /// @details This is the timestamp used by UGC. Its resolution is only ???. // TODO:
+ /// Full-resolution timestamps generally use SYSTEMTIME structures.
+ ///
+ typedef UINT32 SenSysDateTime;
+
+ /// @brief A unique identifier per title.
+ ///
+ /// @details Each title on Xbox Live is given a 32-bit title ID. We use these
+ /// to help identify title-specific resourced, UGC, etc.
+ /// Note that, except for the two special cases below, all title ID
+ /// values are considered private and should be obtained only through
+ /// Sentient APIs and structures. You should never create one manually.
+ ///
+ enum SenSysTitleID : INT32
+ {
+ // Use this for your own title. It will be converted to your true
+ // title ID internally.
+ SenSysTitleID_This = (SenSysTitleID)0x00000000,
+
+ // Use this if you need to access shared, cross-game entries, which is
+ // typically the case.
+ SenSysTitleID_Shared = (SenSysTitleID)0xffffffff,
+ };
+
+ /// @brief A unique identifier for an offer on Xbox/Windows Live Marketplace.
+ ///
+ /// @details This 64-bit value may be passed off to system routines that prompt
+ /// the user to browse/buy a product, such as a trial/demo or an avatar
+ /// item.
+ /// Note that, except for the the special case below, all offer ID
+ /// values are considered private and should be obtained only through
+ /// Sentient APIs and structures. You should never create one manually.
+ ///
+ enum SenSysOfferID : INT64
+ {
+ // This is the value used when no offerID is available.
+ SenSysOfferID_Invalid = (SenSysOfferID)0x0000000000000000LL,
+ };
+
+ /// @brief The size of a resource file.
+ ///
+ /// @details Note we're going to use this instead of size_t because the value type
+ /// coming down from the server will not necessarily match the client's
+ /// compiler notion of, say, size_t or int, which could be 64 bits.
+ ///
+ typedef INT32 SenSysFileSize;
+
+ /// @brief A Sentient-specific handle.
+ ///
+ /// @details These handles are currently used only for tracking and cancelling
+ /// asynchronous tasks.
+ ///
+ /// @related SentientCancel()
+ ///
+ typedef VOID *SenHandle;
+
+ // TODO: this really doesn't belong in SenCore's global types
+ typedef UINT64 SenUGCID;
+
+ /// @brief A unique identifier for a device.
+ ///
+ /// @details Some routines want to know which device to default to.
+ /// This ID is a way to specify one. On Xbox, this is equivalent
+ /// to an XCONTENTDEVICEID and can be obtained in several ways
+ /// through the XDK. On Windows, this is TBD.
+ ///
+#ifdef _XBOX
+ typedef XCONTENTDEVICEID SenContentDeviceID;
+ #define SenContentDeviceID_Any XCONTENTDEVICE_ANY
+#else
+ typedef DWORD SenContentDeviceID;
+ #define SenContentDeviceID_Any 0
+#endif
+
+
+ //=========================//
+ // //
+ // Sentient HRESULTs //
+ // //
+ //=========================//
+
+ // Sentient HRESULT fields
+ #define SENTIENT_FACILITY 0x58
+ #define SENTIENT_E_FIRST_ERROR MAKE_HRESULT( SEVERITY_ERROR, SENTIENT_FACILITY, 0x0000 )
+ #define SENTIENT_S_FIRST_STATUS MAKE_HRESULT( SEVERITY_SUCCESS, SENTIENT_FACILITY, 0x0000 )
+
+ // Sentient Error codes
+ const HRESULT SENTIENT_E_NOT_INITIALIZED = SENTIENT_E_FIRST_ERROR + 0x0001; // 0x80580001 // title has tried to call a Sentient function when the library is not initialized.
+ const HRESULT SENTIENT_E_ALREADY_INITIALIZED = SENTIENT_E_FIRST_ERROR + 0x0002; // 0x80580002 // title has tried to initialize an already-initialized library.
+ const HRESULT SENTIENT_E_NO_UGC_PUBLISH_PRIVILEGE = SENTIENT_E_FIRST_ERROR + 0x0003; // 0x80580003 // user does not have the proper UGC upload/publish privilege flag set
+ const HRESULT SENTIENT_E_NO_UGC_USE_PRIVILEGE = SENTIENT_E_FIRST_ERROR + 0x0004; // 0x80580004 // user does not have the proper UGC download/use privilege flag set
+ const HRESULT SENTIENT_E_GUEST_ACCESS_VIOLATION = SENTIENT_E_FIRST_ERROR + 0x0005; // 0x80580005 // user is a guest, and therefore should not be accessing certain sentient features
+ const HRESULT SENTIENT_E_TOO_MANY_CALLS = SENTIENT_E_FIRST_ERROR + 0x0006; // 0x80580006 // title has called this API too frequently. Call has been discarded to avoid excessive server load.
+ const HRESULT SENTIENT_E_SERVER_ERROR = SENTIENT_E_FIRST_ERROR + 0x0007; // 0x80580007 // call generated an unhandled error on the server. Contact senhelp for assistance.
+ const HRESULT SENTIENT_E_TIME_OUT = SENTIENT_E_FIRST_ERROR + 0x0008; // 0x80580008 // the operation took too long to complete and has been abandoned.
+ const HRESULT SENTIENT_E_CANCELED = SENTIENT_E_FIRST_ERROR + 0x0009; // 0x80580009 // the operation was canceled by user sign-out or via an explicit call to SentientCancel
+ const HRESULT SENTIENT_E_FORBIDDEN = SENTIENT_E_FIRST_ERROR + 0x000a; // 0x8058000a // the server has indicated that the supplied user is not permitted to perform this operation.
+ const HRESULT SENTIENT_E_USERINDEX_IS_ANY = SENTIENT_E_FIRST_ERROR + 0x000b; // 0x8058000b // userIndex of ANY passed to a routine that requires a specific user.
+ const HRESULT SENTIENT_E_USERINDEX_IS_NONE = SENTIENT_E_FIRST_ERROR + 0x000c; // 0x8058000c // userIndex of NONE passed to a routine that requires a user.
+ const HRESULT SENTIENT_E_USERINDEX_IS_INVALID = SENTIENT_E_FIRST_ERROR + 0x000d; // 0x8058000d // userIndex is not a known value
+ const HRESULT SENTIENT_E_USERINDEX_IS_FOCUS = SENTIENT_E_FIRST_ERROR + 0x000e; // 0x8058000e // userIndex of FOCUS passed to a routine that requires a specific user.
+ const HRESULT SENTIENT_E_BUFFER_EXHAUSTED = SENTIENT_E_FIRST_ERROR + 0x000f; // 0x8058000f // no more space in buffer, operation was discarded
+ const HRESULT SENTIENT_E_RETRY_INVALID_DATA = SENTIENT_E_FIRST_ERROR + 0x0010; // 0x80580010 // retry; data was found to be invalid either after step or whole operation finished
+ const HRESULT SENTIENT_E_UNREACHABLE = SENTIENT_E_FIRST_ERROR + 0x0011; // 0x80580011 // Server was not reachable when called. Contact senhelp for assistance.
+ const HRESULT SENTIENT_E_RETRY_OVERLOADED = SENTIENT_E_FIRST_ERROR + 0x0012; // 0x80580012 // Server was overloaded when called. Retry later or contact senhelp for assistance.
+ const HRESULT SENTIENT_E_NO_UGC_DOWNLOAD_PRIVILEGE = SENTIENT_E_FIRST_ERROR + 0x0013; // 0x80580013 // user does not have the proper UGC download privilege flag set
+ const HRESULT SENTIENT_E_UGC_DOESNT_EXIST = SENTIENT_E_FIRST_ERROR + 0x0014; // 0x80580014 // requested action is aborted because the ugcid passed doesn't exist
+ const HRESULT SENTIENT_E_INVALID_UGC_PUBLISH_STATE = SENTIENT_E_FIRST_ERROR + 0x0015; // 0x80580015 // requested action is aborted because the UGC is in the wrong publish state
+
+ // Sentient Status/Success codes
+ const HRESULT SENTIENT_S_NOT_SIGNED_IN_TO_LIVE = SENTIENT_S_FIRST_STATUS + 0x0003; // 0x00580003
+ const HRESULT SENTIENT_S_INITIALIZING_CONNECTION = SENTIENT_S_FIRST_STATUS + 0x0004; // 0x00580004
+ const HRESULT SENTIENT_S_SERVER_CONNECTION_FAILED = SENTIENT_S_FIRST_STATUS + 0x0005; // 0x00580005
+ const HRESULT SENTIENT_S_OPERATION_IN_PROGRESS = SENTIENT_S_FIRST_STATUS + 0x0006; // 0x00580006
+ const HRESULT SENTIENT_S_NEWER_BLOB_EXISTS = SENTIENT_S_FIRST_STATUS + 0x0007; // 0x00580007 // UGC can have different versions of MainDataBlob with Republish API
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientUGC.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientUGC.h
new file mode 100644
index 00000000..da1b1f65
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientUGC.h
@@ -0,0 +1,957 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client UGC API
+//
+// Include this to get access to all UGC related Sentient features
+
+#pragma once
+
+// Local headers
+#include "SenClientMarkers.h"
+#include "SenClientUGCLeaderboards.h"
+#include "SenClientUGCTypes.h"
+
+// Sentient headers
+#include "SenClientSys.h"
+#include "SenClientCulture.h"
+
+namespace Sentient
+{
+ /**********************************
+ ***** UGC Creation Functions *****
+ **********************************/
+
+ /// @brief Generate a unique ID that will be used to
+ /// identify a given instance of UGC. This ID
+ /// will is referenced by every other UGC function.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console.
+ /// Note: This is NOT a XUID.
+ ///
+ /// @param[out] outResult
+ /// The unique ID that has been generated and provisioned
+ /// for an instance of UGC.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code,
+ /// the userCallback will be called at the end of the
+ /// asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return TBD
+ ///
+ /// @details All UGC functions require a uniquely provisioned UGC ID.
+ ///
+ /// @related All UGC related functions.
+ HRESULT SenUGCCreatePublishingUGCID(
+ int userIndex,
+ SenUGCID *outResult,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ ///
+ /// @brief Async output information for SenUGCUpload or Download callers
+ ///
+ /// @details Contains progress or retry information in addition to a cancellation token
+ ///
+ struct SenUGCProgressInfo
+ {
+ SenHandle out_taskHandle; /// token for canceling the upload process
+ INT8 percentageComplete; /// 1-100, how much percent is complete of upload process for blob
+ size_t bytesCompleted; /// how many bytes have been successfully transmitted for the task
+ HRESULT lastStepResult; /// sentient client SDK HRESULT value
+ int numRetries; /// does not reset between internal steps for a long-running task
+ };
+
+ //************************************
+ // Method: SenUGCUpload
+ // FullName: Sentient::SenUGCUpload
+ // Access: public
+ // Returns: HRESULT
+ // Qualifier:
+ // Parameter: int userIndex
+ // Parameter: SenUGCID ugcID
+ // Parameter: const SenUGCMetaData * metaData
+ // Parameter: int nrMainDataBlobs
+ // Parameter: const void * * mainDataBlobs
+ // Parameter: const size_t * mainDataBlobSizes
+ // Parameter: bool pushToFeed
+ // Parameter: SenSysCompletedCallback userCallback
+ // Parameter: void * userCallbackData
+ // Upload the metadata, as well as one or more binary data blobs to the server.
+ // There are multiple data blobs supported (the exact number is defined in
+ // SenUGCMainData_NrBlobs). One use would be that a game may want store a
+ // preview thumbnail that can be downloaded without having to download the
+ // rest of the UGC. This could save bandwidth and make the game more responsive.
+ // Note: data blob 0 should be the main level data blob, for the automatic
+ // download counter to work.
+ // The metadata will also have a data blob associated, but this should be
+ // kept to a minimum, as UGC download menus will probably want to download
+ // metadata for a lot of UGCs at once.
+ // Note: if a level has been uploaded with main data before, and the creator
+ // wants to just modify the metadata, they can upload the metadata with the
+ // maindatablobs being NULL.
+ // NOTE: for large items, use the SenUGCUploadMainData method with the SenUGCProgressInfo
+ // signature so you can get the running progress and a cancellation token
+ // to abort the upload (allowing UI for the user, etc)
+ //************************************
+ HRESULT SenUGCUpload(
+ int userIndex,
+ SenUGCID ugcID,
+ const SenUGCMetaData *metaData,
+ int nrMainDataBlobs,
+ const void **mainDataBlobs,
+ const size_t *mainDataBlobSizes,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ //************************************
+ // Method: SenUGCUploadMetadata
+ // FullName: Sentient::SenUGCUploadMetadata
+ // Access: public
+ // Returns: HRESULT
+ // Qualifier:
+ // Parameter: int userIndex
+ // Parameter: SenUGCID ugcID
+ // Parameter: const SenUGCMetaData * metaData
+ // Parameter: SenSysCompletedCallback userCallback
+ // Parameter: void * userCallbackData
+ // Upload the metadata and one binary data blob to the server.
+ // NOTE: data blob at index 0 should be the main level data blob, for the automatic
+ // download counter to work.
+ // The metadata will also have a data blob associated, but this should be
+ // kept to a minimum, as UGC download menus will probably want to download
+ // metadata for a lot of UGCs at once.
+ // NOTE: If a creator uploads metadata again, it will overwrite the previous
+ // stored blob with the new one.
+ //************************************
+ HRESULT SenUGCUploadMetadata(
+ int userIndex,
+ SenUGCID ugcID,
+ const SenUGCMetaData* metaData,
+ SenSysCompletedCallback userCallback,
+ void* userCallbackData);
+
+ //************************************
+ // Method: SenUGCUploadMainData
+ // FullName: Sentient::SenUGCUploadMainData
+ // Access: public
+ // Returns: HRESULT
+ // Qualifier:
+ // Parameter: int userIndex
+ // Parameter: SenUGCID ugcID
+ // Parameter: int mainDataBlobIndex
+ // Parameter: const void * mainDataBlob
+ // Parameter: const size_t mainDataBlobSize
+ // Parameter: SenSysCompletedCallback userCallback
+ // Parameter: void * userCallbackData
+ // Parameter: SenUGCProcessInfo* out_ugcUploadInfo
+ // Upload one binary data blob to the server.
+ // This SenUGCUpload method with the SenUGCProcessInfo signature is so you
+ // can get the progress percentage and a cancellation token, which can
+ // be used to abort the upload. This is useful for large uploads where
+ // you may want to allow the user to cancel.
+ // NOTE: This call is asynchronous ONLY and will error for synchronous
+ // attempts with a NULL param for userCallback.
+ // There are multiple data blobs supported (the exact number is defined in
+ // SenUGCMainData_NrBlobs) on subsequent calls. Slot zero is to be used by a
+ // game to store a preview thumbnail, which can then be downloaded without
+ // having to download the rest of the UGC. This could save bandwidth and
+ // make the game more responsive.
+ // NOTE: data blob at index 0 should be the main level data blob, for the automatic
+ // download counter to work.
+ // The metadata will also have a data blob associated, but this should be
+ // kept to a minimum, as UGC download menus will probably want to download
+ // metadata for a lot of UGCs at once.
+ // NOTE: if a level has been uploaded with main data before, and the creator
+ // wants to just modify the metadata, they can upload the metadata with the
+ // main data blob being NULL.
+ // NOTE: If a creator uploads a data blob again, it will overwrite the previous
+ // stored blob with the new one.
+ //************************************
+ HRESULT SenUGCUploadMainDataBlob(
+ int userIndex,
+ SenUGCID ugcID,
+ int mainDataBlobIndex,
+ const void* mainDataBlob,
+ const size_t mainDataBlobSize,
+ SenSysCompletedCallback userCallback,
+ void* userCallbackData,
+ SenUGCProgressInfo* out_progressInfo);
+
+ //************************************
+ // Method: SenUGCDelete
+ // FullName: Sentient::SenUGCDelete
+ // Access: public
+ // Returns: HRESULT
+ // Qualifier:
+ // Parameter: int userIndex
+ // Parameter: SenUGCID ugcID
+ // Parameter: SenSysCompletedCallback userCallback
+ // Parameter: void * userCallbackData
+ // Delete the UGC - only the user that created the UGC can delete it.
+ //************************************
+ HRESULT SenUGCDelete(
+ int userIndex,
+ SenUGCID ugcID,
+ SenSysCompletedCallback userCallback,
+ void* userCallbackData );
+
+ /*************************************
+ ***** UGC Consumption Functions *****
+ *************************************/
+
+ //************************************
+ // Method: SenUGCEnumerate
+ // FullName: Sentient::SenUGCEnumerate
+ // Access: public
+ // Returns: HRESULT
+ // Qualifier:
+ // Parameter: int userIndex
+ // Parameter: SenSysTitleID titleID
+ // Parameter: SenUGCSortBy sortBy
+ // Parameter: SenUGCType type
+ // Parameter: SenUGCAuthorType authorType
+ // Parameter: int nrAuthors
+ // Parameter: const XUID * authorList
+ // Parameter: SenUGCMetaDataFlags metaDataFlagFilter
+ // Parameter: SenUGCPublishState minPublishStateFilter
+ // Parameter: SenUGCPublishState maxPublishStateFilter
+ // Parameter: SenSysDateTime newerThan
+ // Parameter: SenUGCDescriptor descriptor
+ // Parameter: int maxNrResults
+ // Parameter: SenUGCSearchResult * outBuffer
+ // Parameter: unsigned int * outNrResults
+ // Parameter: SenSysCompletedCallback userCallback
+ // Parameter: void * userCallbackData
+ // Search the database for all the UGCs that match various search criteria.
+ // outBuffer should be an preallocated array of [sizeof(SenUGCSearchResult)*maxNrResults] bytes.
+ //************************************
+ HRESULT SenUGCEnumerate(
+ int userIndex,
+ SenSysTitleID titleID,
+ SenUGCSortBy sortBy,
+ SenUGCType type,
+ SenUGCAuthorType authorType,
+ int nrAuthors,
+ const PlayerUID *authorList,
+ SenUGCMetaDataFlags metaDataFlagFilter,
+ SYSTEMTIME *newerThan,
+ SenUGCDescriptor descriptor,
+ int maxNrResults,
+ SenUGCSearchResult *outBuffer,
+ UINT *outNrResults,
+ SenSysCompletedCallback userCallback,
+ void* userCallbackData );
+
+
+ /// @brief public
+ ///
+ /// @param[in] userIndex
+ /// @param[in] titleID
+ /// @param[in] sortBy
+ /// @param[in] type
+ /// @param[in] authorType
+ /// @param[in] nrAuthors
+ /// @param[in] authorList
+ /// @param[in] metaDataFlagFilter
+ /// @param[in] newerThan
+ /// @param[in] nrDescriptors
+ /// @param[in] descriptors
+ /// @param[in] maxNrResults
+ /// @param[out] outBuffer
+ /// @param[out] outNrResults
+ /// @param[in] userCallback
+ /// @param[in] userCallbackData
+ ///
+ /// @return Search the database for all the UGCs that match various search criteria.
+ /// outBuffer should be an preallocated array of [sizeof(SenUGCSearchResult)*maxNrResults] bytes.
+ ///
+ /// @details Enumerate by name will perform a look based on a various search criteria. The Collection
+ /// of descriptors will perform an equality lookup on Descriptor
+ ///
+ /// @related SenUGCEnumerate
+ HRESULT SenUGCEnumerate(
+ int userIndex,
+ SenSysTitleID titleID,
+ SenUGCSortBy sortBy,
+ SenUGCType type,
+ SenUGCAuthorType authorType,
+ int nrAuthors,
+ const PlayerUID *authorList,
+ SenUGCMetaDataFlags metaDataFlagFilter,
+ SYSTEMTIME *newerThan,
+ int nrDescriptors,
+ INT64 *descriptors,
+ int maxNrResults,
+ SenUGCSearchResult *outBuffer,
+ UINT *outNrResults,
+ SenSysCompletedCallback userCallback,
+ void* userCallbackData );
+
+ /// @brief public
+ ///
+ /// @param[in] userIndex
+ /// @param[in] titleID
+ /// @param[in] sortBy
+ /// @param[in] type
+ /// @param[in] authorType
+ /// @param[in] nrAuthors
+ /// @param[in] authorList
+ /// @param[in] metaDataFlagFilter
+ /// @param[in] newerThan
+ /// @param[in] nrDescriptors
+ /// @param[in] descriptors
+ /// @param[in] maxNrResults
+ /// @param[out] outBuffer
+ /// @param[out] outNrResults
+ /// @param[in] userCallback
+ /// @param[in] userCallbackData
+ ///
+ /// @return Search the database for all the UGCs that match various search criteria.
+ /// outBuffer should be an preallocated array of [sizeof(SenUGCSearchResult)*maxNrResults] bytes.
+ ///
+ /// @details Enumerate by Descriptor using a Logical And against all submitted Descriptor values.
+ /// The API filters the results on a specific UGC Type as well as an author
+ /// list type. Author List type of Everyone is NOT supported.
+ /// Note: The collection of descriptor bit masks is constrained to four.
+ ///
+ /// @related SenUGCEnumerate
+ HRESULT SenUGCEnumerateByDescriptorWithLogicalAnd(
+ int userIndex,
+ SenSysTitleID titleID,
+ SenUGCSortBy sortBy,
+ SenUGCType type,
+ SenUGCAuthorType authorType,
+ int nrAuthors,
+ const PlayerUID *authorList,
+ SenUGCMetaDataFlags metaDataFlagFilter,
+ SYSTEMTIME *newerThan,
+ int nrDescriptors,
+ INT64 *descriptors,
+ int maxNrResults,
+ SenUGCSearchResult *outBuffer,
+ UINT *outNrResults,
+ SenSysCompletedCallback userCallback,
+ void* userCallbackData );
+
+ /// @brief public
+ ///
+ /// @param[in] userIndex
+ /// @param[in] titleID
+ /// @param[in] type
+ /// @param[in] authorType
+ /// @param[in] nrAuthors
+ /// @param[in] authorList
+ /// @param[in] name
+ /// @param[in] maxNrResults
+ /// @param[out] outBuffer
+ /// @param[out] outNrResults
+ /// @param[in] userCallback
+ /// @param[in] userCallbackData
+ ///
+ /// @return Search the database for all the UGCs that match various search criteria.
+ /// outBuffer should be an preallocated array of [sizeof(SenUGCSearchResult)*maxNrResults] bytes.
+ ///
+ /// @details Enumerate by name will perform a wild card lookup on UGC name. The lookup will return anything
+ /// in the range of "%%". The API filters the results on a specific UGC Type as well as an author
+ /// list type. Author List type of Everyone is NOT supported.
+ ///
+ /// @related SenUGCEnumerate
+ __declspec(deprecated("Use SenUGCEnumerateByName() instead"))
+ HRESULT SenUGCEnumerate(
+ int userIndex,
+ SenSysTitleID titleID,
+ SenUGCType type,
+ SenUGCAuthorType authorType,
+ int nrAuthors,
+ const PlayerUID *authorList,
+ const wchar_t *name,
+ int maxNrResults,
+ SenUGCSearchResult *outBuffer,
+ UINT *outNrResults,
+ SenSysCompletedCallback userCallback,
+ void* userCallbackData );
+
+ /// @brief public
+ ///
+ /// @param[in] userIndex
+ /// @param[in] titleID
+ /// @param[in] type
+ /// @param[in] authorType
+ /// @param[in] nrAuthors
+ /// @param[in] authorList
+ /// @param[in] name
+ /// @param[in] performWildCardLookup
+ /// @param[in] maxNrResults
+ /// @param[out] outBuffer
+ /// @param[out] outNrResults
+ /// @param[in] userCallback
+ /// @param[in] userCallbackData
+ ///
+ /// @return Search the database for all the UGCs that match various search criteria.
+ /// outBuffer should be an preallocated array of [sizeof(SenUGCSearchResult)*maxNrResults] bytes.
+ ///
+ /// @details Enumerate by name will perform an exact or wild card string lookup on UGC name. The API filters the results
+ /// on a specific UGC Type as well as an author list type. Author List type of Everyone is NOT supported.
+ ///
+ /// @related SenUGCEnumerate
+ HRESULT SenUGCEnumerateByName(
+ int userIndex,
+ SenSysTitleID titleID,
+ SenUGCType type,
+ SenUGCAuthorType authorType,
+ int nrAuthors,
+ const PlayerUID *authorList,
+ const wchar_t *name,
+ bool performWildCardLookup,
+ int maxNrResults,
+ SenUGCSearchResult *outBuffer,
+ UINT *outNrResults,
+ SenSysCompletedCallback userCallback,
+ void* userCallbackData );
+
+ //************************************
+ // Method: SenUGCDownloadMetaData
+ // FullName: Sentient::SenUGCDownloadMetaData
+ // Access: public
+ // Returns: HRESULT
+ // Qualifier:
+ // Parameter: int userIndex
+ // Parameter: SenSysTitleID titleID
+ // Parameter: int nrUGCs
+ // Parameter: const SenUGCID * ugcIDList
+ // Parameter: SenUGCDownloadedMetaData2 * outBuffer
+ // Parameter: SenSysCompletedCallback userCallback
+ // Parameter: void * userCallbackData
+ // Download the metadata for an array of UGCs
+ // Note that the metadata structure is a superset of the uploaded metadata,
+ // with various other information exposed.
+ // outBuffer should be an preallocated array of [(sizeof(SenUGCDownloadedMetaData)+SenUGCMetaData::BlobSizeLimit)*nrUGCs] bytes.
+ // This new signature is compatible with resubmission feature and 64-bit UGC Ids.
+ //************************************
+ HRESULT SenUGCDownloadMetaData(
+ int userIndex,
+ SenSysTitleID titleID,
+ int nrUGCs,
+ const SenUGCID *ugcIDList,
+ SenUGCDownloadedMetaData2 *out_metaData,
+ size_t *out_metaDataCount,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ __declspec(deprecated("Use signature with SenUGCDownloadedMetaData2."))
+ HRESULT SenUGCDownloadMetaData(
+ int userIndex,
+ SenSysTitleID titleID,
+ int nrUGCs,
+ const SenUGCID *ugcIDList,
+ SenUGCDownloadedMetaData *out_metaData,
+ size_t *out_metaDataCount,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ //************************************
+ // Method: SenUGCDownloadMainDataBlob
+ // FullName: Sentient::SenUGCDownloadMainDataBlob
+ // Access: public
+ // Returns: HRESULT
+ // Qualifier:
+ // Parameter: int userIndex
+ // Parameter: SenUGCID ugcID
+ // Parameter: int mainDataBlobID
+ // Parameter: size_t bufferSize
+ // Parameter: UINT blobVersion
+ // Parameter: void * outBuffer
+ // Parameter: size_t * outSize
+ // Parameter: SenSysCompletedCallback userCallback
+ // Parameter: void * userCallbackData
+ // Download a single blob of UGC data
+ // note that zero byte downloads will fail.
+ // ID, blobVersion, and bufferSize should be coming
+ // from SenUGCDownloadedMetaData.
+ // outBuffer should be an preallocated array of bufferSize bytes.
+ //************************************
+ HRESULT SenUGCDownloadMainDataBlob(
+ int userIndex,
+ SenSysTitleID titleID,
+ SenUGCID ugcID,
+ UINT mainDataBlobIndex,
+ size_t bufferSize,
+ UINT blobVersion,
+ void *outBuffer,
+ size_t *outSize,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ __declspec(deprecated("Use signature with blobVersion."))
+ HRESULT SenUGCDownloadMainDataBlob(
+ int userIndex,
+ SenSysTitleID titleID,
+ SenUGCID ugcID,
+ int mainDataBlobIndex,
+ size_t bufferSize,
+ void *outBuffer,
+ size_t *outBytesReceived,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ //************************************
+ // Method: SenUGCDownloadMainDataBlob
+ // FullName: Sentient::SenUGCDownloadMainDataBlob
+ // Access: public
+ // Returns: HRESULT
+ // Qualifier:
+ // Parameter: int userIndex
+ // Parameter: SenUGCID ugcID
+ // Parameter: int mainDataBlobID
+ // Parameter: size_t bufferSize
+ // Parameter: UINT blobVersion
+ // Parameter: void * outBuffer
+ // Parameter: size_t * outBytesReceived
+ // Parameter: SenSysCompletedCallback userCallback
+ // Parameter: void * userCallbackData
+ // Download a single blob of UGC data
+ // NOTE: zero byte downloads will fail.
+ // ID, mainDataRevision and bufferSize should be coming from a
+ // SenUGCDownloadedMetaData2 (where bufferSize comes from
+ // SenUGCDownloadedMetaData2's BlobInfo[mainDataBlobID].Size).
+ // outBuffer should be an preallocated array of bufferSize bytes.
+ // This signature includes an out param to include the progress
+ // percentage and cancellation token, etc to monitor and abort
+ // long running downloads (can be wired up to UI for users).
+ // BlobVersion is the version of the blob you want to download,
+ // which is available on the metadata information for the
+ // main data blobs (via DownloadMetaData).
+ //************************************
+ HRESULT SenUGCDownloadMainDataBlob(
+ int userIndex,
+ SenSysTitleID titleID,
+ SenUGCID ugcID,
+ UINT mainDataBlobIndex,
+ size_t bufferSize,
+ UINT blobVersion,
+ void *outBuffer,
+ size_t *outBytesReceived,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData,
+ SenUGCProgressInfo* out_progressInfo);
+
+ __declspec(deprecated("Use signature with blobVersion."))
+ HRESULT SenUGCDownloadMainDataBlob(
+ int userIndex,
+ SenSysTitleID titleID,
+ SenUGCID ugcID,
+ int mainDataBlobIndex,
+ size_t bufferSize,
+ void *outBuffer,
+ size_t *outBytesReceived,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData,
+ SenUGCProgressInfo* out_progressInfo);
+
+ /**********************************************
+ ***** UGC Reviewing and Rating Functions *****
+ **********************************************/
+
+ //************************************
+ // Method: SenUGCSetReviewScore
+ // FullName: Sentient::SenUGCSetReviewScore
+ // Access: public
+ // Returns: HRESULT
+ // Qualifier:
+ // Parameter: int userIndex
+ // Parameter: SenUGCID ugcId
+ // Parameter: SenUGCReviewScoreType type
+ // Parameter: UINT score
+ // Parameter: bool isFavorite
+ // Parameter: SenSysCompletedCallback callback
+ // Parameter: void * callbackData
+ //************************************
+ HRESULT SenUGCSetReviewScore(
+ int userIndex,
+ SenUGCID ugcId,
+ SenUGCReviewScoreType type,
+ unsigned int score,
+ bool isFavorite,
+ SenSysCompletedCallback callback,
+ void *callbackData );
+
+ //************************************
+ // Method: SenUGCGetReviewScore
+ // FullName: Sentient::SenUGCGetReviewScore
+ // Access: public
+ // Returns: HRESULT
+ // Qualifier:
+ // Parameter: int userIndex
+ // Parameter: SenUGCID ugcId
+ // Parameter: SenUGCReviewScoreType type
+ // Parameter: UINT * out_score
+ // Parameter: SenSysCompletedCallback callback
+ // Parameter: void * callbackData
+ //************************************
+ HRESULT SenUGCGetReviewScore(
+ int userIndex,
+ SenUGCID ugcId,
+ SenUGCReviewScoreType type,
+ unsigned int *out_score,
+ SenSysCompletedCallback callback,
+ void *callbackData );
+
+ //************************************
+ // Method: SenUGCSetFavoriteFlag
+ // FullName: Sentient::SenUGCSetFavoriteFlag
+ // Access: public
+ // Returns: HRESULT
+ // Qualifier:
+ // Parameter: int userIndex
+ // Parameter: SenSysTitleID titleID
+ // Parameter: SenUGCID ugcID
+ // Parameter: bool isFavorite
+ // Parameter: SenSysCompletedCallback userCallback
+ // Parameter: void * userCallbackData
+ // Users can flag the UGCs that they really like, which can be used for
+ // the search results
+ //************************************
+ HRESULT SenUGCSetFavoriteFlag(
+ int userIndex,
+ SenSysTitleID titleID,
+ SenUGCID ugcID,
+ BOOL isFavorite,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ //************************************
+ // Method: SenUGCGetFavoriteFlag
+ // FullName: Sentient::SenUGCGetFavoriteFlag
+ // Access: public
+ // Returns: HRESULT
+ // Qualifier:
+ // Parameter: int userIndex
+ // Parameter: SenSysTitleID titleID
+ // Parameter: SenUGCID ugcID
+ // Parameter: BOOL * outResult
+ // Parameter: SenSysCompletedCallback userCallback
+ // Parameter: void * userCallbackData
+ // Users can flag the UGCs that they really like, which can be used for
+ // the search results
+ //************************************
+ HRESULT SenUGCGetFavoriteFlag(
+ int userIndex,
+ SenSysTitleID titleID,
+ SenUGCID ugcID,
+ BOOL *outResult,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ //************************************
+ // Method: SenUGCGetFriendFavoriteCount
+ // FullName: Sentient::SenUGCGetFriendFavoriteCount
+ // Access: public
+ // Returns: HRESULT
+ // Qualifier:
+ // Parameter: int userIndex
+ // Parameter: SenSysTitleID titleID
+ // Parameter: SenUGCID ugcID
+ // Parameter: int * outResult
+ // Parameter: SenSysCompletedCallback userCallback
+ // Parameter: void * userCallbackData
+ // Find out how many friends of the user have flagged this UGC as
+ // a favorite (inclusive the user's favorite flag also)
+ //************************************
+ HRESULT SenUGCGetFriendFavoriteCount(
+ int userIndex,
+ SenSysTitleID titleID,
+ SenUGCID ugcID,
+ int *outResult,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ //************************************
+ // Method: SenUGCAddToCustomCounters
+ // FullName: Sentient::SenUGCAddToCustomCounters
+ // Access: public
+ // Returns: HRESULT
+ // Qualifier:
+ // Parameter: int userIndex
+ // Parameter: SenSysTitleID titleID
+ // Parameter: SenUGCID ugcID
+ // Parameter: INT64 customCounters[SenUGCDownloadedMetaData_NrCustomCounters]
+ // Parameter: SenSysCompletedCallback userCallback
+ // Parameter: void * userCallbackData
+ // Users can add to a fixed number of global counters stored on the
+ // servers, to count up a few basic stats per UGC (number of deaths,
+ // number of enemies killed, total playtime etc.)
+ //************************************
+ HRESULT SenUGCAddToCustomCounters(
+ int userIndex,
+ SenSysTitleID titleID,
+ SenUGCID ugcID,
+ INT64 customCounters[SenUGCDownloadedMetaData_NrCustomCounters],
+ SenSysCompletedCallback userCallback,
+ void* userCallbackData );
+
+ /// @brief API to flag a given piece of UGC as offensive.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console.
+ /// Note: This is NOT a XUID.
+ ///
+ /// @param[in] ugcID
+ /// The unique ID for an instance of UGC.
+ ///
+ /// @param[in] offensivenessFlag
+ /// Offensive flag type.
+ ///
+ /// @param[in] reason
+ /// Reason for marking a given piece of UGC as offensive.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code,
+ /// the userCallback will be called at the end of the
+ /// asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
+ /// Specific values include:
+ ///
+ /// @details Users can flag a level that they think is offensive. The goal is that
+ /// the Sentient system will automatically be able to take down
+ /// levels after enough people have flagged a UGC as bad.
+ /// The number of votes to take something down will depend on the
+ /// reliability of the reviewers (number of offensiveness flags vs number of
+ /// downloads etc.) as well as the number of offensive uploads by the creator.
+ /// This function is also used by moderators to confirm or deny something as
+ /// being offensive.
+ ///
+ /// @related
+ HRESULT SenUGCSetOffensivenessFlag(
+ int userIndex,
+ SenUGCID ugcID,
+ SenUGCOffensivenessFlag offensivenessFlag,
+ const wchar_t *reason,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ /// @brief This function will return whether or not a particular
+ /// piece of UGC has been banned.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console.
+ /// Note: This is NOT a XUID.
+ ///
+ /// @param[in] The unique ID for UGC.
+ ///
+ /// @param[in] True if content is banned (and should not be viewed by user).
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code,
+ /// the userCallback will be called at the end of the
+ /// asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
+ /// Specific values include:
+ ///
+ /// @details Any piece of UGC can been banned by a moderator or
+ /// moderation engine. This API allows clients to verify
+ /// if a given piece of UGC has been banned.
+ ///
+ /// @related SenUGCCreatePublishingUGCID()
+ /// @related SenUGCSetOffensivenessFlag()
+ /// @related SenUGCPublish()
+ HRESULT SenUGCIsBanned(
+ int userIndex,
+ SenUGCID ugcID,
+ BOOL *out_result,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ /*********************
+ ***** UGC Feeds *****
+ *********************/
+
+ /// @brief UGC Feed information
+ ///
+ /// @details When enumerating feeds, these are the available feeds that can be retrieved.
+ ///
+ struct SenUGCFeedInfo
+ {
+ SenUGCFeedType feedType;
+ wchar_t Name[32];
+ wchar_t Description[128];
+ };
+
+ /// @brief Retrieves a specific feed based on feedtype.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console.
+ /// Note: This is NOT a XUID.
+ ///`
+ /// @param[in] titleID
+ ///
+ /// @param[in] feedType
+ /// Feed Type identifier for for the given feed being retrieved.
+ ///
+ /// @param[in] maxNumberOfFeedItems
+ /// Used to indicate the number of items to be returned by @a out_feedInfo.
+ /// If the actual number of items exceeds this, you will receive an error.
+ ///
+ /// @param[out] out_buffer
+ /// Pointer to the collection of structures to fill with SenUGCFeedItem data.
+ ///
+ /// @param[out] out_buffersize
+ /// The number of entries actually enumerated by the call.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code,
+ /// the userCallback will be called at the end of the
+ /// asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
+ /// Specific values include:
+ /// E_POINTER: out_buffer or out_buffersize are null.
+ ///
+ /// @details
+ ///
+ /// @related SenUGCEnumerateFeeds()
+ HRESULT SenUGCGetFeed(
+ int userIndex,
+ SenSysTitleID titleID,
+ SenUGCFeedType feedType,
+ size_t maxNumberOfFeedItems,
+ SenUGCFeedItem *out_buffer,
+ UINT *out_buffersize,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ /// @brief Retrieves a collection of feeds that are viewable by the
+ /// current user.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console.
+ /// Note: This is NOT a XUID.
+ ///
+ /// @param[in] culture
+ /// This is the result of a call to SenCultureFind() or SenCultureGet*().
+ /// You may also pass NULL to use the culture set with SenCultureSetCurrent().
+ /// May be NULL for default culture.
+ ///
+ /// @param[in] maxResults
+ /// Used to indicate the number of items to be returned by @a out_feedInfo.
+ /// If the actual number of items exceeds this, you will receive an error.
+ ///
+ /// @param[out] out_feedInfo
+ /// Pointer to a collection of structures to fill with SenUGCFeedInfo data.
+ ///
+ /// @param[out] out_resultCount
+ /// The number of entries actually enumerated by the call.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code,
+ /// the userCallback will be called at the end of the
+ /// asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
+ /// Specific values include:
+ /// E_POINTER: out_feedInfo or out_resultCount are null.
+ ///
+ /// @details
+ ///
+ /// @related SenUGCGetFeed()
+ HRESULT SenUGCEnumerateFeeds(
+ int userIndex,
+ size_t maxResults,
+ SenUGCFeedInfo *out_feedInfo,
+ size_t *out_resultCount,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData);
+
+ /// @brief API that publishes UGC and makes the content accessible
+ /// to everyone on the Sentient service.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console.
+ /// Note: This is NOT a XUID.
+ ///
+ /// @param[in] ugcID
+ /// The unique ID for an instance of UGC.
+ ///
+ /// @param[in] leaderboardDefinition
+ /// Optional parameter. Definition for a Leaderboard that
+ /// will be created and associated to newly published UGC.
+ ///
+ /// @param[out] out_leaderboardId
+ /// Created Leaderboard Id. Only returned to the client if
+ /// a Leaderboards Definition is passed to the server.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code,
+ /// the userCallback will be called at the end of the
+ /// asynchronous process.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
+ /// Specific values include:
+ ///
+ /// @details UGC is only accessible to the author until it has been published.
+ /// The user making the call must be the author of the UGC item.
+ /// The call will fail if this UGC item has previously been published.
+ /// By supplying an optional Leaderboard definition a Leaderboard is automatically
+ // allocated and associated with the UGC item.
+ /// This is the preferred way of creating UGC Leaderboards.
+ ///
+ /// @related SenCreateLeaderboard()
+ HRESULT SenUGCPublish(
+ int userIndex,
+ SenUGCID ugcID,
+ const SenLeaderboardDefinition *leaderboardDefinition,
+ SenLeaderboardId *out_leaderboardId,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData);
+
+ /// @brief API that publishes a new version of a UGC item and makes the revised content accessible
+ /// to everyone on the Sentient service.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console.
+ /// Note: This is NOT a XUID.
+ ///
+ /// @param[in] ugcID
+ /// The unique ID for an instance of UGC.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code,
+ /// the userCallback will be called at the end of the
+ /// asynchronous process.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
+ /// Specific values include:
+ ///
+ /// @details New versions of UGC are only accessible to the author until it has been republished.
+ /// The user making the call must be the author of the UGC item.
+ ///
+ /// @related SenUGCPublish()
+ HRESULT SenUGCRepublish(
+ int userIndex,
+ SenUGCID ugcID,
+ SenSysCompletedCallback userCallback,
+ void* userCallbackData);
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientUGCLeaderboards.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientUGCLeaderboards.h
new file mode 100644
index 00000000..847e5101
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientUGCLeaderboards.h
@@ -0,0 +1,397 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client UGC Leaderboard API
+//
+// Include this to get access to all UGC Leaderboard features
+
+#pragma once
+
+#include "SenClientUGCTypes.h"
+
+#include "SenClientSys.h"
+
+
+namespace Sentient
+{
+ // This system does not rely on existing XBox Leaderboards, but runs completely in parallel.
+
+ /********************************************
+ ***** Leaderboard Creation Functions *****
+ ********************************************/
+
+ /// @brief Creates a dynamic Leaderboard based on a given definition.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console.
+ /// Note: This is NOT a XUID.
+ ///
+ /// @param[in] definition
+ /// Leaderboard definition that describes the behavior for the to be created Leaderboard.
+ ///
+ /// @param[in] metadataBlob
+ /// Binary metadata blob that is associated to the created Leaderboard.
+ /// Can be used to store information about the Leaderboard being created.
+ /// This information can be re-uploaded at any time.
+ ///
+ /// @param[in] metadataBlobSize
+ /// Used to indelicate the size of the buffer pointed to by @a metadataBlob.
+ ///
+ /// @param[out] out_leaderboardId
+ /// The Leaderboard Id that has been created by the service.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code,
+ /// the userCallback will be called at the end of the
+ /// asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
+ /// Specific values include:
+ ///
+ /// @details Creates a new Leaderboard based on the supplied Leaderboard Definition.
+ ///
+ /// @related SenCreateLeaderboard()
+ HRESULT SenCreateLeaderboard(
+ int userIndex,
+ const SenLeaderboardDefinition &definition,
+ const void *metadataBlob,
+ size_t metadataBlobSize,
+ SenLeaderboardId *out_leaderboardId,
+ SenSysCompletedCallback callback,
+ void *callbackData );
+
+ /********************************************
+ ***** Leaderboard Set Score Functions *****
+ ********************************************/
+
+ /// @brief Set a specific Leaderboard entry value.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console.
+ /// Note: This is NOT a XUID.
+ ///
+ /// @param[in] leaderboardId
+ /// Leaderboard Id to set a value on.
+ ///
+ /// @param[in] value
+ /// Value of the Leaderboard entry.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code,
+ /// the userCallback will be called at the end of the
+ /// asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
+ /// Specific values include:
+ ///
+ /// @details The Leaderboard entry value will be set for the given Leaderboard.
+ /// The actor or owner of the value will be the XUID of user
+ /// logged in at the specified index.
+ ///
+ /// @related SenSetUserLeaderboardValue()
+ __declspec(deprecated("This function is deprecated, and should not be used"))
+ HRESULT SenSetUserLeaderboardValue(
+ int userIndex,
+ SenLeaderboardId leaderboardId,
+ SenLeaderboardEntryValue value,
+ SenSysCompletedCallback callback,
+ void *callbackData );
+
+ HRESULT SenSetUserLeaderboardValue(
+ int userIndex,
+ SenLeaderboardId leaderboardId,
+ SenLeaderboardEntryValue value,
+ LONGLONG descriptor,
+ SenSysCompletedCallback callback,
+ void *callbackData );
+
+ /// @brief Set a specific Leaderboard entry value and metadata.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console.
+ /// Note: This is NOT a XUID.
+ ///
+ /// @param[in] leaderboardId
+ /// Leaderboard Id to set a value on.
+ ///
+ /// @param[in] value
+ /// Value of the Leaderboard entry.
+ ///
+ /// @param[in] metadataBlob
+ /// Binary metadata blob that is associated to the created Leaderboard Entry.
+ /// Can be used to store information about the Leaderboard Entry being created.
+ /// This information can be re-uploaded at any time.
+ ///
+ /// @param[in] metadataBlobSize
+ /// Used to indicate the size of the buffer pointed to by @a metadataBlob.
+ /// If the actual size of the data exceeds this, you will receive an error.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code,
+ /// the userCallback will be called at the end of the
+ /// asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
+ /// Specific values include:
+ ///
+ /// @details The Leaderboard entry value will be set for the given Leaderboard.
+ /// The actor or owner of the value will be the XUID of user
+ /// logged in at the specified index.
+ ///
+ /// @related SenSetUserLeaderboardValue()
+ __declspec(deprecated("This function is deprecated, and should not be used"))
+ HRESULT SenSetUserLeaderboardValue(
+ int userIndex,
+ SenLeaderboardId leaderboardId,
+ SenLeaderboardEntryValue value,
+ const void *metadataBlob,
+ size_t metadataBlobSize,
+ SenSysCompletedCallback callback,
+ void *callbackData );
+
+ HRESULT SenSetUserLeaderboardValue(
+ int userIndex,
+ SenLeaderboardId leaderboardId,
+ SenLeaderboardEntryValue value,
+ LONGLONG descriptor,
+ const void *metadataBlob,
+ size_t metadataBlobSize,
+ SenSysCompletedCallback callback,
+ void *callbackData );
+
+ /********************************************
+ ***** Leaderboard Retrieval Functions *****
+ ********************************************/
+
+ /*For documentation: the output structure contains a pointer to a buffer that is allocated by Sentient (specifically the transport layer). The pointer is only valid during the callback. If title developers want to hold on to the metadata they'll need to copy the data into a buffer of their own before execution leaves the completion callback.
+ It's definitely an ugly pattern which is why we strongly prefer to avoid it (and use title-allocated buffers), but I don't see a way round it in this case.*/
+
+ /// @brief Retrieves a single Leaderboard Entry.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console.
+ /// Note: This is NOT a XUID.
+ ///
+ /// @param[in] leaderboardId
+ /// Leaderboard Id where the entry being retrieved is stored.
+ ///
+ /// @param[in] leaderboardFlag
+ /// Flag for determining how Leaderboard specific Metadata should be retrieved.
+ ///
+ /// @param[in] entryFlag
+ /// Flag for determining how Leaderboard Entry specific Metadata should be retrieved.
+ ///
+ /// @param[out] out_leaderboardEntry
+ /// Leaderboard Entry being retrieved.
+ ///
+ /// @param[in] maxLeaderboardMetadataBlobSize
+ /// Used to indicate the size of the buffer pointed to by @a out_leaderboardMetadataBlob.
+ /// If the actual size of the data exceeds this, you will receive an error.
+ ///
+ /// @param[out] out_leaderboardMetadataBlob
+ /// Metadata buffer associated to the Leaderboard.
+ ///
+ /// @param[out] out_leaderboardMetadataBlobSize
+ /// Used to return the actual size of the Leaderboard Metadata being returned.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code,
+ /// the userCallback will be called at the end of the
+ /// asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
+ /// Specific values include:
+ ///
+ /// @details Retrieves a single Leaderboard Entry.
+ /// The actor or owner of the value will be the XUID of user
+ /// logged in at the specified index.
+ ///
+ /// @related SenGetLeaderboardEntry()
+ HRESULT SenGetLeaderboardEntry(
+ int userIndex,
+ SenLeaderboardId leaderboardId,
+ SenLeaderboardMetadataFlag leaderboardFlag,
+ SenLeaderboardMetadataFlag entryFlag,
+ SenLeaderboardEntry *out_leaderboardEntry,
+ size_t maxLeaderboardMetadataBlobSize, // LB
+ void *out_leaderboardMetadataBlob, // LB
+ size_t *out_leaderboardMetadataBlobSize, // LB
+ SenSysCompletedCallback callback,
+ void *callbackData );
+
+ /// @brief Retrieves a single Leaderboard Entry for any given actor (XUID).
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console.
+ /// Note: This is NOT a XUID.
+ ///
+ /// @param[in] actorId
+ /// Actor Id for the Leaderboard Entry being retrieved.
+ ///
+ /// @param[in] leaderboardId
+ /// Leaderboard Id where the entry being retrieved is stored.
+ ///
+ /// @param[in] leaderboardFlag
+ /// Flag for determining how Leaderboard specific Metadata should be retrieved.
+ ///
+ /// @param[in] entryFlag
+ /// Flag for determining how Leaderboard Entry specific Metadata should be retrieved.
+ ///
+ /// @param[out] out_leaderboardEntry
+ /// Leaderboard Entry being retrieved.
+ ///
+ /// @param[in] maxLeaderboardMetadataBlobSize
+ /// Used to indicate the size of the buffer pointed to by @a out_leaderboardMetadataBlob.
+ /// If the actual size of the data exceeds this, you will receive an error.
+ ///
+ /// @param[out] out_leaderboardMetadataBlob
+ /// Metadata buffer associated to the Leaderboard.
+ ///
+ /// @param[out] out_leaderboardMetadataBlobSize
+ /// Used to return the actual size of the Leaderboard Metadata being returned.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code,
+ /// the userCallback will be called at the end of the
+ /// asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
+ /// Specific values include:
+ ///
+ /// @details Retrieves a single Leaderboard Entry for a given actor.
+ ///
+ /// @related SenGetLeaderboardEntry()
+ HRESULT SenGetLeaderboardEntry(
+ int userIndex,
+ SenLeaderboardActorId actorId,
+ SenLeaderboardId leaderboardId,
+ SenLeaderboardMetadataFlag leaderboardFlag,
+ SenLeaderboardMetadataFlag entryFlag,
+ SenLeaderboardEntry *out_leaderboardEntry,
+ size_t maxLeaderboardMetadataBlobSize, // LB
+ void *out_leaderboardMetadataBlob, // LB
+ size_t *out_leaderboardMetadataBlobSize, // LB
+ SenSysCompletedCallback callback,
+ void *callbackData );
+
+
+ /// @brief Retrieve a specific Leaderboard that is ranked by Xbox Live Friends.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console.
+ /// Note: This is NOT a XUID.
+ ///
+ /// @param[in] leaderboardId
+ /// Leaderboard Id where the entry being retrieved is stored.
+ ///
+ /// @param[in] leaderboardFlag
+ /// Flag for determining how Leaderboard specific Metadata should be retrieved.
+ ///
+ /// @param[in] entryFlag
+ /// Flag for determining how Leaderboard Entry specific Metadata should be retrieved.
+ ///
+ /// @param[in] maxLeaderboardEntries
+ /// Used to indicate the number of Leaderboard Entries to be returned by @a out_leaderboardEntries.
+ /// If the actual number of items exceeds this, you will receive an error.
+ ///
+ /// @param[out] out_leaderboardEntries
+ /// Collection of Leaderboard Entries being retrieved.
+ ///
+ /// @param[out] out_leaderboardEntriesSize
+ /// Actual size of the returned Leaderboard Entry collection.
+ ///
+ /// @param[in] maxLeaderboardMetadataBlobSize
+ /// Used to indicate the size of the buffer pointed to by @a out_leaderboardMetadataBlob.
+ /// If the actual size of the data exceeds this, you will receive an error.
+ ///
+ /// @param[out] out_leaderboardMetadataBlob
+ /// Metadata buffer associated to the Leaderboard.
+ ///
+ /// @param[out] out_leaderboardMetadataBlobSize
+ /// Used to return the actual size of the Leaderboard Metadata being returned.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code,
+ /// the userCallback will be called at the end of the
+ /// asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
+ /// Specific values include:
+ ///
+ /// @details Returns a ranked Leaderboard.
+ HRESULT SenGetLeaderboardFriends(
+ int userIndex,
+ SenLeaderboardId leaderboardId,
+ SenLeaderboardMetadataFlag leaderboardFlag,
+ SenLeaderboardMetadataFlag entryFlag,
+ size_t maxLeaderboardEntries,
+ SenLeaderboardEntry *out_leaderboardEntries,
+ size_t *out_leaderboardEntriesSize,
+ size_t maxLeaderboardMetadataBlobSize, // LB
+ void *out_leaderboardMetadataBlob, // LB
+ size_t *out_leaderboardMetadataBlobSize, // LB
+ SenSysCompletedCallback callback,
+ void *callbackData );
+
+ /// @brief Retrieve a specific Leaderboard that is ranked by the top Leaderboard Entries.
+ ///
+ /// @param[in] userIndex
+ /// The index of the initiating user on the console.
+ /// Note: This is NOT a XUID.
+ ///
+ /// @param[in] leaderboardId
+ /// Leaderboard Id where the entry being retrieved is stored.
+ ///
+ /// @param[in] maxLeaderboardEntries
+ /// Used to indicate the number of Leaderboard Entries to be returned by @a out_leaderboardEntries.
+ /// If the actual number of items exceeds this, you will receive an error.
+ ///
+ /// @param[out] out_leaderboardEntries
+ /// Collection of Leaderboard Entries being retrieved.
+ ///
+ /// @param[out] out_leaderboardEntriesSize
+ /// Actual size of the returned Leaderboard Entry collection.
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code,
+ /// the userCallback will be called at the end of the
+ /// asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success.
+ /// Specific values include:
+ ///
+ /// @details Returns a ranked Leaderboard of all the top Leaderboard Entries.
+ HRESULT SenGetLeaderboardTop(
+ int userIndex,
+ SenLeaderboardId leaderboardId,
+ size_t maxLeaderboardEntries,
+ SenLeaderboardEntry *out_leaderboardEntries,
+ size_t *out_leaderboardEntriesSize,
+ SenSysCompletedCallback callback,
+ void *callbackData );
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientUGCTypes.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientUGCTypes.h
new file mode 100644
index 00000000..6d1056ff
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientUGCTypes.h
@@ -0,0 +1,259 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client UGC Types
+//
+// Include this to get access to all Sentient UGC Types.
+
+#pragma once
+
+#include "SenClientTypes.h"
+
+
+namespace Sentient
+{
+ //****** UGC Creation
+ typedef int SenUGCFeedID;
+
+ enum SenUGCPublishState
+ {
+ SenUGCPublishState_Deleted = 0x00,
+ SenUGCPublishState_Banned = 0x01,
+ SenUGCPublishState_Unpublished = 0x10,
+ SenUGCPublishState_Published = 0x30,
+ SenUGCPublishState_PendingModeratorReview = 0x31
+ };
+
+ enum SenUGCType
+ {
+ SenUGCType_Movie = 0,
+ SenUGCType_Audio,
+ SenUGCType_Image,
+ SenUGCType_FirstCustom = 0x20
+ };
+
+ enum SenUGCDescriptor
+ {
+ SenUGCDescriptor_Illegal = 0xffff,
+ SenUGCDescriptor_None = 0x0000,
+ SenUGCDescriptor_FirstCustom = 0x0100,
+ };
+
+ typedef unsigned int SenUGCMetaDataFlags;
+ enum
+ {
+ SenUGCMetaDataFlags_NoFlags = 0x00000000,
+ SenUGCMetaDataFlags_FriendsCanEdit = 0x00000001,
+ SenUGCMetaDataFlags_EveryoneCanEdit = 0x00000002,
+ SenUGCMetaDataFlags_Reserved1 = 0x00000004,
+ SenUGCMetaDataFlags_Reserved2 = 0x00000008,
+ SenUGCMetaDataFlags_Reserved3 = 0x00000010,
+ SenUGCMetaDataFlags_Reserved4 = 0x00000020,
+ SenUGCMetaDataFlags_Reserved5 = 0x00000040,
+ SenUGCMetaDataFlags_Reserved6 = 0x00000080,
+ SenUGCMetaDataFlags_FirstCustom = 0X00000100
+ };
+
+ typedef ULONGLONG SenLeaderboardId;
+
+ struct SenUGCMetaData
+ {
+ SenUGCMetaData()
+ {
+#pragma warning ( disable : 4996 ) // @TODO - Removed once Int16 Descriptors are deprecated
+ memset(descriptors, 0, sizeof(SenUGCDescriptor) * NrUgcDescriptors);
+#pragma warning ( default : 4996 )
+ memset(descriptors2, 0, sizeof(__int64) * NrUgcDescriptors);
+ }
+
+ SenUGCID parentID;
+
+ SenUGCType type;
+ SenUGCMetaDataFlags flags;
+
+ static const int NameLength = 64;
+ wchar_t name[NameLength];
+ static const int ShortNameLength = 12;
+ wchar_t shortName[ShortNameLength];
+
+ static const int NrUgcDescriptors = 4;
+
+ __declspec(deprecated("Descriptors have increased in size (from Int16 to Int64). Please Use descriptors2 instead"))
+ SenUGCDescriptor descriptors[NrUgcDescriptors];
+ __int64 descriptors2[NrUgcDescriptors];
+
+ static const int BlobSizeLimit = 1024;
+ size_t metaDataBlobSize;
+ void* metaDataBlob;
+ };
+
+ const int SenUGCMainData_NrBlobs = 4;
+
+ struct SenUGCSearchResult
+ {
+ PlayerUID author;
+ SenUGCID ID;
+ int revision;
+ };
+
+#define SenUGCDownloadedMetaData_NrCustomCounters 4
+
+ // This structure contains the original uploaded metadata plus any stats gathered from the UGC server
+ struct SenUGCDownloadedMetaData
+ {
+ PlayerUID author;
+ SenUGCMetaData base;
+ SenUGCID ID;
+ SYSTEMTIME authorTime;
+ int revision;
+
+ SenUGCPublishState publishState;
+
+ int averageReviewScore;
+ int nrReviews;
+ int nrFavoriteFlags;
+ INT64 customCounters[SenUGCDownloadedMetaData_NrCustomCounters];
+ int nrDownloads; //automatically counts how many times MainDataBlob 0 has been downloaded
+ size_t mainDataSizes[SenUGCMainData_NrBlobs];
+ SenLeaderboardId leaderboardId;
+ };
+
+ struct SenUGCBlobMetaData
+ {
+ size_t Size;
+ UINT Version;
+ };
+
+ struct SenUGCStatsMetaData
+ {
+ UINT AverageReviewScore;
+ UINT NumberOfReviews;
+ UINT NumberOfFavorites; // number of times tagged as a favorite item
+ UINT NumDownloads; // how many times any blob has been downloaded
+ SenLeaderboardId LeaderboardId;
+ INT64 CustomCounters[SenUGCDownloadedMetaData_NrCustomCounters];
+ };
+
+// Matches with documentation and internal server-side value
+#define MainDataBlobSizeLimit 16777216
+
+ // Version specifically to support Resubmission feature
+ struct SenUGCDownloadedMetaData2
+ {
+ SenUGCID UgcId;
+ PlayerUID AuthorXuid;
+ SenUGCMetaData MetaData;
+
+ SYSTEMTIME CreationDate; // first time it's created
+ SYSTEMTIME ModifiedDate; // any modification, metadata included
+ SYSTEMTIME PublishedDate; // anytime it's published/republished
+
+ SenUGCPublishState PublishState;
+ UINT Revision;
+
+ SenUGCBlobMetaData BlobInfo[SenUGCMainData_NrBlobs]; // size and version of each blob, 0's if not present
+ SenUGCStatsMetaData StatsInfo; // stats of ugc item: counters, aggregates, etc
+ };
+
+ enum SenUGCSortBy
+ {
+ SenUGCSortBy_CreationDate,
+ SenUGCSortBy_TopFavorites,
+ SenUGCSortBy_TopReviewScoreAverage,
+ SenUGCSortBy_TopDownloadsTotal
+ };
+
+ enum SenUGCAuthorType
+ {
+ SenUGCAuthorType_Everyone,
+ SenUGCAuthorType_LocalUsers,
+ SenUGCAuthorType_Friends,
+ SenUGCAuthorType_List
+ };
+
+ enum SenUGCOffensivenessFlag
+ {
+ SenUGCOffensivenessFlag_None = 0x00000000,
+
+ SenUGCOffensivenessFlag_Discriminating = 0x00000001,
+ SenUGCOffensivenessFlag_Explicit = 0x00000002,
+ SenUGCOffensivenessFlag_Obscene = 0x00000004,
+ SenUGCOffensivenessFlag_FoulLanguage = 0x00000008,
+ SenUGCOffensivenessFlag_LicenseInfringement = 0x00000010,
+ SenUGCOffensivenessFlag_IllegalAdvertising = 0x00000020,
+ SenUGCOffensivenessFlag_Illegal = 0x00000040,
+ };
+
+ struct SenUGCFeedItem
+ {
+ PlayerUID Author;
+ SenUGCID UgcId;
+ SYSTEMTIME DateCreated;
+ };
+
+ enum SenUGCFeedType
+ {
+ SenUGCFeedType_Unknown = 0x00,
+ SenUGCFeedType_NewestItems = 0x10,
+ SenUGCFeedType_TopReviewed = 0x20,
+ SenUGCFeedType_TopDownloaded = 0x30,
+ SenUGCFeedType_PendingModeratorReview = 0x60,
+ SenUGCFeedType_Custom = 0x90
+ };
+
+ enum SenUGCReviewScoreType
+ {
+ SenUGCReviewScoreType_Quality = 0x00,
+ SenUGCReviewScoreType_Difficulty = 0x10
+ };
+
+ // ***** Leaderboard types
+ typedef __int64 SenLeaderboardEntryValue;
+ typedef ULONGLONG SenLeaderboardActorId;
+
+ enum SenLeaderboardSortType
+ {
+ SenLeaderboardSortType_Ascending = 0x00,
+ SenLeaderboardSortType_Descending = 0x10
+ };
+
+
+ /// @brief Leaderboard Metadata retrieval flag.
+ ///
+ /// @details When retrieving Leaderboard information, a client can choose
+ /// to bypass retrieval or retrieve specific details regarding the
+ /// Metadata stored for a given Leaderboard or Leaderboard Entry.
+ ///
+ enum SenLeaderboardMetadataFlag
+ {
+ // Bypass the retrieval of metadata blob size and binary data
+ SenLeaderboardmetadataFlag_BypassRetrieval = 0x00000000,
+ // Retrieve and populate the size of each metadata blob
+ SenLeaderboardmetadataFlag_RetrieveSizeOnly = 0x00000001,
+ // Retrieve and populate both the size and metadata blob binary data
+ SenLeaderboardmetadataFlag_RetrieveData = 0x00000002,
+ };
+
+ struct SenLeaderboardDefinition
+ {
+ static const int NameLength = 50;
+
+ WCHAR Name[NameLength];
+ SenLeaderboardSortType SortType;
+ };
+
+ struct SenLeaderboardEntry
+ {
+ SenLeaderboardActorId ActorId;
+ SenLeaderboardEntryValue Value;
+ LONGLONG Descriptor;
+ unsigned int Rank;
+ size_t metaDataBlobSize;
+ size_t reserved_metaDataBlobCount;
+ void *metaDataBlob;
+ };
+
+} // namespace Sentient
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientUser.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientUser.h
new file mode 100644
index 00000000..cf3ef0b3
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientUser.h
@@ -0,0 +1,104 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client User API
+//
+// Include this to get access to all user-related Sentient features.
+
+#pragma once
+
+#include "SenClientSys.h"
+
+
+namespace Sentient
+{
+ //======================//
+ // //
+ // User Data Types //
+ // //
+ //======================//
+
+ /// @brief Roles a user can have in Sentient
+ ///
+ /// @details Roles are not necessarily mutually exclusive.
+ /// A single user may be in multiple roles simultaneously.
+ ///
+ enum SenUserRole
+ {
+ /// The user is a UGC moderator.
+ SenUserRole_UGC_Moderator,
+
+ /// The user has been banned from UGC participation.
+ SenUserRole_UGC_Banned,
+ };
+
+
+ //======================//
+ // //
+ // User Functions //
+ // //
+ //======================//
+
+ /// @brief Ask Sentient whether a user belongs to the enumerated roles
+ ///
+ /// @param[in] userIndex
+ /// Local index [0-3] of the user whose role is being checked
+ ///
+ /// @param[in] role
+ /// Role to check
+ ///
+ /// @param[out] out_isInRole
+ /// Location to store the output role membership state
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_POINTER: out_isInRole is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ HRESULT SenUserIsInRole(
+ int userIndex,
+ SenUserRole role,
+ bool *out_isInRole,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+
+ /// @brief Ask Sentient whether a user belongs to the enumerated roles
+ ///
+ /// @param[in] xuid
+ /// XUID of user whose role is being checked
+ ///
+ /// @param[in] role
+ /// Role to check
+ ///
+ /// @param[out] out_isInRole
+ /// Location to store the output role membership state
+ ///
+ /// @param[in] userCallback
+ /// If this call returns a success code, the userCallback will be called at the end of the asynchronous process.
+ ///
+ /// @param[in] userCallbackData
+ /// Data to be passed to the @a userCallback on completion.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// SENTIENT_E_NOT_INITIALIZED: You did not call SentientInitialize() first.
+ /// E_POINTER: out_isInRole is NULL.
+ /// E_FAIL: Failed to spawn server call.
+ /// S_OK: Server call spawned successfully.
+ ///
+ HRESULT SenUserIsInRole(
+ PlayerUID xuid,
+ SenUserRole role,
+ bool *out_isInRole,
+ SenSysCompletedCallback userCallback,
+ void *userCallbackData );
+}
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientUtil.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientUtil.h
new file mode 100644
index 00000000..f3f2dde9
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientUtil.h
@@ -0,0 +1,50 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client Utility API
+//
+// Include this to get access to all Utility-related Sentient features.
+
+#pragma once
+
+#include "SenClientTypes.h"
+
+
+namespace Sentient
+{
+ /*************************
+ ***** Utility Types *****
+ *************************/
+
+ // This function should return the width (in pixels) of a single
+ // character, and is used to check how many characters can fit on a
+ // single line of the screen
+ typedef unsigned int (*SenUtilGetCharacterWidthCallback)( wchar_t character );
+
+
+ /*****************************
+ ***** Utility Functions *****
+ *****************************/
+
+ // This function takes a multi-line text string, a width (in pixels) that
+ // a text line can be, and a callback to measure the width of each character.
+ // It will return the end of the current text line, and the beginning of
+ // the next text line. Use the beginning of the next text line as input next
+ // time you call SenUtilWordWrapFindNextLine()
+ void SenUtilWordWrapFindNextLine(
+ const wchar_t *startOfThisLine,
+ unsigned int maxWidth,
+ SenUtilGetCharacterWidthCallback characterWidthCallback,
+ const wchar_t **out_endOfThisLine,
+ const wchar_t **out_beginningOfNextLine );
+
+ // This returns a SYSTEMTIME set to its earliest possible value.
+ SYSTEMTIME SenUtilDateTimeMin();
+
+ // This returns a SYSTEMTIME set to its latest possible value.
+ SYSTEMTIME SenUtilDateTimeMax();
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Include/SenClientXML.h b/Minecraft.Client/Xbox/Sentient/Include/SenClientXML.h
new file mode 100644
index 00000000..d1ebc051
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/Include/SenClientXML.h
@@ -0,0 +1,85 @@
+/********************************************************
+* *
+* Copyright (C) Microsoft. All rights reserved. *
+* *
+********************************************************/
+
+// Sentient Client XML API
+//
+// Include this to get access to all XML Sentient features.
+
+#pragma once
+
+#include "SenClientTypes.h"
+
+
+namespace Sentient
+{
+ //======================//
+ // //
+ // XML Data Types //
+ // //
+ //======================//
+
+ /// @brief An easy-to-access pre-parsed XML.
+ ///
+ /// @details This holds some easily-traversible, easily-searchible representations
+ /// of the content of a raw UTF-8 XML buffer.
+ ///
+ /// @related SenXMLParse()
+ /// @related SenXMLDestroy()
+ ///
+ struct SenXML
+ {
+ void *reserved;
+ };
+
+
+ //=====================//
+ // //
+ // XML Functions //
+ // //
+ //=====================//
+
+ /// @brief Parse a raw UTF-8 XML buffer into a more useful format.
+ ///
+ /// @param[in] source
+ /// The raw UTF-8 XML buffer to be parsed.
+ ///
+ /// @param[out] out_senXML
+ /// The (private) object to hold the parsed data.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// E_POINTER: Bad pointer to the raw XML buffer.
+ /// E_OUTOFMEMORY: Couldn't parse due to lack of memory.
+ /// E_FAIL: Failed to parse for unspecified reason.
+ /// S_OK: Parsed successfully.
+ ///
+ /// @details It is expensive to parse an XML file directly for each attribute fetch.
+ /// Thus, we pre-parse the whole thing once after (down)loading it and then
+ /// pass the parsed data to the fetch routines.
+ ///
+ /// @related SenXMLDestroy()
+ ///
+ HRESULT SenXMLParse(
+ const char *source,
+ SenXML *out_senXML );
+
+ /// @brief Free the resources/memory associated with a parsed XML file.
+ ///
+ /// @param[in] senXML
+ /// The (private) object holding the parsed data to be freed.
+ ///
+ /// @return Check SUCCEEDED( hresult ) or FAILED( hresult ) to determine success. Specific values include:
+ /// E_INVALIDARG: senXML is not a parsed XML.
+ /// S_OK: Destroyed/freed successfully.
+ ///
+ /// @details A parsed XML takes up some extra memory. Once done with its contents,
+ /// you should call this routine to free it up.
+ ///
+ /// @related SenXMLParse()
+ ///
+ HRESULT SenXMLDestroy(
+ SenXML &senXML );
+
+} // namespace Sentient
diff --git a/Minecraft.Client/Xbox/Sentient/Libs/SenBoxArt.lib b/Minecraft.Client/Xbox/Sentient/Libs/SenBoxArt.lib
new file mode 100644
index 00000000..f2f71ca2
Binary files /dev/null and b/Minecraft.Client/Xbox/Sentient/Libs/SenBoxArt.lib differ
diff --git a/Minecraft.Client/Xbox/Sentient/Libs/SenBoxArtD.lib b/Minecraft.Client/Xbox/Sentient/Libs/SenBoxArtD.lib
new file mode 100644
index 00000000..9abbe442
Binary files /dev/null and b/Minecraft.Client/Xbox/Sentient/Libs/SenBoxArtD.lib differ
diff --git a/Minecraft.Client/Xbox/Sentient/Libs/SenCore.lib b/Minecraft.Client/Xbox/Sentient/Libs/SenCore.lib
new file mode 100644
index 00000000..c21aed0a
Binary files /dev/null and b/Minecraft.Client/Xbox/Sentient/Libs/SenCore.lib differ
diff --git a/Minecraft.Client/Xbox/Sentient/Libs/SenCoreD.lib b/Minecraft.Client/Xbox/Sentient/Libs/SenCoreD.lib
new file mode 100644
index 00000000..fe5cce9a
Binary files /dev/null and b/Minecraft.Client/Xbox/Sentient/Libs/SenCoreD.lib differ
diff --git a/Minecraft.Client/Xbox/Sentient/Libs/SenNews.lib b/Minecraft.Client/Xbox/Sentient/Libs/SenNews.lib
new file mode 100644
index 00000000..75eaf57b
Binary files /dev/null and b/Minecraft.Client/Xbox/Sentient/Libs/SenNews.lib differ
diff --git a/Minecraft.Client/Xbox/Sentient/Libs/SenNewsD.lib b/Minecraft.Client/Xbox/Sentient/Libs/SenNewsD.lib
new file mode 100644
index 00000000..8f5520d0
Binary files /dev/null and b/Minecraft.Client/Xbox/Sentient/Libs/SenNewsD.lib differ
diff --git a/Minecraft.Client/Xbox/Sentient/Libs/SenSuperstars.lib b/Minecraft.Client/Xbox/Sentient/Libs/SenSuperstars.lib
new file mode 100644
index 00000000..104de1c0
Binary files /dev/null and b/Minecraft.Client/Xbox/Sentient/Libs/SenSuperstars.lib differ
diff --git a/Minecraft.Client/Xbox/Sentient/Libs/SenSuperstarsD.lib b/Minecraft.Client/Xbox/Sentient/Libs/SenSuperstarsD.lib
new file mode 100644
index 00000000..2c873b01
Binary files /dev/null and b/Minecraft.Client/Xbox/Sentient/Libs/SenSuperstarsD.lib differ
diff --git a/Minecraft.Client/Xbox/Sentient/Libs/SenUGC.lib b/Minecraft.Client/Xbox/Sentient/Libs/SenUGC.lib
new file mode 100644
index 00000000..269375b4
Binary files /dev/null and b/Minecraft.Client/Xbox/Sentient/Libs/SenUGC.lib differ
diff --git a/Minecraft.Client/Xbox/Sentient/Libs/SenUGCD.lib b/Minecraft.Client/Xbox/Sentient/Libs/SenUGCD.lib
new file mode 100644
index 00000000..7ff9203f
Binary files /dev/null and b/Minecraft.Client/Xbox/Sentient/Libs/SenUGCD.lib differ
diff --git a/Minecraft.Client/Xbox/Sentient/MinecraftTelemetry.h b/Minecraft.Client/Xbox/Sentient/MinecraftTelemetry.h
new file mode 100644
index 00000000..26ef1092
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/MinecraftTelemetry.h
@@ -0,0 +1,3 @@
+#include "SentientTelemetryCommon.h"
+#include "TelemetryEnum.h"
+#include "SentientStats.h"
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Sentient/MinecraftTelemetry.xml b/Minecraft.Client/Xbox/Sentient/MinecraftTelemetry.xml
new file mode 100644
index 00000000..d053b746
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/MinecraftTelemetry.xml
@@ -0,0 +1,282 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Sentient/ReleaseNotes.txt b/Minecraft.Client/Xbox/Sentient/ReleaseNotes.txt
new file mode 100644
index 00000000..b2a686e0
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/ReleaseNotes.txt
@@ -0,0 +1,22 @@
+
+------------------------------------------------------------------------
+ Microsoft Sentient Readme File
+ January 2012
+ 2012 Microsoft Corporation. All rights reserved.
+------------------------------------------------------------------------
+
+This document provides information on the January Sentient update.
+
+-------------------------------------------------
+CONTENTs: WHAT'S NEW AND UPDATED IN THIS RELEASE
+-------------------------------------------------
+
+SUMMARY
+The December Sentient SDK QFE (2983.1) adds December 2011 XDK support to the December Sentient SDK (2983).
+Version header was added (SenClientVersion.h) to allow developers to understand which version they are using.
+See below for December SDK notes.
+
+SUMMARY
+The January Sentient SDK has no changes to the API.
+
+
diff --git a/Minecraft.Client/Xbox/Sentient/Sentient Web Services.chm b/Minecraft.Client/Xbox/Sentient/Sentient Web Services.chm
new file mode 100644
index 00000000..aaccb064
Binary files /dev/null and b/Minecraft.Client/Xbox/Sentient/Sentient Web Services.chm differ
diff --git a/Minecraft.Client/Xbox/Sentient/SentientManager.cpp b/Minecraft.Client/Xbox/Sentient/SentientManager.cpp
new file mode 100644
index 00000000..aade06bc
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/SentientManager.cpp
@@ -0,0 +1,539 @@
+#include "stdafx.h"
+#include "Include\SenClientCore.h"
+#include "Include\SenClientMain.h"
+#include "Include\SenClientMain.h"
+
+#include "..\GameConfig\Minecraft.spa.h"
+#include "..\..\Minecraft.h"
+#include "..\..\MultiplayerLocalPlayer.h"
+#include "..\..\..\Minecraft.World\Dimension.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.level.h"
+#include "..\..\..\Minecraft.World\net.minecraft.world.level.storage.h"
+
+#include "SentientManager.h"
+#include "MinecraftTelemetry.h"
+#include "DynamicConfigurations.h"
+
+// Global instance
+CTelemetryManager *TelemetryManager = new CSentientManager();
+
+HRESULT CSentientManager::Init()
+{
+ Sentient::SenSysTitleID sentitleID;
+ sentitleID = (Sentient::SenSysTitleID)TITLEID_MINECRAFT;
+
+ HRESULT hr = SentientInitialize( sentitleID );
+
+ m_lastHeartbeat = m_initialiseTime;
+
+ m_bFirstFlush = true;
+
+ return hr;
+}
+
+HRESULT CSentientManager::Tick()
+{
+ HRESULT hr = S_OK;
+
+ // Update Sentient System
+ HRESULT sentientResult = Sentient::SentientUpdate();
+
+ switch(sentientResult)
+ {
+ case S_OK:
+ {
+ // Sentient is connected
+ //OutputDebugString ("\nSentient: CONNECTED\n");
+ if(g_NetworkManager.IsInSession())
+ {
+ float currentTime = app.getAppTime();
+ if(currentTime - m_lastHeartbeat > 60)
+ {
+ m_lastHeartbeat = currentTime;
+ for(DWORD i = 0; i < XUSER_MAX_COUNT; ++i)
+ {
+ if(Minecraft::GetInstance()->localplayers[i] != NULL)
+ {
+ SenStatHeartBeat(i, m_lastHeartbeat - m_initialiseTime);
+ }
+ }
+ }
+
+ if(m_bFirstFlush)
+ {
+ for(DWORD i = 0; i < XUSER_MAX_COUNT; ++i)
+ {
+ if(Minecraft::GetInstance()->localplayers[i] != NULL && m_fLevelStartTime[i] - currentTime > 60)
+ {
+ Flush();
+ }
+ }
+ }
+ }
+
+ MinecraftDynamicConfigurations::Tick();
+ }
+ break;
+
+ case Sentient::SENTIENT_S_NOT_SIGNED_IN_TO_LIVE:
+ {
+ // Login required
+ //DebugPrintf("\nSentient: WARNING: an Xbox LIVE-enabled user needs to be logged in.\n");
+
+ // Add title specific code here. . .
+ }
+ break;
+
+ case Sentient::SENTIENT_S_INITIALIZING_CONNECTION:
+ {
+ // Server connection in progress
+ app.DebugPrintf("Sentient: Establishing connection to sentient server.\n");
+
+ // Add title specific code here. . .
+ }
+ break;
+
+ case Sentient::SENTIENT_S_SERVER_CONNECTION_FAILED:
+ {
+ // Server connection failed
+ app.DebugPrintf("\nSentient: WARNING: connection to sentient server failed.\n");
+
+ // Add title specific code here. . .
+ }
+ break;
+
+ default:
+ {
+ // Unknown failure
+ app.DebugPrintf("Sentient: Unknown result from SentientUpdate()");
+
+ // Add title specific code here. . .
+ }
+ break;
+ }
+
+ return hr;
+}
+
+HRESULT CSentientManager::Flush()
+{
+ m_bFirstFlush = false;
+ return Sentient::SentientFlushStats();
+}
+
+BOOL CSentientManager::RecordPlayerSessionStart(DWORD dwUserId)
+{
+ return SenStatPlayerSessionStart( dwUserId, GetSecondsSinceInitialize(), GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), GetTitleBuildId(), 0, 0, 0, (INT)app.getDeploymentType() );
+}
+
+BOOL CSentientManager::RecordPlayerSessionExit(DWORD dwUserId, int _)
+{
+ return SenStatPlayerSessionExit( dwUserId, GetSecondsSinceInitialize(), GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId) );
+}
+
+BOOL CSentientManager::RecordHeartBeat(DWORD dwUserId)
+{
+ // Handled elswhere
+ return FALSE;
+}
+
+BOOL CSentientManager::RecordLevelStart(DWORD dwUserId, ESen_FriendOrMatch friendsOrMatch, ESen_CompeteOrCoop competeOrCoop, int difficulty, DWORD numberOfLocalPlayers, DWORD numberOfOnlinePlayers)
+{
+ if(dwUserId == ProfileManager.GetPrimaryPad() ) m_bFirstFlush = true;
+
+ ++m_levelInstanceID;
+ m_fLevelStartTime[dwUserId] = app.getAppTime();
+ return SenStatLevelStart( dwUserId, GetSecondsSinceInitialize(), GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), GetLevelInstanceID(), GetMultiplayerInstanceID(), GetSingleOrMultiplayer(), friendsOrMatch, competeOrCoop, GetDifficultyLevel(difficulty), numberOfLocalPlayers, numberOfOnlinePlayers, GetLicense(), GetDefaultGameControls(), GetAudioSettings(dwUserId), 0, 0 );
+}
+
+BOOL CSentientManager::RecordLevelExit(DWORD dwUserId, ESen_LevelExitStatus levelExitStatus)
+{
+ float levelDuration = app.getAppTime() - m_fLevelStartTime[dwUserId];
+ return SenStatLevelExit( dwUserId, GetSecondsSinceInitialize(), GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), GetLevelInstanceID(), GetMultiplayerInstanceID(), levelExitStatus, GetLevelExitProgressStat1(), GetLevelExitProgressStat2(), (INT)levelDuration );
+}
+
+BOOL CSentientManager::RecordLevelSaveOrCheckpoint(DWORD dwUserId, INT saveOrCheckPointID, INT saveSizeInBytes)
+{
+ float levelDuration = app.getAppTime() - m_fLevelStartTime[dwUserId];
+ return SenStatLevelSaveOrCheckpoint( dwUserId, GetSecondsSinceInitialize(), GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), GetLevelInstanceID(), GetMultiplayerInstanceID(), GetLevelExitProgressStat1(), GetLevelExitProgressStat2(), (INT)levelDuration, saveOrCheckPointID, saveSizeInBytes );
+}
+
+BOOL CSentientManager::RecordLevelResume(DWORD dwUserId, ESen_FriendOrMatch friendsOrMatch, ESen_CompeteOrCoop competeOrCoop, int difficulty, DWORD numberOfLocalPlayers, DWORD numberOfOnlinePlayers, INT saveOrCheckPointID)
+{
+ return SenStatLevelResume( dwUserId, GetSecondsSinceInitialize(), GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), GetLevelInstanceID(), GetMultiplayerInstanceID(), GetSingleOrMultiplayer(), friendsOrMatch, competeOrCoop, GetDifficultyLevel(difficulty), numberOfLocalPlayers, numberOfOnlinePlayers, GetLicense(), GetDefaultGameControls(), saveOrCheckPointID, GetAudioSettings(dwUserId), 0, 0 );
+}
+
+
+BOOL CSentientManager::RecordPauseOrInactive(DWORD dwUserId)
+{
+ return SenStatPauseOrInactive( dwUserId, GetSecondsSinceInitialize(), GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), GetLevelInstanceID(), GetMultiplayerInstanceID() );
+}
+
+BOOL CSentientManager::RecordUnpauseOrActive(DWORD dwUserId)
+{
+ return SenStatUnpauseOrActive( dwUserId, GetSecondsSinceInitialize(), GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), GetLevelInstanceID(), GetMultiplayerInstanceID() );
+}
+
+BOOL CSentientManager::RecordMenuShown(DWORD dwUserId, INT menuID, INT optionalMenuSubID)
+{
+ return SenStatMenuShown( dwUserId, GetSecondsSinceInitialize(), GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), menuID, optionalMenuSubID, GetLevelInstanceID(), GetMultiplayerInstanceID() );
+}
+
+BOOL CSentientManager::RecordAchievementUnlocked(DWORD dwUserId, INT achievementID, INT achievementGamerscore)
+{
+ return SenStatAchievementUnlocked( dwUserId, GetSecondsSinceInitialize(), GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), GetLevelInstanceID(), GetMultiplayerInstanceID(), achievementID, achievementGamerscore );
+}
+
+BOOL CSentientManager::RecordMediaShareUpload(DWORD dwUserId, ESen_MediaDestination mediaDestination, ESen_MediaType mediaType)
+{
+ return SenStatMediaShareUpload( dwUserId, GetSecondsSinceInitialize(), GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), GetLevelInstanceID(), GetMultiplayerInstanceID(), mediaDestination, mediaType );
+}
+
+BOOL CSentientManager::RecordUpsellPresented(DWORD dwUserId, ESen_UpsellID upsellId, INT marketplaceOfferID)
+{
+ return SenStatUpsellPresented( dwUserId, GetSecondsSinceInitialize(), GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), GetLevelInstanceID(), GetMultiplayerInstanceID(), upsellId, marketplaceOfferID );
+}
+
+BOOL CSentientManager::RecordUpsellResponded(DWORD dwUserId, ESen_UpsellID upsellId, INT marketplaceOfferID, ESen_UpsellOutcome upsellOutcome)
+{
+ return SenStatUpsellResponded( dwUserId, GetSecondsSinceInitialize(), GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), GetLevelInstanceID(), GetMultiplayerInstanceID(), upsellId, marketplaceOfferID, upsellOutcome );
+}
+
+BOOL CSentientManager::RecordPlayerDiedOrFailed(DWORD dwUserId, INT lowResMapX, INT lowResMapY, INT lowResMapZ, INT mapID, INT playerWeaponID, INT enemyWeaponID, ETelemetryChallenges enemyTypeID)
+{
+ INT secs = GetSecondsSinceInitialize();
+ return SenStatPlayerDiedOrFailed( dwUserId, GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), GetLevelInstanceID(), GetMultiplayerInstanceID(), lowResMapX, lowResMapY, lowResMapZ, mapID, playerWeaponID, enemyWeaponID, enemyTypeID, secs, secs );
+}
+
+BOOL CSentientManager::RecordEnemyKilledOrOvercome(DWORD dwUserId, INT lowResMapX, INT lowResMapY, INT lowResMapZ, INT mapID, INT playerWeaponID, INT enemyWeaponID, ETelemetryChallenges enemyTypeID)
+{
+ INT secs = GetSecondsSinceInitialize();
+ return SenStatEnemyKilledOrOvercome( dwUserId, GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), GetLevelInstanceID(), GetMultiplayerInstanceID(), lowResMapX, lowResMapY, lowResMapZ, mapID, playerWeaponID, enemyWeaponID, enemyTypeID, secs, secs );
+}
+
+BOOL CSentientManager::RecordSkinChanged(DWORD dwUserId, DWORD dwSkinId)
+{
+ return SenStatSkinChanged( dwUserId, GetSecondsSinceInitialize(), GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), GetLevelInstanceID(), GetMultiplayerInstanceID(), dwSkinId );
+}
+
+BOOL CSentientManager::RecordBanLevel(DWORD dwUserId)
+{
+ return SenStatBanLevel( dwUserId, GetSecondsSinceInitialize(), GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), GetLevelInstanceID(), GetMultiplayerInstanceID() );
+}
+
+BOOL CSentientManager::RecordUnBanLevel(DWORD dwUserId)
+{
+ return SenStatUnBanLevel( dwUserId, GetSecondsSinceInitialize(), GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), GetLevelInstanceID(), GetMultiplayerInstanceID() );
+}
+
+BOOL CSentientManager::RecordTexturePackLoaded(DWORD dwUserId, INT texturePackId, INT purchased)
+{
+ return SenStatTexturePackChanged( dwUserId, GetSecondsSinceInitialize(), GetMode(dwUserId), GetSubMode(dwUserId), GetLevelId(dwUserId), GetSubLevelId(dwUserId), GetLevelInstanceID(), GetMultiplayerInstanceID(), texturePackId, purchased );
+}
+
+
+/*
+Number of seconds elapsed since Sentient initialize.
+Title needs to track this and report it as a property.
+These times will be used to create timelines and understand durations.
+This should be tracked independently of saved games (restoring a save should not reset the seconds since initialize)
+*/
+INT CSentientManager::GetSecondsSinceInitialize()
+{
+ return (INT)(app.getAppTime() - m_initialiseTime);
+}
+
+/*
+An in-game setting that significantly differentiates the play style of the game.
+(This should be captured as an integer and correspond to mode specific to the game.)
+Teams will have to provide the game mappings that correspond to the integers.
+The intent is to allow teams to capture data on the highest level categories of gameplay in their game.
+For example, a game mode could be the name of the specific mini game (eg: golf vs darts) or a specific multiplayer mode (eg: hoard vs beast.) ModeID = 0 means undefined or unknown.
+The intent is to answer the question "How are players playing your game?"
+*/
+INT CSentientManager::GetMode(DWORD dwUserId)
+{
+ INT mode = (INT)eTelem_ModeId_Undefined;
+
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+
+ if( pMinecraft->localplayers[dwUserId] != NULL && pMinecraft->localplayers[dwUserId]->level != NULL && pMinecraft->localplayers[dwUserId]->level->getLevelData() != NULL )
+ {
+ GameType *gameType = pMinecraft->localplayers[dwUserId]->level->getLevelData()->getGameType();
+
+ if (gameType->isSurvival())
+ {
+ mode = (INT)eTelem_ModeId_Survival;
+ }
+ else if (gameType->isCreative())
+ {
+ mode = (INT)eTelem_ModeId_Creative;
+ }
+ else
+ {
+ mode = (INT)eTelem_ModeId_Undefined;
+ }
+ }
+ return mode;
+}
+
+/*
+Used when a title has more heirarchy required.
+OptionalSubMode ID = 0 means undefined or unknown.
+For titles that have sub-modes (Sports/Football).
+Mode is always an indicator of "How is the player choosing to play my game?" so these do not have to be consecutive.
+LevelIDs and SubLevelIDs can be reused as they will always be paired with a Mode/SubModeID, Mode should be unique - SubMode can be shared between modes.
+*/
+INT CSentientManager::GetSubMode(DWORD dwUserId)
+{
+ INT subMode = (INT)eTelem_SubModeId_Undefined;
+
+ if(Minecraft::GetInstance()->isTutorial())
+ {
+ subMode = (INT)eTelem_SubModeId_Tutorial;
+ }
+ else
+ {
+ subMode = (INT)eTelem_SubModeId_Normal;
+ }
+
+ return subMode;
+}
+
+/*
+This is a more granular view of mode, allowing teams to get a sense of the levels or maps players are playing and providing some insight into how players progress through a game.
+Teams will have to provide the game mappings that correspond to the integers.
+The intent is that a level is highest level at which modes can be dissected and provides an indication of player progression in a game.
+The intent is that level start and ends do not occur more than every 2 minutes or so, otherwise the data reported will be difficult to understand.
+Levels are unique only within a given modeID - so you can have a ModeID =1, LevelID =1 and a different ModeID=2, LevelID = 1 indicate two completely different levels.
+LevelID = 0 means undefined or unknown.
+*/
+INT CSentientManager::GetLevelId(DWORD dwUserId)
+{
+ INT levelId = (INT)eTelem_LevelId_Undefined;
+
+ levelId = (INT)eTelem_LevelId_PlayerGeneratedLevel;
+
+ return levelId;
+}
+
+/*
+Used when a title has more heirarchy required. OptionalSubLevel ID = 0 means undefined or unknown.
+For titles that have sub-levels.
+Level is always an indicator of "How far has the player progressed." so when possible these should be consecutive or at least monotonically increasing.
+LevelIDs and SubLevelIDs can be reused as they will always be paired with a Mode/SubModeID
+*/
+INT CSentientManager::GetSubLevelId(DWORD dwUserId)
+{
+ INT subLevelId = (INT)eTelem_SubLevelId_Undefined;
+
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+
+ if(pMinecraft->localplayers[dwUserId] != NULL)
+ {
+ switch(pMinecraft->localplayers[dwUserId]->dimension)
+ {
+ case 0:
+ subLevelId = (INT)eTelem_SubLevelId_Overworld;
+ break;
+ case -1:
+ subLevelId = (INT)eTelem_SubLevelId_Nether;
+ break;
+ case 1:
+ subLevelId = (INT)eTelem_SubLevelId_End;
+ break;
+ };
+ }
+
+ return subLevelId;
+}
+
+/*
+Build version of the title, used to track changes in development as well as patches/title updates
+Allows developer to separate out stats from different builds
+*/
+INT CSentientManager::GetTitleBuildId()
+{
+ return (INT)VER_PRODUCTBUILD;
+}
+
+/*
+Generated by the game every time LevelStart or LevelResume is called.
+This should be a unique ID (can be sequential) within a session.
+Helps differentiate level attempts when a play plays the same mode/level - especially with aggregated stats
+*/
+INT CSentientManager::GetLevelInstanceID()
+{
+ return (INT)m_levelInstanceID;
+}
+
+/*
+MultiplayerinstanceID is a title-generated value that is the same for all players in the same multiplayer session.
+Link up players into a single multiplayer session ID.
+*/
+INT CSentientManager::GetMultiplayerInstanceID()
+{
+ return m_multiplayerInstanceID;
+}
+
+INT CSentientManager::GenerateMultiplayerInstanceId()
+{
+ FILETIME SystemTimeAsFileTime;
+ GetSystemTimeAsFileTime( &SystemTimeAsFileTime );
+
+ return *((INT *)&SystemTimeAsFileTime.dwLowDateTime);
+}
+
+void CSentientManager::SetMultiplayerInstanceId(INT value)
+{
+ m_multiplayerInstanceID = value;
+}
+
+/*
+Indicates whether the game is being played in single or multiplayer mode and whether multiplayer is being played locally or over live.
+How social is your game? How do people play it?
+*/
+INT CSentientManager::GetSingleOrMultiplayer()
+{
+ INT singleOrMultiplayer = (INT)eSen_SingleOrMultiplayer_Undefined;
+
+ // Unused
+ //eSen_SingleOrMultiplayer_Single_Player
+ //eSen_SingleOrMultiplayer_Multiplayer_Live
+
+ if(app.GetLocalPlayerCount() == 1 && g_NetworkManager.GetOnlinePlayerCount() == 0)
+ {
+ singleOrMultiplayer = (INT)eSen_SingleOrMultiplayer_Single_Player;
+ }
+ else if(app.GetLocalPlayerCount() > 1 && g_NetworkManager.GetOnlinePlayerCount() == 0)
+ {
+ singleOrMultiplayer = (INT)eSen_SingleOrMultiplayer_Multiplayer_Local;
+ }
+ else if(app.GetLocalPlayerCount() == 1 && g_NetworkManager.GetOnlinePlayerCount() > 0)
+ {
+ singleOrMultiplayer = (INT)eSen_SingleOrMultiplayer_Multiplayer_Live;
+ }
+ else if(app.GetLocalPlayerCount() > 1 && g_NetworkManager.GetOnlinePlayerCount() > 0)
+ {
+ singleOrMultiplayer = (INT)eSen_SingleOrMultiplayer_Multiplayer_Both_Local_and_Live;
+ }
+
+ return singleOrMultiplayer;
+}
+
+/*
+An in-game setting that differentiates the challenge imposed on the user.
+Normalized to a standard 5-point scale. Are players changing the difficulty?
+*/
+INT CSentientManager::GetDifficultyLevel(INT diff)
+{
+ INT difficultyLevel = (INT)eSen_DifficultyLevel_Undefined;
+
+ switch(diff)
+ {
+ case 0:
+ difficultyLevel = (INT)eSen_DifficultyLevel_Easiest;
+ break;
+ case 1:
+ difficultyLevel = (INT)eSen_DifficultyLevel_Easier;
+ break;
+ case 2:
+ difficultyLevel = (INT)eSen_DifficultyLevel_Normal;
+ break;
+ case 3:
+ difficultyLevel = (INT)eSen_DifficultyLevel_Harder;
+ break;
+ }
+
+ // Unused
+ //eSen_DifficultyLevel_Hardest = 5,
+
+ return difficultyLevel;
+}
+
+/*
+Differentiates trial/demo from full purchased titles
+Is this a full title or demo?
+*/
+INT CSentientManager::GetLicense()
+{
+ INT license = eSen_License_Undefined;
+
+ if(ProfileManager.IsFullVersion())
+ {
+ license = (INT)eSen_License_Full_Purchased_Title;
+ }
+ else
+ {
+ license = (INT)eSen_License_Trial_or_Demo;
+ }
+ return license;
+}
+
+/*
+This is intended to capture whether players played using default control scheme or customized the control scheme.
+Are players customizing your controls?
+*/
+INT CSentientManager::GetDefaultGameControls()
+{
+ INT defaultGameControls = eSen_DefaultGameControls_Undefined;
+
+ // Unused
+ //eSen_DefaultGameControls_Custom_controls
+
+ defaultGameControls = eSen_DefaultGameControls_Default_controls;
+
+ return defaultGameControls;
+}
+
+/*
+Are players changing default audio settings?
+This is intended to capture whether players are playing with or without volume and whether they make changes from the default audio settings.
+*/
+INT CSentientManager::GetAudioSettings(DWORD dwUserId)
+{
+ INT audioSettings = (INT)eSen_AudioSettings_Undefined;
+
+ if(dwUserId == ProfileManager.GetPrimaryPad())
+ {
+ BYTE volume = app.GetGameSettings(dwUserId,eGameSetting_SoundFXVolume);
+
+ if(volume == 0)
+ {
+ audioSettings = (INT)eSen_AudioSettings_Off;
+ }
+ else if(volume == DEFAULT_VOLUME_LEVEL)
+ {
+ audioSettings = (INT)eSen_AudioSettings_On_Default;
+ }
+ else
+ {
+ audioSettings = (INT)eSen_AudioSettings_On_CustomSetting;
+ }
+ }
+ return audioSettings;
+}
+
+/*
+Refers to the highest level performance metric for your game.
+For example, a performance metric could points earned, race time, total kills, etc.
+This is entirely up to you and will help us understand how well the player performed, or how far the player progressed in the level before exiting.
+How far did users progress before failing/exiting the level?
+*/
+INT CSentientManager::GetLevelExitProgressStat1()
+{
+ // 4J Stu - Unused
+ return 0;
+}
+
+/*
+Refers to the highest level performance metric for your game.
+For example, a performance metric could points earned, race time, total kills, etc.
+This is entirely up to you and will help us understand how well the player performed, or how far the player progressed in the level before exiting.
+How far did users progress before failing/exiting the level?
+*/
+INT CSentientManager::GetLevelExitProgressStat2()
+{
+ // 4J Stu - Unused
+ return 0;
+}
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Sentient/SentientManager.h b/Minecraft.Client/Xbox/Sentient/SentientManager.h
new file mode 100644
index 00000000..3cf6df09
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/SentientManager.h
@@ -0,0 +1,81 @@
+#pragma once
+#include "MinecraftTelemetry.h"
+
+class CSentientManager : public CTelemetryManager
+{
+public:
+ enum ETelemetryEvent
+ {
+ eTelemetry_PlayerSessionStart,
+ eTelemetry_PlayerSessionExit,
+ eTelemetry_HeartBeat,
+ eTelemetry_LevelStart,
+ eTelemetry_LevelExit,
+ eTelemetry_LevelSaveOrCheckpoint,
+ eTelemetry_PauseOrInactive,
+ eTelemetry_UnpauseOrActive,
+ eTelemetry_MenuShown,
+ eTelemetry_AchievementUnlocked,
+ eTelemetry_MediaShareUpload,
+ eTelemetry_UpsellPresented,
+ eTelemetry_UpsellResponded,
+ eTelemetry_PlayerDiedOrFailed,
+ eTelemetry_EnemyKilledOrOvercome,
+ };
+
+ virtual HRESULT Init();
+ virtual HRESULT Tick();
+
+ virtual HRESULT Flush();
+
+ virtual BOOL RecordPlayerSessionStart(DWORD dwUserId);
+ virtual BOOL RecordPlayerSessionExit(DWORD dwUserId, int exitStatus);
+ virtual BOOL RecordHeartBeat(DWORD dwUserId);
+ virtual BOOL RecordLevelStart(DWORD dwUserId, ESen_FriendOrMatch friendsOrMatch, ESen_CompeteOrCoop competeOrCoop, int difficulty, DWORD numberOfLocalPlayers, DWORD numberOfOnlinePlayers);
+ virtual BOOL RecordLevelExit(DWORD dwUserId, ESen_LevelExitStatus levelExitStatus);
+ virtual BOOL RecordLevelSaveOrCheckpoint(DWORD dwUserId, INT saveOrCheckPointID, INT saveSizeInBytes);
+ virtual BOOL RecordLevelResume(DWORD dwUserId, ESen_FriendOrMatch friendsOrMatch, ESen_CompeteOrCoop competeOrCoop, int difficulty, DWORD numberOfLocalPlayers, DWORD numberOfOnlinePlayers, INT saveOrCheckPointID);
+ virtual BOOL RecordPauseOrInactive(DWORD dwUserId);
+ virtual BOOL RecordUnpauseOrActive(DWORD dwUserId);
+ virtual BOOL RecordMenuShown(DWORD dwUserId, INT menuID, INT optionalMenuSubID);
+ virtual BOOL RecordAchievementUnlocked(DWORD dwUserId, INT achievementID, INT achievementGamerscore);
+ virtual BOOL RecordMediaShareUpload(DWORD dwUserId, ESen_MediaDestination mediaDestination, ESen_MediaType mediaType);
+ virtual BOOL RecordUpsellPresented(DWORD dwUserId, ESen_UpsellID upsellId, INT marketplaceOfferID);
+ virtual BOOL RecordUpsellResponded(DWORD dwUserId, ESen_UpsellID upsellId, INT marketplaceOfferID, ESen_UpsellOutcome upsellOutcome);
+ virtual BOOL RecordPlayerDiedOrFailed(DWORD dwUserId, INT lowResMapX, INT lowResMapY, INT lowResMapZ, INT mapID, INT playerWeaponID, INT enemyWeaponID, ETelemetryChallenges enemyTypeID);
+ virtual BOOL RecordEnemyKilledOrOvercome(DWORD dwUserId, INT lowResMapX, INT lowResMapY, INT lowResMapZ, INT mapID, INT playerWeaponID, INT enemyWeaponID, ETelemetryChallenges enemyTypeID);
+ virtual BOOL RecordTexturePackLoaded(DWORD dwUserId, INT texturePackId, INT purchased);
+
+ virtual BOOL RecordSkinChanged(DWORD dwUserId, DWORD dwSkinId);
+ virtual BOOL RecordBanLevel(DWORD dwUserId);
+ virtual BOOL RecordUnBanLevel(DWORD dwUserId);
+
+ virtual INT GetMultiplayerInstanceID();
+ virtual INT GenerateMultiplayerInstanceId();
+ virtual void SetMultiplayerInstanceId(INT value);
+
+private:
+ float m_lastHeartbeat;
+ bool m_bFirstFlush;
+
+ float m_fLevelStartTime[XUSER_MAX_COUNT];
+
+ INT m_multiplayerInstanceID;
+ DWORD m_levelInstanceID;
+
+ // Helper functions to get the various common settings
+ INT GetSecondsSinceInitialize();
+ INT GetMode(DWORD dwUserId);
+ INT GetSubMode(DWORD dwUserId);
+ INT GetLevelId(DWORD dwUserId);
+ INT GetSubLevelId(DWORD dwUserId);
+ INT GetTitleBuildId();
+ INT GetLevelInstanceID();
+ INT GetSingleOrMultiplayer();
+ INT GetDifficultyLevel(INT diff);
+ INT GetLicense();
+ INT GetDefaultGameControls();
+ INT GetAudioSettings(DWORD dwUserId);
+ INT GetLevelExitProgressStat1();
+ INT GetLevelExitProgressStat2();
+};
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Sentient/SentientStats.cpp b/Minecraft.Client/Xbox/Sentient/SentientStats.cpp
new file mode 100644
index 00000000..361d18ee
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/SentientStats.cpp
@@ -0,0 +1,731 @@
+/************************************************************************/
+/* THIS FILE WAS AUTOMATICALLY GENERATED */
+/* PLEASE DO NOT MODIFY */
+/************************************************************************/
+// Generated from Version: 24, on (9/4/2013 8:47:23 AM)
+
+#include
+
+#include "SenClientStats.h"
+
+using namespace Sentient;
+
+/************************************************************************/
+/* STATS */
+/************************************************************************/
+
+// PlayerSessionStart
+BOOL SenStatPlayerSessionStart ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT TitleBuildID, INT SkeletonDistanceInInches, INT EnrollmentType, INT NumberOfSkeletonsInView, INT DeploymentType )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT TitleBuildID;
+ INT SkeletonDistanceInInches;
+ INT EnrollmentType;
+ INT NumberOfSkeletonsInView;
+ INT DeploymentType;
+ } LocalStruct = { SecondsSinceInitialize, ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, TitleBuildID, SkeletonDistanceInInches, EnrollmentType, NumberOfSkeletonsInView, DeploymentType };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 128;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 10;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("PlayerSessionStart", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// PlayerSessionExit
+BOOL SenStatPlayerSessionExit ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ } LocalStruct = { SecondsSinceInitialize, ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 129;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 5;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("PlayerSessionExit", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// HeartBeat
+BOOL SenStatHeartBeat ( DWORD dwUserID, INT SecondsSinceInitialize )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ } LocalStruct = { SecondsSinceInitialize };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 130;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 1;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("HeartBeat", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// LevelStart
+BOOL SenStatLevelStart ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT SingleOrMultiplayer, INT FriendsOrMatch, INT CompeteOrCoop, INT DifficultyLevel, INT NumberOfLocalPlayers, INT NumberOfOnlinePlayers, INT License, INT DefaultGameControls, INT AudioSettings, INT SkeletonDistanceInInches, INT NumberOfSkeletonsInView )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT LevelInstanceID;
+ INT MultiplayerInstanceID;
+ INT SingleOrMultiplayer;
+ INT FriendsOrMatch;
+ INT CompeteOrCoop;
+ INT DifficultyLevel;
+ INT NumberOfLocalPlayers;
+ INT NumberOfOnlinePlayers;
+ INT License;
+ INT DefaultGameControls;
+ INT AudioSettings;
+ INT SkeletonDistanceInInches;
+ INT NumberOfSkeletonsInView;
+ } LocalStruct = { SecondsSinceInitialize, ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, LevelInstanceID, MultiplayerInstanceID, SingleOrMultiplayer, FriendsOrMatch, CompeteOrCoop, DifficultyLevel, NumberOfLocalPlayers, NumberOfOnlinePlayers, License, DefaultGameControls, AudioSettings, SkeletonDistanceInInches, NumberOfSkeletonsInView };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 131;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 18;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("LevelStart", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// LevelExit
+BOOL SenStatLevelExit ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT LevelExitStatus, INT LevelExitProgressStat1, INT LevelExitProgressStat2, INT LevelDurationInSeconds )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT LevelInstanceID;
+ INT MultiplayerInstanceID;
+ INT LevelExitStatus;
+ INT LevelExitProgressStat1;
+ INT LevelExitProgressStat2;
+ INT LevelDurationInSeconds;
+ } LocalStruct = { SecondsSinceInitialize, ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, LevelInstanceID, MultiplayerInstanceID, LevelExitStatus, LevelExitProgressStat1, LevelExitProgressStat2, LevelDurationInSeconds };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 132;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 11;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("LevelExit", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// LevelSaveOrCheckpoint
+BOOL SenStatLevelSaveOrCheckpoint ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT LevelExitProgressStat1, INT LevelExitProgressStat2, INT LevelDurationInSeconds, INT SaveOrCheckPointID, INT SaveSizeInBytes )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT LevelInstanceID;
+ INT MultiplayerInstanceID;
+ INT LevelExitProgressStat1;
+ INT LevelExitProgressStat2;
+ INT LevelDurationInSeconds;
+ INT SaveOrCheckPointID;
+ INT SaveSizeInBytes;
+ } LocalStruct = { SecondsSinceInitialize, ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, LevelInstanceID, MultiplayerInstanceID, LevelExitProgressStat1, LevelExitProgressStat2, LevelDurationInSeconds, SaveOrCheckPointID, SaveSizeInBytes };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 133;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 12;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("LevelSaveOrCheckpoint", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// LevelResume
+BOOL SenStatLevelResume ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT SingleOrMultiplayer, INT FriendsOrMatch, INT CompeteOrCoop, INT DifficultyLevel, INT NumberOfLocalPlayers, INT NumberOfOnlinePlayers, INT License, INT DefaultGameControls, INT SaveOrCheckPointID, INT AudioSettings, INT SkeletonDistanceInInches, INT NumberOfSkeletonsInView )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT LevelInstanceID;
+ INT MultiplayerInstanceID;
+ INT SingleOrMultiplayer;
+ INT FriendsOrMatch;
+ INT CompeteOrCoop;
+ INT DifficultyLevel;
+ INT NumberOfLocalPlayers;
+ INT NumberOfOnlinePlayers;
+ INT License;
+ INT DefaultGameControls;
+ INT SaveOrCheckPointID;
+ INT AudioSettings;
+ INT SkeletonDistanceInInches;
+ INT NumberOfSkeletonsInView;
+ } LocalStruct = { SecondsSinceInitialize, ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, LevelInstanceID, MultiplayerInstanceID, SingleOrMultiplayer, FriendsOrMatch, CompeteOrCoop, DifficultyLevel, NumberOfLocalPlayers, NumberOfOnlinePlayers, License, DefaultGameControls, SaveOrCheckPointID, AudioSettings, SkeletonDistanceInInches, NumberOfSkeletonsInView };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 134;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 19;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("LevelResume", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// PauseOrInactive
+BOOL SenStatPauseOrInactive ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT LevelInstanceID;
+ INT MultiplayerInstanceID;
+ } LocalStruct = { SecondsSinceInitialize, ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, LevelInstanceID, MultiplayerInstanceID };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 135;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 7;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("PauseOrInactive", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// UnpauseOrActive
+BOOL SenStatUnpauseOrActive ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT LevelInstanceID;
+ INT MultiplayerInstanceID;
+ } LocalStruct = { SecondsSinceInitialize, ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, LevelInstanceID, MultiplayerInstanceID };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 136;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 7;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("UnpauseOrActive", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// MenuShown
+BOOL SenStatMenuShown ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT MenuID, INT OptionalMenuSubID, INT LevelInstanceID, INT MultiplayerInstanceID )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT MenuID;
+ INT OptionalMenuSubID;
+ INT LevelInstanceID;
+ INT MultiplayerInstanceID;
+ } LocalStruct = { SecondsSinceInitialize, ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, MenuID, OptionalMenuSubID, LevelInstanceID, MultiplayerInstanceID };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 137;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 9;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("MenuShown", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// AchievementUnlocked
+BOOL SenStatAchievementUnlocked ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT AchievementID, INT AchievementGamerscore )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT LevelInstanceID;
+ INT MultiplayerInstanceID;
+ INT AchievementID;
+ INT AchievementGamerscore;
+ } LocalStruct = { SecondsSinceInitialize, ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, LevelInstanceID, MultiplayerInstanceID, AchievementID, AchievementGamerscore };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 138;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 9;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("AchievementUnlocked", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// MediaShareUpload
+BOOL SenStatMediaShareUpload ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT MediaDestination, INT MediaType )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT LevelInstanceID;
+ INT MultiplayerInstanceID;
+ INT MediaDestination;
+ INT MediaType;
+ } LocalStruct = { SecondsSinceInitialize, ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, LevelInstanceID, MultiplayerInstanceID, MediaDestination, MediaType };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 139;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 9;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("MediaShareUpload", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// UpsellPresented
+BOOL SenStatUpsellPresented ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT UpsellID, INT MarketplaceOfferID )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT LevelInstanceID;
+ INT MultiplayerInstanceID;
+ INT UpsellID;
+ INT MarketplaceOfferID;
+ } LocalStruct = { SecondsSinceInitialize, ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, LevelInstanceID, MultiplayerInstanceID, UpsellID, MarketplaceOfferID };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 140;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 9;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("UpsellPresented", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// UpsellResponded
+BOOL SenStatUpsellResponded ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT UpsellID, INT MarketplaceOfferID, INT UpsellOutcome )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT LevelInstanceID;
+ INT MultiplayerInstanceID;
+ INT UpsellID;
+ INT MarketplaceOfferID;
+ INT UpsellOutcome;
+ } LocalStruct = { SecondsSinceInitialize, ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, LevelInstanceID, MultiplayerInstanceID, UpsellID, MarketplaceOfferID, UpsellOutcome };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 141;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 10;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("UpsellResponded", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// PlayerDiedOrFailed
+BOOL SenStatPlayerDiedOrFailed ( DWORD dwUserID, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT LowResMapX, INT LowResMapY, INT LowResMapZ, INT MapID, INT PlayerWeaponID, INT EnemyWeaponID, INT EnemyTypeID, INT SecondsSinceInitialize, INT CopyOfSecondsSinceInitialize )
+{
+ struct
+ {
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT LevelInstanceID;
+ INT MultiplayerInstanceID;
+ INT LowResMapX;
+ INT LowResMapY;
+ INT LowResMapZ;
+ INT MapID;
+ INT PlayerWeaponID;
+ INT EnemyWeaponID;
+ INT EnemyTypeID;
+ INT SecondsSinceInitialize;
+ INT CopyOfSecondsSinceInitialize;
+ INT Count;
+ } LocalStruct = { ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, LevelInstanceID, MultiplayerInstanceID, LowResMapX, LowResMapY, LowResMapZ, MapID, PlayerWeaponID, EnemyWeaponID, EnemyTypeID, SecondsSinceInitialize, CopyOfSecondsSinceInitialize, 1 };
+ DWORD arrValueFlags[] = { SenStatValueFlag_Min, SenStatValueFlag_Max, SenStatValueFlag_Inc };
+
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 142;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 13;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 3;
+ st.arrValues = (CHAR*)&LocalStruct.SecondsSinceInitialize;
+ st.arrValueFlags = arrValueFlags;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("PlayerDiedOrFailed", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// EnemyKilledOrOvercome
+BOOL SenStatEnemyKilledOrOvercome ( DWORD dwUserID, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT LowResMapX, INT LowResMapY, INT LowResMapZ, INT MapID, INT PlayerWeaponID, INT EnemyWeaponID, INT EnemyTypeID, INT SecondsSinceInitialize, INT CopyOfSecondsSinceInitialize )
+{
+ struct
+ {
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT LevelInstanceID;
+ INT MultiplayerInstanceID;
+ INT LowResMapX;
+ INT LowResMapY;
+ INT LowResMapZ;
+ INT MapID;
+ INT PlayerWeaponID;
+ INT EnemyWeaponID;
+ INT EnemyTypeID;
+ INT SecondsSinceInitialize;
+ INT CopyOfSecondsSinceInitialize;
+ INT Count;
+ } LocalStruct = { ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, LevelInstanceID, MultiplayerInstanceID, LowResMapX, LowResMapY, LowResMapZ, MapID, PlayerWeaponID, EnemyWeaponID, EnemyTypeID, SecondsSinceInitialize, CopyOfSecondsSinceInitialize, 1 };
+ DWORD arrValueFlags[] = { SenStatValueFlag_Min, SenStatValueFlag_Max, SenStatValueFlag_Inc };
+
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 143;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 13;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 3;
+ st.arrValues = (CHAR*)&LocalStruct.SecondsSinceInitialize;
+ st.arrValueFlags = arrValueFlags;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("EnemyKilledOrOvercome", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// SkinChanged
+BOOL SenStatSkinChanged ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT SkinID )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT LevelInstanceID;
+ INT MultiplayerInstanceID;
+ INT SkinID;
+ } LocalStruct = { SecondsSinceInitialize, ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, LevelInstanceID, MultiplayerInstanceID, SkinID };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 144;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 8;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("SkinChanged", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// BanLevel
+BOOL SenStatBanLevel ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT LevelInstanceID;
+ INT MultiplayerInstanceID;
+ } LocalStruct = { SecondsSinceInitialize, ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, LevelInstanceID, MultiplayerInstanceID };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 145;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 7;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("BanLevel", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// UnBanLevel
+BOOL SenStatUnBanLevel ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT LevelInstanceID;
+ INT MultiplayerInstanceID;
+ } LocalStruct = { SecondsSinceInitialize, ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, LevelInstanceID, MultiplayerInstanceID };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 146;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 7;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("UnBanLevel", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+// TexturePackChanged
+BOOL SenStatTexturePackChanged ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT TexturePackId, INT Purchased )
+{
+ struct
+ {
+ INT SecondsSinceInitialize;
+ INT ModeID;
+ INT OptionalSubModeID;
+ INT LevelID;
+ INT OptionalSubLevelID;
+ INT LevelInstanceID;
+ INT MultiplayerInstanceID;
+ INT TexturePackId;
+ INT Purchased;
+ } LocalStruct = { SecondsSinceInitialize, ModeID, OptionalSubModeID, LevelID, OptionalSubLevelID, LevelInstanceID, MultiplayerInstanceID, TexturePackId, Purchased };
+ SenStat st;
+ st.dwUserID = dwUserID;
+ st.dwStatID = 147;
+ st.dwFlags = SenStatFlag_Normal;
+ st.dwNumProperties = 9;
+ st.arrProperties = (CHAR*)&LocalStruct;
+ st.dwNumValues = 0;
+ st.arrValues = NULL;
+ st.arrValueFlags = NULL;
+
+#ifdef SEN_LOGTELEMETRY
+ // if we're in debug build with logging then log the stat to a file for testing
+ SentientDebugLogStatSend("TexturePackChanged", &st );
+#endif
+
+
+ return Sentient::SentientStatsSend( &st ) == S_OK;
+}
+
+namespace Sentient
+{
+
+ extern int statsVersion;
+
+ class StatsVersionClass {
+ public: StatsVersionClass() { statsVersion = 24; }
+ };
+
+ static StatsVersionClass versionClass;
+}
+
diff --git a/Minecraft.Client/Xbox/Sentient/SentientStats.h b/Minecraft.Client/Xbox/Sentient/SentientStats.h
new file mode 100644
index 00000000..9af0a0d9
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/SentientStats.h
@@ -0,0 +1,92 @@
+/************************************************************************/
+/* THIS FILE WAS AUTOMATICALLY GENERATED */
+/* PLEASE DO NOT MODIFY */
+/************************************************************************/
+// Generated from Version: 24, on (9/4/2013 8:47:23 AM)
+
+#pragma once
+
+/************************************************************************/
+/* STATS */
+/************************************************************************/
+
+// PlayerSessionStart
+// Player signed in or joined
+BOOL SenStatPlayerSessionStart ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT TitleBuildID, INT SkeletonDistanceInInches, INT EnrollmentType, INT NumberOfSkeletonsInView, INT DeploymentType );
+
+// PlayerSessionExit
+// Player signed out or left
+BOOL SenStatPlayerSessionExit ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID );
+
+// HeartBeat
+// Sent every 60 seconds by title
+BOOL SenStatHeartBeat ( DWORD dwUserID, INT SecondsSinceInitialize );
+
+// LevelStart
+// Level started
+BOOL SenStatLevelStart ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT SingleOrMultiplayer, INT FriendsOrMatch, INT CompeteOrCoop, INT DifficultyLevel, INT NumberOfLocalPlayers, INT NumberOfOnlinePlayers, INT License, INT DefaultGameControls, INT AudioSettings, INT SkeletonDistanceInInches, INT NumberOfSkeletonsInView );
+
+// LevelExit
+// Level exited
+BOOL SenStatLevelExit ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT LevelExitStatus, INT LevelExitProgressStat1, INT LevelExitProgressStat2, INT LevelDurationInSeconds );
+
+// LevelSaveOrCheckpoint
+// Level saved explicitly or implicitly
+BOOL SenStatLevelSaveOrCheckpoint ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT LevelExitProgressStat1, INT LevelExitProgressStat2, INT LevelDurationInSeconds, INT SaveOrCheckPointID, INT SaveSizeInBytes );
+
+// LevelResume
+// Level resumed from a save or restarted at a checkpoint
+BOOL SenStatLevelResume ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT SingleOrMultiplayer, INT FriendsOrMatch, INT CompeteOrCoop, INT DifficultyLevel, INT NumberOfLocalPlayers, INT NumberOfOnlinePlayers, INT License, INT DefaultGameControls, INT SaveOrCheckPointID, INT AudioSettings, INT SkeletonDistanceInInches, INT NumberOfSkeletonsInView );
+
+// PauseOrInactive
+// Player paused game or has become inactive, level and mode are for what the player is leaving
+BOOL SenStatPauseOrInactive ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID );
+
+// UnpauseOrActive
+// Player unpaused game or has become active, level and mode are for what the player is entering into
+BOOL SenStatUnpauseOrActive ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID );
+
+// MenuShown
+// A menu screen or major menu area has been shown
+BOOL SenStatMenuShown ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT MenuID, INT OptionalMenuSubID, INT LevelInstanceID, INT MultiplayerInstanceID );
+
+// AchievementUnlocked
+// An achievement was unlocked
+BOOL SenStatAchievementUnlocked ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT AchievementID, INT AchievementGamerscore );
+
+// MediaShareUpload
+// The user uploaded something to Kinect Share
+BOOL SenStatMediaShareUpload ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT MediaDestination, INT MediaType );
+
+// UpsellPresented
+// The user is shown an upsell to purchase something
+BOOL SenStatUpsellPresented ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT UpsellID, INT MarketplaceOfferID );
+
+// UpsellResponded
+// The user responded to the upsell
+BOOL SenStatUpsellResponded ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT UpsellID, INT MarketplaceOfferID, INT UpsellOutcome );
+
+// PlayerDiedOrFailed
+// The player died or failed a challenge - can be used for many types of failure
+BOOL SenStatPlayerDiedOrFailed ( DWORD dwUserID, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT LowResMapX, INT LowResMapY, INT LowResMapZ, INT MapID, INT PlayerWeaponID, INT EnemyWeaponID, INT EnemyTypeID, INT SecondsSinceInitialize, INT CopyOfSecondsSinceInitialize );
+
+// EnemyKilledOrOvercome
+// The player killed an enemy or overcame or solved a major challenge
+BOOL SenStatEnemyKilledOrOvercome ( DWORD dwUserID, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT LowResMapX, INT LowResMapY, INT LowResMapZ, INT MapID, INT PlayerWeaponID, INT EnemyWeaponID, INT EnemyTypeID, INT SecondsSinceInitialize, INT CopyOfSecondsSinceInitialize );
+
+// SkinChanged
+// The player has changed their skin, level and mode are for what the player is currently in
+BOOL SenStatSkinChanged ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT SkinID );
+
+// BanLevel
+// The player has banned a level, level and mode are for what the player is currently in and banning
+BOOL SenStatBanLevel ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID );
+
+// UnBanLevel
+// The player has unbanned a level, level and mode are for what the player is currently in and unbanning
+BOOL SenStatUnBanLevel ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID );
+
+// TexturePackChanged
+// The player has changed their texture pack, level and mode are for what the player is currently in
+BOOL SenStatTexturePackChanged ( DWORD dwUserID, INT SecondsSinceInitialize, INT ModeID, INT OptionalSubModeID, INT LevelID, INT OptionalSubLevelID, INT LevelInstanceID, INT MultiplayerInstanceID, INT TexturePackId, INT Purchased );
+
diff --git a/Minecraft.Client/Xbox/Sentient/SentientStats.xsd b/Minecraft.Client/Xbox/Sentient/SentientStats.xsd
new file mode 100644
index 00000000..18919172
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/SentientStats.xsd
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Minecraft.Client/Xbox/Sentient/SentientTelemetryCommon.h b/Minecraft.Client/Xbox/Sentient/SentientTelemetryCommon.h
new file mode 100644
index 00000000..80aefa9d
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/SentientTelemetryCommon.h
@@ -0,0 +1,191 @@
+#pragma once
+// 4J Stu - Enums as defined by the common Sentient telemetry format
+
+//##################################
+// DO NOT CHANGE ANY OF THESE VALUES
+//##################################
+
+
+/*************************************
+ AudioSettings
+ *************************************
+ Are players changing default audio settings?
+ */
+enum ESen_AudioSettings
+{
+ eSen_AudioSettings_Undefined = 0,
+ eSen_AudioSettings_Off = 1,
+ eSen_AudioSettings_On_Default = 2,
+ eSen_AudioSettings_On_CustomSetting = 3,
+};
+
+/*************************************
+ CompeteOrCoop
+ *************************************
+ Indicates whether players are playing a cooperative mode or a competitive mode.
+ */
+enum ESen_CompeteOrCoop
+{
+ eSen_CompeteOrCoop_Undefined = 0,
+ eSen_CompeteOrCoop_Cooperative = 1,
+ eSen_CompeteOrCoop_Competitive = 2,
+ eSen_CompeteOrCoop_Coop_and_Competitive = 3,
+};
+
+/*************************************
+ DefaultGameControls
+ *************************************
+ This is intended to capture whether players played using default control scheme or customized the control scheme.
+ */
+enum ESen_DefaultGameControls
+{
+ eSen_DefaultGameControls_Undefined = 0,
+ eSen_DefaultGameControls_Default_controls = 1,
+ eSen_DefaultGameControls_Custom_controls = 2,
+};
+
+/*************************************
+ DifficultyLevel
+ *************************************
+ An in-game setting that differentiates the challenge imposed on the user. Normalized to a standard 5-point scale.
+ */
+enum ESen_DifficultyLevel
+{
+ eSen_DifficultyLevel_Undefined = 0,
+ eSen_DifficultyLevel_Easiest = 1,
+ eSen_DifficultyLevel_Easier = 2,
+ eSen_DifficultyLevel_Normal = 3,
+ eSen_DifficultyLevel_Harder = 4,
+ eSen_DifficultyLevel_Hardest = 5,
+};
+
+/*************************************
+ GameInputType
+ *************************************
+ Used to determine the different modes of input used in the game. For gamepad/keyboard/mouse usage, it is not necessary to call this for every single input.
+ Also, if polling is used, calling this event occasionally may also work.
+ */
+enum ESen_GameInputType
+{
+ eSen_GameInputType_Undefined = 0,
+ eSen_GameInputType_Xbox_Controller = 1,
+ eSen_GameInputType_Gesture = 2,
+ eSen_GameInputType_Voice = 3,
+ eSen_GameInputType_Voice_and_Gesture_Together = 4,
+ eSen_GameInputType_Touch = 5,
+ eSen_GameInputType_Keyboard = 6,
+ eSen_GameInputType_Mouse = 7,
+};
+
+/*************************************
+ LevelExitStatus
+ *************************************
+ Indicates whether the player successfully completed the level. Critical for understanding the difficulty of a game with checkpoints or saves.
+ */
+enum ESen_LevelExitStatus
+{
+ eSen_LevelExitStatus_Undefined = 0,
+ eSen_LevelExitStatus_Exited = 1,
+ eSen_LevelExitStatus_Succeeded = 2,
+ eSen_LevelExitStatus_Failed = 3,
+};
+
+/*************************************
+ License
+ *************************************
+ Differentiates trial/demo from full purchased titles
+ */
+enum ESen_License
+{
+ eSen_License_Undefined = 0,
+ eSen_License_Trial_or_Demo = 1,
+ eSen_License_Full_Purchased_Title = 2,
+};
+
+/*************************************
+ MediaDestination
+ *************************************
+ Tracks where media is uploaded to (like facebook)
+ */
+enum ESen_MediaDestination
+{
+ ESen_MediaDestination_Undefined = 0,
+ ESen_MediaDestination_Kinect_Share = 1,
+ ESen_MediaDestination_Facebook = 2,
+ ESen_MediaDestination_YouTube = 3,
+ ESen_MediaDestination_Other = 4
+};
+
+/*************************************
+ MediaType
+ *************************************
+ Used to capture the type of media players are uploading to KinectShare
+ */
+enum ESen_MediaType
+{
+ eSen_MediaType_Undefined = 0,
+ eSen_MediaType_Picture = 1,
+ eSen_MediaType_Video = 2,
+ eSen_MediaType_Other_UGC = 3,
+};
+
+/*************************************
+ SingleOrMultiplayer
+ *************************************
+ Indicates whether the game is being played in single or multiplayer mode and whether multiplayer is being played locally or over live.
+ */
+enum ESen_SingleOrMultiplayer
+{
+ eSen_SingleOrMultiplayer_Undefined = 0,
+ eSen_SingleOrMultiplayer_Single_Player = 1,
+ eSen_SingleOrMultiplayer_Multiplayer_Local = 2,
+ eSen_SingleOrMultiplayer_Multiplayer_Live = 3,
+ eSen_SingleOrMultiplayer_Multiplayer_Both_Local_and_Live = 4,
+};
+
+/*************************************
+ FriendOrMatch
+ *************************************
+ Are players playing with friends or were they matched?
+ */
+enum ESen_FriendOrMatch
+{
+ eSen_FriendOrMatch_Undefined = 0, // (use if a single player game)
+ eSen_FriendOrMatch_Playing_With_Invited_Friends = 1,
+ eSen_FriendOrMatch_Playing_With_Match_Made_Opponents = 2,
+ eSen_FriendOrMatch_Playing_With_Both_Friends_And_Matched_Opponents = 3,
+ eSen_FriendOrMatch_Joined_Through_An_Xbox_Live_Party = 4,
+ eSen_FriendOrMatch_Joined_Through_An_In_Game_Party = 5,
+};
+
+/*************************************
+ UpsellID
+ *************************************
+ Which upsell has been presented?
+ */
+enum ESen_UpsellID
+{
+ eSen_UpsellID_Undefined = 0,
+ eSen_UpsellID_Full_Version_Of_Game = 1,
+
+ // Added TU3
+ eSet_UpsellID_Skin_DLC = 2,
+
+ eSet_UpsellID_Texture_DLC = 3,
+
+ //2-max= Up to game
+};
+
+/*************************************
+ UpsellOutcome
+ *************************************
+ What was the outcome of the upsell?
+ */
+enum ESen_UpsellOutcome
+{
+ eSen_UpsellOutcome_Undefined = 0,
+ eSen_UpsellOutcome_Accepted = 1,
+ eSen_UpsellOutcome_Declined = 2,
+ eSen_UpsellOutcome_Went_To_Guide = 3,
+ eSen_UpsellOutcome_Other = 4,
+};
diff --git a/Minecraft.Client/Xbox/Sentient/TelemetryEnum.h b/Minecraft.Client/Xbox/Sentient/TelemetryEnum.h
new file mode 100644
index 00000000..77d39a39
--- /dev/null
+++ b/Minecraft.Client/Xbox/Sentient/TelemetryEnum.h
@@ -0,0 +1,229 @@
+#pragma once
+
+/*
+AchievementGamerscore Value in gamerscore of the achievement
+AchievementID ID of achievement unlocked
+EnemyTypeID What type of enemy or challenge was the player facing? To prevent data-loss by overflowing the buffer, we recommend enemy type.
+EnemyWeaponID What weapon the enemy is holding or what counter/AI the enemy is taking to overcome a challenge
+EnrollmentType How did players enroll? (Using Kinect)
+LandscapeOrPortrait Are you currently showing in landscape or portrait mode? (Win8 only)
+LevelDurationInSeconds How long, total, has the user been playing in this level - whatever best represents this duration for attempting the level you'd like to track.
+LevelExitProgressStat1 Refers to the highest level performance metric for your game. For example, a performance metric could points earned, race time, total kills, etc. This is entirely up to you and will help us understand how well the player performed, or how far the player progressed in the level before exiting.
+LevelExitProgressStat2 Refers to the highest level performance metric for your game. For example, a performance metric could points earned, race time, total kills, etc. This is entirely up to you and will help us understand how well the player performed, or how far the player progressed in the level before exiting.
+LevelID This is a more granular view of mode, allowing teams to get a sense of the levels or maps players are playing and providing some insight into how players progress through a game. Teams will have to provide the game mappings that correspond to the integers. The intent is that a level is highest level at which modes can be dissected and provides an indication of player progression in a game. The intent is that level start and ends do not occur more than every 2 minutes or so, otherwise the data reported will be difficult to understand. Levels are unique only within a given modeID - so you can have a ModeID =1, LevelID =1 and a different ModeID=2, LevelID = 1 indicate two completely different levels. LevelID = 0 means undefined or unknown.
+LevelInstanceID Generated by the game every time LevelStart or LevelResume is called. This should be a unique ID (can be sequential) within a session.
+LowResMapX Player position normalized to 0-255
+LowResMapY Player position normalized to 0-255
+LowResMapZ Player position normalized to 0-255
+MapID Unique ID for the current map the player is on
+MarketplaceOfferID Unique ID for the Xbox LIVE marketplace offer that the upsell links to
+MicroGoodTypeID Describes the type of consumable or microgood
+MultiplayerInstanceID multiplayerinstanceID is a title-generated value that is the same for all players in the same multiplayer session.
+NumberOfLocalPlayers the number of players that are playing together in the game locally in the current session (on the same piece of hardware)
+NumberOfOnlinePlayers the number of players that are playing together in the game online in the current session (not on the same piece of hardware)
+NumberOfSkeletonsInView the max and min of skeletons that were in view, regardless of enrollment
+OptionalSubLevelID Used when a title has more heirarchy required. OptionalSubLevel ID = 0 means undefined or unknown.
+OptionalSubModeID Used when a title has more heirarchy required. OptionalSubMode ID = 0 means undefined or unknown.
+PlayerLevelUpProgressStat1 Refers to a performance metric for your player when they level or rank up. This is entirely up to you and will help us understand how well the player performed, or how far the player has progressed.
+PlayerLevelUpProgressStat2 Refers to a performance metric for your player when they level or rank up. This is entirely up to you and will help us understand how well the player performed, or how far the player has progressed.
+PlayerWeaponID What weapon the player is holding or what approach/tact the player is taking to overcome a challenge
+PlayspaceFeedbackWarningDirection identifies which side of the playspace players are getting too close to that results in the playspace feedback
+SaveOrCheckpointID It is important that you also generate and save a unique SaveOrCheckpointID that can be read and reported when the player resumes from this save file or checkpoint. These IDs should be completely unique across the players experience, even if they play the same level multiple times. These IDs are critical to allowing us to re-stitch a players experience in your title and provide an accurate measure of time in level.
+SecondsSinceInitialize Number of seconds elapsed since Sentient initialize.
+SecondsSinceInitializeMax Number of seconds elapsed since Sentient initialize.
+SecondsSinceInitializeMin Number of seconds elapsed since Sentient initialize.
+SkeletonDistanceInInches Identifies the distance of the skeleton from the Kinect sensor
+TitleBuildID Build version of the title, used to track changes in development as well as patches/title updates
+*/
+
+/*
+ModeID
+An in-game setting that significantly differentiates the play style of the game.
+(This should be captured as an integer and correspond to mode specific to the game.)
+Teams will have to provide the game mappings that correspond to the integers.
+The intent is to allow teams to capture data on the highest level categories of gameplay in their game.
+For example, a game mode could be the name of the specific mini game (eg: golf vs darts) or a specific multiplayer mode (eg: hoard vs beast.) ModeID = 0 means undefined or unknown.
+*/
+enum ETelem_ModeId
+{
+ eTelem_ModeId_Undefined = 0,
+ eTelem_ModeId_Survival,
+ eTelem_ModeId_Creative, // Unused in current game version
+};
+
+/*
+OptionalSubModeID
+Used when a title has more heirarchy required.
+OptionalSubMode ID = 0 means undefined or unknown.
+*/
+enum ETelem_SubModeId
+{
+ eTelem_SubModeId_Undefined = 0,
+ eTelem_SubModeId_Normal,
+ eTelem_SubModeId_Tutorial,
+};
+
+/*
+LevelID
+This is a more granular view of mode, allowing teams to get a sense of the levels or maps players are playing and providing some insight into how players progress through a game.
+Teams will have to provide the game mappings that correspond to the integers.
+The intent is that a level is highest level at which modes can be dissected and provides an indication of player progression in a game.
+The intent is that level start and ends do not occur more than every 2 minutes or so, otherwise the data reported will be difficult to understand.
+Levels are unique only within a given modeID - so you can have a ModeID =1, LevelID =1 and a different ModeID=2, LevelID = 1 indicate two completely different levels.
+LevelID = 0 means undefined or unknown.
+*/
+enum ETelem_LevelId
+{
+ eTelem_LevelId_Undefined = 0,
+ eTelem_LevelId_PlayerGeneratedLevel = 1,
+ // 4J Stu - We currently do not have any specific levels (other than the tutorial which is tracked as a mode) so this is unused at the moment
+};
+
+/*
+OptionalSubLevelID
+Used when a title has more heirarchy required. OptionalSubLevel ID = 0 means undefined or unknown.
+*/
+enum ETelem_SubLevelId
+{
+ eTelem_SubLevelId_Undefined = 0,
+ eTelem_SubLevelId_Overworld,
+ eTelem_SubLevelId_Nether,
+ eTelem_SubLevelId_End,
+};
+
+/*
+MenuID
+Describes the specific menu seen. MenuID = 0 means undefined or unknown.
+*/
+// 4J Stu - FOR REFERENCE ONLY - Should map 1:1 with the CConsoleMinecraftApp:EUIScene enum
+// Values that are commented out here are not currently reported
+enum ETelem_MenuId
+{
+ //eTelemMenuId_PartnernetPassword = 0,
+ //eTelemMenuId_Intro = 1,
+ //eTelemMenuId_SaveMessage = 2,
+ //eTelemMenuId_Main = 3,
+ //eTelemMenuId_FullscreenProgress = 4,
+ eTelemMenuId_Pause = 5,
+ //eTelemMenuId_CraftingPanel_2x2 = 6,
+ //eTelemMenuId_CraftingPanel_3x3 = 7,
+ //eTelemMenuId_Furnace = 8,
+ //eTelemMenuId_Container = 9,
+ //eTelemMenuId_Largecontainer_small = 10,// for splitscreen
+ //eTelemMenuId_Inventory = 11,
+ //eTelemMenuId_Trap = 12,
+ //eTelemMenuId_Debug = 13,
+ //eTelemMenuId_DebugTips = 14,
+ //eTelemMenuId_HelpAndOptions = 15,
+ eTelemMenuId_HowToPlay = 16,
+ //eTelemMenuId_HowToPlayMenu = 17,
+ //eTelemMenuId_Controls = 18,
+ //eTelemMenuId_Settings_Menu = 19,
+ //eTelemMenuId_Settings_All = 20,
+ //eTelemMenuId_Leaderboards = 21,
+ //eTelemMenuId_Credits = 22,
+ //eTelemMenuId_Death = 23,
+ //eTelemMenuId_TutorialPopup = 24,
+ eTelemMenuId_MultiGameCreate = 25,
+ //eTelemMenuId_MultiGameJoinLoad = 26,
+ eTelemMenuId_MultiGameInfo = 27,
+ //eTelemMenuId_SignEntry = 28,
+ //eTelemMenuId_InGameInfo = 29,
+ //eTelemMenuId_ConnectingProgress = 30,
+ eTelemMenuId_DLCOffers = 31,
+ eTelemMenuId_SocialPost = 32,
+ //eTelemMenuId_TrialExitUpsell = 33,
+ eTelemMenuId_LoadSettings = 34,
+ //eTelemMenuId_Chat = 35,
+ //eTelemMenuId_Reinstall = 36,
+};
+
+/*
+OptionalSubMenuID
+Used when a title has more heirarchy required. OptionalSubMenuID = 0 means undefined or unknown.
+*/
+enum ETelemetry_HowToPlay_SubMenuId
+{
+ eTelemetryHowToPlay_Basics = 0,
+ eTelemetryHowToPlay_HUD,
+ eTelemetryHowToPlay_Inventory,
+ eTelemetryHowToPlay_Chest,
+ eTelemetryHowToPlay_LargeChest,
+ eTelemetryHowToPlay_InventoryCrafting,
+ eTelemetryHowToPlay_CraftTable,
+ eTelemetryHowToPlay_Furnace,
+ eTelemetryHowToPlay_Dispenser,
+ eTelemetryHowToPlay_NetherPortal,
+};
+
+/*
+EnemyTypeID What type of enemy or challenge was the player facing?
+To prevent data-loss by overflowing the buffer, we recommend enemy type.
+*/
+enum ETelemetryChallenges
+{
+ eTelemetryChallenges_Unknown = 0,
+
+ eTelemetryTutorial_TrialStart,
+ eTelemetryTutorial_Halfway,
+ eTelemetryTutorial_Complete,
+
+ eTelemetryTutorial_Inventory,
+ eTelemetryTutorial_Crafting,
+ eTelemetryTutorial_Furnace,
+ eTelemetryTutorial_Fishing,
+ eTelemetryTutorial_Minecart,
+ eTelemetryTutorial_Boat,
+ eTelemetryTutorial_Bed,
+
+ eTelemetryTutorial_Redstone_And_Pistons,
+ eTelemetryTutorial_Portal,
+ eTelemetryTutorial_FoodBar,
+ eTelemetryTutorial_CreativeMode,
+ eTelemetryTutorial_BrewingMenu,
+
+ eTelemetryInGame_Ride_Minecart,
+ eTelemetryInGame_Ride_Boat,
+ eTelemetryInGame_Ride_Pig,
+ eTelemetryInGame_UseBed,
+
+ eTelemetryTutorial_CreativeInventory, // Added TU5
+
+ eTelemetryTutorial_EnchantingMenu,
+ eTelemetryTutorial_Brewing,
+ eTelemetryTutorial_Enchanting,
+ eTelemetryTutorial_Farming,
+
+ eTelemetryPlayerDeathSource_Fall,
+ eTelemetryPlayerDeathSource_Lava,
+ eTelemetryPlayerDeathSource_Fire,
+ eTelemetryPlayerDeathSource_Water,
+ eTelemetryPlayerDeathSource_Suffocate,
+ eTelemetryPlayerDeathSource_OutOfWorld,
+ eTelemetryPlayerDeathSource_Cactus,
+
+ eTelemetryPlayerDeathSource_Player_Weapon,
+ eTelemetryPlayerDeathSource_Player_Arrow,
+
+ eTelemetryPlayerDeathSource_Explosion_Tnt,
+ eTelemetryPlayerDeathSource_Explosion_Creeper,
+
+ eTelemetryPlayerDeathSource_Wolf,
+ eTelemetryPlayerDeathSource_Zombie,
+ eTelemetryPlayerDeathSource_Skeleton,
+ eTelemetryPlayerDeathSource_Spider,
+ eTelemetryPlayerDeathSource_Slime,
+ eTelemetryPlayerDeathSource_Ghast,
+ eTelemetryPlayerDeathSource_ZombiePigman,
+
+ eTelemetryTutorial_Breeding,
+ eTelemetryTutorial_Golem,
+
+ eTelemetryTutorial_Anvil, // Added TU14
+ eTelemetryTutorial_AnvilMenu,
+ eTelemetryTutorial_Trading,
+ eTelemetryTutorial_TradingMenu,
+ eTelemetryTutorial_Enderchest,
+
+ // Sent over network as a byte
+};
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Sentient/trialConfigv1.bin b/Minecraft.Client/Xbox/Sentient/trialConfigv1.bin
new file mode 100644
index 00000000..7f571f45
Binary files /dev/null and b/Minecraft.Client/Xbox/Sentient/trialConfigv1.bin differ
diff --git a/Minecraft.Client/Xbox/Social/SocialManager.cpp b/Minecraft.Client/Xbox/Social/SocialManager.cpp
new file mode 100644
index 00000000..b7a108bc
--- /dev/null
+++ b/Minecraft.Client/Xbox/Social/SocialManager.cpp
@@ -0,0 +1,690 @@
+//
+// Class to handle and manage integration with social networks.
+// 4J Studios Ltd, 2011.
+// Andy West
+//
+
+
+#include "stdafx.h"
+#include "SocialManager.h"
+#include
+#include
+#include "..\Sentient\SentientManager.h"
+
+///////////////////////////////////////////////////////////////////////////
+// Constants.
+///////////////////////////////////////////////////////////////////////////
+
+// Table of SDK IDs for the social networks.
+static const DWORD kaSocialNetworkIDS[ eNumSocialNetworks ] =
+{
+ 2, // eFacebook
+};
+
+// WESTY : Not sure if we even need to get social access key!
+/*
+// Table of social network permissions that we will required to post.
+static const LPCWSTR kaSocialNetworkRequiredPermissions[ eNumSocialNetworks ] =
+{
+ L"publish_stream", // eFacebook
+};
+
+
+// Default size to use for social network access key text.
+static const DWORD kDefaultAccessKeyTextSize = 64;
+*/
+
+
+///////////////////////////////////////////////////////////////////////////
+// Static members intialisation.
+///////////////////////////////////////////////////////////////////////////
+
+// Initialise static instance pointer.
+CSocialManager* CSocialManager::m_pInstance = 0;
+
+
+
+
+///////////////////////////////////////////////////////////////////////////
+// Class functions.
+///////////////////////////////////////////////////////////////////////////
+
+// Get singleton instance.
+CSocialManager* CSocialManager::Instance()
+{
+ if ( m_pInstance == 0 ) // Is this the first time?
+ {
+ m_pInstance = new CSocialManager; // Create the singleton instance.
+ }
+ return m_pInstance;
+}
+
+// Default constructor.
+CSocialManager::CSocialManager()
+{
+ m_eCurrState = eStateUnitialised;
+ m_dwSocialPostingCapability = 0;
+
+// WESTY : Not sure if we even need to get social access key!
+/*
+ m_pAccessKeyText = NULL;
+ m_dwAccessKeyTextSize = 0;
+*/
+
+ m_pMainImageBuffer = NULL;
+ m_dwMainImageBufferSize = 0;
+
+ m_PostPreviewImage.pBytes = NULL;
+ m_dwCurrRequestUser = -1;
+
+ ZeroMemory(m_wchTitleA,sizeof(WCHAR)*MAX_SOCIALPOST_CAPTION);
+ ZeroMemory(m_wchCaptionA,sizeof(WCHAR)*MAX_SOCIALPOST_CAPTION);
+ ZeroMemory(m_wchDescA,sizeof(WCHAR)*MAX_SOCIALPOST_DESC);
+
+}
+
+
+// To be called once during game init.
+void CSocialManager::Initialise()
+{
+ assert( m_eCurrState == eStateUnitialised );
+ m_eCurrState = eStateReady;
+
+}
+
+
+void CSocialManager::Tick()
+{
+ switch( m_eCurrState )
+ {
+ case eStateUnitialised:
+ // Nothing to do.
+ break;
+
+ case eStateReady:
+ // Nothing to do.
+ break;
+
+ case eStateGetPostingCapability:
+ {
+ // Poll for result.
+ DWORD dwResult = XGetOverlappedResult( &( m_Overlapped ), &( m_dwOverlappedResultCode ), false );
+
+ switch( dwResult )
+ {
+ case ERROR_SUCCESS:
+ app.DebugPrintf( "XSocialGetCapabilities - SUCCESS - FLAGS = %d\n", m_dwSocialPostingCapability );
+ m_eCurrState = eStateReady;
+ break;
+
+ case ERROR_IO_INCOMPLETE:
+ // Still on going.
+ break;
+
+ default:
+ // Some kind of error occured.
+ app.DebugPrintf( "XSocialGetCapabilities - FAILED\n", m_dwSocialPostingCapability );
+ // WESTY: TO DO: Get error code, and possibly extened error code to figure out what went wrong.
+ //assert( false );
+ m_eCurrState = eStateReady;
+ break;
+ }
+ }
+ break;
+
+
+ case eStatePostingImage:
+ {
+ // Poll for result.
+ DWORD dwResult = XGetOverlappedResult( &( m_Overlapped ), &( m_dwOverlappedResultCode ), false );
+
+ switch( dwResult )
+ {
+ case ERROR_SUCCESS:
+ TelemetryManager->RecordMediaShareUpload(m_dwCurrRequestUser, ESen_MediaDestination_Facebook, eSen_MediaType_Picture);
+
+ app.DebugPrintf( "Facebook image post success!!!\n" );
+ DestroyMainPostImage();
+ DestroyPreviewPostImage();
+
+ // Award for successful post.
+ ProfileManager.Award( m_dwCurrRequestUser, eAward_socialPost );
+
+ m_eCurrState = eStateReady;
+ break;
+
+ case ERROR_IO_INCOMPLETE:
+ // Still on going.
+ break;
+
+ default:
+ // For some reason, the operation did not complete.
+ // SDK docs give no indication why this may be, but could be user cancelled the operation.
+ app.DebugPrintf( "Facebook image post failure!!!\n" );
+ DestroyMainPostImage();
+ DestroyPreviewPostImage();
+ m_eCurrState = eStateReady;
+ break;
+ }
+ }
+ break;
+
+ case eStatePostingLink:
+ {
+ // Poll for result.
+ DWORD dwResult = XGetOverlappedResult( &( m_Overlapped ), &( m_dwOverlappedResultCode ), false );
+
+ switch( dwResult )
+ {
+ case ERROR_SUCCESS:
+ app.DebugPrintf( "Facebook link post success!!!\n" );
+
+ // Award for successful post.
+ ProfileManager.Award( m_dwCurrRequestUser, eAward_socialPost );
+
+ m_eCurrState = eStateReady;
+ break;
+
+ case ERROR_IO_INCOMPLETE:
+ // Still on going.
+ break;
+
+ default:
+ // For some reason, the operation did not complete.
+ // SDK docs give no indication why this may be, but could be user cancelled the operation.
+ app.DebugPrintf( "Facebook link post failure!!!\n" );
+ m_eCurrState = eStateReady;
+ break;
+ }
+ }
+ break;
+
+ default:
+ // Unhandled state!
+ assert( false );
+ break;
+ }
+}
+
+
+// Find out if we are allowed to post to social networks.
+bool CSocialManager::RefreshPostingCapability()
+{
+ bool bResult = false;
+
+ if ( m_eCurrState != eStateReady )
+ {
+ return bResult;
+ }
+
+ // Test for titles ability to post to social networks.
+
+ // Test for titles ability to post to social networks.
+
+ XMemSet( &m_Overlapped, 0, sizeof(XOVERLAPPED) );
+
+ DWORD dwResult = XSocialGetCapabilities( &( m_dwSocialPostingCapability ), &( m_Overlapped ) );
+
+ switch( dwResult )
+ {
+ case ERROR_IO_PENDING:
+ bResult = true;
+ m_eCurrState = eStateGetPostingCapability;
+ break;
+
+ case ERROR_FUNCTION_FAILED:
+ {
+ // Hmm ... why would it fail, and what are we meant to do about it?
+ DWORD dwExtendedError = XGetOverlappedExtendedError( &( m_Overlapped ) );
+ app.DebugPrintf( "XSocialGetCapabilities ASYNC : FAILED : Extended Error %d\n", dwExtendedError );
+ //assert( false );
+ }
+ break;
+
+ default:
+ {
+ // Should never get in here.
+ DWORD dwExtendedError = XGetOverlappedExtendedError( &( m_Overlapped ) );
+ app.DebugPrintf( "XSocialGetCapabilities ASYNC : FAILED : Extended Error %d\n", dwExtendedError );
+ //assert( false );
+ }
+ break;
+ }
+
+ return bResult;
+}
+
+
+
+bool CSocialManager::IsTitleAllowedToPostAnything()
+{
+ assert( m_eCurrState != eStateUnitialised );
+
+ return( m_dwSocialPostingCapability != 0 );
+}
+
+
+bool CSocialManager::IsTitleAllowedToPostImages()
+{
+ assert( m_eCurrState != eStateUnitialised );
+
+ return( ( m_dwSocialPostingCapability & XSOCIAL_CAPABILITY_POSTIMAGE ) != 0 );
+}
+
+
+bool CSocialManager::IsTitleAllowedToPostLinks()
+{
+ assert( m_eCurrState != eStateUnitialised );
+
+ return( ( m_dwSocialPostingCapability & XSOCIAL_CAPABILITY_POSTLINK ) != 0 );
+}
+
+bool CSocialManager::AreAllUsersAllowedToPostImages()
+{
+ // catch no user being signed in to LIVE here too (or a local disconnect)
+ BOOL bUserAllowedToPost=FALSE;
+
+ for(int i=0;i 3 )
+ {
+ //assert( false );
+ return false;
+ }
+
+ // Store user index for award on successful post.
+ m_dwCurrRequestUser = dwUserIndex;
+
+ // Required for kinect only.
+ DWORD dwUserTrackingIndex = 0;
+ if ( bUsingKinect )
+ {
+ // WESTY - Will need a method to get this.
+ dwUserTrackingIndex = 0;
+ }
+
+ bool bResult = false;
+
+// CreatePreviewImage();
+
+ // SDK social post flags....
+ // XSOCIAL_POST_USERGENERATEDCONTENT
+ // XSOCIAL_POST_KINECTCONTENT
+ // XSOCIAL_POST_GAMECONTENT
+ // XSOCIAL_POST_ACHIEVEMENTCONTENT
+ // XSOCIAL_POST_MEDIACONTENT
+
+ // 4J Stu - MessageText is not a member of the struct in the header of the latest XDK 20871.6
+ // The documentation hasn't changed though...
+ //m_PostLinkParams.MessageText = L"This is a test link post.";
+ m_PostLinkParams.TitleText = L"Test Title";
+ m_PostLinkParams.TitleURL = L"http:\\www.4jstudios.com";
+ m_PostLinkParams.PictureCaption = L"Test Picture Caption";
+ m_PostLinkParams.PictureDescription = L"Test Picture Description";
+ m_PostLinkParams.PictureURL = L"http:\\www.4jstudios.com";
+ m_PostLinkParams.PreviewImage = m_PostPreviewImage;
+ m_PostLinkParams.Flags = ( XSOCIAL_POST_GAMECONTENT | XSOCIAL_POST_USERGENERATEDCONTENT ); // WESTY: Need to set correct flags for content type.
+ m_PostLinkParams.Size = sizeof( m_PostLinkParams );
+
+
+ // BEGIN: Asyncronous function call version
+ DWORD dwResult;
+
+ XMemSet( &m_Overlapped, 0, sizeof(XOVERLAPPED) );
+
+ if ( bUsingKinect )
+ {
+ dwResult = XShowNuiSocialNetworkLinkPostUI( dwUserTrackingIndex, dwUserIndex, &( m_PostLinkParams ), &( m_Overlapped ) );
+ }
+ else // using normal controller UI
+ {
+ dwResult = XShowSocialNetworkLinkPostUI( dwUserIndex, &( m_PostLinkParams ), &( m_Overlapped ) );
+ }
+
+ switch( dwResult )
+ {
+ case ERROR_IO_PENDING:
+ bResult = true;
+ m_eCurrState = eStatePostingLink;
+ break;
+
+ case ERROR_FUNCTION_FAILED:
+ // Hmm ... why would it fail, and what are we meant to do about it? Get extended error code!?
+ DestroyMainPostImage();
+ DestroyPreviewPostImage();
+ //assert( false );
+ break;
+
+ default:
+ // Should never get in here.
+ DestroyMainPostImage();
+ DestroyPreviewPostImage();
+ assert( false );
+ break;
+ }
+ // END: Asyncronous function call version
+
+ return bResult;
+}
+
+bool CSocialManager::PostImageToSocialNetwork( ESocialNetwork eSocialNetwork, DWORD dwUserIndex, bool bUsingKinect )
+{
+ if ( m_eCurrState != eStateReady )
+ {
+ return false;
+ }
+
+ // Ensure title is actually allowed to post images ... should always be the case, but we have to check for TCR.
+ if ( IsTitleAllowedToPostImages() == false )
+ {
+ //assert( false );
+ return false;
+ }
+
+ // Ensure dwUserIndex is sensible.
+ if ( dwUserIndex > 3 )
+ {
+ //assert( false );
+ return false;
+ }
+
+ // Store user index for award on successful post.
+ m_dwCurrRequestUser = dwUserIndex;
+
+ // Required for kinect only.
+ DWORD dwUserTrackingIndex = 0;
+ if ( bUsingKinect )
+ {
+ // WESTY - Will need a method to get this.
+ dwUserTrackingIndex = 0;
+ }
+
+ bool bResult = false;
+
+ PBYTE pbData=NULL;
+ DWORD dwDataSize;
+
+ app.GetScreenshot(dwUserIndex,&pbData,&dwDataSize);
+ app.GetPreviewImage(dwUserIndex,&m_PostPreviewImage);
+
+ // SDK social post flags....
+ // XSOCIAL_POST_USERGENERATEDCONTENT
+ // XSOCIAL_POST_KINECTCONTENT
+ // XSOCIAL_POST_GAMECONTENT
+ // XSOCIAL_POST_ACHIEVEMENTCONTENT
+ // XSOCIAL_POST_MEDIACONTENT
+
+ // 4J Stu - MessageText is not a member of the struct in the header of the latest XDK 20871.6
+ // The documentation hasn't changed though...
+ //m_PostImageParams.MessageText = L"This is a test image post.";
+ m_PostImageParams.TitleText = m_wchTitleA;
+ m_PostImageParams.PictureCaption = m_wchCaptionA;
+ m_PostImageParams.PictureDescription = m_wchDescA;
+ m_PostImageParams.PreviewImage = m_PostPreviewImage;
+ m_PostImageParams.Flags = ( XSOCIAL_POST_GAMECONTENT | XSOCIAL_POST_USERGENERATEDCONTENT ); // WESTY: Need to set correct flags for content type.
+ m_PostImageParams.pFullImage = pbData;//m_pMainImageBuffer;
+ m_PostImageParams.FullImageByteCount = dwDataSize;//m_dwMainImageBufferSize;
+ m_PostImageParams.Size = sizeof( m_PostImageParams );
+
+ // BEGIN: Asyncronous function call version
+ DWORD dwResult;
+
+ XMemSet( &m_Overlapped, 0, sizeof(XOVERLAPPED) );
+
+ if ( bUsingKinect )
+ {
+ dwResult = XShowNuiSocialNetworkImagePostUI( dwUserTrackingIndex, dwUserIndex, &( m_PostImageParams ), &( m_Overlapped ) );
+ }
+ else // using normal controller UI
+ {
+ dwResult = XShowSocialNetworkImagePostUI( dwUserIndex, &( m_PostImageParams ), &( m_Overlapped ) );
+ }
+
+ switch( dwResult )
+ {
+ case ERROR_IO_PENDING:
+ bResult = true;
+ m_eCurrState = eStatePostingImage;
+ break;
+
+ case ERROR_FUNCTION_FAILED:
+ // Hmm ... why would it fail, and what are we meant to do about it? Get extended error code!?
+ DestroyMainPostImage();
+ DestroyPreviewPostImage();
+ //assert( false );
+ break;
+
+ default:
+ // Should never get in here.
+ DestroyMainPostImage();
+ DestroyPreviewPostImage();
+ assert( false );
+ break;
+ }
+ // END: Asyncronous function call version
+
+
+ return bResult;
+}
+
+// WESTY : Not sure if we even need to get social access key!
+/*
+// It is unclear from the sdk docs what this is actually used for.
+// So far we have only created a syncronous version of this function, and the xbox functionality does not seem to work yet!
+bool CSocialManager::GetSocialNetworkAccessKey( ESocialNetwork eSocialNetwork, DWORD dwUserIndex, bool bUsingKinect, DWORD dwUserTrackingIndex, bool bShowNetworkSignin )
+{
+ bool bReturn = false;
+
+ DWORD dwResult;
+
+ // Ensure that we free any previously used access key buffer.
+ if ( m_pAccessKeyText != NULL )
+ {
+ delete [] m_pAccessKeyText;
+ m_pAccessKeyText = NULL;
+ }
+
+ // Get social network ID and permissions.
+ DWORD dwSocialNetworkID = kaSocialNetworkIDS[ eSocialNetwork ];
+ LPCWSTR pRequiredPermissions = kaSocialNetworkRequiredPermissions[ eSocialNetwork ];
+
+ // Allocate buffer for social network access key text.
+ m_dwAccessKeyTextSize = kDefaultAccessKeyTextSize;
+ m_pAccessKeyText = new wchar_t [ m_dwAccessKeyTextSize ];
+
+ if ( bShowNetworkSignin )
+ {
+ if ( bUsingKinect )
+ {
+ dwResult = XShowNuiSocialGetUserToken( dwUserTrackingIndex, dwUserIndex, dwSocialNetworkID, pRequiredPermissions, m_pAccessKeyText, &( m_dwAccessKeyTextSize ), NULL );
+
+ // If buffer for key text was not large enough, reallocate buffer that is large enough and try again.
+ if ( dwResult == ERROR_INSUFFICIENT_BUFFER )
+ {
+ delete [] m_pAccessKeyText;
+ m_pAccessKeyText = new wchar_t[ m_dwAccessKeyTextSize ];
+ dwResult = XShowNuiSocialGetUserToken( dwUserTrackingIndex, dwUserIndex, dwSocialNetworkID, pRequiredPermissions, m_pAccessKeyText, &( m_dwAccessKeyTextSize ), NULL );
+ }
+ }
+ else // using standard controller interface.
+ {
+ dwResult = XShowSocialGetUserToken( dwUserIndex, dwSocialNetworkID, pRequiredPermissions, m_pAccessKeyText, &( m_dwAccessKeyTextSize ), NULL );
+
+ // If buffer for key text was not large enough, reallocate buffer that is large enough and try again.
+ if ( dwResult == ERROR_INSUFFICIENT_BUFFER )
+ {
+ delete [] m_pAccessKeyText;
+ m_pAccessKeyText = new wchar_t[ m_dwAccessKeyTextSize ];
+ dwResult = XShowSocialGetUserToken( dwUserIndex, dwSocialNetworkID, pRequiredPermissions, m_pAccessKeyText, &( m_dwAccessKeyTextSize ), NULL );
+ }
+ }
+ }
+ else // we are trying to obtain cached user access key.
+ {
+ dwResult = XSocialGetUserToken( dwUserIndex, dwSocialNetworkID, pRequiredPermissions, m_pAccessKeyText, &( m_dwAccessKeyTextSize ), NULL );
+
+ // If buffer for key text was not large enough, reallocate buffer that is large enough and try again.
+ if ( dwResult == ERROR_INSUFFICIENT_BUFFER )
+ {
+ delete [] m_pAccessKeyText;
+ m_pAccessKeyText = new wchar_t[ m_dwAccessKeyTextSize ];
+ dwResult = XSocialGetUserToken( dwUserIndex, dwSocialNetworkID, pRequiredPermissions, m_pAccessKeyText, &( m_dwAccessKeyTextSize ), NULL );
+ }
+ }
+
+ // Check result.
+ if ( dwResult != ERROR_SUCCESS )
+ {
+ switch( dwResult )
+ {
+ // ERROR_OUT_MEMORY does not seem to exist, despite being mentioned in the XDK docs.
+ //case ERROR_OUT_MEMORY:
+ // // Not much we can do about this?!
+ // assert( false );
+ // break;
+
+ case ERROR_INVALID_PARAMETER:
+ // dwUserIndex or dwSocialNetworkID are incorrect!
+ assert( false );
+ break;
+
+ case ERROR_ACCESS_DENIED:
+ // Either no user is signed in, or title not allowed to use social posting (the latter should never occur!).
+ break;
+
+ case ERROR_FUNCTION_FAILED:
+ // dwTrackingID is not valid. Kinect only. Not sure what we would do about this one?
+ assert( false );
+ break;
+
+ case ERROR_INSUFFICIENT_BUFFER:
+ // This should not be possible, we already resized the buffer and retried if it was too small.
+ assert( false );
+ break;
+
+ case ERROR_GRACEFUL_DISCONNECT:
+ // User disconnected before process was complete.
+ break;
+
+ case ERROR_CANCELLED:
+ // User cancelled the request.
+ break;
+
+ case ERROR_BAD_NET_RESP:
+ // Error in access, or some kind of network related error.
+ // Need to display warning??
+ assert( false );
+ break;
+
+ default:
+ // Should never get here.
+ assert( false );
+ break;
+ }
+ }
+ else // success
+ {
+ bReturn = true;
+ }
+
+ return bReturn;
+}
+*/
+
+// WESTY : Not sure if we even need to get social access key!
+/*
+
+// It is unclear from the sdk docs what this is actually used for.
+// So far we have only created a syncronous version of this function, and the xbox functionality does not seem to work yet!
+bool CSocialManager::ObtainSocialNetworkAccessKey( ESocialNetwork eSocialNetwork, DWORD dwUserIndex, bool bUsingKinect )
+{
+ if ( m_eCurrState != eStateReady )
+ {
+ return false;
+ }
+
+ // Ensure dwUserIndex is sensible.
+ if ( dwUserIndex > 3 )
+ {
+ assert( false );
+ return false;
+ }
+
+ // Kinect user tracking index.
+ DWORD dwUserTrackingIndex = 0;
+ if ( bUsingKinect )
+ {
+ // WESTY - Will need a method to get this.
+ dwUserTrackingIndex = 0;
+ }
+
+ // Try first of all to obtain cached user key.
+ bool bSocialNetworkAccessKeyAvailable = GetSocialNetworkAccessKey( eSocialNetwork, dwUserIndex, bUsingKinect, dwUserTrackingIndex, false );
+
+ if ( bSocialNetworkAccessKeyAvailable == false )
+ {
+ // No chached user key, so we will try the UI version to signin to social network?
+ bSocialNetworkAccessKeyAvailable = GetSocialNetworkAccessKey( eSocialNetwork, dwUserIndex, bUsingKinect, dwUserTrackingIndex, true );
+ }
+
+ return bSocialNetworkAccessKeyAvailable;
+}
+*/
diff --git a/Minecraft.Client/Xbox/Social/SocialManager.h b/Minecraft.Client/Xbox/Social/SocialManager.h
new file mode 100644
index 00000000..e4149966
--- /dev/null
+++ b/Minecraft.Client/Xbox/Social/SocialManager.h
@@ -0,0 +1,135 @@
+//
+// Class to handle and manage integration with social networks.
+// 4J Studios Ltd, 2011.
+// Andy West
+//
+
+#ifndef _SOCIAL_MANAGER_H
+#define _SOCIAL_MANAGER_H
+
+#include
+
+#define MAX_SOCIALPOST_CAPTION 60
+#define MAX_SOCIALPOST_DESC 100
+
+// XDK only provides for facebook so far. Others may follow!?
+enum ESocialNetwork
+{
+ eFacebook = 0,
+ eNumSocialNetworks
+};
+
+
+// Class follows singleton design pattern.
+class CSocialManager
+{
+private:
+ // Default constructor, copy constructor and assignment operator are all private.
+ CSocialManager();
+ CSocialManager( const CSocialManager& );
+ CSocialManager& operator= ( const CSocialManager& );
+
+ // Static private instance.
+ static CSocialManager* m_pInstance;
+
+ // Bitset of title posting capability flags ( XSOCIAL_CAPABILITY_POSTIMAGE, XSOCIAL_CAPABILITY_POSTLINK ).
+ DWORD m_dwSocialPostingCapability;
+
+ // Index of user who made current active request.
+ DWORD m_dwCurrRequestUser;
+
+ // WESTY : Not sure if we even need to get social access key!
+/*
+ // Size of the social network access key text buffer.
+ DWORD m_dwAccessKeyTextSize;
+
+ // Pointer to the social network access key text buffer.
+ LPWSTR m_pAccessKeyText;
+ */
+
+ // The various states of the manager.
+ enum EState
+ {
+ eStateUnitialised = 0,
+ eStateReady,
+ eStateGetPostingCapability,
+ eStatePostingImage,
+ eStatePostingLink,
+ };
+
+
+ // Current state that manager is in.
+ EState m_eCurrState;
+
+ // For xsocial asyncronous operations.
+ XOVERLAPPED m_Overlapped;
+ DWORD m_dwOverlappedResultCode;
+
+ // Social post preview image struct.
+ XSOCIAL_PREVIEWIMAGE m_PostPreviewImage;
+
+ // Social post image params.
+ XSOCIAL_IMAGEPOSTPARAMS m_PostImageParams;
+
+ // Social post link params.
+ XSOCIAL_LINKPOSTPARAMS m_PostLinkParams;
+
+ // Image details for posting an image to social network.
+ unsigned char* m_pMainImageBuffer;
+ DWORD m_dwMainImageBufferSize;
+
+ void DestroyMainPostImage();
+ void DestroyPreviewPostImage();
+
+ // WESTY : Not sure if we even need to get social access key!
+/*
+ bool GetSocialNetworkAccessKey( ESocialNetwork eSocialNetwork, DWORD dwUserIndex, bool bUsingKinect, DWORD dwUserTrackingIndex, bool bShowNetworkSignin );
+*/
+
+public:
+ // Retrieve singleton instance.
+ static CSocialManager* Instance();
+
+ // To be called once during game init.
+ void Initialise();
+
+ // Tick the social manager. Only does anything in async mode, polls for results of async actions.
+ void Tick();
+
+ // May need to be called if something changes (i.e. player signs in to live ).
+ bool RefreshPostingCapability();
+
+ // Returns true if any social newtork posting is allowed by us, false if not (if false, game must not display any social network UI).
+ bool IsTitleAllowedToPostAnything();
+
+ // Returns true if we are allowed to post images to social networks.
+ bool IsTitleAllowedToPostImages();
+
+ // Returns true if we are allowed to post links to social networks.
+ bool IsTitleAllowedToPostLinks();
+
+ // Returns false if any of the live signed in users have disabled XPRIVILEGE_SOCIAL_NETWORK_SHARING
+ bool AreAllUsersAllowedToPostImages();
+
+ // Post a test link to social network.
+ bool PostLinkToSocialNetwork( ESocialNetwork eSocialNetwork, DWORD dwUserIndex, bool bUsingKinect );
+
+ // Post a test image to social network.
+ bool PostImageToSocialNetwork( ESocialNetwork eSocialNetwork, DWORD dwUserIndex, bool bUsingKinect );
+
+ void SetSocialPostText(LPCWSTR Title, LPCWSTR Caption, LPCWSTR Desc);
+
+ // WESTY : Not sure if we even need to get social access key!
+/*
+ // We do not currently know what this is used for. We may not even need it?
+ bool ObtainSocialNetworkAccessKey( ESocialNetwork eSocialNetwork, DWORD dwUserIndex, bool bUsingKinect );
+ */
+
+private:
+ WCHAR m_wchTitleA[MAX_SOCIALPOST_CAPTION+1];
+ WCHAR m_wchCaptionA[MAX_SOCIALPOST_CAPTION+1];
+ WCHAR m_wchDescA[MAX_SOCIALPOST_DESC+1];
+
+};
+
+#endif //_SOCIAL_MANAGER_H
diff --git a/Minecraft.Client/Xbox/SubmissionBuild/How to build.txt b/Minecraft.Client/Xbox/SubmissionBuild/How to build.txt
new file mode 100644
index 00000000..626f87e5
--- /dev/null
+++ b/Minecraft.Client/Xbox/SubmissionBuild/How to build.txt
@@ -0,0 +1,6 @@
+You'll need activestate perl from perl.org
+
+Also need the recursive copy -
+ppm install File-Copy-Recursive
+
+Then run SubmissionAutobuild.cmd
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/SubmissionBuild/SubmissionAutobuild.cmd b/Minecraft.Client/Xbox/SubmissionBuild/SubmissionAutobuild.cmd
new file mode 100644
index 00000000..6e68e06c
--- /dev/null
+++ b/Minecraft.Client/Xbox/SubmissionBuild/SubmissionAutobuild.cmd
@@ -0,0 +1,15 @@
+
+
+"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" "..\..\..\Minecraft360.sln" /Clean ContentPackage /ProjectConfig ContentPackage /Out clean.txt /NoLogo
+"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" "..\..\..\Minecraft360.sln" /Build ContentPackage /ProjectConfig ContentPackage /Out build.txt /NoLogo
+
+REM "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" "..\..\..\Minecraft360.sln" /Clean Release /ProjectConfig Release /Out cleanr.txt /NoLogo
+REM "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" "..\..\..\Minecraft360.sln" /Build Release /ProjectConfig Release /Out buildr.txt /NoLogo
+
+perl build.plx
+
+REM zip it
+
+zipthebuild.cmd
+
+pause
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/SubmissionBuild/build.plx b/Minecraft.Client/Xbox/SubmissionBuild/build.plx
new file mode 100644
index 00000000..d96cfac4
--- /dev/null
+++ b/Minecraft.Client/Xbox/SubmissionBuild/build.plx
@@ -0,0 +1,380 @@
+#! /usr/bin/perl -w
+use warnings;
+use File::Copy::Recursive qw(fcopy rcopy dircopy fmove rmove dirmove);
+
+open FH, '..\Xbox_BuildVer.h' or die $!;
+
+my $lineno=1;
+my $index;
+
+while()
+{
+ $lineno++;
+
+ $index = rindex($_,'#define VER_PRODUCTBUILD ');
+ my($line) = $_;
+ chomp($line);
+ if($index>-1)
+ {
+ @build = split(/ +/, $line);
+
+ $buildnum = sprintf("%4d", $build[2]);
+ $buildnum=~ tr/ /0/;
+ }
+}
+
+my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
+
+##print 'Build num is Minecraft_', $year-100,'.',$mon+1,'.',$mday,'.',$buildnum;
+
+$buildname=sprintf("Minecraft_%02d.%02d.%02d.%s", $year-100,$mon+1,$mday,$buildnum);
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s",$buildname);
+
+
+print $builddir;
+
+## now create the build directories
+
+$dir = 'c:/MinecraftSubmissionBuilds/';
+
+unless(-d $dir)
+{
+ mkdir $dir or die;
+}
+
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/Package",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/Test",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Cheats",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Cheats/Content",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Release",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+## Now copy the files in
+
+## xlast & gameconfig
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/Minecraft.gameconfig",$buildname);
+fcopy('../GameConfig/Minecraft.gameconfig',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/MinecraftContentPackage.xlast",$buildname);
+fcopy('../ContentPackageBuild/MinecraftContentPackage.xlast',$target) or die $!;
+
+## docs
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/4J Minecraft XBLA Design Changes & Additions v1.0.docx",$buildname);
+fcopy('../Docs/4J Minecraft XBLA Design Changes & Additions v1.0.docx',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/Minecraft_XBLA_TIS_Nov2011.xls",$buildname);
+fcopy('../Docs/Minecraft_XBLA_TIS_Nov2011.xls',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/Minecraft_XBLA_TIS_Nov2011_Asia_SYA111511.xls",$buildname);
+fcopy('../Docs/Minecraft_XBLA_TIS_Nov2011_Asia_SYA111511.xls',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/Minecraft_XBLA_TIS_Nov2011_EU.xls",$buildname);
+fcopy('../Docs/Minecraft_XBLA_TIS_Nov2011_EU.xls',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/Xbox Live Avatar Items - Minecraft.xlsx",$buildname);
+fcopy('../Docs/Xbox Live Avatar Items - Minecraft.xlsx',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/Ratings_Submission_Form.doc",$buildname);
+fcopy('../Docs/Ratings_Submission_Form.doc',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/PDLC_Request_Form_Nov2010-IronTheme.xls",$buildname);
+fcopy('../Docs/PDLC_Request_Form_Nov2010-IronTheme.xls',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/GameOverview_Minecraft.doc",$buildname);
+fcopy('../Docs/GameOverview_Minecraft.doc',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/4J Minecraft XBLA Sentient Usage v1.0.docx",$buildname);
+fcopy('../Docs/4J Minecraft XBLA Sentient Usage v1.0.docx',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/4J Minecraft XBLA TMS.docx",$buildname);
+fcopy('../Docs/4J Minecraft XBLA TMS.docx',$target) or die $!;
+
+
+
+## Achievements
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/01.png",$buildname);
+fcopy('../GameConfig/01.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/02.png",$buildname);
+fcopy('../GameConfig/02.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/03.png",$buildname);
+fcopy('../GameConfig/03.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/04.png",$buildname);
+fcopy('../GameConfig/04.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/05.png",$buildname);
+fcopy('../GameConfig/05.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/06.png",$buildname);
+fcopy('../GameConfig/06.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/07.png",$buildname);
+fcopy('../GameConfig/07.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/08.png",$buildname);
+fcopy('../GameConfig/08.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/09.png",$buildname);
+fcopy('../GameConfig/09.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/10.png",$buildname);
+fcopy('../GameConfig/10.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/11.png",$buildname);
+fcopy('../GameConfig/11.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/12.png",$buildname);
+fcopy('../GameConfig/12.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/13.png",$buildname);
+fcopy('../GameConfig/13.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/14.png",$buildname);
+fcopy('../GameConfig/14.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/15.png",$buildname);
+fcopy('../GameConfig/15.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/16.png",$buildname);
+fcopy('../GameConfig/16.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/17.png",$buildname);
+fcopy('../GameConfig/17.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/18.png",$buildname);
+fcopy('../GameConfig/18.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/19.png",$buildname);
+fcopy('../GameConfig/19.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/20.png",$buildname);
+fcopy('../GameConfig/20.png',$target) or die $!;
+
+##background
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/Minecraft_BKGND.png",$buildname);
+fcopy('../GameConfig/Minecraft_BKGND.png',$target) or die $!;
+
+##gamerpics
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/32_584111F70002000100010001.png",$buildname);
+fcopy('../GameConfig/32_584111F70002000100010001.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/32_584111F70002000200010002.png",$buildname);
+fcopy('../GameConfig/32_584111F70002000200010002.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/64_584111F70002000100010001.png",$buildname);
+fcopy('../GameConfig/64_584111F70002000100010001.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/64_584111F70002000200010002.png",$buildname);
+fcopy('../GameConfig/64_584111F70002000200010002.png',$target) or die $!;
+
+##boxart
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/Minecraft_BOXART.png",$buildname);
+fcopy('../GameConfig/Minecraft_BOXART.png',$target) or die $!;
+
+##banner
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/MinecraftMarketplace.png",$buildname);
+fcopy('../GameConfig/MinecraftMarketplace.png',$target) or die $!;
+
+## game icon
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/MinecraftIcon.png",$buildname);
+fcopy('../GameConfig/MinecraftIcon.png',$target) or die $!;
+
+## avatar icons
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward1_F_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward1_F_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward1_F_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward1_F_icon-128.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward1_M_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward1_M_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward1_M_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward1_M_icon-128.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward2_F_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward2_F_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward2_F_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward2_F_icon-128.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward2_M_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward2_M_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward2_M_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward2_M_icon-128.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward3_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward3_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward3_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward3_icon-128.png',$target) or die $!;
+
+## avatar bin files
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/Tshirt5_Porkchop_Female.bin",$buildname);
+fcopy('../GameConfig/Tshirt5_Porkchop_Female.bin',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/Tshirt5_Porkchop_Male.bin",$buildname);
+fcopy('../GameConfig/Tshirt5_Porkchop_Male.bin',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/MineCraft_Watch_Female.bin",$buildname);
+fcopy('../GameConfig/MineCraft_Watch_Female.bin',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/MineCraft_Watch_Male.bin",$buildname);
+fcopy('../GameConfig/MineCraft_Watch_Male.bin',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/Creeper_Cap.bin",$buildname);
+fcopy('../GameConfig/Creeper_Cap.bin',$target) or die $!;
+
+
+## PACKAGE DIR
+
+## Achievements
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/01.png",$buildname);
+fcopy('../GameConfig/01.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/02.png",$buildname);
+fcopy('../GameConfig/02.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/03.png",$buildname);
+fcopy('../GameConfig/03.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/04.png",$buildname);
+fcopy('../GameConfig/04.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/05.png",$buildname);
+fcopy('../GameConfig/05.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/06.png",$buildname);
+fcopy('../GameConfig/06.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/07.png",$buildname);
+fcopy('../GameConfig/07.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/08.png",$buildname);
+fcopy('../GameConfig/08.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/09.png",$buildname);
+fcopy('../GameConfig/09.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/10.png",$buildname);
+fcopy('../GameConfig/10.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/11.png",$buildname);
+fcopy('../GameConfig/11.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/12.png",$buildname);
+fcopy('../GameConfig/12.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/13.png",$buildname);
+fcopy('../GameConfig/13.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/14.png",$buildname);
+fcopy('../GameConfig/14.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/15.png",$buildname);
+fcopy('../GameConfig/15.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/16.png",$buildname);
+fcopy('../GameConfig/16.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/17.png",$buildname);
+fcopy('../GameConfig/17.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/18.png",$buildname);
+fcopy('../GameConfig/18.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/19.png",$buildname);
+fcopy('../GameConfig/19.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/20.png",$buildname);
+fcopy('../GameConfig/20.png',$target) or die $!;
+
+## arcadeinfo
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/ArcadeInfo.xml",$buildname);
+fcopy('../GameConfig/ArcadeInfo.xml',$target) or die $!;
+
+## game icon
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/MinecraftIcon.png",$buildname);
+fcopy('../GameConfig/MinecraftIcon.png',$target) or die $!;
+
+##gamerpics
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/32_584111F70002000100010001.png",$buildname);
+fcopy('../GameConfig/32_584111F70002000100010001.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/32_584111F70002000200010002.png",$buildname);
+fcopy('../GameConfig/32_584111F70002000200010002.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/64_584111F70002000100010001.png",$buildname);
+fcopy('../GameConfig/64_584111F70002000100010001.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/64_584111F70002000200010002.png",$buildname);
+fcopy('../GameConfig/64_584111F70002000200010002.png',$target) or die $!;
+
+## Avatar Awards
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/AvatarAwards",$buildname);
+fcopy('../GameConfig/AvatarPackages/AvatarAwards',$target) or die $!;
+
+## avatar icons
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward1_F_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward1_F_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward1_F_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward1_F_icon-128.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward1_M_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward1_M_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward1_M_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward1_M_icon-128.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward2_F_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward2_F_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward2_F_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward2_F_icon-128.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward2_M_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward2_M_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward2_M_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward2_M_icon-128.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward3_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward3_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward3_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward3_icon-128.png',$target) or die $!;
+
+## avatar bin files
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/Tshirt5_Porkchop_Female.bin",$buildname);
+fcopy('../GameConfig/Tshirt5_Porkchop_Female.bin',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/Tshirt5_Porkchop_Male.bin",$buildname);
+fcopy('../GameConfig/Tshirt5_Porkchop_Male.bin',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/MineCraft_Watch_Female.bin",$buildname);
+fcopy('../GameConfig/MineCraft_Watch_Female.bin',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/MineCraft_Watch_Male.bin",$buildname);
+fcopy('../GameConfig/MineCraft_Watch_Male.bin',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/Creeper_Cap.bin",$buildname);
+fcopy('../GameConfig/Creeper_Cap.bin',$target) or die $!;
+
+## banner
+# 4J Stu - This is not reference in the XLAST, but seems like an online thing rather than in the package anyway?
+# 4J-PB - It's referenced in the xlast in the content offer
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/MinecraftMarketplace.png",$buildname);
+fcopy('../GameConfig/MinecraftMarketplace.png',$target) or die $!;
+
+## xex
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/Default.xex",$buildname);
+fcopy('../../ContentPackage/Default.xex',$target) or die $!;
+
+## game data
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/",$buildname);
+rcopy('../res/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/Tutorial/Tutorial",$buildname);
+rcopy('../Tutorial/Tutorial',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/584111F70AAAAAAA",$buildname);
+rcopy('../584111F70AAAAAAA',$target) or die $!;
+
+
+## nui speech
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/",$buildname);
+rcopy('../kinect/speech/',$target) or die $!;
+
+## test/debug - Not doing debug
+##$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Debug/Default.exe",$buildname);
+##fcopy('../../Debug/Minecraft.Client.exe',$target) or die $!;
+##$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Debug/Default.pdb",$buildname);
+##fcopy('../../Debug/Minecraft.Client.pdb',$target) or die $!;
+##$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Debug/Default.xdb",$buildname);
+##fcopy('../../Debug/Minecraft.Client.xdb',$target) or die $!;
+
+## test/release
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Release/Default.exe",$buildname);
+fcopy('../../ContentPackage/Default.exe',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Release/Default.pdb",$buildname);
+fcopy('../../ContentPackage/Default.pdb',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Release/Default.xdb",$buildname);
+fcopy('../../ContentPackage/Default.xdb',$target) or die $!;
+
+## test/cheats
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Cheats/Content/",$buildname);
+rcopy('../Cheats/',$target) or die $!;
+
+
+# need to change the attributes on the game config
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/Minecraft.gameconfig",$buildname);
+chmod 0755, $target;
+
+
+open FH, "+>", 'zipthebuild.cmd' or die $!;
+
+$zipline = sprintf("\"C:\\Program Files (x86)\\winzip\\wzzip\" -p -r -ex c:\\MinecraftSubmissionBuilds\\Zips\\%s.zip c:\\MinecraftSubmissionBuilds\\%s\\*",$buildname,$buildname);
+
+print FH $zipline;
+close FH;
diff --git a/Minecraft.Client/Xbox/SubmissionBuild/launchCMD.cmd b/Minecraft.Client/Xbox/SubmissionBuild/launchCMD.cmd
new file mode 100644
index 00000000..d21751d7
--- /dev/null
+++ b/Minecraft.Client/Xbox/SubmissionBuild/launchCMD.cmd
@@ -0,0 +1 @@
+cmd &
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/TMSFiles/MPMA.png b/Minecraft.Client/Xbox/TMSFiles/MPMA.png
new file mode 100644
index 00000000..3b7d136e
Binary files /dev/null and b/Minecraft.Client/Xbox/TMSFiles/MPMA.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/CopyTUPackageFiles.cmd b/Minecraft.Client/Xbox/Title Update/CopyTUPackageFiles.cmd
new file mode 100644
index 00000000..b01f9cd8
--- /dev/null
+++ b/Minecraft.Client/Xbox/Title Update/CopyTUPackageFiles.cmd
@@ -0,0 +1,19 @@
+mkdir .\Update\Package
+mkdir .\Update\Package\res
+mkdir .\Update\Package\res\font
+mkdir .\Update\Package\res\armor
+mkdir .\Update\Package\res\misc
+mkdir .\Update\Package\res\mob
+mkdir .\Update\Package\res\GameRules
+
+
+copy ..\Minecraft.Client\ContentPackage\default.xex .\Update\Package\default.xex
+copy ..\Minecraft.Client\Xbox\res\armor\power.png .\Update\Package\res\armor\power.png
+copy ..\Minecraft.Client\Xbox\res\misc\explosion.png .\Update\Package\res\misc\explosion.png
+copy ..\Minecraft.Client\Xbox\res\mob\enderman_eyes.png .\Update\Package\res\mob\enderman_eyes.png
+copy ..\Minecraft.Client\Xbox\res\font\Mojangles_7.png .\Update\Package\res\font\Mojangles_7.png
+copy ..\Minecraft.Client\Xbox\res\font\Mojangles_11.png .\Update\Package\res\font\Mojangles_11.png
+copy ..\Minecraft.Client\Xbox\res\GameRules\Tutorial.pck .\Update\Package\res\GameRules\Tutorial.pck
+
+
+pause
diff --git a/Minecraft.Client/Xbox/Title Update/Minecraft_12.03.30.0062/Package/Default.xex b/Minecraft.Client/Xbox/Title Update/Minecraft_12.03.30.0062/Package/Default.xex
new file mode 100644
index 00000000..d6054009
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/Minecraft_12.03.30.0062/Package/Default.xex differ
diff --git a/Minecraft.Client/Xbox/Title Update/Running the autobuild process.txt b/Minecraft.Client/Xbox/Title Update/Running the autobuild process.txt
new file mode 100644
index 00000000..4025d3db
--- /dev/null
+++ b/Minecraft.Client/Xbox/Title Update/Running the autobuild process.txt
@@ -0,0 +1,9 @@
+You'll need -
+Incredibuild
+Winzip command line interface
+
+Perl -
+Install perl from - http://www.activestate.com/activeperl/downloads
+then run from the command line:
+ cpan App::cpanminus
+ cpanm File::Copy::Recursive
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Title Update/TUAutobuild.cmd b/Minecraft.Client/Xbox/Title Update/TUAutobuild.cmd
new file mode 100644
index 00000000..9e5fbc08
--- /dev/null
+++ b/Minecraft.Client/Xbox/Title Update/TUAutobuild.cmd
@@ -0,0 +1,126 @@
+
+BuildConsole.exe "..\..\..\MinecraftConsoles.sln" /build /showagent /openmonitor /nowait /cfg="ContentPackage_NO_TU|Xbox 360"
+pause
+BuildConsole.exe "..\..\..\MinecraftConsoles.sln" /build /showagent /openmonitor /nowait /cfg="ContentPackage|Xbox 360"
+pause
+
+REM "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" "..\..\..\MinecraftConsoles.sln" /Clean "ContentPackage|Xbox 360" /ProjectConfig "ContentPackage|Xbox 360" /Out clean.txt /NoLogo
+REM "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" "..\..\..\MinecraftConsoles.sln" /Build "ContentPackage|Xbox 360" /ProjectConfig "ContentPackage|Xbox 360" /Out build.txt /NoLogo
+
+REM "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" "..\..\..\Minecraft360.sln" /Clean ContentPackageNoTU /ProjectConfig ContentPackageNoTU /Out cleanNoTU.txt /NoLogo
+REM "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" "..\..\..\Minecraft360.sln" /Build ContentPackageNoTU /ProjectConfig ContentPackageNoTU /Out buildNoTU.txt /NoLogo
+
+mkdir .\TitleUpdate\Package
+mkdir .\TitleUpdate\Package\res
+mkdir .\TitleUpdate\Package\res\TMS
+mkdir .\TitleUpdate\Package\res\font
+mkdir .\TitleUpdate\Package\res\audio
+mkdir .\TitleUpdate\Package\res\armor
+mkdir .\TitleUpdate\Package\res\art
+mkdir .\TitleUpdate\Package\res\misc
+mkdir .\TitleUpdate\Package\res\item
+mkdir .\TitleUpdate\Package\res\gui
+mkdir .\TitleUpdate\Package\res\mob
+mkdir .\TitleUpdate\Package\res\mob\villager
+mkdir .\TitleUpdate\Package\res\mob\enderdragon
+mkdir .\TitleUpdate\Package\res\GameRules
+mkdir .\TitleUpdate\Package\res\textures
+mkdir .\TitleUpdate\Package\res\textures\blocks
+mkdir .\TitleUpdate\Package\res\textures\items
+mkdir .\TitleUpdate\Docs
+mkdir .\TitleUpdate\Released
+
+copy .\Minecraft_12.03.30.0062\Package\default.xex .\TitleUpdate\Released\default.xex
+copy ..\..\ContentPackage\default.xex .\TitleUpdate\Package\default.xex
+copy ..\..\Common\res\font\Mojangles_7.png .\TitleUpdate\Package\res\font\Mojangles_7.png
+copy ..\..\Common\res\font\Mojangles_11.png .\TitleUpdate\Package\res\font\Mojangles_11.png
+copy ..\..\Common\res\TitleUpdate\res\terrain.png .\TitleUpdate\Package\res\terrain.png
+copy ..\..\Common\res\TitleUpdate\res\terrainMipmapLevel2.png .\TitleUpdate\Package\res\terrainMipmapLevel2.png
+copy ..\..\Common\res\TitleUpdate\res\terrainMipmapLevel3.png .\TitleUpdate\Package\res\terrainMipmapLevel3.png
+copy ..\..\Common\res\TitleUpdate\res\items.png .\TitleUpdate\Package\res\items.png
+copy ..\..\Common\res\TitleUpdate\res\armor\power.png .\TitleUpdate\Package\res\armor\power.png
+copy ..\..\Common\res\TitleUpdate\res\armor\cloth_1.png .\TitleUpdate\Package\res\armor\cloth_1.png
+copy ..\..\Common\res\TitleUpdate\res\armor\cloth_1_b.png .\TitleUpdate\Package\res\armor\cloth_1_b.png
+copy ..\..\Common\res\TitleUpdate\res\armor\cloth_2.png .\TitleUpdate\Package\res\armor\cloth_2.png
+copy ..\..\Common\res\TitleUpdate\res\armor\cloth_2_b.png .\TitleUpdate\Package\res\armor\cloth_2_b.png
+copy ..\..\Common\res\TitleUpdate\res\item\book.png .\TitleUpdate\Package\res\item\book.png
+copy ..\..\Common\res\TitleUpdate\res\misc\explosion.png .\TitleUpdate\Package\res\misc\explosion.png
+copy ..\..\Common\res\TitleUpdate\res\misc\footprint.png .\TitleUpdate\Package\res\misc\footprint.png
+copy ..\..\Common\res\TitleUpdate\res\misc\glint.png .\TitleUpdate\Package\res\misc\glint.png
+copy ..\..\Common\res\TitleUpdate\res\misc\mapicons.png .\TitleUpdate\Package\res\misc\mapicons.png
+copy ..\..\Common\res\TitleUpdate\res\misc\particlefield.png .\TitleUpdate\Package\res\misc\particlefield.png
+copy ..\..\Common\res\TitleUpdate\res\misc\tunnel.png .\TitleUpdate\Package\res\misc\tunnel.png
+copy ..\..\Common\res\TitleUpdate\res\mob\enderman_eyes.png .\TitleUpdate\Package\res\mob\enderman_eyes.png
+copy ..\..\Common\res\TitleUpdate\res\mob\redcow.png .\TitleUpdate\Package\res\mob\redcow.png
+copy ..\..\Common\res\TitleUpdate\res\mob\snowman.png .\TitleUpdate\Package\res\mob\snowman.png
+copy ..\..\Common\res\TitleUpdate\res\mob\zombie.png .\TitleUpdate\Package\res\mob\zombie.png
+copy ..\..\Common\res\TitleUpdate\res\mob\skeleton_wither.png .\TitleUpdate\Package\res\mob\skeleton_wither.png
+copy ..\..\Common\res\TitleUpdate\res\mob\enderdragon\beam.png .\TitleUpdate\Package\res\mob\enderdragon\beam.png
+copy ..\..\Common\res\TitleUpdate\res\mob\enderdragon\ender.png .\TitleUpdate\Package\res\mob\enderdragon\ender.png
+copy ..\..\Common\res\TitleUpdate\res\mob\enderdragon\ender_eyes.png .\TitleUpdate\Package\res\mob\enderdragon\ender_eyes.png
+copy ..\..\Common\res\TitleUpdate\res\mob\villager\butcher.png .\TitleUpdate\Package\res\mob\villager\butcher.png
+copy ..\..\Common\res\TitleUpdate\res\mob\villager\farmer.png .\TitleUpdate\Package\res\mob\villager\farmer.png
+copy ..\..\Common\res\TitleUpdate\res\mob\villager\librarian.png .\TitleUpdate\Package\res\mob\villager\librarian.png
+copy ..\..\Common\res\TitleUpdate\res\mob\villager\priest.png .\TitleUpdate\Package\res\mob\villager\priest.png
+copy ..\..\Common\res\TitleUpdate\res\mob\villager\smith.png .\TitleUpdate\Package\res\mob\villager\smith.png
+copy ..\..\Common\res\TitleUpdate\res\mob\villager\villager.png .\TitleUpdate\Package\res\mob\villager\villager.png
+copy ..\..\Common\res\TitleUpdate\res\textures\blocks\fire_0.png .\TitleUpdate\Package\res\textures\blocks\fire_0.png
+copy ..\..\Common\res\TitleUpdate\res\textures\blocks\fire_0.txt .\TitleUpdate\Package\res\textures\blocks\fire_0.txt
+copy ..\..\Common\res\TitleUpdate\res\textures\blocks\fire_1.png .\TitleUpdate\Package\res\textures\blocks\fire_1.png
+copy ..\..\Common\res\TitleUpdate\res\textures\blocks\fire_1.txt .\TitleUpdate\Package\res\textures\blocks\fire_1.txt
+copy ..\..\Common\res\TitleUpdate\res\textures\blocks\lava.png .\TitleUpdate\Package\res\textures\blocks\lava.png
+copy ..\..\Common\res\TitleUpdate\res\textures\blocks\lava.txt .\TitleUpdate\Package\res\textures\blocks\lava.txt
+copy ..\..\Common\res\TitleUpdate\res\textures\blocks\lava_flow.png .\TitleUpdate\Package\res\textures\blocks\lava_flow.png
+copy ..\..\Common\res\TitleUpdate\res\textures\blocks\lava_flow.txt .\TitleUpdate\Package\res\textures\blocks\lava_flow.txt
+copy ..\..\Common\res\TitleUpdate\res\textures\blocks\portal.png .\TitleUpdate\Package\res\textures\blocks\portal.png
+copy ..\..\Common\res\TitleUpdate\res\textures\blocks\portal.txt .\TitleUpdate\Package\res\textures\blocks\portal.txt
+copy ..\..\Common\res\TitleUpdate\res\textures\blocks\water.png .\TitleUpdate\Package\res\textures\blocks\water.png
+copy ..\..\Common\res\TitleUpdate\res\textures\blocks\water.txt .\TitleUpdate\Package\res\textures\blocks\water.txt
+copy ..\..\Common\res\TitleUpdate\res\textures\blocks\water_flow.png .\TitleUpdate\Package\res\textures\blocks\water_flow.png
+copy ..\..\Common\res\TitleUpdate\res\textures\blocks\water_flow.txt .\TitleUpdate\Package\res\textures\blocks\water_flow.txt
+copy ..\..\Common\res\TitleUpdate\res\textures\items\clock.png .\TitleUpdate\Package\res\textures\items\clock.png
+copy ..\..\Common\res\TitleUpdate\res\textures\items\clock.txt .\TitleUpdate\Package\res\textures\items\clock.txt
+copy ..\..\Common\res\TitleUpdate\res\textures\items\compass.png .\TitleUpdate\Package\res\textures\items\compass.png
+copy ..\..\Common\res\TitleUpdate\res\textures\items\compass.txt .\TitleUpdate\Package\res\textures\items\compass.txt
+copy ..\..\Common\res\TitleUpdate\GameRules\Tutorial.pck .\TitleUpdate\Package\res\GameRules\Tutorial.pck
+copy ..\..\XboxMedia\XZP\TMSFiles.xzp .\TitleUpdate\Package\res\TMS\TMSFiles.xzp
+copy ..\..\Common\res\TitleUpdate\audio\AdditionalMusic.xwb .\TitleUpdate\Package\res\audio\AdditionalMusic.xwb
+copy ..\..\Common\res\TitleUpdate\audio\additional.xsb .\TitleUpdate\Package\res\audio\additional.xsb
+copy ..\..\Common\res\TitleUpdate\audio\additional.xwb .\TitleUpdate\Package\res\audio\additional.xwb
+copy ..\..\Common\res\TitleUpdate\audio\Minecraft.xgs .\TitleUpdate\Package\res\audio\Minecraft.xgs
+copy ..\..\Common\res\TitleUpdate\audio\minecraft.xsb .\TitleUpdate\Package\res\audio\minecraft.xsb
+copy ..\..\Common\res\TitleUpdate\res\colours.col .\TitleUpdate\Package\res\colours.col
+
+REM TU14
+copy ..\..\Common\res\TitleUpdate\res\item\enderchest.png .\TitleUpdate\Package\res\item\enderchest.png
+copy ..\..\Common\res\TitleUpdate\res\art\kz.png .\TitleUpdate\Package\res\art\kz.png
+copy ..\..\Common\res\TitleUpdate\res\mob\wolf_collar.png .\TitleUpdate\Package\res\mob\wolf_collar.png
+copy ..\..\Common\res\TitleUpdate\res\mob\wolf_tame.png .\TitleUpdate\Package\res\mob\wolf_tame.png
+copy ..\..\Common\res\TitleUpdate\res\particles.png .\TitleUpdate\Package\res\particles.png
+copy ..\..\Common\res\TitleUpdate\res\mob\zombie_villager.png .\TitleUpdate\Package\res\mob\zombie_villager.png
+copy "..\..\Common\res\TitleUpdate\res\items.png" ".\TitleUpdate\Package\res\items.png"
+copy "..\..\Common\res\TitleUpdate\res\terrain.png" ".\TitleUpdate\Package\res\terrain.png"
+copy "..\..\Common\res\TitleUpdate\res\terrainMipMapLevel2.png" ".\TitleUpdate\Package\res\terrainMipMapLevel2.png"
+copy "..\..\Common\res\TitleUpdate\res\terrainMipMapLevel3.png" ".\TitleUpdate\Package\res\terrainMipMapLevel3.png"
+xcopy "..\..\Common\res\TitleUpdate\DLC" ".\TitleUpdate\Package\res\DLC" /i /e /y
+
+REM TU17
+copy ..\..\Common\res\TitleUpdate\res\font\Default.png .\TitleUpdate\Package\res\font\Default.png
+copy ..\..\Common\res\TitleUpdate\res\font\Mojangles_7.png .\TitleUpdate\Package\res\font\Mojangles_7.png
+copy ..\..\Common\res\TitleUpdate\res\font\Mojangles_11.png .\TitleUpdate\Package\res\font\Mojangles_11.png
+
+REM TU17
+copy ..\..\Common\res\TitleUpdate\res\font\Default.png .\TitleUpdate\Package\res\font\Default.png
+
+REM copy Minecraft_response_doc.xls .\TitleUpdate\Docs
+
+
+c:\perl64\bin\perl tubuild.plx
+
+REM blast Minecraft_Day1TU.xlast /L:3
+
+REM zip it
+
+zipthebuild.cmd
+
+pause
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Docs/Minecraft_response_doc.xls b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Docs/Minecraft_response_doc.xls
new file mode 100644
index 00000000..43599c64
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Docs/Minecraft_response_doc.xls differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU12.xlast b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU12.xlast
new file mode 100644
index 00000000..5b7243aa
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU12.xlast differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU13.xlast b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU13.xlast
new file mode 100644
index 00000000..26940b2c
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU13.xlast differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU14.xlast b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU14.xlast
new file mode 100644
index 00000000..4da4661d
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU14.xlast differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU15.xlast b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU15.xlast
new file mode 100644
index 00000000..352799d3
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU15.xlast differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU17.xlast b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU17.xlast
new file mode 100644
index 00000000..110153be
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU17.xlast differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU18.xlast b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU18.xlast
new file mode 100644
index 00000000..10b1df8a
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Minecraft_TU18.xlast differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/default.xex b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/default.xex
new file mode 100644
index 00000000..c844b3d1
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/default.xex differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Candy/Data/TexturePack.xzp b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Candy/Data/TexturePack.xzp
new file mode 100644
index 00000000..f2e865fc
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Candy/Data/TexturePack.xzp differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Candy/Data/x16Data.pck b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Candy/Data/x16Data.pck
new file mode 100644
index 00000000..50d5d4ee
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Candy/Data/x16Data.pck differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/City/Data/TexturePack.xzp b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/City/Data/TexturePack.xzp
new file mode 100644
index 00000000..b2d02efd
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/City/Data/TexturePack.xzp differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/City/Data/x32Data.pck b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/City/Data/x32Data.pck
new file mode 100644
index 00000000..4968ba01
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/City/Data/x32Data.pck differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Fantasy/Data/TexturePack.xzp b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Fantasy/Data/TexturePack.xzp
new file mode 100644
index 00000000..87fc9d91
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Fantasy/Data/TexturePack.xzp differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Fantasy/Data/x32Data.pck b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Fantasy/Data/x32Data.pck
new file mode 100644
index 00000000..9d909b93
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Fantasy/Data/x32Data.pck differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halloween/Data/TexturePack.xzp b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halloween/Data/TexturePack.xzp
new file mode 100644
index 00000000..ce7ea034
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halloween/Data/TexturePack.xzp differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halloween/Data/x16Data.pck b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halloween/Data/x16Data.pck
new file mode 100644
index 00000000..9da2ef1b
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halloween/Data/x16Data.pck differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halo/Data/GameRules.grf b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halo/Data/GameRules.grf
new file mode 100644
index 00000000..05fb95d1
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halo/Data/GameRules.grf differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halo/Data/TexturePack.xzp b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halo/Data/TexturePack.xzp
new file mode 100644
index 00000000..73339be4
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halo/Data/TexturePack.xzp differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halo/Data/x16Data.pck b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halo/Data/x16Data.pck
new file mode 100644
index 00000000..63d88194
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halo/Data/x16Data.pck differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halo/TexturePack.pck b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halo/TexturePack.pck
new file mode 100644
index 00000000..fddfbb38
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Halo/TexturePack.pck differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/Data/GameRules.grf b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/Data/GameRules.grf
new file mode 100644
index 00000000..48816b27
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/Data/GameRules.grf differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/Data/TexturePack.xzp b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/Data/TexturePack.xzp
new file mode 100644
index 00000000..5b2df78a
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/Data/TexturePack.xzp differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/Data/masseffect.mcs b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/Data/masseffect.mcs
new file mode 100644
index 00000000..c3e1cb8d
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/Data/masseffect.mcs differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/Data/x16Data.pck b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/Data/x16Data.pck
new file mode 100644
index 00000000..2c01acae
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/Data/x16Data.pck differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/TexturePack.pck b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/TexturePack.pck
new file mode 100644
index 00000000..e0576ed8
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/MassEffect/TexturePack.pck differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Natural/Data/TexturePack.xzp b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Natural/Data/TexturePack.xzp
new file mode 100644
index 00000000..34f7dc99
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Natural/Data/TexturePack.xzp differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Natural/Data/x32Data.pck b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Natural/Data/x32Data.pck
new file mode 100644
index 00000000..4224184c
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Natural/Data/x32Data.pck differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Plastic/Data/TexturePack.xzp b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Plastic/Data/TexturePack.xzp
new file mode 100644
index 00000000..033840eb
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Plastic/Data/TexturePack.xzp differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Plastic/Data/x16Data.pck b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Plastic/Data/x16Data.pck
new file mode 100644
index 00000000..b5b5c14a
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Plastic/Data/x16Data.pck differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Skyrim/Data/GameRules.grf b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Skyrim/Data/GameRules.grf
new file mode 100644
index 00000000..d52e6b03
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Skyrim/Data/GameRules.grf differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Skyrim/Data/TexturePack.xzp b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Skyrim/Data/TexturePack.xzp
new file mode 100644
index 00000000..45c24d41
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Skyrim/Data/TexturePack.xzp differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Skyrim/Data/x16Data.pck b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Skyrim/Data/x16Data.pck
new file mode 100644
index 00000000..82a5965d
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Skyrim/Data/x16Data.pck differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Skyrim/TexturePack.pck b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Skyrim/TexturePack.pck
new file mode 100644
index 00000000..2dc382a1
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/DLC/Skyrim/TexturePack.pck differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/GameRules/Tutorial.pck b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/GameRules/Tutorial.pck
new file mode 100644
index 00000000..8f44945b
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/GameRules/Tutorial.pck differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/TMS/TMSFiles.xzp b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/TMS/TMSFiles.xzp
new file mode 100644
index 00000000..5e260a73
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/TMS/TMSFiles.xzp differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/cloth_1.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/cloth_1.png
new file mode 100644
index 00000000..ebcfc411
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/cloth_1.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/cloth_1_b.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/cloth_1_b.png
new file mode 100644
index 00000000..546397d5
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/cloth_1_b.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/cloth_2.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/cloth_2.png
new file mode 100644
index 00000000..8d8bba6c
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/cloth_2.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/cloth_2_b.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/cloth_2_b.png
new file mode 100644
index 00000000..56556598
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/cloth_2_b.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/power.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/power.png
new file mode 100644
index 00000000..809539ca
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/armor/power.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/art/kz.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/art/kz.png
new file mode 100644
index 00000000..4cb9a07c
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/art/kz.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/AdditionalMusic.xwb b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/AdditionalMusic.xwb
new file mode 100644
index 00000000..ebea388f
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/AdditionalMusic.xwb differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/Minecraft.xgs b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/Minecraft.xgs
new file mode 100644
index 00000000..5d6c55be
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/Minecraft.xgs differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/additional.xsb b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/additional.xsb
new file mode 100644
index 00000000..e60b3524
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/additional.xsb differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/additional.xwb b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/additional.xwb
new file mode 100644
index 00000000..983306db
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/additional.xwb differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/minecraft.xsb b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/minecraft.xsb
new file mode 100644
index 00000000..2154729d
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/audio/minecraft.xsb differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/colours.col b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/colours.col
new file mode 100644
index 00000000..abe91ebe
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/colours.col differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/font/Default.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/font/Default.png
new file mode 100644
index 00000000..07ec8d9d
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/font/Default.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/font/Mojangles_11.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/font/Mojangles_11.png
new file mode 100644
index 00000000..cfa86446
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/font/Mojangles_11.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/font/Mojangles_7.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/font/Mojangles_7.png
new file mode 100644
index 00000000..9de84520
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/font/Mojangles_7.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/item/book.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/item/book.png
new file mode 100644
index 00000000..708eaab6
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/item/book.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/item/enderchest.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/item/enderchest.png
new file mode 100644
index 00000000..dc26c059
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/item/enderchest.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/items.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/items.png
new file mode 100644
index 00000000..c86026a0
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/items.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/explosion.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/explosion.png
new file mode 100644
index 00000000..242d9115
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/explosion.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/footprint.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/footprint.png
new file mode 100644
index 00000000..2260afeb
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/footprint.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/glint.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/glint.png
new file mode 100644
index 00000000..ec9a3d1c
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/glint.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/mapicons.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/mapicons.png
new file mode 100644
index 00000000..8371a52a
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/mapicons.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/particlefield.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/particlefield.png
new file mode 100644
index 00000000..ea256619
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/particlefield.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/tunnel.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/tunnel.png
new file mode 100644
index 00000000..2f82e845
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/misc/tunnel.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/enderdragon/beam.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/enderdragon/beam.png
new file mode 100644
index 00000000..9ddd1d15
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/enderdragon/beam.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/enderdragon/ender.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/enderdragon/ender.png
new file mode 100644
index 00000000..f82ef136
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/enderdragon/ender.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/enderdragon/ender_eyes.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/enderdragon/ender_eyes.png
new file mode 100644
index 00000000..b16c9a50
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/enderdragon/ender_eyes.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/enderman_eyes.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/enderman_eyes.png
new file mode 100644
index 00000000..5e3f4782
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/enderman_eyes.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/redcow.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/redcow.png
new file mode 100644
index 00000000..1d94cc0d
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/redcow.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/skeleton_wither.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/skeleton_wither.png
new file mode 100644
index 00000000..b0db19df
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/skeleton_wither.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/snowman.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/snowman.png
new file mode 100644
index 00000000..be61ec92
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/snowman.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/butcher.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/butcher.png
new file mode 100644
index 00000000..935352f1
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/butcher.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/farmer.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/farmer.png
new file mode 100644
index 00000000..d01778ab
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/farmer.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/librarian.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/librarian.png
new file mode 100644
index 00000000..73b99518
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/librarian.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/priest.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/priest.png
new file mode 100644
index 00000000..14ae9398
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/priest.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/smith.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/smith.png
new file mode 100644
index 00000000..a97c37f9
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/smith.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/villager.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/villager.png
new file mode 100644
index 00000000..f002b0e5
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/villager/villager.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/wolf_collar.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/wolf_collar.png
new file mode 100644
index 00000000..62d85725
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/wolf_collar.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/wolf_tame.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/wolf_tame.png
new file mode 100644
index 00000000..18830a05
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/wolf_tame.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/zombie.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/zombie.png
new file mode 100644
index 00000000..333fcd6e
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/zombie.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/zombie_villager.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/zombie_villager.png
new file mode 100644
index 00000000..0b2cecef
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/mob/zombie_villager.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/particles.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/particles.png
new file mode 100644
index 00000000..aed54da5
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/particles.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/terrain.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/terrain.png
new file mode 100644
index 00000000..d5d3751d
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/terrain.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/terrainMipmapLevel2.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/terrainMipmapLevel2.png
new file mode 100644
index 00000000..771bb2d5
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/terrainMipmapLevel2.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/terrainMipmapLevel3.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/terrainMipmapLevel3.png
new file mode 100644
index 00000000..900ba0f3
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/terrainMipmapLevel3.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/fire_0.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/fire_0.png
new file mode 100644
index 00000000..cf8910f6
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/fire_0.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/fire_0.txt b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/fire_0.txt
new file mode 100644
index 00000000..58d1715d
--- /dev/null
+++ b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/fire_0.txt
@@ -0,0 +1,16 @@
+8,
+9,
+10,
+11,
+12,
+13,
+14,
+15,
+0,
+1,
+2,
+3,
+4,
+5,
+6,
+7,
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/fire_1.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/fire_1.png
new file mode 100644
index 00000000..6db92ac4
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/fire_1.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/fire_1.txt b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/fire_1.txt
new file mode 100644
index 00000000..0519ecba
--- /dev/null
+++ b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/fire_1.txt
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/lava.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/lava.png
new file mode 100644
index 00000000..78bb29d5
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/lava.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/lava.txt b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/lava.txt
new file mode 100644
index 00000000..b0a7c084
--- /dev/null
+++ b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/lava.txt
@@ -0,0 +1,38 @@
+0*2
+1*2
+2*2
+3*2
+4*2
+5*2
+6*2
+7*2
+8*2
+9*2
+10*2
+11*2
+12*2
+13*2
+14*2
+15*2
+16*2
+17*2
+18*2
+19*2
+18*2
+17*2
+16*2
+15*2
+14*2
+13*2
+12*2
+11*2
+10*2
+9*2
+8*2
+7*2
+6*2
+5*2
+4*2
+3*2
+2*2
+1*2
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/lava_flow.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/lava_flow.png
new file mode 100644
index 00000000..af07f91d
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/lava_flow.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/lava_flow.txt b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/lava_flow.txt
new file mode 100644
index 00000000..2e6ca4fc
--- /dev/null
+++ b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/lava_flow.txt
@@ -0,0 +1,16 @@
+0*3
+1*3
+2*3
+3*3
+4*3
+5*3
+6*3
+7*3
+8*3
+9*3
+10*3
+11*3
+12*3
+13*3
+14*3
+15*3
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/portal.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/portal.png
new file mode 100644
index 00000000..96859e2d
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/portal.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/portal.txt b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/portal.txt
new file mode 100644
index 00000000..0519ecba
--- /dev/null
+++ b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/portal.txt
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/water.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/water.png
new file mode 100644
index 00000000..c7e90b07
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/water.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/water.txt b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/water.txt
new file mode 100644
index 00000000..d8fe765a
--- /dev/null
+++ b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/water.txt
@@ -0,0 +1,32 @@
+0*2
+1*2
+2*2
+3*2
+4*2
+5*2
+6*2
+7*2
+8*2
+9*2
+10*2
+11*2
+12*2
+13*2
+14*2
+15*2
+16*2
+17*2
+18*2
+19*2
+20*2
+21*2
+22*2
+23*2
+24*2
+25*2
+26*2
+27*2
+28*2
+29*2
+30*2
+31*2
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/water_flow.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/water_flow.png
new file mode 100644
index 00000000..e72280c4
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/water_flow.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/water_flow.txt b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/water_flow.txt
new file mode 100644
index 00000000..0519ecba
--- /dev/null
+++ b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/blocks/water_flow.txt
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/items/clock.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/items/clock.png
new file mode 100644
index 00000000..069a0abf
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/items/clock.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/items/clock.txt b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/items/clock.txt
new file mode 100644
index 00000000..0519ecba
--- /dev/null
+++ b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/items/clock.txt
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/items/compass.png b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/items/compass.png
new file mode 100644
index 00000000..9dcbdfe6
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/items/compass.png differ
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/items/compass.txt b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/items/compass.txt
new file mode 100644
index 00000000..0519ecba
--- /dev/null
+++ b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Package/res/textures/items/compass.txt
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Title Update/TitleUpdate/Released/default.xex b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Released/default.xex
new file mode 100644
index 00000000..d6054009
Binary files /dev/null and b/Minecraft.Client/Xbox/Title Update/TitleUpdate/Released/default.xex differ
diff --git a/Minecraft.Client/Xbox/Title Update/tubuild.plx b/Minecraft.Client/Xbox/Title Update/tubuild.plx
new file mode 100644
index 00000000..be1dd93e
--- /dev/null
+++ b/Minecraft.Client/Xbox/Title Update/tubuild.plx
@@ -0,0 +1,539 @@
+#! /usr/bin/perl -w
+use warnings;
+use File::Copy::Recursive qw(fcopy rcopy dircopy fmove rmove dirmove);
+
+open FH, '..\..\Common\BuildVer.h' or die $!;
+
+my $lineno=1;
+my $index;
+
+while()
+{
+ $lineno++;
+
+ $index = rindex($_,'#define VER_PRODUCTBUILD ');
+ my($line) = $_;
+ chomp($line);
+ if($index>-1)
+ {
+ @build = split(/ +/, $line);
+
+ $buildnum = sprintf("%4d", $build[2]);
+ $buildnum=~ tr/ /0/;
+ }
+}
+
+my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
+
+##print 'Build num is Minecraft_', $year-100,'.',$mon+1,'.',$mday,'.',$buildnum;
+
+$buildname=sprintf("Minecraft_%02d.%02d.%02d.%s_TU18", $year-100,$mon+1,$mday,$buildnum);
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s",$buildname);
+
+
+print $builddir;
+
+## now create the build directories
+
+## -----------------------------------------
+##
+## FULL BUILD
+##
+## -----------------------------------------
+
+$dir = 'c:/MinecraftSubmissionBuilds/';
+
+unless(-d $dir)
+{
+ mkdir $dir or die;
+}
+
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/Package",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/Test",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Cheats",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Cheats/Content",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Release",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+## Now copy the files in
+
+## xlast & gameconfig
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/Minecraft.gameconfig",$buildname);
+fcopy('../GameConfig/Minecraft.gameconfig',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/MinecraftContentPackage.xlast",$buildname);
+fcopy('../ContentPackageBuild/MinecraftContentPackage.xlast',$target) or die $!;
+
+## docs
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/4J Minecraft XBLA Design Changes & Additions v1.0.docx",$buildname);
+fcopy('../Docs/4J Minecraft XBLA Design Changes & Additions v1.0.docx',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/Minecraft_XBLA_TIS_Nov2011.xls",$buildname);
+fcopy('../Docs/Minecraft_XBLA_TIS_Nov2011.xls',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/Minecraft_XBLA_TIS_Nov2011_Asia_SYA111511.xls",$buildname);
+fcopy('../Docs/Minecraft_XBLA_TIS_Nov2011_Asia_SYA111511.xls',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/Minecraft_XBLA_TIS_Nov2011_EU.xls",$buildname);
+fcopy('../Docs/Minecraft_XBLA_TIS_Nov2011_EU.xls',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/Xbox Live Avatar Items - Minecraft.xlsx",$buildname);
+fcopy('../Docs/Xbox Live Avatar Items - Minecraft.xlsx',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/Ratings_Submission_Form.doc",$buildname);
+fcopy('../Docs/Ratings_Submission_Form.doc',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/PDLC_Request_Form_Nov2010-IronTheme.xls",$buildname);
+fcopy('../Docs/PDLC_Request_Form_Nov2010-IronTheme.xls',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/GameOverview_Minecraft.doc",$buildname);
+fcopy('../Docs/GameOverview_Minecraft.doc',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/4J Minecraft XBLA Sentient Usage v1.0.docx",$buildname);
+fcopy('../Docs/4J Minecraft XBLA Sentient Usage v1.0.docx',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/4J Minecraft XBLA TMS.docx",$buildname);
+fcopy('../Docs/4J Minecraft XBLA TMS.docx',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/4J Minecraft 1.7.3 update.docx",$buildname);
+fcopy('../Docs/4J Minecraft 1.7.3 update.docx',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/4J Minecraft 1.8.2 update.docx",$buildname);
+fcopy('../Docs/4J Minecraft 1.8.2 update.docx',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/4J Minecraft 1.0.1 update.docx",$buildname);
+fcopy('../Docs/4J Minecraft 1.0.1 update.docx',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/4J Minecraft 1.2.3 update.docx",$buildname);
+fcopy('../Docs/4J Minecraft 1.2.3 update.docx',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Docs/4J Minecraft 1.3.1 update.docx",$buildname);
+fcopy('../Docs/4J Minecraft 1.3.1 update.docx',$target) or die $!;
+
+
+
+## Achievements
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/01.png",$buildname);
+fcopy('../GameConfig/01.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/02.png",$buildname);
+fcopy('../GameConfig/02.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/03.png",$buildname);
+fcopy('../GameConfig/03.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/04.png",$buildname);
+fcopy('../GameConfig/04.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/05.png",$buildname);
+fcopy('../GameConfig/05.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/06.png",$buildname);
+fcopy('../GameConfig/06.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/07.png",$buildname);
+fcopy('../GameConfig/07.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/08.png",$buildname);
+fcopy('../GameConfig/08.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/09.png",$buildname);
+fcopy('../GameConfig/09.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/10.png",$buildname);
+fcopy('../GameConfig/10.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/11.png",$buildname);
+fcopy('../GameConfig/11.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/12.png",$buildname);
+fcopy('../GameConfig/12.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/13.png",$buildname);
+fcopy('../GameConfig/13.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/14.png",$buildname);
+fcopy('../GameConfig/14.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/15.png",$buildname);
+fcopy('../GameConfig/15.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/16.png",$buildname);
+fcopy('../GameConfig/16.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/17.png",$buildname);
+fcopy('../GameConfig/17.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/18.png",$buildname);
+fcopy('../GameConfig/18.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/19.png",$buildname);
+fcopy('../GameConfig/19.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/20.png",$buildname);
+fcopy('../GameConfig/20.png',$target) or die $!;
+
+##background
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/Minecraft_BKGND.png",$buildname);
+fcopy('../GameConfig/Minecraft_BKGND.png',$target) or die $!;
+
+##gamerpics
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/32_584111F70002000100010001.png",$buildname);
+fcopy('../GameConfig/32_584111F70002000100010001.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/32_584111F70002000200010002.png",$buildname);
+fcopy('../GameConfig/32_584111F70002000200010002.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/64_584111F70002000100010001.png",$buildname);
+fcopy('../GameConfig/64_584111F70002000100010001.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/64_584111F70002000200010002.png",$buildname);
+fcopy('../GameConfig/64_584111F70002000200010002.png',$target) or die $!;
+
+##boxart
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/Minecraft_BOXART.png",$buildname);
+fcopy('../GameConfig/Minecraft_BOXART.png',$target) or die $!;
+
+##banner
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/MinecraftMarketplace.png",$buildname);
+fcopy('../GameConfig/MinecraftMarketplace.png',$target) or die $!;
+
+## game icon
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/MinecraftIcon.png",$buildname);
+fcopy('../GameConfig/MinecraftIcon.png',$target) or die $!;
+
+## avatar icons
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward1_F_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward1_F_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward1_F_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward1_F_icon-128.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward1_M_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward1_M_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward1_M_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward1_M_icon-128.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward2_F_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward2_F_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward2_F_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward2_F_icon-128.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward2_M_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward2_M_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward2_M_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward2_M_icon-128.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward3_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward3_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/TitleAward3_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward3_icon-128.png',$target) or die $!;
+
+## avatar bin files
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/Tshirt5_Porkchop_Female.bin",$buildname);
+fcopy('../GameConfig/Tshirt5_Porkchop_Female.bin',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/Tshirt5_Porkchop_Male.bin",$buildname);
+fcopy('../GameConfig/Tshirt5_Porkchop_Male.bin',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/MineCraft_Watch_Female.bin",$buildname);
+fcopy('../GameConfig/MineCraft_Watch_Female.bin',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/MineCraft_Watch_Male.bin",$buildname);
+fcopy('../GameConfig/MineCraft_Watch_Male.bin',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/Creeper_Cap.bin",$buildname);
+fcopy('../GameConfig/Creeper_Cap.bin',$target) or die $!;
+
+
+## PACKAGE DIR
+
+## Achievements
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/01.png",$buildname);
+fcopy('../GameConfig/01.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/02.png",$buildname);
+fcopy('../GameConfig/02.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/03.png",$buildname);
+fcopy('../GameConfig/03.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/04.png",$buildname);
+fcopy('../GameConfig/04.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/05.png",$buildname);
+fcopy('../GameConfig/05.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/06.png",$buildname);
+fcopy('../GameConfig/06.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/07.png",$buildname);
+fcopy('../GameConfig/07.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/08.png",$buildname);
+fcopy('../GameConfig/08.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/09.png",$buildname);
+fcopy('../GameConfig/09.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/10.png",$buildname);
+fcopy('../GameConfig/10.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/11.png",$buildname);
+fcopy('../GameConfig/11.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/12.png",$buildname);
+fcopy('../GameConfig/12.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/13.png",$buildname);
+fcopy('../GameConfig/13.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/14.png",$buildname);
+fcopy('../GameConfig/14.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/15.png",$buildname);
+fcopy('../GameConfig/15.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/16.png",$buildname);
+fcopy('../GameConfig/16.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/17.png",$buildname);
+fcopy('../GameConfig/17.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/18.png",$buildname);
+fcopy('../GameConfig/18.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/19.png",$buildname);
+fcopy('../GameConfig/19.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/20.png",$buildname);
+fcopy('../GameConfig/20.png',$target) or die $!;
+
+## arcadeinfo
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/ArcadeInfo.xml",$buildname);
+fcopy('../GameConfig/ArcadeInfo.xml',$target) or die $!;
+
+## game icon
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/MinecraftIcon.png",$buildname);
+fcopy('../GameConfig/MinecraftIcon.png',$target) or die $!;
+
+##gamerpics
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/32_584111F70002000100010001.png",$buildname);
+fcopy('../GameConfig/32_584111F70002000100010001.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/32_584111F70002000200010002.png",$buildname);
+fcopy('../GameConfig/32_584111F70002000200010002.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/64_584111F70002000100010001.png",$buildname);
+fcopy('../GameConfig/64_584111F70002000100010001.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/64_584111F70002000200010002.png",$buildname);
+fcopy('../GameConfig/64_584111F70002000200010002.png',$target) or die $!;
+
+## Avatar Awards
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/AvatarAwards",$buildname);
+fcopy('../GameConfig/AvatarPackages/AvatarAwards',$target) or die $!;
+
+## avatar icons
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward1_F_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward1_F_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward1_F_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward1_F_icon-128.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward1_M_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward1_M_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward1_M_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward1_M_icon-128.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward2_F_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward2_F_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward2_F_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward2_F_icon-128.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward2_M_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward2_M_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward2_M_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward2_M_icon-128.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward3_icon-64.png",$buildname);
+fcopy('../GameConfig/TitleAward3_icon-64.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/TitleAward3_icon-128.png",$buildname);
+fcopy('../GameConfig/TitleAward3_icon-128.png',$target) or die $!;
+
+## avatar bin files
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/Tshirt5_Porkchop_Female.bin",$buildname);
+fcopy('../GameConfig/Tshirt5_Porkchop_Female.bin',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/Tshirt5_Porkchop_Male.bin",$buildname);
+fcopy('../GameConfig/Tshirt5_Porkchop_Male.bin',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/MineCraft_Watch_Female.bin",$buildname);
+fcopy('../GameConfig/MineCraft_Watch_Female.bin',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/MineCraft_Watch_Male.bin",$buildname);
+fcopy('../GameConfig/MineCraft_Watch_Male.bin',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/Creeper_Cap.bin",$buildname);
+fcopy('../GameConfig/Creeper_Cap.bin',$target) or die $!;
+
+## banner
+# 4J Stu - This is not reference in the XLAST, but seems like an online thing rather than in the package anyway?
+# 4J-PB - It's referenced in the xlast in the content offer
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/MinecraftMarketplace.png",$buildname);
+fcopy('../GameConfig/MinecraftMarketplace.png',$target) or die $!;
+
+## xex
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/Default.xex",$buildname);
+fcopy('../../ContentPackage_NO_TU/Default.xex',$target) or die $!;
+
+## game data
+## can't copy all res - there's tutorial build files in there
+
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/1_2_2",$buildname);
+rcopy('../../Common/res/1_2_2/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/achievement",$buildname);
+rcopy('../../Common/res/achievement/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/armor",$buildname);
+rcopy('../../Common/res/armor/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/art",$buildname);
+rcopy('../../Common/res/art/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/audio",$buildname);
+rcopy('../../Common/res/audio/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/environment",$buildname);
+rcopy('../../Common/res/environment/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/font",$buildname);
+rcopy('../../Common/res/font/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/gui",$buildname);
+rcopy('../../Common/res/gui/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/item",$buildname);
+rcopy('../../Common/res/item/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/misc",$buildname);
+rcopy('../../Common/res/misc/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/mob",$buildname);
+rcopy('../../Common/res/mob/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/terrain",$buildname);
+rcopy('../../Common/res/terrain/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/title",$buildname);
+rcopy('../../Common/res/title/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/pack.png",$buildname);
+fcopy('../../Common/res/pack.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/particles.png",$buildname);
+fcopy('../../Common/res/particles.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/terrain.png",$buildname);
+fcopy('../../Common/res/terrain.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/tutorialDiff",$buildname);
+fcopy('../../Common/res/TitleUpdate/tutorialDiff',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/art",$buildname);
+rcopy('../../Common/res/TitleUpdate/res/art/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/armor",$buildname);
+rcopy('../../Common/res/TitleUpdate/res/armor/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/font",$buildname);
+rcopy('../../Common/res/TitleUpdate/res/font/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/item",$buildname);
+rcopy('../../Common/res/TitleUpdate/res/item/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/misc",$buildname);
+rcopy('../../Common/res/TitleUpdate/res/misc/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/mob",$buildname);
+rcopy('../../Common/res/TitleUpdate/res/mob/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/textures",$buildname);
+rcopy('../../Common/res/TitleUpdate/res/textures/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/items.png",$buildname);
+fcopy('../../Common/res/TitleUpdate/res/items.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/terrain.png",$buildname);
+fcopy('../../Common/res/TitleUpdate/res/terrain.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/terrainMipMapLevel2.png",$buildname);
+fcopy('../../Common/res/TitleUpdate/res/terrainMipMapLevel2.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/terrainMipMapLevel3.png",$buildname);
+fcopy('../../Common/res/TitleUpdate/res/terrainMipMapLevel3.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/GameRules/Tutorial.pck",$buildname);
+fcopy('../../Common/res/TitleUpdate/GameRules/Tutorial.pck',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/audio",$buildname);
+rcopy('../../Common/res/TitleUpdate/audio/',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/TMS/TMSFiles.xzp",$buildname);
+fcopy('../../XboxMedia/XZP/TMSFiles.xzp',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/colours.col",$buildname);
+fcopy('../../Common/res/TitleUpdate/res/colours.col',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/particles.png",$buildname);
+fcopy('../../Common/res/TitleUpdate/res/particles.png',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/res/TitleUpdate/DLC",$buildname);
+rcopy('../../Common/res/TitleUpdate/DLC/',$target) or die $!;
+
+
+## Bill Brown wants the Package directory to be a full build of the current game, not a TU - this was for the disc version
+
+
+
+
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Release/Default.exe",$buildname);
+fcopy('../../ContentPackage/Default.exe',$target) or die $!;
+
+
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/Tutorial/Tutorial",$buildname);
+rcopy('../../Common/Tutorial/Tutorial',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/584111F70AAAAAAA",$buildname);
+rcopy('../../XboxMedia/584111F70AAAAAAA',$target) or die $!;
+
+
+## nui speech
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Package/",$buildname);
+rcopy('../kinect/speech/',$target) or die $!;
+
+## test/debug - Not doing debug
+##$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Debug/Default.exe",$buildname);
+##fcopy('../../Debug/Minecraft.Client.exe',$target) or die $!;
+##$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Debug/Default.pdb",$buildname);
+##fcopy('../../Debug/Minecraft.Client.pdb',$target) or die $!;
+##$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Debug/Default.xdb",$buildname);
+##fcopy('../../Debug/Minecraft.Client.xdb',$target) or die $!;
+
+## test/release
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Release/Default.exe",$buildname);
+fcopy('../../ContentPackage/Default.exe',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Release/Default.pdb",$buildname);
+fcopy('../../ContentPackage/Default.pdb',$target) or die $!;
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Release/Default.xdb",$buildname);
+fcopy('../../ContentPackage/Default.xdb',$target) or die $!;
+
+## test/cheats
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/Test/Cheats/Content/",$buildname);
+rcopy('../Cheats/',$target) or die $!;
+
+
+# need to change the attributes on the game config
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/LiveFiles/Minecraft.gameconfig",$buildname);
+chmod 0755, $target;
+
+## -----------------------------------------
+##
+## TITLE UPDATE BUILD
+##
+## -----------------------------------------
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/TitleUpdate",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/TitleUpdate/Docs",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/TitleUpdate/Package",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/TitleUpdate/Package/res",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/TitleUpdate/Package/res/TMS",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/TitleUpdate/Package/res/font",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+$builddir=sprintf("c:/MinecraftSubmissionBuilds/%s/TitleUpdate/Released",$buildname);
+unless(-d $builddir)
+{
+ mkdir $builddir or die;
+}
+
+## Now copy the files in
+
+## Original xex and changed files are assumed to be in the TitleUpdate directory
+
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/TitleUpdate/Minecraft_TU18.xlast",$buildname);
+fcopy('./TitleUpdate/Minecraft_TU18.xlast',$target) or die $!;
+
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/TitleUpdate/Docs",$buildname);
+rcopy('./TitleUpdate/Docs',$target) or die $!;
+
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/TitleUpdate/Released",$buildname);
+rcopy('./TitleUpdate/Released',$target) or die $!;
+
+$target=sprintf("c:/MinecraftSubmissionBuilds/%s/TitleUpdate/Package",$buildname);
+rcopy('./TitleUpdate/Package',$target) or die $!;
+
+open FH, "+>", 'zipthebuild.cmd' or die $!;
+
+$zipline = sprintf("\"C:\\Program Files (x86)\\winzip\\wzzip\" -p -r -ex c:\\MinecraftSubmissionBuilds\\Zips\\%s.zip c:\\MinecraftSubmissionBuilds\\%s\\*",$buildname,$buildname);
+
+print FH $zipline;
+close FH;
diff --git a/Minecraft.Client/Xbox/Title Update/zipthebuild.cmd b/Minecraft.Client/Xbox/Title Update/zipthebuild.cmd
new file mode 100644
index 00000000..b4847b9c
--- /dev/null
+++ b/Minecraft.Client/Xbox/Title Update/zipthebuild.cmd
@@ -0,0 +1 @@
+"C:\Program Files (x86)\winzip\wzzip" -p -r -ex c:\MinecraftSubmissionBuilds\Zips\Minecraft_14.09.30.0494_TU18.zip c:\MinecraftSubmissionBuilds\Minecraft_14.09.30.0494_TU18\*
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/XML/ATGXmlParser.cpp b/Minecraft.Client/Xbox/XML/ATGXmlParser.cpp
new file mode 100644
index 00000000..5366e721
--- /dev/null
+++ b/Minecraft.Client/Xbox/XML/ATGXmlParser.cpp
@@ -0,0 +1,963 @@
+// 4J-PB -
+// The ATG Framework is a common set of C++ class libraries that is used by the samples in the XDK, and was developed by the Advanced Technology Group (ATG).
+// The ATG Framework offers a clean and consistent format for the samples. These classes define functions used by all the samples.
+// The ATG Framework together with the samples demonstrates best practices and innovative techniques for Xbox 360. There are many useful sections of code in the samples.
+// You are encouraged to incorporate this code into your titles.
+
+
+//-------------------------------------------------------------------------------------
+// AtgXmlParser.cpp
+//
+// Simple callback non-validating XML parser implementation.
+//
+// Xbox Advanced Technology Group.
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-------------------------------------------------------------------------------------
+
+#include "stdafx.h"
+#include "AtgXmlParser.h"
+
+namespace ATG
+{
+
+//-------------------------------------------------------------------------------------
+// Name: XMLParser::XMLParser
+//-------------------------------------------------------------------------------------
+XMLParser::XMLParser()
+{
+ m_pWritePtr = m_pWriteBuf;
+ m_pReadPtr = m_pReadBuf;
+ m_pISAXCallback = NULL;
+ m_hFile = INVALID_HANDLE_VALUE;
+}
+
+//-------------------------------------------------------------------------------------
+// Name: XMLParser::~XMLParser
+//-------------------------------------------------------------------------------------
+XMLParser::~XMLParser()
+{
+}
+
+
+//-------------------------------------------------------------------------------------
+// Name: XMLParser::FillBuffer
+// Desc: Reads a block from the current open file
+//-------------------------------------------------------------------------------------
+VOID XMLParser::FillBuffer()
+{
+ DWORD NChars;
+
+ m_pReadPtr = m_pReadBuf;
+
+ if( m_hFile == NULL )
+ {
+ if( m_uInXMLBufferCharsLeft > XML_READ_BUFFER_SIZE )
+ NChars = XML_READ_BUFFER_SIZE;
+ else
+ NChars = m_uInXMLBufferCharsLeft;
+
+ CopyMemory( m_pReadBuf, m_pInXMLBuffer, NChars );
+ m_uInXMLBufferCharsLeft -= NChars;
+ m_pInXMLBuffer += NChars;
+ }
+ else
+ {
+ if( !ReadFile( m_hFile, m_pReadBuf, XML_READ_BUFFER_SIZE, &NChars, NULL ))
+ {
+ return;
+ }
+ }
+
+ m_dwCharsConsumed += NChars;
+ __int64 iProgress = m_dwCharsTotal ? (( (__int64)m_dwCharsConsumed * 1000 ) / (__int64)m_dwCharsTotal) : 0;
+ m_pISAXCallback->SetParseProgress( (DWORD)iProgress );
+
+ m_pReadBuf[ NChars ] = '\0';
+ m_pReadBuf[ NChars + 1] = '\0';
+}
+
+
+//-------------------------------------------------------------------------------------
+// Name: XMLParser::SkipNextAdvance
+// Desc: Puts the last character read back on the input stream
+//-------------------------------------------------------------------------------------
+VOID XMLParser::SkipNextAdvance()
+{
+ m_bSkipNextAdvance = TRUE;
+}
+
+
+//-------------------------------------------------------------------------------------
+// Name: XMLParser::ConsumeSpace
+// Desc: Skips spaces in the current stream
+//-------------------------------------------------------------------------------------
+HRESULT XMLParser::ConsumeSpace()
+{
+ HRESULT hr;
+
+ // Skip spaces
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+
+ while ( ( m_Ch == ' ' ) || ( m_Ch == '\t' ) ||
+ ( m_Ch == '\n' ) || ( m_Ch == '\r' ) )
+ {
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+ }
+ SkipNextAdvance();
+ return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+// Name: XMLParser::ConvertEscape
+// Desc: Copies and converts an escape sequence into m_pWriteBuf
+//-------------------------------------------------------------------------------------
+HRESULT XMLParser::ConvertEscape()
+{
+ HRESULT hr;
+ WCHAR wVal = 0;
+
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+
+ // all escape sequences start with &, so ignore the first character
+
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+
+ if ( m_Ch == '#' ) // character as hex or decimal
+ {
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+ if ( m_Ch == 'x' ) // hex number
+ {
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+
+ while ( m_Ch != ';' )
+ {
+ wVal *= 16;
+
+ if ( ( m_Ch >= '0' ) && ( m_Ch <= '9' ) )
+ {
+ wVal += m_Ch - '0';
+ }
+ else if ( ( m_Ch >= 'a' ) && ( m_Ch <= 'f' ) )
+ {
+ wVal += m_Ch - 'a' + 10;
+ }
+ else if ( ( m_Ch >= 'A' ) && ( m_Ch <= 'F' ) )
+ {
+ wVal += m_Ch - 'A' + 10;
+ }
+ else
+ {
+ Error( E_INVALID_XML_SYNTAX, "Expected hex digit as part of escape sequence" );
+ return E_INVALID_XML_SYNTAX;
+ }
+
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+ }
+ }
+ else // decimal number
+ {
+ while ( m_Ch != ';' )
+ {
+ wVal *= 10;
+
+ if ( ( m_Ch >= '0' ) && ( m_Ch <= '9' ) )
+ {
+ wVal += m_Ch - '0';
+ }
+ else
+ {
+ Error( E_INVALID_XML_SYNTAX, "Expected decimal digit as part of escape sequence" );
+ return E_INVALID_XML_SYNTAX;
+ }
+
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+ }
+ }
+
+ // copy character into the buffer
+ m_Ch = wVal;
+
+ return S_OK;
+ }
+
+ // must be an entity reference
+
+ WCHAR *pEntityRefVal = m_pWritePtr;
+ UINT EntityRefLen;
+
+ SkipNextAdvance();
+ if( FAILED( hr = AdvanceName() ) )
+ return hr;
+
+ EntityRefLen = (UINT)( m_pWritePtr - pEntityRefVal );
+ m_pWritePtr = pEntityRefVal;
+
+ if ( EntityRefLen == 0 )
+ {
+ Error( E_INVALID_XML_SYNTAX, "Expecting entity name after &" );
+ return E_INVALID_XML_SYNTAX;
+ }
+
+ if( !wcsncmp( pEntityRefVal, L"lt", EntityRefLen ) )
+ wVal = '<';
+ else if( !wcsncmp( pEntityRefVal, L"gt", EntityRefLen ) )
+ wVal = '>';
+ else if( !wcsncmp( pEntityRefVal, L"amp", EntityRefLen ) )
+ wVal = '&';
+ else if( !wcsncmp( pEntityRefVal, L"apos", EntityRefLen ) )
+ wVal = '\'';
+ else if( !wcsncmp( pEntityRefVal, L"quot", EntityRefLen ) )
+ wVal = '"';
+ else
+ {
+ Error( E_INVALID_XML_SYNTAX, "Unrecognized entity name after & - (should be lt, gt, amp, apos, or quot)" );
+ return E_INVALID_XML_SYNTAX; // return false if unrecognized token sequence
+ }
+
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+
+ if( m_Ch != ';' )
+ {
+ Error( E_INVALID_XML_SYNTAX, "Expected terminating ; for entity reference" );
+ return E_INVALID_XML_SYNTAX; // malformed reference - needs terminating ;
+ }
+
+ m_Ch = wVal;
+ return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+// Name: XMLParser::AdvanceAttrVal
+// Desc: Copies an attribute value into m_pWrite buf, skipping surrounding quotes
+//-------------------------------------------------------------------------------------
+HRESULT XMLParser::AdvanceAttrVal()
+{
+ HRESULT hr;
+ WCHAR wQuoteChar;
+
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+
+ if( ( m_Ch != '"' ) && ( m_Ch != '\'' ) )
+ {
+ Error( E_INVALID_XML_SYNTAX, "Attribute values must be enclosed in quotes" );
+ return E_INVALID_XML_SYNTAX;
+ }
+
+ wQuoteChar = m_Ch;
+
+ for( ;; )
+ {
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+ else if( m_Ch == wQuoteChar )
+ break;
+ else if( m_Ch == '&' )
+ {
+ SkipNextAdvance();
+ if( FAILED( hr = ConvertEscape() ) )
+ return hr;
+ }
+ else if( m_Ch == '<' )
+ {
+ Error( E_INVALID_XML_SYNTAX, "Illegal character '<' in element tag" );
+ return E_INVALID_XML_SYNTAX;
+ }
+
+ // copy character into the buffer
+
+ if( m_pWritePtr - m_pWriteBuf >= XML_WRITE_BUFFER_SIZE )
+ {
+ Error( E_INVALID_XML_SYNTAX, "Total element tag size may not be more than %d characters", XML_WRITE_BUFFER_SIZE );
+ return E_INVALID_XML_SYNTAX;
+ }
+
+ *m_pWritePtr = m_Ch;
+ m_pWritePtr++;
+ }
+ return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+// Name: XMLParser::AdvanceName
+// Desc: Copies a name into the m_pWriteBuf - returns TRUE on success, FALSE on failure
+// Ignores leading whitespace. Currently does not support unicode names
+//-------------------------------------------------------------------------------------
+HRESULT XMLParser::AdvanceName()
+{
+ HRESULT hr;
+
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+
+ if( ( ( m_Ch < 'A' ) || ( m_Ch > 'Z' ) ) &&
+ ( ( m_Ch < 'a' ) || ( m_Ch > 'z' ) ) &&
+ ( m_Ch != '_' ) && ( m_Ch != ':' ) )
+ {
+ Error( E_INVALID_XML_SYNTAX, "Names must start with an alphabetic character or _ or :" );
+ return E_INVALID_XML_SYNTAX;
+ }
+
+ while( ( ( m_Ch >= 'A' ) && ( m_Ch <= 'Z' ) ) ||
+ ( ( m_Ch >= 'a' ) && ( m_Ch <= 'z' ) ) ||
+ ( ( m_Ch >= '0' ) && ( m_Ch <= '9' ) ) ||
+ ( m_Ch == '_' ) || ( m_Ch == ':' ) ||
+ ( m_Ch == '-' ) || ( m_Ch == '.' ) )
+ {
+
+ if( m_pWritePtr - m_pWriteBuf >= XML_WRITE_BUFFER_SIZE )
+ {
+ Error( E_INVALID_XML_SYNTAX, "Total element tag size may not be more than %d characters", XML_WRITE_BUFFER_SIZE );
+ return E_INVALID_XML_SYNTAX;
+ }
+
+ *m_pWritePtr = m_Ch;
+ m_pWritePtr++;
+
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+ }
+
+ SkipNextAdvance();
+ return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+// Name: XMLParser::AdvanceCharacter
+// Desc: Copies the character at *m_pReadPtr to m_Ch
+// handling difference in UTF16 / UTF8, and big/little endian
+// and getting another chunk of the file if needed
+// Returns S_OK if there are more characters, E_ABORT for no characters to read
+//-------------------------------------------------------------------------------------
+HRESULT XMLParser::AdvanceCharacter( BOOL bOkToFail )
+{
+ if( m_bSkipNextAdvance )
+ {
+ m_bSkipNextAdvance = FALSE;
+ return S_OK;
+ }
+
+ // If we hit EOF in the middle of a character,
+ // it's ok-- we'll just have a corrupt last character
+ // (the buffer is padded with double NULLs )
+
+ if ( ( m_pReadPtr[0] == '\0' ) && ( m_pReadPtr[1] == '\0' ) )
+ {
+ // Read more from the file
+ FillBuffer();
+
+ // We are at EOF if it is still NULL
+ if ( ( m_pReadPtr[0] == '\0' ) && ( m_pReadPtr[1] == '\0' ) )
+ {
+ if( !bOkToFail )
+ {
+ Error( E_INVALID_XML_SYNTAX, "Unexpected EOF while parsing XML file" );
+ return E_INVALID_XML_SYNTAX;
+ }
+ else
+ {
+ return E_FAIL;
+ }
+ }
+ }
+
+ if( m_bUnicode == FALSE )
+ {
+ m_Ch = *((CHAR *)m_pReadPtr);
+ m_pReadPtr++;
+ }
+ else // if( m_bUnicode == TRUE )
+ {
+ m_Ch = *((WCHAR *)m_pReadPtr);
+
+ if( m_bReverseBytes )
+ {
+ m_Ch = ( m_Ch << 8 ) + ( m_Ch >> 8 );
+ }
+
+ m_pReadPtr += 2;
+ }
+
+ if( m_Ch == '\n' )
+ {
+ m_pISAXCallback->m_LineNum++;
+ m_pISAXCallback->m_LinePos = 0;
+ }
+ else if( m_Ch != '\r' )
+ m_pISAXCallback->m_LinePos++;
+
+ return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+// Name: XMLParser::AdvanceElement
+// Desc: Builds data, calls callback
+//-------------------------------------------------------------------------------------
+HRESULT XMLParser::AdvanceElement()
+{
+ HRESULT hr;
+
+ // write ptr at the beginning of the buffer
+ m_pWritePtr = m_pWriteBuf;
+
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+
+ // if first character wasn't '<', we wouldn't be here
+
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+
+ if( m_Ch == '!' )
+ {
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+ if ( m_Ch == '-' )
+ {
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+ if( m_Ch != '-' )
+ {
+ Error( E_INVALID_XML_SYNTAX, "Expecting '-' after 'ElementEnd( pEntityRefVal,
+ (UINT) ( m_pWritePtr - pEntityRefVal ) ) ) )
+ return E_ABORT;
+
+ if( FAILED( hr = ConsumeSpace() ) )
+ return hr;
+
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+
+ if( m_Ch != '>' )
+ {
+ Error( E_INVALID_XML_SYNTAX, "Expecting '>' after name for closing entity reference" );
+ return E_INVALID_XML_SYNTAX;
+ }
+ }
+ else if( m_Ch == '?' )
+ {
+ // just skip any xml header tag since not really important after identifying character set
+ for( ;; )
+ {
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+
+ if ( m_Ch == '>' )
+ return S_OK;
+ }
+ }
+ else
+ {
+ XMLAttribute Attributes[ XML_MAX_ATTRIBUTES_PER_ELEMENT ];
+ UINT NumAttrs;
+
+ WCHAR *pEntityRefVal = m_pWritePtr;
+ UINT EntityRefLen;
+
+ NumAttrs = 0;
+
+ SkipNextAdvance();
+
+ // Entity tag
+ if( FAILED( hr = AdvanceName() ) )
+ return hr;
+
+ EntityRefLen = (UINT)( m_pWritePtr - pEntityRefVal );
+
+ if( FAILED( hr = ConsumeSpace() ) )
+ return hr;
+
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+
+ // read attributes
+ while( ( m_Ch != '>' ) && ( m_Ch != '/' ) )
+ {
+ SkipNextAdvance();
+
+ if ( NumAttrs >= XML_MAX_ATTRIBUTES_PER_ELEMENT )
+ {
+ Error( E_INVALID_XML_SYNTAX, "Elements may not have more than %d attributes", XML_MAX_ATTRIBUTES_PER_ELEMENT );
+ return E_INVALID_XML_SYNTAX;
+ }
+
+ Attributes[ NumAttrs ].strName = m_pWritePtr;
+
+ // Attribute name
+ if( FAILED( hr = AdvanceName() ) )
+ return hr;
+
+ Attributes[ NumAttrs ].NameLen = (UINT)( m_pWritePtr - Attributes[ NumAttrs ].strName );
+
+ if( FAILED( hr = ConsumeSpace() ) )
+ return hr;
+
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+
+ if( m_Ch != '=' )
+ {
+ Error( E_INVALID_XML_SYNTAX, "Expecting '=' character after attribute name" );
+ return E_INVALID_XML_SYNTAX;
+ }
+
+ if( FAILED( hr = ConsumeSpace() ) )
+ return hr;
+
+ Attributes[ NumAttrs ].strValue = m_pWritePtr;
+
+ if( FAILED( hr = AdvanceAttrVal() ) )
+ return hr;
+
+ Attributes[ NumAttrs ].ValueLen = (UINT)( m_pWritePtr -
+ Attributes[ NumAttrs ].strValue );
+
+ ++NumAttrs;
+
+ if( FAILED( hr = ConsumeSpace() ) )
+ return hr;
+
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+ }
+
+ if( m_Ch == '/' )
+ {
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+ if( m_Ch != '>' )
+ {
+ Error( E_INVALID_XML_SYNTAX, "Expecting '>' after '/' in element tag" );
+ return E_INVALID_XML_SYNTAX;
+ }
+
+ if( FAILED( m_pISAXCallback->ElementBegin( pEntityRefVal, EntityRefLen,
+ Attributes, NumAttrs ) ) )
+ return E_ABORT;
+
+ if( FAILED( m_pISAXCallback->ElementEnd( pEntityRefVal, EntityRefLen ) ) )
+ return E_ABORT;
+ }
+ else
+ {
+ if( FAILED( m_pISAXCallback->ElementBegin( pEntityRefVal, EntityRefLen,
+ Attributes, NumAttrs ) ) )
+ return E_ABORT;
+ }
+ }
+
+ return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+// Name: XMLParser::AdvanceCDATA
+// Desc: Read a CDATA section
+//-------------------------------------------------------------------------------------
+HRESULT XMLParser::AdvanceCDATA()
+{
+ HRESULT hr;
+ WORD wStage = 0;
+
+ if( FAILED( m_pISAXCallback->CDATABegin() ) )
+ return E_ABORT;
+
+ for( ;; )
+ {
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+
+ *m_pWritePtr = m_Ch;
+ m_pWritePtr++;
+
+ if( ( m_Ch == ']' ) && ( wStage == 0 ) )
+ wStage = 1;
+ else if( ( m_Ch == ']' ) && ( wStage == 1 ) )
+ wStage = 2;
+ else if( ( m_Ch == '>' ) && ( wStage == 2 ) )
+ {
+ m_pWritePtr -= 3;
+ break;
+ }
+ else
+ wStage = 0;
+
+ if( m_pWritePtr - m_pWriteBuf >= XML_WRITE_BUFFER_SIZE )
+ {
+ if( FAILED( m_pISAXCallback->CDATAData( m_pWriteBuf, (UINT)( m_pWritePtr - m_pWriteBuf ), TRUE ) ) )
+ return E_ABORT;
+ m_pWritePtr = m_pWriteBuf;
+ }
+ }
+
+ if( FAILED( m_pISAXCallback->CDATAData( m_pWriteBuf, (UINT)( m_pWritePtr - m_pWriteBuf ), FALSE ) ) )
+ return E_ABORT;
+
+ m_pWritePtr = m_pWriteBuf;
+
+ if( FAILED( m_pISAXCallback->CDATAEnd() ) )
+ return E_ABORT;
+
+ return S_OK;
+}
+
+//-------------------------------------------------------------------------------------
+// Name: XMLParser::AdvanceComment
+// Desk: Skips over a comment
+//-------------------------------------------------------------------------------------
+HRESULT XMLParser::AdvanceComment()
+{
+ HRESULT hr;
+ WORD wStage;
+
+ wStage = 0;
+ for( ;; )
+ {
+ if( FAILED( hr = AdvanceCharacter() ) )
+ return hr;
+
+ if (( m_Ch == '-' ) && ( wStage == 0 ))
+ wStage = 1;
+ else if (( m_Ch == '-' ) && ( wStage == 1 ))
+ wStage = 2;
+ else if (( m_Ch == '>' ) && ( wStage == 2 ))
+ break;
+ else
+ wStage = 0;
+ }
+
+ return S_OK;
+}
+
+
+//-------------------------------------------------------------------------------------
+// Name: XMLParser::RegisterSAXCallbackInterface
+// Desc: Registers callback interface
+//-------------------------------------------------------------------------------------
+VOID XMLParser::RegisterSAXCallbackInterface( ISAXCallback *pISAXCallback )
+{
+ m_pISAXCallback = pISAXCallback;
+}
+
+
+//-------------------------------------------------------------------------------------
+// Name: XMLParser::GetSAXCallbackInterface
+// Desc: Returns current callback interface
+//-------------------------------------------------------------------------------------
+ISAXCallback* XMLParser::GetSAXCallbackInterface()
+{
+ return m_pISAXCallback;
+}
+
+
+//-------------------------------------------------------------------------------------
+// Name: XMLParser::MainParseLoop
+// Desc: Main Loop to Parse Data - source agnostic
+//-------------------------------------------------------------------------------------
+HRESULT XMLParser::MainParseLoop()
+{
+ BOOL bWhiteSpaceOnly = TRUE;
+ HRESULT hr = S_OK;
+
+ if( FAILED( m_pISAXCallback->StartDocument() ) )
+ return E_ABORT;
+
+ m_pWritePtr = m_pWriteBuf;
+
+ FillBuffer();
+
+ if ( *((WCHAR *) m_pReadBuf ) == 0xFEFF )
+ {
+ m_bUnicode = TRUE;
+ m_bReverseBytes = FALSE;
+ m_pReadPtr += 2;
+ }
+ else if ( *((WCHAR *) m_pReadBuf ) == 0xFFFE )
+ {
+ m_bUnicode = TRUE;
+ m_bReverseBytes = TRUE;
+ m_pReadPtr += 2;
+ }
+ else if ( *((WCHAR *) m_pReadBuf ) == 0x003C )
+ {
+ m_bUnicode = TRUE;
+ m_bReverseBytes = FALSE;
+ }
+ else if ( *((WCHAR *) m_pReadBuf ) == 0x3C00 )
+ {
+ m_bUnicode = TRUE;
+ m_bReverseBytes = TRUE;
+ }
+ else if ( m_pReadBuf[ 0 ] == 0x3C )
+ {
+ m_bUnicode = FALSE;
+ m_bReverseBytes = FALSE;
+ }
+ else
+ {
+ Error( E_INVALID_XML_SYNTAX, "Unrecognized encoding (parser does not support UTF-8 language encodings)" );
+ return E_INVALID_XML_SYNTAX;
+ }
+
+ for( ;; )
+ {
+ if( FAILED( AdvanceCharacter( TRUE ) ) )
+ {
+ if ( ( (UINT) ( m_pWritePtr - m_pWriteBuf ) != 0 ) && ( !bWhiteSpaceOnly ) )
+ {
+ if( FAILED( m_pISAXCallback->ElementContent( m_pWriteBuf, (UINT)( m_pWritePtr - m_pWriteBuf ), FALSE ) ) )
+ return E_ABORT;
+
+ bWhiteSpaceOnly = TRUE;
+ }
+
+ if( FAILED( m_pISAXCallback->EndDocument() ) )
+ return E_ABORT;
+
+ return S_OK;
+ }
+
+ if( m_Ch == '<' )
+ {
+ if( ( (UINT) ( m_pWritePtr - m_pWriteBuf ) != 0 ) && ( !bWhiteSpaceOnly ) )
+ {
+ if( FAILED( m_pISAXCallback->ElementContent( m_pWriteBuf, (UINT)( m_pWritePtr - m_pWriteBuf ), FALSE ) ) )
+ return E_ABORT;
+
+ bWhiteSpaceOnly = TRUE;
+ }
+
+ SkipNextAdvance();
+
+ m_pWritePtr = m_pWriteBuf;
+
+ if( FAILED( hr = AdvanceElement() ) )
+ return hr;
+
+ m_pWritePtr = m_pWriteBuf;
+ }
+ else
+ {
+ if( m_Ch == '&' )
+ {
+ SkipNextAdvance();
+ if( FAILED( hr = ConvertEscape() ) )
+ return hr;
+ }
+
+ if( bWhiteSpaceOnly && ( m_Ch != ' ' ) && ( m_Ch != '\n' ) && ( m_Ch != '\r' ) &&
+ ( m_Ch != '\t' ) )
+ {
+ bWhiteSpaceOnly = FALSE;
+ }
+
+ *m_pWritePtr = m_Ch;
+ m_pWritePtr++;
+
+ if( m_pWritePtr - m_pWriteBuf >= XML_WRITE_BUFFER_SIZE )
+ {
+ if( !bWhiteSpaceOnly )
+ {
+ if( FAILED( m_pISAXCallback->ElementContent( m_pWriteBuf,
+ ( UINT ) ( m_pWritePtr - m_pWriteBuf ),
+ TRUE ) ) )
+ {
+ return E_ABORT;
+ }
+ }
+
+ m_pWritePtr = m_pWriteBuf;
+ bWhiteSpaceOnly = TRUE;
+ }
+ }
+ }
+}
+
+
+//-------------------------------------------------------------------------------------
+// Name: XMLParser::ParseXMLFile
+// Desc: Builds element data
+//-------------------------------------------------------------------------------------
+HRESULT XMLParser::ParseXMLFile( CONST CHAR *strFilename )
+{
+ HRESULT hr;
+
+ if( m_pISAXCallback == NULL )
+ return E_NOINTERFACE;
+
+ m_pISAXCallback->m_LineNum = 1;
+ m_pISAXCallback->m_LinePos = 0;
+ m_pISAXCallback->m_strFilename = strFilename; // save this off only while we parse the file
+
+ m_bSkipNextAdvance = FALSE;
+ m_pReadPtr = m_pReadBuf;
+
+ m_pReadBuf[ 0 ] = '\0';
+ m_pReadBuf[ 1 ] = '\0';
+
+ m_pInXMLBuffer = NULL;
+ m_uInXMLBufferCharsLeft = 0;
+ m_hFile = CreateFile( strFilename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL );
+
+ if( m_hFile == INVALID_HANDLE_VALUE )
+ {
+ Error( E_COULD_NOT_OPEN_FILE, "Error opening file" );
+ hr = E_COULD_NOT_OPEN_FILE;
+
+ }
+ else
+ {
+ LARGE_INTEGER iFileSize;
+ GetFileSizeEx( m_hFile, &iFileSize );
+ m_dwCharsTotal = (DWORD)iFileSize.QuadPart;
+ m_dwCharsConsumed = 0;
+ hr = MainParseLoop();
+ }
+
+ // Close the file
+ if( m_hFile != INVALID_HANDLE_VALUE )
+ CloseHandle( m_hFile );
+ m_hFile = INVALID_HANDLE_VALUE;
+
+ // we no longer own strFilename, so un-set it
+ m_pISAXCallback->m_strFilename = NULL;
+
+ return hr;
+}
+
+//-------------------------------------------------------------------------------------
+// Name: XMLParser::ParseXMLFile
+// Desc: Builds element data
+//-------------------------------------------------------------------------------------
+HRESULT XMLParser::ParseXMLBuffer( CONST CHAR *strBuffer, UINT uBufferSize )
+{
+ HRESULT hr;
+
+ if( m_pISAXCallback == NULL )
+ return E_NOINTERFACE;
+
+ m_pISAXCallback->m_LineNum = 1;
+ m_pISAXCallback->m_LinePos = 0;
+ m_pISAXCallback->m_strFilename = ""; // save this off only while we parse the file
+
+ m_bSkipNextAdvance = FALSE;
+ m_pReadPtr = m_pReadBuf;
+
+ m_pReadBuf[ 0 ] = '\0';
+ m_pReadBuf[ 1 ] = '\0';
+
+ m_hFile = NULL;
+ m_pInXMLBuffer = strBuffer;
+ m_uInXMLBufferCharsLeft = uBufferSize;
+ m_dwCharsTotal = uBufferSize;
+ m_dwCharsConsumed = 0;
+
+ hr = MainParseLoop();
+
+ // we no longer own strFilename, so un-set it
+ m_pISAXCallback->m_strFilename = NULL;
+
+ return hr;
+}
+
+//-------------------------------------------------------------------------------------
+// XMLParser::Error()
+// Logs an error through the callback interface
+//-------------------------------------------------------------------------------------
+#ifdef _Printf_format_string_ // VC++ 2008 and later support this annotation
+VOID XMLParser::Error( HRESULT hErr, _In_z_ _Printf_format_string_ CONST CHAR* strFormat, ... )
+#else
+VOID XMLParser::Error( HRESULT hErr, CONST CHAR* strFormat, ... )
+#endif
+{
+ CONST INT MAX_OUTPUT_STR = 160;
+ CHAR strBuffer[ MAX_OUTPUT_STR ];
+ va_list pArglist;
+ va_start( pArglist, strFormat );
+
+ vsprintf( strBuffer, strFormat, pArglist );
+
+ m_pISAXCallback->Error( hErr, strBuffer );
+ va_end( pArglist );
+}
+
+} // namespace ATG
diff --git a/Minecraft.Client/Xbox/XML/ATGXmlParser.h b/Minecraft.Client/Xbox/XML/ATGXmlParser.h
new file mode 100644
index 00000000..75142e3e
--- /dev/null
+++ b/Minecraft.Client/Xbox/XML/ATGXmlParser.h
@@ -0,0 +1,156 @@
+// 4J-PB -
+// The ATG Framework is a common set of C++ class libraries that is used by the samples in the XDK, and was developed by the Advanced Technology Group (ATG).
+// The ATG Framework offers a clean and consistent format for the samples. These classes define functions used by all the samples.
+// The ATG Framework together with the samples demonstrates best practices and innovative techniques for Xbox 360. There are many useful sections of code in the samples.
+// You are encouraged to incorporate this code into your titles.
+
+//-------------------------------------------------------------------------------------
+// AtgXmlParser.h
+//
+// XMLParser and SAX interface declaration
+//
+// Xbox Advanced Technology Group
+// Copyright (C) Microsoft Corporation. All rights reserved.
+//-------------------------------------------------------------------------------------
+
+#pragma once
+#ifndef ATGXMLPARSER_H
+#define ATGXMLPARSER_H
+
+namespace ATG
+{
+
+//-----------------------------------------------------------------------------
+// error returns from XMLParse
+//-----------------------------------------------------------------------------
+#define _ATGFAC 0x61B
+#define E_COULD_NOT_OPEN_FILE MAKE_HRESULT(1, _ATGFAC, 0x0001 )
+#define E_INVALID_XML_SYNTAX MAKE_HRESULT(1, _ATGFAC, 0x0002 )
+
+
+CONST UINT XML_MAX_ATTRIBUTES_PER_ELEMENT = 32;
+CONST UINT XML_MAX_NAME_LENGTH = 128;
+CONST UINT XML_READ_BUFFER_SIZE = 2048;
+CONST UINT XML_WRITE_BUFFER_SIZE = 2048;
+
+// No tag can be longer than XML_WRITE_BUFFER_SIZE - an error will be returned if
+// it is
+
+//-------------------------------------------------------------------------------------
+struct XMLAttribute
+{
+ WCHAR* strName;
+ UINT NameLen;
+ WCHAR* strValue;
+ UINT ValueLen;
+};
+
+//-------------------------------------------------------------------------------------
+class ISAXCallback
+{
+friend class XMLParser;
+public:
+ ISAXCallback() {};
+ virtual ~ISAXCallback() {};
+
+ virtual HRESULT StartDocument() = 0;
+ virtual HRESULT EndDocument() = 0;
+
+ virtual HRESULT ElementBegin( CONST WCHAR* strName, UINT NameLen,
+ CONST XMLAttribute *pAttributes, UINT NumAttributes ) = 0;
+ virtual HRESULT ElementContent( CONST WCHAR *strData, UINT DataLen, BOOL More ) = 0;
+ virtual HRESULT ElementEnd( CONST WCHAR *strName, UINT NameLen ) = 0;
+
+ virtual HRESULT CDATABegin( ) = 0;
+ virtual HRESULT CDATAData( CONST WCHAR *strCDATA, UINT CDATALen, BOOL bMore ) = 0;
+ virtual HRESULT CDATAEnd( ) = 0;
+
+ virtual VOID Error( HRESULT hError, CONST CHAR *strMessage ) = 0;
+
+ virtual VOID SetParseProgress( DWORD dwProgress ) { }
+
+ const CHAR* GetFilename() { return m_strFilename; }
+ UINT GetLineNumber() { return m_LineNum; }
+ UINT GetLinePosition() { return m_LinePos; }
+
+private:
+ CONST CHAR *m_strFilename;
+ UINT m_LineNum;
+ UINT m_LinePos;
+};
+
+
+//-------------------------------------------------------------------------------------
+class XMLParser
+{
+public:
+ XMLParser();
+ ~XMLParser();
+
+ // Register an interface inheiriting from ISAXCallback
+ VOID RegisterSAXCallbackInterface( ISAXCallback *pISAXCallback );
+
+ // Get the registered interface
+ ISAXCallback* GetSAXCallbackInterface();
+
+ // ParseXMLFile returns one of the following:
+ // E_COULD_NOT_OPEN_FILE - couldn't open the file
+ // E_INVALID_XML_SYNTAX - bad XML syntax according to this parser
+ // E_NOINTERFACE - RegisterSAXCallbackInterface not called
+ // E_ABORT - callback returned a fail code
+ // S_OK - file parsed and completed
+
+ HRESULT ParseXMLFile( CONST CHAR *strFilename );
+
+ // Parses from a buffer- if you pass a WCHAR buffer (and cast it), it will
+ // correctly detect it and use unicode instead. Return codes are the
+ // same as for ParseXMLFile
+
+ HRESULT ParseXMLBuffer( CONST CHAR* strBuffer, UINT uBufferSize );
+
+private:
+ HRESULT MainParseLoop();
+
+ HRESULT AdvanceCharacter( BOOL bOkToFail = FALSE );
+ VOID SkipNextAdvance();
+
+ HRESULT ConsumeSpace();
+ HRESULT ConvertEscape();
+ HRESULT AdvanceElement();
+ HRESULT AdvanceName();
+ HRESULT AdvanceAttrVal();
+ HRESULT AdvanceCDATA();
+ HRESULT AdvanceComment();
+
+ VOID FillBuffer();
+
+#ifdef _Printf_format_string_ // VC++ 2008 and later support this annotation
+ VOID Error( HRESULT hRet, _In_z_ _Printf_format_string_ CONST CHAR* strFormat, ... );
+#else
+ VOID Error( HRESULT hRet, CONST CHAR* strFormat, ... );
+#endif
+
+ ISAXCallback* m_pISAXCallback;
+
+ HANDLE m_hFile;
+ CONST CHAR* m_pInXMLBuffer;
+ UINT m_uInXMLBufferCharsLeft;
+ DWORD m_dwCharsTotal;
+ DWORD m_dwCharsConsumed;
+
+ BYTE m_pReadBuf[ XML_READ_BUFFER_SIZE + 2 ]; // room for a trailing NULL
+ WCHAR m_pWriteBuf[ XML_WRITE_BUFFER_SIZE ];
+
+ BYTE* m_pReadPtr;
+ WCHAR* m_pWritePtr; // write pointer within m_pBuf
+
+ BOOL m_bUnicode; // TRUE = 16-bits, FALSE = 8-bits
+ BOOL m_bReverseBytes; // TRUE = reverse bytes, FALSE = don't reverse
+
+ BOOL m_bSkipNextAdvance;
+ WCHAR m_Ch; // Current character being parsed
+};
+
+} // namespace ATG
+
+#endif
diff --git a/Minecraft.Client/Xbox/XML/xmlFilesCallback.h b/Minecraft.Client/Xbox/XML/xmlFilesCallback.h
new file mode 100644
index 00000000..2ea670df
--- /dev/null
+++ b/Minecraft.Client/Xbox/XML/xmlFilesCallback.h
@@ -0,0 +1,339 @@
+
+#pragma once
+#ifndef XMLMOJANGCALLBACK_H
+#define XMLMOJANGCALLBACK_H
+// xml reading
+
+using namespace ATG;
+
+class xmlMojangCallback : public ATG::ISAXCallback
+{
+public:
+ virtual HRESULT StartDocument() { return S_OK; };
+ virtual HRESULT EndDocument() { return S_OK; };
+
+ virtual HRESULT ElementBegin( CONST WCHAR* strName, UINT NameLen, CONST XMLAttribute *pAttributes, UINT NumAttributes )
+ {
+ WCHAR wTemp[35] = L"";
+ WCHAR wAttName[32] = L"";
+ WCHAR wNameXUID[32] = L"";
+ WCHAR wNameSkin[32] = L"";
+ WCHAR wNameCloak[32] = L"";
+ PlayerUID xuid=0LL;
+
+
+ if (NameLen >31)
+ return S_FALSE;
+ else
+ wcsncpy( wAttName, strName, NameLen);
+
+ if ( _wcsicmp(wAttName,L"root") == 0)
+ {
+ return S_OK;
+ }
+ else if ( _wcsicmp(wAttName,L"data") == 0)
+ {
+ for(UINT i = 0; i < NumAttributes; i++)
+ {
+ wcsncpy_s( wAttName, pAttributes[i].strName, pAttributes[i].NameLen);
+ if (_wcsicmp(wAttName,L"name")==0)
+ {
+ if (pAttributes[i].ValueLen <= 32)
+ wcsncpy_s( wNameXUID, pAttributes[i].strValue, pAttributes[i].ValueLen);
+ }
+ else if (_wcsicmp(wAttName,L"xuid")==0)
+ {
+ if (pAttributes[i].ValueLen <= 32)
+ {
+ ZeroMemory(wTemp,sizeof(WCHAR)*35);
+ wcsncpy_s( wTemp, pAttributes[i].strValue, pAttributes[i].ValueLen);
+ xuid=_wcstoui64(wTemp,NULL,10);
+ }
+ }
+ else if (_wcsicmp(wAttName,L"cape")==0)
+ {
+ if (pAttributes[i].ValueLen <= 32)
+ {
+ wcsncpy_s( wNameCloak, pAttributes[i].strValue, pAttributes[i].ValueLen);
+ }
+ }
+ else if (_wcsicmp(wAttName,L"skin")==0)
+ {
+ if (pAttributes[i].ValueLen <= 32)
+ {
+ wcsncpy_s( wNameSkin, pAttributes[i].strValue, pAttributes[i].ValueLen);
+ }
+ }
+
+ }
+
+ // if the xuid hasn't been defined, then we can't use the data
+ if(xuid!=0LL)
+ {
+ return CConsoleMinecraftApp::RegisterMojangData(wNameXUID , xuid, wNameSkin, wNameCloak );
+ }
+ else return S_FALSE;
+ }
+ else
+ {
+ return S_FALSE;
+ }
+ };
+
+ virtual HRESULT ElementContent( CONST WCHAR *strData, UINT DataLen, BOOL More ) { return S_OK; };
+
+ virtual HRESULT ElementEnd( CONST WCHAR *strName, UINT NameLen ){ return S_OK; };
+
+ virtual HRESULT CDATABegin( ) { return S_OK; };
+
+ virtual HRESULT CDATAData( CONST WCHAR *strCDATA, UINT CDATALen, BOOL bMore ){ return S_OK; };
+
+ virtual HRESULT CDATAEnd( ){ return S_OK; };
+
+ virtual VOID Error( HRESULT hError, CONST CHAR *strMessage ) { app.DebugPrintf("Error when Parsing xuids.XML\n"); };
+
+};
+
+class xmlConfigCallback : public ATG::ISAXCallback
+{
+public:
+ virtual HRESULT StartDocument() { return S_OK; };
+ virtual HRESULT EndDocument() { return S_OK; };
+
+ virtual HRESULT ElementBegin( CONST WCHAR* strName, UINT NameLen, CONST XMLAttribute *pAttributes, UINT NumAttributes )
+ {
+ WCHAR wTemp[35] = L"";
+ WCHAR wType[32] = L"";
+ WCHAR wAttName[32] = L"";
+ WCHAR wValue[32] = L"";
+ int iValue=-1;
+
+ if (NameLen >31)
+ return S_FALSE;
+ else
+ wcsncpy_s( wAttName, strName, NameLen);
+
+ if ( _wcsicmp(wAttName,L"root") == 0)
+ {
+ return S_OK;
+ }
+ else if ( _wcsicmp(wAttName,L"data") == 0)
+ {
+ for(UINT i = 0; i < NumAttributes; i++)
+ {
+ wcsncpy_s( wAttName, pAttributes[i].strName, pAttributes[i].NameLen);
+ if (_wcsicmp(wAttName,L"Type")==0)
+ {
+ if (pAttributes[i].ValueLen <= 32)
+ {
+ wcsncpy_s( wType, pAttributes[i].strValue, pAttributes[i].ValueLen);
+ }
+ }
+ else if(_wcsicmp(wAttName,L"Value")==0)
+ {
+ if (pAttributes[i].ValueLen <= 32)
+ {
+ wcsncpy_s( wValue, pAttributes[i].strValue, pAttributes[i].ValueLen);
+
+#ifdef _XBOX
+ iValue=_wtoi(wValue);
+#else
+ iValue=wcstol(wValue, NULL, 10);
+#endif
+ }
+ }
+ }
+
+ // if the xuid hasn't been defined, then we can't use the data
+ if(iValue!=-1)
+ {
+ #ifdef _DEBUG
+ wprintf(L"Type - %s, Value - %d, ",wType, iValue);
+ #endif
+
+ return CConsoleMinecraftApp::RegisterConfigValues(wType, iValue );
+ }
+ else
+ {
+ return S_FALSE;
+ }
+ }
+ else
+ {
+ return S_FALSE;
+ }
+ }
+
+
+ virtual HRESULT ElementContent( CONST WCHAR *strData, UINT DataLen, BOOL More ) { return S_OK; };
+
+ virtual HRESULT ElementEnd( CONST WCHAR *strName, UINT NameLen ){ return S_OK; };
+
+ virtual HRESULT CDATABegin( ) { return S_OK; };
+
+ virtual HRESULT CDATAData( CONST WCHAR *strCDATA, UINT CDATALen, BOOL bMore ){ return S_OK; };
+
+ virtual HRESULT CDATAEnd( ){ return S_OK; };
+
+ virtual VOID Error( HRESULT hError, CONST CHAR *strMessage ) { app.DebugPrintf("Error when Parsing xuids.XML\n"); };
+
+};
+
+class xmlDLCInfoCallback : public ATG::ISAXCallback
+{
+public:
+ virtual HRESULT StartDocument() { return S_OK; };
+ virtual HRESULT EndDocument() { return S_OK; };
+
+ virtual HRESULT ElementBegin( CONST WCHAR* strName, UINT NameLen, CONST XMLAttribute *pAttributes, UINT NumAttributes )
+ {
+ WCHAR wTemp[35] = L"";
+ WCHAR wAttName[32] = L"";
+ WCHAR wNameBanner[32] = L"";
+ WCHAR wDataFile[32] = L"";
+ WCHAR wType[32] = L"";
+ WCHAR wFirstSkin[32] = L"";
+ WCHAR wConfig[32] = L"";
+ ULONGLONG ullFull=0ll;
+ ULONGLONG ullTrial=0ll;
+ unsigned int uiSortIndex=0L;
+ int iGender=0;
+ int iConfig=0;
+
+ if (NameLen >31)
+ return S_FALSE;
+ else
+ wcsncpy_s( wAttName, strName, NameLen);
+
+ if ( _wcsicmp(wAttName,L"root") == 0)
+ {
+ return S_OK;
+ }
+ else if ( _wcsicmp(wAttName,L"data") == 0)
+ {
+ for(UINT i = 0; i < NumAttributes; i++)
+ {
+ wcsncpy_s( wAttName, pAttributes[i].strName, pAttributes[i].NameLen);
+ if (_wcsicmp(wAttName,L"SortIndex")==0)
+ {
+ if (pAttributes[i].ValueLen <= 32)
+ {
+ ZeroMemory(wTemp,sizeof(WCHAR)*35);
+ wcsncpy_s( wTemp, pAttributes[i].strValue, pAttributes[i].ValueLen);
+ uiSortIndex=wcstoul(wTemp,NULL,16);
+ }
+ }
+ else if (_wcsicmp(wAttName,L"Banner")==0)
+ {
+ if (pAttributes[i].ValueLen <= 32)
+ {
+ wcsncpy_s( wNameBanner, pAttributes[i].strValue, pAttributes[i].ValueLen);
+ }
+ }
+ else if (_wcsicmp(wAttName,L"Full")==0)
+ {
+ if (pAttributes[i].ValueLen <= 32)
+ {
+ ZeroMemory(wTemp,sizeof(WCHAR)*35);
+ wcsncpy_s( wTemp, pAttributes[i].strValue, pAttributes[i].ValueLen);
+ ullFull=_wcstoui64(wTemp,NULL,16);
+ }
+ }
+ else if (_wcsicmp(wAttName,L"Trial")==0)
+ {
+ if (pAttributes[i].ValueLen <= 32)
+ {
+ ZeroMemory(wTemp,sizeof(WCHAR)*35);
+ wcsncpy_s( wTemp, pAttributes[i].strValue, pAttributes[i].ValueLen);
+ ullTrial=_wcstoui64(wTemp,NULL,16);
+ }
+ }
+ else if (_wcsicmp(wAttName,L"FirstSkin")==0)
+ {
+ if (pAttributes[i].ValueLen <= 32)
+ {
+ wcsncpy_s( wFirstSkin, pAttributes[i].strValue, pAttributes[i].ValueLen);
+ }
+ }
+ else if (_wcsicmp(wAttName,L"Type")==0)
+ {
+ if (pAttributes[i].ValueLen <= 32)
+ {
+ wcsncpy_s( wType, pAttributes[i].strValue, pAttributes[i].ValueLen);
+ }
+ }
+ else if (_wcsicmp(wAttName,L"Gender")==0)
+ {
+ if (_wcsicmp(wAttName,L"Male")==0)
+ {
+ iGender=1;
+ }
+ else if (_wcsicmp(wAttName,L"Female")==0)
+ {
+ iGender=2;
+ }
+ else
+ {
+ iGender=0;
+ }
+ }
+ else if(_wcsicmp(wAttName,L"Config")==0)
+ {
+ if (pAttributes[i].ValueLen <= 32)
+ {
+ wcsncpy_s( wConfig, pAttributes[i].strValue, pAttributes[i].ValueLen);
+
+#ifdef _XBOX
+ iConfig=_wtoi(wConfig);
+#else
+ iConfig=wcstol(wConfig, NULL, 10);
+#endif
+ }
+ }
+ else if (_wcsicmp(wAttName,L"DataFile")==0)
+ {
+ if (pAttributes[i].ValueLen <= 32)
+ {
+ wcsncpy_s( wDataFile, pAttributes[i].strValue, pAttributes[i].ValueLen);
+ }
+ }
+
+ }
+
+ // if the xuid hasn't been defined, then we can't use the data
+ if(ullFull!=0LL)
+ {
+#ifdef _DEBUG
+ wprintf(L"Type - %ls, Name - %ls, ",wType, wNameBanner);
+#endif
+ app.DebugPrintf("Full = %lld, Trial %lld\n",ullFull,ullTrial);
+
+ return CConsoleMinecraftApp::RegisterDLCData(wType, wNameBanner , iGender, ullFull, ullTrial, wFirstSkin, uiSortIndex, iConfig, wDataFile );
+ }
+ else
+ {
+ return S_FALSE;
+ }
+ }
+ else
+ {
+ return S_FALSE;
+ }
+ };
+
+ virtual HRESULT ElementContent( CONST WCHAR *strData, UINT DataLen, BOOL More ) { return S_OK; };
+
+ virtual HRESULT ElementEnd( CONST WCHAR *strName, UINT NameLen ){ return S_OK; };
+
+ virtual HRESULT CDATABegin( ) { return S_OK; };
+
+ virtual HRESULT CDATAData( CONST WCHAR *strCDATA, UINT CDATALen, BOOL bMore ){ return S_OK; };
+
+ virtual HRESULT CDATAEnd( ){ return S_OK; };
+
+ virtual VOID Error( HRESULT hError, CONST CHAR *strMessage ) { app.DebugPrintf("Error when Parsing DLC.XML\n"); };
+
+};
+
+
+#endif
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Xbox_App.cpp b/Minecraft.Client/Xbox/Xbox_App.cpp
new file mode 100644
index 00000000..b252035e
--- /dev/null
+++ b/Minecraft.Client/Xbox/Xbox_App.cpp
@@ -0,0 +1,3033 @@
+#include "stdafx.h"
+
+#include "..\Common\UI\UIStructs.h"
+
+#include "..\Common\XUI\XUI_Intro.h"
+#include "..\Common\XUI\XUI_MainMenu.h"
+#include "..\Common\XUI\XUI_NewUpdateMessage.h"
+#include "..\Common\XUI\XUI_HelpAndOptions.h"
+#include "..\Common\XUI\XUI_TextEntry.h"
+#include "..\Common\XUI\XUI_HelpHowToPlay.h"
+#include "..\Common\XUI\XUI_HowToPlayMenu.h"
+#include "..\Common\XUI\XUI_HelpControls.h"
+#include "..\Common\XUI\XUI_TextEntry.h"
+#include "..\Common\XUI\XUI_LoadSettings.h"
+#include "..\Common\XUI\XUI_SettingsAll.h"
+#include "..\Common\XUI\XUI_SettingsOptions.h"
+#include "..\Common\XUI\XUI_SettingsAudio.h"
+#include "..\Common\XUI\XUI_SettingsControl.h"
+#include "..\Common\XUI\XUI_SettingsGraphics.h"
+#include "..\Common\XUI\XUI_SettingsUI.h"
+#include "..\Common\XUI\XUI_Leaderboards.h"
+#include "..\Common\XUI\XUI_Debug.h"
+#include "..\Common\XUI\XUI_DebugTips.h"
+#include "..\Common\XUI\XUI_Reinstall.h"
+#include "..\Common\XUI\XUI_Death.h"
+#include "..\Common\XUI\XUI_DebugOverlay.h"
+#include "..\Common\XUI\XUI_DLCOffers.h"
+#include "..\Common\XUI\XUI_SocialPost.h"
+#include "..\Common\XUI\XUI_Scene_Container.h"
+#include "..\Common\XUI\XUI_Scene_Furnace.h"
+#include "..\Common\XUI\XUI_Scene_Inventory.h"
+#include "..\Common\XUI\XUI_Scene_Trap.h"
+#include "..\Common\XUI\XUI_Control_ComboBox.h"
+#include "..\Common\XUI\XUI_MultiGameInfo.h"
+#include "..\Common\XUI\XUI_MultiGameJoinLoad.h"
+#include "..\Common\XUI\XUI_MultiGameCreate.h"
+#include "..\Common\XUI\XUI_MultiGameLaunchMoreOptions.h"
+#include "..\Common\XUI\XUI_SignEntry.h"
+#include "..\Common\XUI\XUI_InGameInfo.h"
+#include "..\Common\XUI\XUI_TrialExitUpsell.h"
+#include "..\Common\XUI\XUI_BasePlayer.h"
+#include "..\Common\XUI\XUI_PartnernetPassword.h"
+#include "..\Common\XUI\XUI_SaveMessage.h"
+#include "..\Common\XUI\XUI_Chat.h"
+#include "..\Common\XUI\XUI_SkinSelect.h"
+#include "..\Common\XUI\XUI_InGameHostOptions.h"
+#include "..\Common\XUI\XUI_InGamePlayerOptions.h"
+#include "..\Common\XUI\XUI_Scene_Enchant.h"
+#include "..\Common\XUI\XUI_Scene_BrewingStand.h"
+#include "..\Common\XUI\XUI_XZP_Icons.h"
+#include "..\Common\XUI\XUI_Controls.h"
+#include "..\Common\XUI\XUI_Scene_Win.h"
+#include "..\Common\XUI\XUI_HUD.h"
+#include "..\Common\XUI\XUI_DebugSetCamera.h"
+//#include "..\Common\XUI\XUI_TransferToXboxOne.h"
+
+#ifdef _DEBUG_MENUS_ENABLED
+#include "..\Common\XUI\XUI_DebugItemEditor.h"
+#endif
+#ifndef _CONTENT_PACKAGE
+#include "..\Common\XUI\XUI_DebugSchematicCreator.h"
+#endif
+
+#include "..\..\Minecraft.World\Recipy.h"
+#include "GameConfig\Minecraft.spa.h"
+#include "..\..\Minecraft.Client\Options.h"
+#include "..\..\Minecraft.World\AABB.h"
+#include "..\..\Minecraft.World\Vec3.h"
+#include "..\MinecraftServer.h"
+#include "..\GameRenderer.h"
+#include "..\ProgressRenderer.h"
+#include "..\..\Minecraft.Client\LevelRenderer.h"
+#include "..\..\Minecraft.Client\MobSkinMemTextureProcessor.h"
+
+#include "..\..\Minecraft.Client\Minecraft.h"
+
+#include "..\ClientConnection.h"
+#include "..\MultiPlayerLocalPlayer.h"
+#include "..\..\Minecraft.Client\LocalPlayer.h"
+#include "..\..\Minecraft.World\Player.h"
+#include "..\..\Minecraft.World\Inventory.h"
+#include "..\..\Minecraft.World\Level.h"
+#include "..\..\Minecraft.World\FurnaceTileEntity.h"
+#include "..\..\Minecraft.World\Container.h"
+#include "..\..\Minecraft.World\DispenserTileEntity.h"
+#include "..\..\Minecraft.World\SignTileEntity.h"
+#include "..\..\Minecraft.Client\StatsCounter.h"
+#include "..\GameMode.h"
+#include "Social\SocialManager.h"
+#include
+#include "..\Common\Tutorial\TutorialMode.h"
+#include "..\..\Minecraft.Client\Xbox\XML\ATGXmlParser.h"
+#include "..\..\Minecraft.Client\Xbox\XML\xmlFilesCallback.h"
+#include "4JLibs\inc\4J_Input.h"
+#include "Font\XUI_FontRenderer.h"
+#include "..\Common\Minecraft_Macros.h"
+#include "..\..\Minecraft.Client\PlayerList.h"
+#include "..\..\Minecraft.Client\ServerPlayer.h"
+#include "..\Common\GameRules\ConsoleGameRules.h"
+#include "..\Common\GameRules\ConsoleSchematicFile.h"
+#include "..\..\Minecraft.World\InputOutputStream.h"
+#include "..\..\Minecraft.World\LevelSettings.h"
+#include "..\User.h"
+
+#include "Sentient\SentientManager.h"
+#include "..\..\Minecraft.World\LevelData.h"
+#include "..\..\Minecraft.World\net.minecraft.world.entity.player.h"
+#include "..\..\Minecraft.Client\EntityRenderDispatcher.h"
+#include "..\..\Minecraft.World\compression.h"
+#include "..\TexturePackRepository.h"
+#include "..\TexturePack.h"
+#include "..\Common\DLC\DLCAudioFile.h"
+#include "..\DLCTexturePack.h"
+
+#include "..\Common\XUI\XUI_Intro.h"
+#include "..\Common\XUI\XUI_MainMenu.h"
+#include "..\Common\XUI\XUI_NewUpdateMessage.h"
+#include "..\Common\XUI\XUI_HelpAndOptions.h"
+#include "..\Common\XUI\XUI_TextEntry.h"
+#include "..\Common\XUI\XUI_HelpHowToPlay.h"
+#include "..\Common\XUI\XUI_HowToPlayMenu.h"
+#include "..\Common\XUI\XUI_HelpControls.h"
+#include "..\Common\XUI\XUI_TextEntry.h"
+#include "..\Common\XUI\XUI_LoadSettings.h"
+#include "..\Common\XUI\XUI_SettingsAll.h"
+#include "..\Common\XUI\XUI_SettingsOptions.h"
+#include "..\Common\XUI\XUI_SettingsAudio.h"
+#include "..\Common\XUI\XUI_SettingsControl.h"
+#include "..\Common\XUI\XUI_SettingsGraphics.h"
+#include "..\Common\XUI\XUI_SettingsUI.h"
+#include "..\Common\XUI\XUI_Leaderboards.h"
+#include "..\Common\XUI\XUI_Debug.h"
+#include "..\Common\XUI\XUI_DebugTips.h"
+#include "..\Common\XUI\XUI_Reinstall.h"
+#include "..\Common\XUI\XUI_Death.h"
+#include "..\Common\XUI\XUI_DebugOverlay.h"
+#include "..\Common\XUI\XUI_DLCOffers.h"
+#include "..\Common\XUI\XUI_SocialPost.h"
+#include "..\Common\XUI\XUI_Scene_Container.h"
+#include "..\Common\XUI\XUI_Scene_Furnace.h"
+#include "..\Common\XUI\XUI_Scene_Inventory.h"
+#include "..\Common\XUI\XUI_Scene_Trap.h"
+#include "..\Common\XUI\XUI_Control_ComboBox.h"
+#include "..\Common\XUI\XUI_MultiGameInfo.h"
+#include "..\Common\XUI\XUI_MultiGameJoinLoad.h"
+#include "..\Common\XUI\XUI_MultiGameCreate.h"
+#include "..\Common\XUI\XUI_MultiGameLaunchMoreOptions.h"
+#include "..\Common\XUI\XUI_SignEntry.h"
+#include "..\Common\XUI\XUI_InGameInfo.h"
+#include "..\Common\XUI\XUI_TrialExitUpsell.h"
+#include "..\Common\XUI\XUI_BasePlayer.h"
+#include "..\Common\XUI\XUI_PartnernetPassword.h"
+#include "..\Common\XUI\XUI_SaveMessage.h"
+#include "..\Common\XUI\XUI_Chat.h"
+#include "..\Common\XUI\XUI_SkinSelect.h"
+#include "..\Common\XUI\XUI_InGameHostOptions.h"
+#include "..\Common\XUI\XUI_InGamePlayerOptions.h"
+#include "..\Common\XUI\XUI_Scene_Enchant.h"
+#include "..\Common\XUI\XUI_Scene_BrewingStand.h"
+#include "..\Common\XUI\XUI_XZP_Icons.h"
+#include "..\Common\XUI\XUI_Controls.h"
+#include "..\Common\XUI\XUI_Scene_Win.h"
+#include "..\Common\XUI\XUI_HUD.h"
+#include "..\Common\XUI\XUI_Scene_Anvil.h"
+#include "..\Common\XUI\XUI_Scene_Trading.h"
+#include "..\Common\XUI\XUI_Teleport.h"
+
+#ifdef _DEBUG_MENUS_ENABLED
+#include "..\Common\XUI\XUI_DebugItemEditor.h"
+#endif
+#ifndef _CONTENT_PACKAGE
+#include "..\Common\XUI\XUI_DebugSchematicCreator.h"
+#endif
+
+#include "Xbox_App.h"
+
+CConsoleMinecraftApp app;
+
+LPCWSTR apwstrLocale[10] =
+{
+ L"", // the default locale
+ L"", // English
+ L"ja-JP", // Japanese
+ L"de-DE", // German
+ L"fr-FR", // French
+ L"es-ES", // Spanish
+ L"it-IT", // Italian
+ L"ko-KR", // Korean
+ L"zh-CHT",// Traditional Chinese
+ L"pt-PT" // Portuguese
+};
+
+WCHAR *CConsoleMinecraftApp::wchTypefaceA[]=
+{
+ L"Mojangles",
+ L"SDBookM",
+ L"DFGMaruGothic-Md",
+ L"DFHeiMedium-B5",
+};
+
+WCHAR *CConsoleMinecraftApp::wchTypefaceLocatorA[]=
+{
+ L"media/font/Mojangles.ttf",
+ L"media/font/KOR/BOKMSD.ttf",
+ L"media/font/JPN/DFGMaruGothic-Md.ttf",
+ L"media/font/CHT/DFHeiMedium-B5.ttf",
+};
+
+WCHAR *CConsoleMinecraftApp::wchSceneA[]=
+{
+ L"xuiscene_partnernetpassword",
+ L"xuiscene_intro",
+ L"xuiscene_savemessage",
+ L"xuiscene_main",
+ L"xuiscene_fullscreenprogress",
+ L"xuiscene_pause",
+ L"xuiscene_craftingpanel_2x2",
+ L"xuiscene_craftingpanel_3x3",
+ L"xuiscene_furnace",
+ L"xuiscene_container",
+ L"xuiscene_container_large",
+ L"xuiscene_inventory",
+ L"xuiscene_trap",
+ L"xuiscene_debug",
+ L"xuiScene_DebugTips",
+ L"xuiscene_helpandoptions",
+ L"xuiscene_howtoplay",
+ L"xuiscene_howtoplay_menu",
+ L"xuiscene_controls",
+ L"xuiscene_settings_options",
+ L"xuiscene_settings_audio",
+ L"xuiscene_settings_control",
+ L"xuiscene_settings_graphics",
+ L"xuiscene_settings_UI",
+ L"xuiscene_settings_all",
+ L"xuiscene_leaderboards",
+ L"xuiscene_credits",
+ L"xuiscene_death",
+ L"xuiscene_tutorialpopup",
+ L"xuiscene_multi_create",
+ L"xuiscene_multi_joinload",
+ L"xuiscene_multi_gameinfo",
+ L"xuiscene_signentry",
+ L"xuiscene_ingameinfo",
+ L"xuiscene_connectingprogress",
+ L"xuiscene_DLCOffers",
+ L"xuiscene_socialpost",
+ L"xuiscene_trialexitupsell",
+ L"xuiscene_load_settings",
+ L"xuiscene_chat",
+ L"xuiscene_reinstall",
+ L"xuiscene_skinselect",
+ L"xuiscene_text_entry",
+ L"xuiscene_ingame_host_options",
+ L"xuiscene_ingame_player_options",
+ L"xuiscene_inventory_creative",
+ L"xuiscene_multi_launch_more_options",
+
+ L"xuiscene_DLCMain",
+ L"xuiscene_NewUpdateMessage",
+ L"xuiscene_enchant",
+ L"xuiscene_brewingstand",
+ L"xuiscene_win",
+ L"xuiscene_hud",
+ L"xuiscene_trading",
+ L"xuiscene_anvil",
+ L"xuiscene_teleportmenu",
+// L"xuiscene_TransferToXboxOne",
+
+#ifdef _DEBUG_MENUS_ENABLED
+ L"xuiscene_debugoverlay",
+ L"xuiscene_debug_item_editor",
+#endif
+#ifndef _CONTENT_PACKAGE
+ L"xuiscene_debug_schematic_create",
+ L"xuiscene_debug_set_camera",
+#endif
+};
+
+CConsoleMinecraftApp::CConsoleMinecraftApp() : CMinecraftApp()
+{
+ ZeroMemory(m_PreviewBuffer,sizeof(XSOCIAL_PREVIEWIMAGE)*XUSER_MAX_COUNT);
+ m_bTMSPP_GlobalFileListRead=false;
+ m_bRead_TMS_XUIDS_XML=false;
+ m_bRead_TMS_Config_XML=false;
+ m_bRead_TMS_DLCINFO_XML=false;
+ m_pXuidsFileBuffer=NULL;
+ m_dwXuidsFileSize=0;
+ ZeroMemory(m_ScreenshotBuffer,sizeof(LPD3DXBUFFER)*XUSER_MAX_COUNT);
+ m_ThumbnailBuffer=NULL;
+#ifdef _DEBUG_MENUS_ENABLED
+ debugOverlayCreated = false;
+#endif
+
+ for(int i=0;iPitch = m_PreviewBuffer[iPad].Pitch;
+ preview->Width = m_PreviewBuffer[iPad].Width;
+ preview->Height = m_PreviewBuffer[iPad].Height;
+ preview->Format = m_PreviewBuffer[iPad].Format;
+ unsigned int sizeBytes = XGAddress2DTiledExtent(m_PreviewBuffer[iPad].Width, m_PreviewBuffer[iPad].Height, 4) * 4;
+ preview->pBytes = (BYTE *)XPhysicalAlloc(sizeBytes, MAXULONG_PTR, 0, PAGE_READWRITE | PAGE_WRITECOMBINE );
+ memcpy( (void *)preview->pBytes, (void *)m_PreviewBuffer[iPad].pBytes, sizeBytes );
+ XPhysicalFree((LPVOID)m_PreviewBuffer[iPad].pBytes);
+ m_PreviewBuffer[iPad].pBytes = NULL;
+}
+
+void CConsoleMinecraftApp::CaptureScreenshot(int iPad)
+{
+ RenderManager.CaptureScreen(&m_ScreenshotBuffer[iPad], &m_PreviewBuffer[iPad]);
+}
+
+
+HRESULT CConsoleMinecraftApp::LoadXuiResources()
+{
+ m_fontRenderer = new XUI_FontRenderer();
+
+ OverrideFontRenderer(true);
+
+ const DWORD LOCATOR_SIZE = 256; // Use this to allocate space to hold a ResourceLocator string
+ WCHAR szResourceLocator[ LOCATOR_SIZE ];
+ HRESULT hr;
+
+ // load from the .xzp file
+ const ULONG_PTR c_ModuleHandle = (ULONG_PTR)GetModuleHandle(NULL);
+
+
+ //#ifdef _CONTENT_PACKAGE
+ // Get the current language setting from the console
+ DWORD dwLanguage = XGetLanguage( );
+
+// if( dwLanguage>=sizeof( apwstrLocale )/sizeof( apwstrLocale[0] ) )
+// {
+// // Use default locale if out of bounds
+// dwLanguage = 0;
+// }
+ // force default to English for now
+ //dwLanguage=1;
+ // Tell XUI what the locale is
+
+ // 4J-PB - we need to load all fonts in an order, and set them as fallbacks of each other - if you save a game in an Asian language, you must be able to switch to English, and still see the Asian characters in the save name
+
+ switch(dwLanguage)
+ {
+
+ case XC_LANGUAGE_KOREAN:
+ //fallback to Japanese, Chinese
+ RegisterFont(eFont_Chinese,eFont_None);
+ RegisterFont(eFont_Japanese,eFont_Chinese);
+ RegisterFont(eFont_Korean,eFont_Japanese,true);
+ XuiSetLocale( L"ko-KR" );
+ break;
+ case XC_LANGUAGE_JAPANESE:
+ //fallback to Korean, Chinese
+ RegisterFont(eFont_Chinese,eFont_None);
+ RegisterFont(eFont_Korean,eFont_Chinese);
+ RegisterFont(eFont_Japanese,eFont_Korean,true);
+ XuiSetLocale( L"ja-JP" );
+ break;
+ case XC_LANGUAGE_TCHINESE:
+ //fallback to Korean, Japanese
+ RegisterFont(eFont_Japanese,eFont_None);
+ RegisterFont(eFont_Korean,eFont_Japanese);
+ RegisterFont(eFont_Chinese,eFont_Korean,true);
+ XuiSetLocale( L"zh-CHT" );
+ break;
+
+
+ default:
+ //fallback to Korean,Japanese, Chinese
+ RegisterFont(eFont_Chinese,eFont_None);
+ RegisterFont(eFont_Japanese,eFont_Chinese);
+ RegisterFont(eFont_Korean,eFont_Japanese);
+ RegisterFont(eFont_European,eFont_Korean,true);
+
+ // some locales can override the language setting
+ bool bOverrideLanguage=true;
+
+ // 4J-PB - removing all the new languages until a future TU
+
+ switch(XGetLocale())
+ {
+#ifdef NEW_LANGUAGES
+ case XC_LOCALE_CZECH_REPUBLIC:
+ XuiSetLocale( L"cs-CZ" );
+ break;
+ case XC_LOCALE_DENMARK:
+ XuiSetLocale( L"da-DK" );
+ break;
+ case XC_LOCALE_FINLAND:
+ XuiSetLocale( L"fi-FI" );
+ break;
+ case XC_LOCALE_GREECE:
+ XuiSetLocale( L"el-GR" );
+ break;
+ case XC_LOCALE_SLOVAK_REPUBLIC:
+ XuiSetLocale( L"sk-SK" );
+ break;
+#endif
+ default:
+ bOverrideLanguage=false;
+ break;
+ }
+
+ if(bOverrideLanguage==false)
+ {
+ switch(dwLanguage)
+ {
+ case XC_LANGUAGE_ENGLISH:
+ switch(XGetLocale())
+ {
+#ifdef NEW_LANGUAGES
+ case XC_LOCALE_AUSTRALIA:
+ case XC_LOCALE_CANADA:
+ case XC_LOCALE_CZECH_REPUBLIC:
+ case XC_LOCALE_GREECE:
+ case XC_LOCALE_HONG_KONG:
+ case XC_LOCALE_HUNGARY:
+ case XC_LOCALE_INDIA:
+ case XC_LOCALE_IRELAND:
+ case XC_LOCALE_ISRAEL:
+ case XC_LOCALE_NEW_ZEALAND:
+ case XC_LOCALE_SAUDI_ARABIA:
+ case XC_LOCALE_SINGAPORE:
+ case XC_LOCALE_SLOVAK_REPUBLIC:
+ case XC_LOCALE_SOUTH_AFRICA:
+ case XC_LOCALE_UNITED_ARAB_EMIRATES:
+ case XC_LOCALE_GREAT_BRITAIN:
+ XuiSetLocale( L"en-GB" );
+ break;
+#endif
+ default:
+ XuiSetLocale( L"" );
+ break;
+ }
+ break;
+ case XC_LANGUAGE_PORTUGUESE:
+ if(XGetLocale()==XC_LOCALE_BRAZIL)
+ {
+ // Brazilian Portuguese
+ XuiSetLocale( L"pt-BR" );
+ }
+ else
+ {
+ XuiSetLocale( L"pt-PT" );
+ }
+ break;
+ case XC_LANGUAGE_GERMAN:
+ XuiSetLocale( L"de-DE" );
+ break;
+ case XC_LANGUAGE_FRENCH:
+ XuiSetLocale( L"fr-FR" );
+ break;
+ case XC_LANGUAGE_SPANISH:
+ switch(XGetLocale())
+ {
+#ifdef NEW_LANGUAGES
+ case XC_LOCALE_ARGENTINA:
+ case XC_LOCALE_CHILE:
+ case XC_LOCALE_COLOMBIA:
+ case XC_LOCALE_MEXICO:
+ case XC_LOCALE_UNITED_STATES:
+ XuiSetLocale( L"es-MX" );
+ break;
+#endif
+ default:
+ XuiSetLocale( L"es-ES" );
+ break;
+ }
+ break;
+ case XC_LANGUAGE_ITALIAN:
+ XuiSetLocale( L"it-IT" );
+ break;
+#ifdef NEW_LANGUAGES
+ case XC_LANGUAGE_POLISH:
+ XuiSetLocale( L"pl-PL" );
+ break;
+ case XC_LANGUAGE_RUSSIAN:
+ XuiSetLocale( L"ru-RU" );
+ break;
+ case XC_LANGUAGE_SWEDISH:
+ XuiSetLocale( L"sv-SE" );
+ break;
+ case XC_LANGUAGE_TURKISH:
+ XuiSetLocale( L"tr-TR" );
+ break;
+ case XC_LANGUAGE_BNORWEGIAN:
+ XuiSetLocale( L"nb-NO" );
+ break;
+ case XC_LANGUAGE_DUTCH:
+ // 4J-PB - the loc people gave us nl-BE but no nl-NL. They claim they are identical, so use nl-BE.
+ //if(XGetLocale()==XC_LOCALE_BELGIUM)
+ {
+ // Belgian Dutch
+ XuiSetLocale( L"nl-BE" );
+ }
+// else
+// {
+// XuiSetLocale( L"nl-NL" );
+// }
+ break;
+ case XC_LANGUAGE_SCHINESE:
+ // fall back to English until we have a font, and Microsoft are happy with the Chinese Simplified text
+ //XuiSetLocale( L"zh-CHS" );
+ XuiSetLocale( L"" );
+ break;
+#endif
+ }
+ }
+ }
+
+
+ //#endif
+
+ XuiSoundXACTRegister();
+ XuiSoundXAudioRegister();
+
+ // Register a default typeface
+ // wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", L"media/font/Mojangles.ttf");
+ // hr = RegisterDefaultTypeface( L"Mojangles",szResourceLocator);
+
+ // Load the skin file used for the scene.
+ wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", L"media/skin_Minecraft.xur");
+ hr=LoadSkin( szResourceLocator );
+ if( FAILED(hr) ) app.FatalLoadError();
+
+ // Storage strings
+ wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", L"media/4J_strings.xus");
+ hr=StorageManager.m_pStringTable->Load( szResourceLocator );
+ if( FAILED(hr) ) app.FatalLoadError();
+
+ wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", L"media/strings.xus");
+ hr=StringTable.Load( szResourceLocator );
+ if( FAILED(hr) ) app.FatalLoadError();
+
+ // #ifdef _DEBUG
+ // // dump out the text
+ // int iStringC=0;
+ // LPCWSTR lpTempString;
+ //
+ // while((lpTempString=StringTable.Lookup(iStringC))!=NULL)
+ // {
+ // DebugPrintf("STRING %d = ",iStringC);
+ // OutputDebugStringW(lpTempString);
+ // DebugPrintf("\n");
+ // iStringC++;
+ // }
+ // #endif
+
+
+
+ // Load the xui scenes
+
+ // 4J Stu - Add the tooltip/container scene to the root object
+ // Load the scene.
+ ASSERT(m_hObjRoot);
+ HXUIOBJ mainBaseScene;
+ wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", L"media/");
+ if(RenderManager.IsHiDef())
+ {
+ hr=LoadFirstScene( szResourceLocator, L"xuiscene_base.xur", NULL, &mainBaseScene );
+ }
+ else
+ {
+ if(RenderManager.IsWidescreen())
+ {
+ hr=LoadFirstScene( szResourceLocator, L"xuiscene_base.xur", NULL, &mainBaseScene );
+ }
+ else
+ {
+ hr=LoadFirstScene( szResourceLocator, L"xuiscene_base_480.xur", NULL, &mainBaseScene );
+ }
+ }
+ if( FAILED(hr) ) app.FatalLoadError();
+
+ XuiElementGetChildById( mainBaseScene, L"BasePlayer0", &m_PlayerBaseScene[0] );
+ XuiElementGetChildById( mainBaseScene, L"BasePlayer1", &m_PlayerBaseScene[1] );
+ XuiElementGetChildById( mainBaseScene, L"BasePlayer2", &m_PlayerBaseScene[2] );
+ XuiElementGetChildById( mainBaseScene, L"BasePlayer3", &m_PlayerBaseScene[3] );
+
+ for(unsigned int idx = 0; idx < XUSER_MAX_COUNT; ++idx)
+ {
+ XuiElementGetChildById( m_PlayerBaseScene[idx], L"XuiSceneContainer", &m_hCurrentScene[idx]);
+ m_hFirstScene[idx]=m_hCurrentScene[idx];
+
+ XuiElementGetChildById( m_PlayerBaseScene[idx], L"XuiSceneTutorialContainer", &m_hCurrentTutorialScene[idx]);
+ m_hFirstTutorialScene[idx]=m_hCurrentTutorialScene[idx];
+
+ XuiElementGetChildById( m_PlayerBaseScene[idx], L"XuiSceneChatRoot", &m_hCurrentChatScene[idx]);
+ m_hFirstChatScene[idx]=m_hCurrentChatScene[idx];
+
+ WCHAR szResourceLocator[ LOCATOR_SIZE ];
+ wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", L"media/");
+ HXUIOBJ hScene;
+ HRESULT hr = XuiSceneCreate(szResourceLocator,app.GetSceneName(eUIComponent_Chat, true,false), &idx, &hScene);
+ if( FAILED(hr) ) app.FatalLoadError();
+
+ hr = XuiSceneNavigateForward(m_hCurrentChatScene[idx], FALSE, hScene, idx);
+ if (FAILED(hr))
+ {
+ app.DebugPrintf("chat scene navigate fail");
+ XuiDestroyObject(hScene);
+ return hr;
+ }
+
+ m_hCurrentChatScene[idx]=hScene;
+
+ XuiElementGetChildById( m_PlayerBaseScene[idx], L"XuiSceneHudRoot", &m_hCurrentHudScene[idx]);
+ m_hFirstHudScene[idx]=m_hCurrentHudScene[idx];
+
+ ReloadHudScene(idx, false, true);
+ }
+
+ // get the "Press START to join in" message
+ HXUIOBJ hPressStartMessage;
+
+ XuiElementGetChildById( mainBaseScene, L"XuiPressStartMessage", &hPressStartMessage );
+ // set the text
+ XuiControlSetText(hPressStartMessage, GetString(IDS_PRESS_START_TO_JOIN));
+
+ HXUIOBJ debugContainerObj;
+ XuiElementGetChildById( mainBaseScene, L"XuiSceneDebugContainer", &debugContainerObj );
+ debugContainerScene.Attach( debugContainerObj );
+
+ SetResourcesLoaded(true);
+
+ return S_OK;
+
+}
+
+HRESULT CConsoleMinecraftApp::RegisterFont(eFont eFontLanguage,eFont eFontFallback, bool bSetAsDefault)
+{
+ HRESULT hr=S_OK;
+ const DWORD LOCATOR_SIZE = 256; // Use this to allocate space to hold a ResourceLocator string
+ WCHAR szResourceLocator[ LOCATOR_SIZE ];
+ const ULONG_PTR c_ModuleHandle = (ULONG_PTR)GetModuleHandle(NULL);
+
+ wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", wchTypefaceLocatorA[eFontLanguage]);
+ // 4J Stu - Check that the font file actually exists
+ HXUIRESOURCE fontTempResource;
+ BOOL isMemoryResource;
+ hr = XuiResourceOpenNoLoc(szResourceLocator, &fontTempResource, &isMemoryResource);
+ if( FAILED(hr) ) app.FatalLoadError();
+ XuiResourceClose(fontTempResource);
+
+ if(bSetAsDefault)
+ {
+ if(eFontFallback!=eFont_None)
+ {
+ hr = RegisterDefaultTypeface( wchTypefaceA[eFontLanguage],szResourceLocator,NULL,0.0f,wchTypefaceA[eFontFallback]);
+ }
+ else
+ {
+ hr = RegisterDefaultTypeface( wchTypefaceA[eFontLanguage],szResourceLocator);
+ }
+ }
+ else
+ {
+ TypefaceDescriptor typefaceDescriptorStruct;
+ ZeroMemory(&typefaceDescriptorStruct,sizeof(TypefaceDescriptor));
+ typefaceDescriptorStruct.szTypeface=wchTypefaceA[eFontLanguage];
+ typefaceDescriptorStruct.szLocator=szResourceLocator;
+ if(eFontFallback!=eFont_None)
+ {
+ typefaceDescriptorStruct.szFallbackTypeface= wchTypefaceA[eFontFallback];
+ }
+ hr = XuiRegisterTypeface(&typefaceDescriptorStruct,FALSE);
+ }
+ return hr;
+}
+
+
+// TMS++
+
+void CConsoleMinecraftApp::TMSPP_SetTitleGroupID(LPCSTR szTitleGroupID)
+{
+ StorageManager.TMSPP_SetTitleGroupID(szTitleGroupID);
+}
+
+void CConsoleMinecraftApp::TMSPP_RetrieveFileList(int iPad,C4JStorage::eGlobalStorage eStorageFacility,CHAR *szPath,eTMSAction NextAction)
+{
+ app.DebugPrintf("CConsoleMinecraftApp::TMSPP_RetrieveFileList\n");
+
+ if(eStorageFacility==C4JStorage::eGlobalStorage_Title)
+ {
+ if(m_bTMSPP_GlobalFileListRead==false)
+ {
+ m_bTMSPP_GlobalFileListRead=true;
+ StorageManager.TMSPP_ReadFileList(iPad,eStorageFacility,szPath,&CConsoleMinecraftApp::Callback_TMSPPReadFileList,this,NextAction);
+ }
+ else
+ {
+ SetTMSAction(iPad,NextAction);
+ }
+ }
+ else
+ {
+ StorageManager.TMSPP_ReadFileList(iPad,eStorageFacility,szPath,&CConsoleMinecraftApp::Callback_TMSPPReadFileList,this,NextAction);
+ }
+
+
+}
+
+int CConsoleMinecraftApp::Callback_TMSPPReadFileList(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILE_LIST pTmsFileList)
+{
+ app.DebugPrintf("CConsoleMinecraftApp::Callback_TMSPPReadFileList\n");
+ CConsoleMinecraftApp* pClass = (CConsoleMinecraftApp*)pParam;
+
+#ifdef _DEBUG
+ // dump out the file list
+ app.DebugPrintf("TMSPP filecount - %d\n",pTmsFileList->iCount);
+ for(int i=0;iiCount;i++)
+ {
+ app.DebugPrintf("TMSPP - %s\n",pTmsFileList->FileDetailsA[i].szFilename);
+ }
+#endif
+ // change the state to the next action
+ pClass->SetTMSAction(iPad,(eTMSAction)iUserData);
+ return 0;
+}
+
+void CConsoleMinecraftApp::TMSPP_ReadXuidsFile(int iPad,eTMSAction NextAction)
+{
+ app.DebugPrintf("CConsoleMinecraftApp::TMSPP_ReadXuidsFile\n");
+ C4JStorage::ETMSStatus eResult;
+ // try reading the xuids.xml file (from TMS global) - only allowed to do this once an hour at the most, but we'll just read once each time the game launches
+
+ if(m_bRead_TMS_XUIDS_XML==false)
+ {
+ m_bRead_TMS_XUIDS_XML=true;
+
+ eResult=StorageManager.TMSPP_ReadFile(iPad,C4JStorage::eGlobalStorage_Title,C4JStorage::TMS_FILETYPE_BINARY,"xuids.xml",&CConsoleMinecraftApp::Callback_TMSPPReadXuidsFile,this,NextAction);
+
+ if(eResult!=C4JStorage::ETMSStatus_ReadInProgress)
+ {
+ // something went wrong
+ app.SetTMSAction(iPad,(eTMSAction)NextAction);
+ }
+ }
+ else
+ {
+ app.SetTMSAction(iPad,(eTMSAction)NextAction);
+ }
+}
+
+int CConsoleMinecraftApp::Callback_TMSPPReadXuidsFile(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData, LPCSTR szFilename)
+{
+ app.DebugPrintf("CConsoleMinecraftApp::Callback_TMSPPReadXuidsFile\n");
+ CConsoleMinecraftApp* pClass = (CConsoleMinecraftApp*)pParam;
+ if(pFileData)
+ {
+ ATG::XMLParser xmlParser;
+ xmlMojangCallback xmlCallback;
+
+ xmlParser.RegisterSAXCallbackInterface( &xmlCallback );
+ xmlParser.ParseXMLBuffer((CHAR *)pFileData->pbData,pFileData->dwSize);
+ delete [] pFileData->pbData;
+ delete [] pFileData;
+ }
+
+ // change the state to the next action
+ pClass->SetTMSAction(iPad,(eTMSAction)iUserData);
+
+ return 0;
+}
+
+void CConsoleMinecraftApp::TMSPP_ReadConfigFile(int iPad,eTMSAction NextAction)
+{
+ app.DebugPrintf("CConsoleMinecraftApp::TMSPP_ReadConfigFile\n");
+ C4JStorage::ETMSStatus eResult;
+ // try reading the xuids.xml file (from TMS global) - only allowed to do this once an hour at the most, but we'll just read once each time the game launches
+
+ if(m_bRead_TMS_Config_XML==false)
+ {
+ m_bRead_TMS_Config_XML=true;
+
+ eResult=StorageManager.TMSPP_ReadFile(iPad,C4JStorage::eGlobalStorage_Title,C4JStorage::TMS_FILETYPE_BINARY,"Config.xml",&CConsoleMinecraftApp::Callback_TMSPPReadConfigFile,this,NextAction);
+
+ if(eResult!=C4JStorage::ETMSStatus_ReadInProgress)
+ {
+ // something went wrong - probably no Config.xml file exists in TMS++
+ app.SetTMSAction(iPad,(eTMSAction)NextAction);
+ }
+ }
+ else
+ {
+ app.SetTMSAction(iPad,(eTMSAction)NextAction);
+ }
+}
+
+int CConsoleMinecraftApp::Callback_TMSPPReadConfigFile(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData, LPCSTR szFilename)
+{
+ app.DebugPrintf("CConsoleMinecraftApp::Callback_TMSPPReadConfigFile\n");
+ CConsoleMinecraftApp* pClass = (CConsoleMinecraftApp*)pParam;
+ if(pFileData)
+ {
+ ATG::XMLParser xmlParser;
+ xmlConfigCallback xmlCallback;
+
+ xmlParser.RegisterSAXCallbackInterface( &xmlCallback );
+ xmlParser.ParseXMLBuffer((CHAR *)pFileData->pbData,pFileData->dwSize);
+ delete [] pFileData->pbData;
+ delete [] pFileData;
+ }
+
+ // change the state to the next action
+ pClass->SetTMSAction(iPad,(eTMSAction)iUserData);
+
+ return 0;
+}
+
+
+
+bool CConsoleMinecraftApp::TMSPP_ReadBannedList(int iPad,eTMSAction NextAction)
+{
+ app.DebugPrintf("CConsoleMinecraftApp::TMSPP_ReadBannedList\n");
+ C4JStorage::ETMSStatus eResult;
+ bool bSendBanFileRetrievedMsg=false;
+
+ if(GetBanListRead(iPad)==false)
+ {
+ // do we have one in our user filelist?
+ if(StorageManager.TMSPP_InFileList(C4JStorage::eGlobalStorage_TitleUser,iPad,L"BannedList"))
+ {
+ SetBanListRead(iPad,true);
+ ClearBanList(iPad);
+
+ eResult=StorageManager.TMSPP_ReadFile(iPad,C4JStorage::eGlobalStorage_TitleUser,C4JStorage::TMS_FILETYPE_BINARY,"BannedList",&CConsoleMinecraftApp::Callback_TMSPPReadBannedList,this,NextAction);
+ if(eResult!=C4JStorage::ETMSStatus_ReadInProgress)
+ {
+ // something went wrong
+ app.SetTMSAction(iPad,(eTMSAction)NextAction);
+ bSendBanFileRetrievedMsg=true;
+ }
+ }
+ else
+ {
+ // not in the list - we'll need to fall back to TMS
+ return false;
+ }
+
+ }
+ else
+ {
+ bSendBanFileRetrievedMsg=true;
+ }
+
+ if(bSendBanFileRetrievedMsg)
+ {
+ ui.HandleTMSBanFileRetrieved(iPad);
+ }
+
+ app.SetTMSAction(iPad,(eTMSAction)NextAction);
+
+ return true;
+}
+
+int CConsoleMinecraftApp::Callback_TMSPPReadBannedList(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData,LPCSTR szFilename)
+{
+ app.DebugPrintf("CConsoleMinecraftApp::Callback_TMSPPReadBannedList\n");
+
+ CConsoleMinecraftApp* pClass = (CConsoleMinecraftApp*)pParam;
+
+ if(pFileData)
+ {
+
+ // put the entries into the vector
+ int iEntries=pFileData->dwSize/sizeof(BANNEDLISTDATA);
+ PBANNEDLISTDATA pData=(PBANNEDLISTDATA)pFileData->pbData;
+
+ for(int i=0;iAddLevelToBannedLevelList(iPad,pData[i].xuid,pData[i].pszLevelName, false);
+ }
+ // mark the level as not checked against banned levels - it'll be checked once the level starts
+ app.SetBanListCheck(iPad,false);
+
+ delete [] pFileData->pbData;
+ delete [] pFileData;
+ }
+ ui.HandleTMSBanFileRetrieved(iPad);
+
+ // change the state to the next action
+ pClass->SetTMSAction(iPad,(eTMSAction)iUserData);
+
+ return 0;
+}
+
+void CConsoleMinecraftApp::TMSPP_ReadDLCFile(int iPad,eTMSAction NextAction)
+{
+ app.DebugPrintf("CConsoleMinecraftApp::TMSPP_ReadDLCFile\n");
+ bool bRetrievedDLCFile=false;
+ // try reading the DLC.xml file (from TMS global) - only allowed to do this once an hour at the most, but we'll just read once each time the game launches
+ C4JStorage::ETMSStatus eResult;
+ if(m_bRead_TMS_DLCINFO_XML==false)
+ {
+ //m_bRead_TMS_DLCINFO_XML=true;
+
+ eResult=StorageManager.TMSPP_ReadFile(iPad,C4JStorage::eGlobalStorage_Title,C4JStorage::TMS_FILETYPE_BINARY,"DLC.cmp",&CConsoleMinecraftApp::Callback_TMSPPReadDLCFile,this,NextAction);
+ if(eResult!=C4JStorage::ETMSStatus_ReadInProgress)
+ {
+ // something went wrong
+ app.SetTMSAction(iPad,(eTMSAction)NextAction);
+ bRetrievedDLCFile=true;
+ }
+ }
+ else
+ {
+ bRetrievedDLCFile=true;
+ }
+
+ if(bRetrievedDLCFile)
+ {
+ ui.HandleTMSDLCFileRetrieved(iPad);
+
+ app.SetTMSAction(iPad,(eTMSAction)NextAction);
+ }
+}
+
+int CConsoleMinecraftApp::Callback_TMSPPReadDLCFile(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData,LPCSTR szFilename)
+{
+ app.DebugPrintf("CConsoleMinecraftApp::Callback_TMSPPReadDLCFile\n");
+ CConsoleMinecraftApp* pClass = (CConsoleMinecraftApp*)pParam;
+
+ if(pFileData && pFileData->dwSize>0)
+ {
+ // the DLC.xml file is now compressed
+
+ unsigned int uiDecompSize=*(unsigned int *)pFileData->pbData;
+ unsigned int uiCompSize=((unsigned int *)pFileData->pbData)[1];
+
+ BYTE *pDecompressedData = new BYTE [uiDecompSize];
+
+ Compression::getCompression()->Decompress(pDecompressedData,&uiDecompSize,&((unsigned int *)pFileData->pbData)[2],uiCompSize);
+ delete [] pFileData->pbData;
+ delete [] pFileData;
+
+ ATG::XMLParser xmlParser;
+ xmlDLCInfoCallback xmlCallback;
+
+ xmlParser.RegisterSAXCallbackInterface( &xmlCallback );
+ xmlParser.ParseXMLBuffer((CHAR *)pDecompressedData,uiDecompSize);
+
+ pClass->m_bRead_TMS_DLCINFO_XML=true;
+
+ delete pDecompressedData;
+ }
+
+ ui.HandleTMSDLCFileRetrieved(iPad);
+
+ // change the state to the next action
+ pClass->SetTMSAction(iPad,(eTMSAction)iUserData);
+
+ return 0;
+}
+
+
+void CConsoleMinecraftApp::ReadBannedList(int iPad,eTMSAction NextAction, bool bCallback)
+{
+ // try reading the banned level list file (from TMS User) - only allowed to do this once an hour at the most, but we'll just read once each time the user signs in
+
+ if(GetBanListCheck(iPad)==false)
+ {
+ SetBanListCheck(iPad,true);
+ ClearBanList(iPad);
+
+ //StorageManager.DeleteTMSFile(iPad,C4JStorage::eGlobalStorage_TitleUser,L"BannedList");
+ C4JStorage::ETMSStatus eTMSStatus;
+ if(bCallback)
+ {
+ eTMSStatus=StorageManager.ReadTMSFile(iPad,C4JStorage::eGlobalStorage_TitleUser,C4JStorage::eTMS_FileType_Normal,L"BannedList",&BannedListA[iPad].pBannedList, &BannedListA[iPad].dwBytes,&CConsoleMinecraftApp::CallbackBannedListFileFromTMS,this,NextAction);
+ }
+ else
+ {
+ eTMSStatus=StorageManager.ReadTMSFile(iPad,C4JStorage::eGlobalStorage_TitleUser,C4JStorage::eTMS_FileType_Normal,L"BannedList",&BannedListA[iPad].pBannedList, &BannedListA[iPad].dwBytes);
+
+ if(eTMSStatus==C4JStorage::ETMSStatus_Idle)
+ {
+ // put the entries into the vector
+ int iEntries=BannedListA[iPad].dwBytes/sizeof(BANNEDLISTDATA);
+ PBANNEDLISTDATA pData=(PBANNEDLISTDATA)BannedListA[iPad].pBannedList;
+
+ for(int i=0;iBannedListA[iPad].dwBytes>0)
+ {
+ // put the entries into the vector
+ int iEntries=pClass->BannedListA[iPad].dwBytes/sizeof(BANNEDLISTDATA);
+ PBANNEDLISTDATA pData=(PBANNEDLISTDATA)pClass->BannedListA[iPad].pBannedList;
+
+ for(int i=0;iAddLevelToBannedLevelList(iPad,pData[i].xuid,pData[i].pszLevelName, false);
+ }
+
+ // mark the level as not checked against banned levels - it'll be checked once the level starts
+ app.SetBanListCheck(iPad,false);
+
+ }
+ app.SetTMSAction(iPad,(eTMSAction)iAction);
+
+ ui.HandleTMSBanFileRetrieved(iPad);
+
+ return 0;
+}
+
+void CConsoleMinecraftApp::OverrideFontRenderer(bool set, bool immediate)
+{
+ // 4J Stu - Only relevant to XUI on Xbox360
+#ifdef _XBOX
+ // We don't want to even attempt using our font renderer in the asian languages
+ switch(XGetLanguage())
+ {
+ case XC_LANGUAGE_JAPANESE:
+ case XC_LANGUAGE_TCHINESE:
+ case XC_LANGUAGE_KOREAN:
+ return;
+ break;
+ }
+
+ if(set != m_bFontRendererOverridden)
+ {
+ if( immediate )
+ {
+ XuiElementDiscardResources( m_hObjRoot, XUI_DISCARD_FONTS );
+ if( set )
+ {
+ XuiFontSetRenderer( m_fontRenderer );
+ }
+ else
+ {
+ XuiFontSetRenderer( NULL );
+ }
+ m_bFontRendererOverridden = set;
+
+ if( GetResourcesLoaded() )
+ {
+ // tell the xui scenes the font renderer changed
+ XUIMessage xuiMsg;
+ CustomMessage_FontRendererChange( &xuiMsg);
+
+ // send the message
+ for(int i=0;iGetBufferSize()];
+ *pdwSize=m_ThumbnailBuffer->GetBufferSize();
+ memcpy(*pbData,m_ThumbnailBuffer->GetBufferPointer(),*pdwSize);
+ }
+ m_ThumbnailBuffer->Release();
+ m_ThumbnailBuffer=NULL;
+ }
+}
+void CConsoleMinecraftApp::ReleaseSaveThumbnail()
+{
+ if(m_ThumbnailBuffer!=NULL)
+ {
+ m_ThumbnailBuffer->Release();
+ m_ThumbnailBuffer=NULL;
+ }
+}
+
+void CConsoleMinecraftApp::GetScreenshot(int iPad,PBYTE *pbData,DWORD *pdwSize)
+{
+ // on a save caused by a create world, the thumbnail capture won't have happened
+ if(m_ScreenshotBuffer[iPad]!=NULL)
+ {
+ *pbData= new BYTE [m_ScreenshotBuffer[iPad]->GetBufferSize()];
+ *pdwSize=m_ScreenshotBuffer[iPad]->GetBufferSize();
+ memcpy(*pbData,m_ScreenshotBuffer[iPad]->GetBufferPointer(),*pdwSize);
+ m_ScreenshotBuffer[iPad]->Release();
+ m_ScreenshotBuffer[iPad]=NULL;
+ }
+}
+
+#ifdef _DEBUG_MENUS_ENABLED
+void CConsoleMinecraftApp::EnableDebugOverlay(bool enable,int iPad)
+{
+ HRESULT hr = S_OK;
+
+ if(enable && !debugOverlayCreated)
+ {
+ const ULONG_PTR c_ModuleHandle = (ULONG_PTR)GetModuleHandle(NULL);
+
+ const DWORD LOCATOR_SIZE = 256; // Use this to allocate space to hold a ResourceLocator string
+ WCHAR szResourceLocator[ LOCATOR_SIZE ];
+
+ wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", L"media/");
+ hr = XuiSceneCreate(szResourceLocator, L"xuiscene_debugoverlay.xur", NULL, &m_hDebugOverlay);
+ debugContainerScene.AddChild(m_hDebugOverlay);
+ debugContainerScene.SetShow(false);
+
+ debugOverlayCreated = true;
+ }
+ if(enable)
+ {
+ XuiElementSetUserFocus(m_hDebugOverlay, iPad);
+ }
+ else
+ {
+ XuiElementSetUserFocus(m_hCurrentScene[iPad], iPad);
+ }
+ debugContainerScene.SetShow(enable);
+ SetMenuDisplayed(ProfileManager.GetPrimaryPad(),enable);
+}
+#endif
+
+bool CConsoleMinecraftApp::GetMenuDisplayed(int iPad)
+{
+ return m_bMenuDisplayed[iPad];
+}
+
+void CConsoleMinecraftApp::SetMenuDisplayed(int iPad,bool bVal)
+{
+ if(iPad==XUSER_INDEX_ANY) return;
+
+ if(bVal)
+ {
+ if(iPad==XUSER_INDEX_ANY)
+ {
+ for(int i=0;i= 0 ) ) idx = iPad;
+ }
+ AUTO_VAR(itEnd, m_sceneStack[idx].end());
+ for (AUTO_VAR(it, m_sceneStack[idx].begin()); it != itEnd; it++)
+ //for(auto it = m_sceneStack[iPad].begin(), end = m_sceneStack[iPad].end(); it != end; ++it)
+ {
+ if(it->first == eScene)
+ {
+ inStack = true;
+ break;
+ }
+ }
+
+ return inStack;
+}
+
+WCHAR *CConsoleMinecraftApp::GetSceneName(EUIScene eScene,bool bAppendToName,bool bSplitscreenScene)
+{
+ wcscpy(m_SceneName,wchSceneA[eScene]);
+ if(bAppendToName)
+ {
+ if(RenderManager.IsHiDef())
+ {
+ if(bSplitscreenScene)
+ {
+ wcscat(m_SceneName,L"_small");
+ }
+ }
+ else
+ {
+ // if it's low def, but widescreen, then use the small scenes
+ if(!RenderManager.IsWidescreen())
+ {
+ wcscat(m_SceneName,L"_480");
+ }
+
+ }
+ }
+ wcscat(m_SceneName,L".xur");
+
+#ifdef _DEBUG
+#ifndef __PS3__
+ OutputDebugStringA("SCENE LOAD - ");
+ OutputDebugStringW(m_SceneName);
+ app.DebugPrintf("\n");
+#endif __PS3__
+#endif
+
+ return m_SceneName;
+}
+
+HRESULT CConsoleMinecraftApp::NavigateToScene(int iPad,EUIScene eScene, void *initData /* = NULL */, bool forceUsePad /*= false*/, BOOL bStayVisible /* = FALSE */, HXUIOBJ *phResultingScene /*= NULL*/ )
+{
+ ASSERT(m_bDefaultTypefaceRegistered);
+ ASSERT(m_bSkinLoaded);
+ static bool bSeenUpdateTextThisSession=false;
+
+ // make sure we've created the main canvas already
+ ASSERT(m_hObjRoot);
+ if (!m_hObjRoot)
+ return E_UNEXPECTED;
+
+ // If you're navigating to the multigamejoinload, and the player hasn't seen the updates message yet, display it now
+ // display this message the first 3 times
+ if((eScene==eUIScene_LoadOrJoinMenu) && (bSeenUpdateTextThisSession==false) && ( app.GetGameSettings(ProfileManager.GetPrimaryPad(),eGameSetting_DisplayUpdateMessage)!=0))
+ {
+ eScene=eUIScene_NewUpdateMessage;
+ bSeenUpdateTextThisSession=true;
+ }
+ // if you're trying to navigate to the inventory,the crafting, pause or game info or any of the trigger scenes and there's already a menu up (because you were pressing a few buttons at the same time) then ignore the navigate
+ if(GetMenuDisplayed(iPad))
+ {
+ switch(eScene)
+ {
+ case eUIScene_PauseMenu:
+ case eUIScene_Crafting2x2Menu:
+ case eUIScene_Crafting3x3Menu:
+ case eUIScene_FurnaceMenu:
+ case eUIScene_ContainerMenu:
+ case eUIScene_LargeContainerMenu:
+ case eUIScene_InventoryMenu:
+ case eUIScene_CreativeMenu:
+ case eUIScene_DispenserMenu:
+ case eUIScene_SignEntryMenu:
+ case eUIScene_InGameInfoMenu:
+ case eUIScene_EnchantingMenu:
+ case eUIScene_BrewingStandMenu:
+ case eUIScene_AnvilMenu:
+ case eUIScene_TradingMenu:
+ DebugPrintf("IGNORING NAVIGATE - we're trying to navigate to a user selected scene when there's already a scene up: pad:%d, scene:%d\n", iPad, eScene);
+ return S_FALSE;
+ break;
+ }
+ }
+
+ // load from the .xzp file
+ const ULONG_PTR c_ModuleHandle = (ULONG_PTR)GetModuleHandle(NULL);
+
+ HXUIOBJ hScene;
+ HRESULT hr;
+ const DWORD LOCATOR_SIZE = 256; // Use this to allocate space to hold a ResourceLocator string
+ WCHAR szResourceLocator[ LOCATOR_SIZE ];
+
+ wsprintfW(szResourceLocator,L"section://%X,%s#%s",c_ModuleHandle,L"media", L"media/");
+
+ // If the init data is null, put the player pad in there
+
+ if(initData==NULL)
+ {
+ initData = &iPad;
+ }
+
+ int idx = 0;
+ if( m_bGameStarted || forceUsePad )
+ {
+ // If the game isn't running treat as user 0, otherwise map index directly from pad
+ if( ( iPad != 255 ) && ( iPad >= 0 ) ) idx = iPad;
+ }
+ else
+ {
+ // The game isn't running, so make sure this scene is fullscreen
+ CXuiSceneBase::SetPlayerBaseScenePosition( idx, CXuiSceneBase::e_BaseScene_Fullscreen );
+ }
+
+ if( eScene != eUIComponent_TutorialPopup && eScene != eUIComponent_Chat && eScene != eUIScene_HUD )
+ {
+ SetMenuDisplayed(idx,true);
+ }
+
+ PIXBeginNamedEvent(0,"Xui scene create\n");
+ MemSect(4);
+
+ bool bIsHiDef=RenderManager.IsHiDef();
+ bool bIsSplitscreen = GetLocalPlayerCount()>1;
+ BOOL bSceneIsFullscreen = CXuiSceneBase::GetPlayerBasePosition(idx)==CXuiSceneBase::e_BaseScene_Fullscreen;
+
+ switch(eScene)
+ {
+ case eUIScene_Intro:
+ case eUIScene_MainMenu:
+ case eUIScene_LeaderboardsMenu:
+ case eUIScene_Credits:
+ case eUIScene_CreateWorldMenu:
+ case eUIScene_LoadOrJoinMenu:
+ case eUIScene_JoinMenu:
+ case eUIScene_DLCOffersMenu:
+ case eUIScene_DLCMainMenu:
+ case eUIScene_TrialExitUpsell:
+ case eUIScene_SaveMessage:
+ case eUIScene_LoadMenu:
+ case eUIScene_LaunchMoreOptionsMenu:
+ // if we're in low res widescreen, we just want to use the normal scenes for these
+ if(!bIsHiDef && RenderManager.IsWidescreen())
+ {
+ hr = XuiSceneCreate(szResourceLocator,app.GetSceneName(eScene,false, false), initData, &hScene);
+ }
+ else
+ {
+ hr = XuiSceneCreate(szResourceLocator,app.GetSceneName(eScene, true,false), initData, &hScene);
+ }
+ break;
+ default:
+ // some scenes are forced into fullscreen even though we are insplitscreen mode (saving)
+ if(eScene==eUIComponent_TutorialPopup || eScene==eUIComponent_Chat || eScene==eUIScene_HUD)
+ {
+ hr = XuiSceneCreate(szResourceLocator,app.GetSceneName(eScene,true,bIsSplitscreen), initData, &hScene);
+ }
+ else
+ {
+ hr = XuiSceneCreate(szResourceLocator,app.GetSceneName(eScene,true,bIsSplitscreen && !bSceneIsFullscreen), initData, &hScene);
+ }
+ break;
+ }
+ if( FAILED(hr) ) app.FatalLoadError();
+
+ MemSect(0);
+ PIXEndNamedEvent();
+#if 0
+ D3DXVECTOR3 test;
+ test.x = 0.5f;
+ test.y = 0.5f;
+ test.z = 1.0f;
+ XuiElementSetScale(hScene,&test);
+#endif
+
+ if( eScene == eUIComponent_TutorialPopup )
+ {
+ hr = XuiSceneNavigateForward(m_hCurrentTutorialScene[iPad], FALSE, hScene, XUSER_INDEX_NONE);
+ if (FAILED(hr))
+ {
+ app.DebugPrintf("scene navigate fail");
+ XuiDestroyObject(hScene);
+ return hr;
+ }
+
+ m_hCurrentTutorialScene[iPad]=hScene;
+ }
+ else if( eScene == eUIComponent_Chat )
+ {
+ hr = XuiSceneNavigateForward(m_hCurrentChatScene[iPad], FALSE, hScene, XUSER_INDEX_NONE);
+ if (FAILED(hr))
+ {
+ app.DebugPrintf("scene navigate fail");
+ XuiDestroyObject(hScene);
+ return hr;
+ }
+
+ m_hCurrentChatScene[iPad]=hScene;
+ }
+ else if( eScene == eUIScene_HUD )
+ {
+ hr = XuiSceneNavigateForward(m_hCurrentHudScene[iPad], FALSE, hScene, XUSER_INDEX_NONE);
+ if (FAILED(hr))
+ {
+ app.DebugPrintf("scene navigate fail");
+ XuiDestroyObject(hScene);
+ return hr;
+ }
+
+ m_hCurrentHudScene[iPad]=hScene;
+ }
+ else
+ {
+ MemSect(5);
+ hr = XuiSceneNavigateForward(m_hCurrentScene[idx], bStayVisible, hScene, iPad);
+ MemSect(0);
+ if (FAILED(hr))
+ {
+ app.DebugPrintf("scene navigate fail");
+ XuiDestroyObject(hScene);
+ return hr;
+ }
+
+ m_hCurrentScene[idx] = hScene;
+ m_sceneStack[idx].push_back( SceneStackPair(eScene, hScene) );
+
+ if(eScene==eUIScene_Intro)
+ {
+ m_bIntroRunning=true;
+ }
+ }
+
+ switch(eScene)
+ {
+ case eUIScene_PauseMenu:
+ {
+ m_bPauseMenuDisplayed[iPad] = true;
+
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+ if(pMinecraft != NULL && pMinecraft->localgameModes[iPad] != NULL )
+ {
+ TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[iPad];
+
+ // This just allows it to be shown
+ gameMode->getTutorial()->showTutorialPopup(false);
+ }
+ }
+ break;
+ case eUIScene_Crafting2x2Menu:
+ case eUIScene_Crafting3x3Menu:
+ case eUIScene_FurnaceMenu:
+ case eUIScene_ContainerMenu:
+ case eUIScene_LargeContainerMenu:
+ case eUIScene_InventoryMenu:
+ case eUIScene_CreativeMenu:
+ case eUIScene_DispenserMenu:
+ case eUIScene_BrewingStandMenu:
+ case eUIScene_EnchantingMenu:
+ case eUIScene_AnvilMenu:
+ case eUIScene_TradingMenu:
+ m_bContainerMenuDisplayed[iPad]=true;
+
+ // Intentional fall-through
+ case eUIScene_DeathMenu:
+ case eUIScene_FullscreenProgress:
+ case eUIScene_SignEntryMenu:
+ case eUIScene_EndPoem:
+ m_bIgnoreAutosaveMenuDisplayed[iPad] = true;
+ break;
+ }
+
+ switch(eScene)
+ {
+ case eUIScene_FullscreenProgress:
+ case eUIScene_EndPoem:
+ m_bIgnorePlayerJoinMenuDisplayed[iPad] = true;
+ break;
+ }
+
+ if(phResultingScene!=NULL)
+ {
+ *phResultingScene=hScene;
+ }
+
+ if (FAILED(hr))
+ return hr;
+
+ return S_OK;
+}
+
+HRESULT CConsoleMinecraftApp::NavigateBack(int iPad, bool forceUsePad /*= false*/, EUIScene eScene /*= eUIScene_COUNT*/)
+{
+ HXUIOBJ hCur;
+ HXUIOBJ hBack;
+
+ int idx = 0;
+ if( m_bGameStarted || forceUsePad )
+ {
+ // If the game isn't running treat as user 0, otherwise map index directly from pad
+ if( ( iPad != 255 ) && ( iPad >= 0 ) ) idx = iPad;
+ }
+
+ hCur=m_hCurrentScene[idx];
+
+ if(eScene == eUIScene_COUNT)
+ {
+ hBack = XuiSceneGetBackScene(m_hCurrentScene[idx]);
+ if (!hBack)
+ return S_FALSE;
+
+ m_sceneStack[idx].pop_back();
+ }
+ else
+ {
+ for(auto it = m_sceneStack[idx].begin(), end = m_sceneStack[idx].end(); it != end; ++it)
+ {
+ if(it->first == eScene)
+ {
+ hBack = it->second;
+ }
+ }
+
+ if (!hBack)
+ return S_FALSE;
+
+ while( !m_sceneStack[idx].empty() && m_sceneStack[idx].back().second != hBack)
+ {
+ m_sceneStack[idx].pop_back();
+ }
+ }
+ m_hCurrentScene[idx]=hBack;
+
+ if( m_hCurrentScene[idx] == this->m_hFirstScene[idx] ) SetMenuDisplayed(idx,false);
+
+ CXuiSceneBase::PlayUISFX(eSFX_Back);
+ return XuiSceneNavigateBack(hCur, hBack,iPad );
+}
+
+HRESULT CConsoleMinecraftApp::TutorialSceneNavigateBack(int iPad, bool forceUsePad /*= false*/)
+{
+ HXUIOBJ hCur;
+ HXUIOBJ hBack;
+
+ int idx = 0;
+ if( m_bGameStarted || forceUsePad )
+ {
+ // If the game isn't running treat as user 0, otherwise map index directly from pad
+ if( ( iPad != 255 ) && ( iPad >= 0 ) ) idx = iPad;
+ }
+
+ hCur=m_hCurrentTutorialScene[idx];
+ hBack = XuiSceneGetBackScene(m_hCurrentTutorialScene[idx]);
+ if (!hBack)
+ return S_FALSE;
+ m_hCurrentTutorialScene[idx]=hBack;
+
+ return XuiSceneNavigateBack(hCur, hBack,iPad );
+}
+
+HRESULT CConsoleMinecraftApp::CloseXuiScenes(int iPad, bool forceUsePad /*= false*/)
+{
+ HRESULT hr;
+
+ int idx = 0;
+ if( m_bGameStarted || forceUsePad )
+ {
+ // If the game isn't running treat as user 0, otherwise map index directly from pad
+ if( ( iPad != 255 ) && ( iPad >= 0 ) ) idx = iPad;
+ }
+
+ hr=XuiSceneNavigateBackToFirst(m_hCurrentScene[idx],iPad);
+ m_hCurrentScene[idx]=m_hFirstScene[idx];
+ m_sceneStack[idx].clear();
+
+ CXuiSceneBase::ShowBackground(iPad, FALSE );
+ CXuiSceneBase::ShowDarkOverlay(iPad, FALSE );
+ CXuiSceneBase::ShowLogo(iPad, FALSE );
+
+ m_bPauseMenuDisplayed[iPad] = false;
+ m_bContainerMenuDisplayed[iPad] = false;
+ m_bIgnoreAutosaveMenuDisplayed[iPad] = false;
+ m_bIgnorePlayerJoinMenuDisplayed[iPad] = false;
+
+ ui.SetTooltips( iPad, -1, -1, -1, -1 );
+ SetMenuDisplayed(iPad,false);
+
+ // Hide the tutorial popup for this player
+ if(m_bGameStarted)
+ {
+ CScene_TutorialPopup::SetSceneVisible(iPad,FALSE);
+ }
+
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+ if(pMinecraft != NULL && pMinecraft->localgameModes[iPad] != NULL )
+ {
+ TutorialMode *gameMode = (TutorialMode *)pMinecraft->localgameModes[iPad];
+
+ // This just allows it to be shown
+ gameMode->getTutorial()->showTutorialPopup(true);
+ }
+
+ // update the rich presence
+ // Are we offline or online, and how many players are there
+ if(g_NetworkManager.GetPlayerCount()>1)
+ {
+ for(int i=0;ilocalplayers[i])
+ {
+ if(g_NetworkManager.IsLocalGame())
+ {
+ ProfileManager.SetCurrentGameActivity(i,CONTEXT_PRESENCE_MULTIPLAYEROFFLINE,false);
+ }
+ else
+ {
+ ProfileManager.SetCurrentGameActivity(i,CONTEXT_PRESENCE_MULTIPLAYER,false);
+ }
+ }
+ }
+ }
+ else
+ {
+ if(m_bGameStarted && pMinecraft->localplayers[idx])
+ {
+ if(g_NetworkManager.IsLocalGame())
+ {
+ ProfileManager.SetCurrentGameActivity(iPad,CONTEXT_PRESENCE_MULTIPLAYER_1POFFLINE,false);
+ }
+ else
+ {
+ ProfileManager.SetCurrentGameActivity(iPad,CONTEXT_PRESENCE_MULTIPLAYER_1P,false);
+ }
+ }
+ }
+ // because a player leaving can cause other players close scenes to be called, and they may have been crafting, I'll run
+ // the presence update for all players
+
+ for(int i=0;ilocalplayers[i])
+ {
+ pMinecraft->localplayers[i]->updateRichPresence();
+ }
+ }
+
+ return hr;
+}
+
+HRESULT CConsoleMinecraftApp::CloseAllPlayersXuiScenes()
+{
+ HRESULT hr = S_OK;
+
+ // 4J Stu - Fix for #11211 - TCR 015 BAS Sign In Changes: One time-occurrence where users were unable to access any in-game menus after several sign-in changes
+ // We only hide them during a save, but this could be interrupted
+ CXuiSceneBase::ShowOtherPlayersBaseScene(0, true);
+
+ for(unsigned int idx = 0; idx < XUSER_MAX_COUNT; ++idx)
+ {
+ CloseXuiScenes(idx, true);
+ ReloadChatScene(idx, false, true);
+ ReloadHudScene(idx, false, true);
+ }
+
+ return hr;
+}
+
+HRESULT CConsoleMinecraftApp::CloseXuiScenesAndNavigateToScene(int iPad,EUIScene eScene, void *initData, bool forceUsePad /*= false*/)
+{
+ HRESULT hr;
+
+ int idx = 0;
+ if( m_bGameStarted || forceUsePad)
+ {
+ // If the game isn't running treat as user 0, otherwise map index directly from pad
+ if( ( iPad != 255 ) && ( iPad >= 0 ) ) idx = iPad;
+ }
+
+ hr=XuiSceneNavigateBackToFirst(m_hCurrentScene[idx],iPad);
+ m_hCurrentScene[idx]=m_hFirstScene[idx];
+ m_sceneStack[idx].clear();
+
+ CXuiSceneBase::ShowBackground(iPad, FALSE );
+ CXuiSceneBase::ShowDarkOverlay(iPad, FALSE );
+ CXuiSceneBase::ShowLogo(iPad, FALSE );
+
+ m_bPauseMenuDisplayed[iPad] = false;
+ m_bContainerMenuDisplayed[iPad] = false;
+ m_bIgnoreAutosaveMenuDisplayed[iPad] = false;
+ m_bIgnorePlayerJoinMenuDisplayed[iPad] = false;
+
+ ui.SetTooltips( iPad, -1, -1, -1, -1 );
+ SetMenuDisplayed(iPad,false);
+
+ NavigateToScene(iPad,eScene,initData);
+
+ return hr;
+}
+
+HRESULT CConsoleMinecraftApp::RemoveBackScene(int iPad)
+{
+ int idx = 0;
+ if( m_bGameStarted)
+ {
+ // If the game isn't running treat as user 0, otherwise map index directly from pad
+ if( ( iPad != 255 ) && ( iPad >= 0 ) ) idx = iPad;
+ }
+
+ if( m_hCurrentScene[idx] != m_hFirstScene[idx] )
+ {
+ HXUIOBJ hBack = XuiSceneGetBackScene(m_hCurrentScene[idx]);
+
+ if( hBack != m_hFirstScene[idx] )
+ {
+ HXUIOBJ hNewBack = XuiSceneGetBackScene( hBack );
+
+ if( hNewBack != m_hFirstScene[idx] )
+ {
+ XuiSceneSetBackScene(m_hCurrentScene[idx], hNewBack);
+
+ for(auto it = m_sceneStack[idx].begin(), end = m_sceneStack[idx].end(); it != end; ++it)
+ {
+ if(it->second == hBack)
+ {
+ m_sceneStack[idx].erase(it);
+ break;
+ }
+ }
+
+ XuiSceneSetBackScene(hBack, NULL);
+ XuiDestroyObject( hBack );
+ }
+ }
+ }
+
+ return S_OK;
+}
+
+HRESULT CConsoleMinecraftApp::NavigateToHomeMenu()
+{
+ HRESULT hr = S_OK;
+
+ for(unsigned int idx = 0; idx < XUSER_MAX_COUNT; ++idx)
+ {
+ if( m_hFirstTutorialScene[idx] != m_hCurrentTutorialScene[idx] )
+ {
+ XuiSceneNavigateBack(m_hCurrentTutorialScene[idx], m_hFirstTutorialScene[idx],XUSER_INDEX_ANY);
+ m_hCurrentTutorialScene[idx] = m_hFirstTutorialScene[idx];
+ }
+ }
+
+ hr = CloseAllPlayersXuiScenes();
+
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+
+ // 4J-PB - just about to switched to the default texture pack , so clean up anything texture pack related here
+
+ // unload any texture pack audio
+ // if there is audio in use, clear out the audio, and unmount the pack
+ TexturePack *pTexPack=Minecraft::GetInstance()->skins->getSelected();
+ DLCTexturePack *pDLCTexPack=NULL;
+
+ if(pTexPack->hasAudio())
+ {
+ // get the dlc texture pack, and store it
+ pDLCTexPack=(DLCTexturePack *)pTexPack;
+ }
+
+ // change to the default texture pack
+ pMinecraft->skins->selectTexturePackById(TexturePackRepository::DEFAULT_TEXTURE_PACK_ID);
+
+ if(pTexPack->hasAudio())
+ {
+ // need to stop the streaming audio - by playing streaming audio from the default texture pack now
+ pMinecraft->soundEngine->playStreaming(L"", 0, 0, 0, 0, 0);
+
+ if(pDLCTexPack->m_pStreamedWaveBank!=NULL)
+ {
+ pDLCTexPack->m_pStreamedWaveBank->Destroy();
+ }
+ if(pDLCTexPack->m_pSoundBank!=NULL)
+ {
+ pDLCTexPack->m_pSoundBank->Destroy();
+ }
+ DWORD result = StorageManager.UnmountInstalledDLC("TPACK");
+ app.DebugPrintf("Unmount result is %d\n",result);
+ }
+
+ g_NetworkManager.ForceFriendsSessionRefresh();
+
+ hr = NavigateToScene(XUSER_INDEX_ANY,eUIScene_MainMenu,NULL);
+ return hr;
+}
+
+D3DXVECTOR3 CConsoleMinecraftApp::GetElementScreenPosition(HXUIOBJ hObj)
+{
+ D3DXMATRIX matrix;
+ D3DXVECTOR3 elementPosition;
+ XuiElementGetFullXForm( hObj, &matrix);
+
+ elementPosition.x = matrix._41;
+ elementPosition.y = matrix._42;
+ elementPosition.z = matrix._43;
+
+ return elementPosition;
+}
+
+void CConsoleMinecraftApp::SetChatTextDisplayed(int iPad, bool bVal)
+{
+ XuiElementSetShow( m_hCurrentChatScene[iPad] ,bVal );
+}
+
+void CConsoleMinecraftApp::ReloadChatScene(int iPad, bool bJoining /*= false*/, bool bForce /*= false*/)
+{
+ if(m_hFirstChatScene[iPad] == NULL || m_hCurrentChatScene[iPad] == NULL) return;
+
+ // Re-create the chat scene so it is the correct size. It starts without any visible lines.
+ BOOL chatSceneVisible = FALSE;
+ if( m_hFirstChatScene[iPad] != m_hCurrentChatScene[iPad] )
+ {
+ chatSceneVisible = XuiElementIsShown(m_hCurrentChatScene[iPad]);
+ }
+
+ int iLocalPlayerC=GetLocalPlayerCount();
+ // we need to decide whether to close the xui scene or just reposition it
+
+ if( bForce ||
+ (bJoining && iLocalPlayerC==2) ||
+ (!bJoining && iLocalPlayerC==1) ||
+ m_hFirstChatScene[iPad] == m_hCurrentChatScene[iPad])
+ {
+ if( m_hFirstChatScene[iPad] != m_hCurrentChatScene[iPad] ) XuiSceneNavigateBack(m_hCurrentChatScene[iPad], m_hFirstChatScene[iPad],iPad);
+ m_hCurrentChatScene[iPad] = m_hFirstChatScene[iPad];
+ app.NavigateToScene(iPad,eUIComponent_Chat,NULL,true);
+
+ XuiElementSetShow( m_hCurrentChatScene[iPad], chatSceneVisible);
+ }
+
+ D3DXVECTOR3 vPosition;
+ vPosition.x = vPosition.y = vPosition.z = 0.0f;
+
+ float textXOffset = 0;
+ float sceneWidth = (float)Minecraft::GetInstance()->width;
+
+ // For 2-player splitscreen we need to move it around a bit
+ switch( CXuiSceneBase::GetPlayerBasePosition(iPad) )
+ {
+ case CXuiSceneBase::e_BaseScene_Top:
+ case CXuiSceneBase::e_BaseScene_Bottom:
+ {
+ vPosition.x -= Minecraft::GetInstance()->width / 4;
+ textXOffset = SAFEZONE_HALF_WIDTH;
+ }
+ break;
+ case CXuiSceneBase::e_BaseScene_Left:
+ textXOffset = SAFEZONE_HALF_WIDTH;
+ case CXuiSceneBase::e_BaseScene_Right:
+ vPosition.y += Minecraft::GetInstance()->height / 4;
+ sceneWidth = XUI_BASE_SCENE_WIDTH_HALF;
+ break;
+ case CXuiSceneBase::e_BaseScene_Top_Left:
+ textXOffset = SAFEZONE_HALF_WIDTH;
+ sceneWidth = XUI_BASE_SCENE_WIDTH_HALF;
+ break;
+ case CXuiSceneBase::e_BaseScene_Top_Right:
+ textXOffset = 0;
+ sceneWidth = XUI_BASE_SCENE_WIDTH_HALF;
+ break;
+ case CXuiSceneBase::e_BaseScene_Bottom_Left:
+ textXOffset = SAFEZONE_HALF_WIDTH;
+ sceneWidth = XUI_BASE_SCENE_WIDTH_HALF;
+ break;
+ case CXuiSceneBase::e_BaseScene_Bottom_Right:
+ textXOffset = 0;
+ sceneWidth = XUI_BASE_SCENE_WIDTH_HALF;
+ break;
+ default:
+ textXOffset = SAFEZONE_HALF_WIDTH;
+ break;
+ }
+ float fWidth, fHeight;
+ XuiElementGetBounds( m_hCurrentChatScene[iPad], &fWidth, &fHeight );
+ XuiElementSetBounds(m_hCurrentChatScene[iPad],sceneWidth, fHeight );
+
+ CScene_Chat* chatScene;
+ VOID *pObj;
+ XuiObjectFromHandle( m_hCurrentChatScene[iPad], &pObj );
+ chatScene = (CScene_Chat *)pObj;
+ chatScene->OffsetTextPosition( textXOffset );
+
+ XuiElementSetPosition( m_hCurrentChatScene[iPad], &vPosition );
+}
+
+void CConsoleMinecraftApp::ReloadHudScene(int iPad, bool bJoining /*= false*/, bool bForce /*= false*/)
+{
+ if(m_hFirstHudScene[iPad] == NULL || m_hCurrentHudScene[iPad] == NULL) return;
+
+ // Re-create the hud scene so it is the correct size. It starts without any visible lines.
+ BOOL hudSceneVisible = FALSE;
+ if( m_hFirstHudScene[iPad] != m_hCurrentHudScene[iPad] )
+ {
+ hudSceneVisible = XuiElementIsShown(m_hCurrentHudScene[iPad]);
+ }
+
+ int iLocalPlayerC=GetLocalPlayerCount();
+ // we need to decide whether to close the xui scene or just reposition it
+
+ if( bForce ||
+ (bJoining && iLocalPlayerC==2) ||
+ (!bJoining && iLocalPlayerC==1) ||
+ m_hFirstHudScene[iPad] == m_hCurrentHudScene[iPad])
+ {
+ if( m_hFirstHudScene[iPad] != m_hCurrentHudScene[iPad] ) XuiSceneNavigateBack(m_hCurrentHudScene[iPad], m_hFirstHudScene[iPad],iPad);
+ m_hCurrentHudScene[iPad] = m_hFirstHudScene[iPad];
+ app.NavigateToScene(iPad,eUIScene_HUD,NULL,true);
+
+ XuiElementSetShow( m_hCurrentHudScene[iPad], hudSceneVisible);
+ }
+}
+
+void CConsoleMinecraftApp::AdjustSplitscreenScene(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, bool bAdjustXForSafeArea)
+{
+ D3DXVECTOR3 vec;
+
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+
+ // store this for any change of screensection
+ XuiElementGetPosition(hScene,pvOriginalPosition);
+ vec=*pvOriginalPosition;
+
+ if( pMinecraft->localplayers[iPad] != NULL )
+ {
+ switch( pMinecraft->localplayers[iPad]->m_iScreenSection)
+ {
+ case C4JRender::VIEWPORT_TYPE_SPLIT_TOP:
+ // move the scene down
+ vec.y+=fSafeZoneY;
+ break;
+ case C4JRender::VIEWPORT_TYPE_SPLIT_BOTTOM:
+ break;
+ case C4JRender::VIEWPORT_TYPE_SPLIT_LEFT:
+ break;
+ case C4JRender::VIEWPORT_TYPE_SPLIT_RIGHT:
+ // move the scene left
+ if(bAdjustXForSafeArea) vec.x-=fSafeZoneX;
+ break;
+ case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_LEFT:
+ // move the scene down
+ vec.y+=fSafeZoneY;
+ break;
+ case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_RIGHT:
+ // move the scene down
+ vec.y+=fSafeZoneY;
+ // move the scene left
+ if(bAdjustXForSafeArea) vec.x-=fSafeZoneX;
+ break;
+ case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_LEFT:
+ break;
+ case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_RIGHT:
+ // move the scene left
+ if(bAdjustXForSafeArea) vec.x-=fSafeZoneX;
+ break;
+ }
+ }
+ XuiElementSetPosition(hScene,&vec);
+}
+
+void CConsoleMinecraftApp::AdjustSplitscreenScene(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, float fXAdjust)
+{
+ D3DXVECTOR3 vec;
+
+ Minecraft *pMinecraft = Minecraft::GetInstance();
+
+ // store this for any change of screensection
+
+ XuiElementGetPosition(hScene,pvOriginalPosition);
+
+ vec=*pvOriginalPosition;
+
+ if( pMinecraft->localplayers[iPad] != NULL )
+ {
+ switch( pMinecraft->localplayers[iPad]->m_iScreenSection)
+ {
+ case C4JRender::VIEWPORT_TYPE_SPLIT_TOP:
+ // move the scene down
+ vec.y+=fSafeZoneY;
+ // 4J-PB - don't adjust things in horizontal splitscreen
+ //vec.x+=fXAdjust;
+ break;
+ case C4JRender::VIEWPORT_TYPE_SPLIT_BOTTOM:
+ // 4J-PB - don't adjust things in horizontal splitscreen
+ //vec.x+=fXAdjust;
+ break;
+ case C4JRender::VIEWPORT_TYPE_SPLIT_LEFT:
+ vec.x+=fXAdjust;
+ break;
+ case C4JRender::VIEWPORT_TYPE_SPLIT_RIGHT:
+ // move the scene left
+ vec.x-=fSafeZoneX-fXAdjust;
+ break;
+ case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_LEFT:
+ // move the scene down
+ vec.y+=fSafeZoneY;
+ vec.x+=fXAdjust;
+ break;
+ case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_RIGHT:
+ // move the scene down
+ vec.y+=fSafeZoneY;
+ // move the scene left
+ vec.x-=fSafeZoneX-fXAdjust;
+ break;
+ case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_LEFT:
+ vec.x+=fXAdjust;
+ break;
+ case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_RIGHT:
+ // move the scene left
+ vec.x-=fSafeZoneX-fXAdjust;
+ break;
+ }
+ }
+
+ XuiElementSetPosition(hScene,&vec);
+}
+
+HRESULT CConsoleMinecraftApp::AdjustSplitscreenScene_PlayerChanged(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, bool bJoining, bool bAdjustXForSafeArea)
+{
+ int iLocalPlayerC=GetLocalPlayerCount();
+ Minecraft *pMinecraft=Minecraft::GetInstance();
+
+ // we need to decide whether to close the xui scene or just reposition it
+
+ if((bJoining && iLocalPlayerC==2) ||
+ (!bJoining && iLocalPlayerC==1))
+ {
+ // Fix for #101078 - TCR #15: BAS Sign-in Changes: TU12: Signing out the secondary player's profile during the End Poem in local splitscreen game causes Host invincibility and corruption of End Portal.
+ if(!IsSceneInStack(iPad,eUIScene_EndPoem))
+ {
+ // close the scene!
+ ui.SetTooltips(iPad, -1);
+ // kill the xui
+ ui.CloseUIScenes(iPad);
+ }
+
+ // 4J Stu - Return S_FALSE to inidicate that the scene has been closed
+ return S_FALSE;
+ }
+ else if ( pMinecraft->localplayers[iPad] != NULL )
+ {
+ // we need to reposition the scenes since the players will have moved around
+
+ D3DXVECTOR3 vec=*pvOriginalPosition;
+
+ switch( pMinecraft->localplayers[iPad]->m_iScreenSection)
+ {
+ case C4JRender::VIEWPORT_TYPE_SPLIT_TOP:
+ // move the scene down
+ vec.y+=fSafeZoneY;
+ break;
+ case C4JRender::VIEWPORT_TYPE_SPLIT_BOTTOM:
+ break;
+ case C4JRender::VIEWPORT_TYPE_SPLIT_LEFT:
+ break;
+ case C4JRender::VIEWPORT_TYPE_SPLIT_RIGHT:
+ // move the scene left
+ if(bAdjustXForSafeArea) vec.x-=fSafeZoneX;
+ break;
+ case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_LEFT:
+ // move the scene down
+ vec.y+=fSafeZoneY;
+ break;
+ case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_RIGHT:
+ // move the scene down
+ vec.y+=fSafeZoneY;
+ // move the scene left
+ if(bAdjustXForSafeArea) vec.x-=fSafeZoneX;
+ break;
+ case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_LEFT:
+ break;
+ case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_RIGHT:
+ // move the scene left
+ if(bAdjustXForSafeArea) vec.x-=fSafeZoneX;
+ break;
+ }
+ XuiElementSetPosition(hScene,&vec);
+ }
+
+ return S_OK;
+}
+
+HRESULT CConsoleMinecraftApp::AdjustSplitscreenScene_PlayerChanged(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, bool bJoining, float fXAdjust)
+{
+ int iLocalPlayerC=GetLocalPlayerCount();
+ Minecraft *pMinecraft=Minecraft::GetInstance();
+
+ // we need to decide whether to close the xui scene or just reposition it
+
+ if((bJoining && iLocalPlayerC==2) ||
+ (!bJoining && iLocalPlayerC==1))
+ {
+ // close the scene!
+ ui.SetTooltips(iPad, -1);
+ // kill the xui
+ ui.CloseUIScenes(iPad);
+
+ // 4J Stu - Return S_FALSE to inidicate that the scene has been closed
+ return S_FALSE;
+ }
+ else if ( pMinecraft->localplayers[iPad] != NULL )
+ {
+ // we need to reposition the scenes since the players will have moved around
+
+ D3DXVECTOR3 vec=*pvOriginalPosition;
+
+ switch( pMinecraft->localplayers[iPad]->m_iScreenSection)
+ {
+ case C4JRender::VIEWPORT_TYPE_SPLIT_TOP:
+ // move the scene down
+ vec.y+=fSafeZoneY;
+ vec.x+=fXAdjust;
+ break;
+ case C4JRender::VIEWPORT_TYPE_SPLIT_BOTTOM:
+ vec.x+=fXAdjust;
+ break;
+ case C4JRender::VIEWPORT_TYPE_SPLIT_LEFT:
+ vec.x+=fXAdjust;
+ break;
+ case C4JRender::VIEWPORT_TYPE_SPLIT_RIGHT:
+ // move the scene left
+ vec.x-=fSafeZoneX-fXAdjust;
+ break;
+ case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_LEFT:
+ // move the scene down
+ vec.y+=fSafeZoneY;
+ vec.x+=fXAdjust;
+ break;
+ case C4JRender::VIEWPORT_TYPE_QUADRANT_TOP_RIGHT:
+ // move the scene down
+ vec.y+=fSafeZoneY;
+ // move the scene left
+ vec.x-=fSafeZoneX-fXAdjust;
+ break;
+ case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_LEFT:
+ vec.x+=fXAdjust;
+ break;
+ case C4JRender::VIEWPORT_TYPE_QUADRANT_BOTTOM_RIGHT:
+ // move the scene left
+ vec.x-=fSafeZoneX-fXAdjust;
+ break;
+ }
+ XuiElementSetPosition(hScene,&vec);
+ }
+
+ return S_OK;
+}
+
+void CConsoleMinecraftApp::StoreLaunchData()
+{
+ LD_DEMO* pDemoData = NULL;
+
+
+ DWORD dwStatus = XGetLaunchDataSize( &m_dwLaunchDataSize );
+ if( dwStatus == ERROR_SUCCESS )
+ {
+ m_pLaunchData = new BYTE [ m_dwLaunchDataSize ];
+ dwStatus = XGetLaunchData( m_pLaunchData, m_dwLaunchDataSize );
+ pDemoData = (LD_DEMO*)( m_pLaunchData );
+ if( pDemoData->dwID != LAUNCH_DATA_DEMO_ID )
+ {
+ // custom launch data; must be handled separately
+ }
+ }
+}
+
+void CConsoleMinecraftApp::ExitGame()
+{
+ if(m_pLaunchData!=NULL)
+ {
+ LD_DEMO* pDemoData = (LD_DEMO*)( m_pLaunchData );
+ XSetLaunchData( pDemoData, m_dwLaunchDataSize );
+ XLaunchNewImage( pDemoData->szLauncherXEX, 0 );
+ }
+ else
+ {
+ XLaunchNewImage( XLAUNCH_KEYWORD_DASH_ARCADE, 0 );
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+// FatalLoadError
+//
+// This is called when we can't load one of the required files at startup
+// It tends to mean the files have been corrupted.
+// We have to assume that we've not been able to load the text for the game.
+//
+//////////////////////////////////////////////////////////////////////////
+void CConsoleMinecraftApp::FatalLoadError(void)
+{
+ XOVERLAPPED MessageBoxOverlap;
+
+ memset(&MessageBoxOverlap, 0, sizeof(MessageBoxOverlap));
+
+ //HANDLE messageBoxThread = CreateThread(NULL, 0, &CMinecraftApp::ShowFatalLoadMessageBoxThreadProc, &MessageBoxOverlap, 0, NULL);
+ //
+ //WaitForSingleObjectEx(messageBoxThread, // handle to object
+ // 20000, // time-out interval
+ // FALSE // alertable option
+ //);
+ //XOVERLAPPED *MessageBoxOverlap = (XOVERLAPPED *)lpParameter;
+
+ wchar_t *aStrings[3];
+ LPCWSTR wszButtons[1];
+
+ // IDS_FATAL_ERROR_TITLE
+ // IDS_FATAL_ERROR_TEXT
+ // IDS_EXIT_GAME
+
+ switch (XGetLanguage())
+ {
+ case XC_LANGUAGE_GERMAN:
+ aStrings[0] = L"Ladefehler";
+ aStrings[1] = L"Minecraft: Xbox 360 Edition konnte nicht geladen werden und kann daher nicht fortgesetzt werden.";
+ aStrings[2] = L"Spiel verlassen";
+ break;
+ case XC_LANGUAGE_SPANISH:
+ aStrings[0] = L"Error al cargar";
+ aStrings[1] = L"Minecraft: Xbox 360 Edition ha experimentado un error al cargar y no puede continuar.";
+ aStrings[2] = L"Salir del juego";
+ break;
+ case XC_LANGUAGE_FRENCH:
+ aStrings[0] = L"Échec du chargement";
+ aStrings[1] = L"Le chargement de Minecraft: Xbox 360 Edition a échoué : impossible de continuer.";
+ aStrings[2] = L"Quitter le jeu";
+ break;
+ case XC_LANGUAGE_ITALIAN:
+ aStrings[0] = L"Errore caricamento";
+ aStrings[1] = L"Caricamento \"Minecraft: Xbox 360 Edition\" non riuscito, impossibile continuare.";
+ aStrings[2] = L"Esci dal gioco";
+ break;
+ case XC_LANGUAGE_JAPANESE:
+ aStrings[0] = L"ロード エラー";
+ aStrings[1] = L"Minecraft Xbox 360 版のロードに失敗しました。続行できません";
+ aStrings[2] = L"ゲームを終了";
+ break;
+ case XC_LANGUAGE_KOREAN:
+ aStrings[0] = L"불러오기 오류";
+ aStrings[1] = L"Minecraft: Xbox 360 Edition을 불러오는 중에 오류가 발생하여 계속할 수 없습니다.";
+ aStrings[2] = L"게임 나가기";
+ break;
+ case XC_LANGUAGE_PORTUGUESE:
+ if(XGetLocale()==XC_LOCALE_BRAZIL)
+ {
+ // Brazilian Portuguese
+ aStrings[0] = L"Erro de carregamento";
+ aStrings[1] = L"\"Minecraft: Xbox 360 Edition\" falhou ao carregar e não é possível continuar.";
+ aStrings[2] = L"Sair do Jogo";
+ }
+ else
+ {
+ aStrings[0] = L"Erro de Carregamento";
+ aStrings[1] = L"Não foi possível carregar \"Minecraft: Edição Xbox 360\" e não é possível continuar.";
+ aStrings[2] = L"Sair do Jogo";
+ }
+ break;
+ case XC_LANGUAGE_TCHINESE:
+ aStrings[0] = L"載入錯誤";
+ aStrings[1] = L"無法載入 Minecraft: Xbox 360 Edition,因此無法繼續。";
+ aStrings[2] = L"離開遊戲";
+ break;
+ default:
+ aStrings[0] = L"Loading Error";
+ aStrings[1] = L"\"Minecraft: Xbox 360 Edition\" has failed to load, and cannot continue.";
+ aStrings[2] = L"Exit Game";
+ break;
+ }
+ wszButtons[0] = aStrings[2];
+
+ MESSAGEBOX_RESULT MessageResult;
+
+ while (XShowMessageBoxUI(XUSER_INDEX_ANY, aStrings[0], aStrings[1], 1, wszButtons, 0, XMB_ALERTICON, &MessageResult, &MessageBoxOverlap) == ERROR_ACCESS_DENIED)
+ Sleep(250);
+ while (!XHasOverlappedIoCompleted(&MessageBoxOverlap))
+ {
+ RenderManager.SetClearColour(D3DCOLOR_RGBA(0,0,0,255));
+ RenderManager.Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ RenderManager.Present();
+ Sleep(250);
+ }
+
+ ExitGame();
+}
+
+WCHAR *CConsoleMinecraftApp::wchExt[MAX_EXTENSION_TYPES]=
+{
+ L"png",
+ L"inf",
+ L"dat",
+};
+
+int CConsoleMinecraftApp::GetLocalTMSFileIndex(WCHAR *wchTMSFile,bool bFilenameIncludesExtension,eFileExtensionType eEXT)
+{
+ WCHAR wchTemp[ 256 ];
+ WCHAR wchInFile[ 256 ];
+
+ if(bFilenameIncludesExtension)
+ {
+ swprintf(wchInFile, 256, L"%ls",wchTMSFile);
+ }
+ else
+ {
+ swprintf(wchInFile, 256, L"%ls.%ls",wchTMSFile,wchExt[eEXT]);
+ }
+
+ for(int i=0;i0)
+ {
+ //First is the language
+
+ unsigned int uiDecompSize=*(unsigned int *)pbPos;
+ unsigned int uiCompSize=((unsigned int *)pbPos)[1];
+
+ if(eType==eTPDFileType_Loc)
+ {
+ *pdwBytes= uiDecompSize;
+ *ppbData = new BYTE [uiDecompSize];
+
+ Compression::getCompression()->Decompress(*ppbData,(UINT *)pdwBytes,&((unsigned int *)pbPos)[2],uiCompSize);
+ return;
+ }
+ else
+ {
+ // skip over the data
+ pbPos=(PBYTE)&((unsigned int *)pbPos)[2];
+ pbPos+=uiCompSize;
+ }
+
+ uiDecompSize=*(unsigned int *)pbPos;
+ uiCompSize=((unsigned int *)pbPos)[1];
+
+ // second is the icon
+ if(eType==eTPDFileType_Icon)
+ {
+ *pdwBytes= uiDecompSize;
+ *ppbData = new BYTE [uiDecompSize];
+
+ Compression::getCompression()->Decompress(*ppbData,(UINT *)pdwBytes,&((unsigned int *)pbPos)[2],uiCompSize);
+ return;
+ }
+ else
+ {
+ // skip over the data
+ pbPos=(PBYTE)&((unsigned int *)pbPos)[2];
+ pbPos+=uiCompSize;
+ }
+
+ uiDecompSize=*(unsigned int *)pbPos;
+ uiCompSize=((unsigned int *)pbPos)[1];
+
+ // third is the comparison
+ if(eType==eTPDFileType_Comparison)
+ {
+ *pdwBytes= uiDecompSize;
+ *ppbData = new BYTE [uiDecompSize];
+
+ Compression::getCompression()->Decompress(*ppbData,(UINT *)pdwBytes,&((unsigned int *)pbPos)[2],uiCompSize);
+ return;
+ }
+ }
+
+ return;
+}
+
+
+LPCWSTR CConsoleMinecraftApp::GetString(int iID)
+{
+ return StringTable.Lookup(iID);
+}
+
+CXuiStringTable *CConsoleMinecraftApp::GetStringTable()
+{
+ return &StringTable;
+}
diff --git a/Minecraft.Client/Xbox/Xbox_App.h b/Minecraft.Client/Xbox/Xbox_App.h
new file mode 100644
index 00000000..f64e7142
--- /dev/null
+++ b/Minecraft.Client/Xbox/Xbox_App.h
@@ -0,0 +1,197 @@
+#pragma once
+
+#define GROUP_ID "A9C80F8E-5EAE-4883-89E6-0C456CADE89B"
+#define SAVETRANSFER_GROUP_ID "43FD7A62-2747-4489-8E71-F937163DC3C5"
+
+class XUI_FontRenderer;
+
+class CConsoleMinecraftApp : public CMinecraftApp
+{
+private:
+ bool m_bMenuDisplayed[XUSER_MAX_COUNT]; // track each players menu displayed
+ bool m_bMenuToBeClosed[XUSER_MAX_COUNT]; // actioned at the end of the game loop
+ bool m_bPauseMenuDisplayed[XUSER_MAX_COUNT];
+ bool m_bContainerMenuDisplayed[XUSER_MAX_COUNT];
+ bool m_bIgnoreAutosaveMenuDisplayed[XUSER_MAX_COUNT];
+ bool m_bIgnorePlayerJoinMenuDisplayed[XUSER_MAX_COUNT];
+ int m_iCountDown[XUSER_MAX_COUNT]; // ticks to block input
+
+ HXUIOBJ m_PlayerBaseScene[XUSER_MAX_COUNT];
+ HXUIOBJ m_hFirstScene[XUSER_MAX_COUNT];
+ HXUIOBJ m_hCurrentScene[XUSER_MAX_COUNT];
+ HXUIOBJ m_hFirstTutorialScene[XUSER_MAX_COUNT];
+ HXUIOBJ m_hCurrentTutorialScene[XUSER_MAX_COUNT];
+ HXUIOBJ m_hFirstChatScene[XUSER_MAX_COUNT];
+ HXUIOBJ m_hCurrentChatScene[XUSER_MAX_COUNT];
+ HXUIOBJ m_hFirstHudScene[XUSER_MAX_COUNT];
+ HXUIOBJ m_hCurrentHudScene[XUSER_MAX_COUNT];
+
+ std::list< SceneStackPair > m_sceneStack[XUSER_MAX_COUNT];
+
+ // XUI scene names
+ static WCHAR *wchSceneA[eUIScene_COUNT];
+ static WCHAR *wchTypefaceA[4];
+ static WCHAR *wchTypefaceLocatorA[4];
+
+ WCHAR m_SceneName[50];
+public:
+ CConsoleMinecraftApp();
+
+ virtual void SetRichPresenceContext(int iPad, int contextId);
+
+ virtual HRESULT RegisterXuiClasses();
+ virtual HRESULT UnregisterXuiClasses();
+
+ XTITLE_DEPLOYMENT_TYPE getDeploymentType() { return m_titleDeploymentType; }
+
+ void GetPreviewImage(int iPad,XSOCIAL_PREVIEWIMAGE *preview);
+
+ virtual HRESULT LoadXuiResources();
+
+ virtual void CaptureScreenshot(int iPad);
+ virtual void CaptureSaveThumbnail();
+ virtual void GetSaveThumbnail(PBYTE*,DWORD*);
+ virtual void ReleaseSaveThumbnail();
+ virtual void GetScreenshot(int iPad,PBYTE *pbData,DWORD *pdwSize);
+
+ virtual void RunFrame();
+
+ // TMS++
+ void TMSPP_SetTitleGroupID(LPCSTR szTitleGroupID);
+ void TMSPP_RetrieveFileList(int iPad,C4JStorage::eGlobalStorage eStorageFacility,CHAR *szPath,eTMSAction NextAction);
+ void TMSPP_ReadXuidsFile(int iPad,eTMSAction NextAction);
+ void TMSPP_ReadConfigFile(int iPad,eTMSAction NextAction);
+ void TMSPP_ReadDLCFile(int iPad,eTMSAction NextAction);
+ bool TMSPP_ReadBannedList(int iPad,eTMSAction NextAction);
+
+ static int Callback_TMSPPReadFileList(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILE_LIST pTmsFileList);
+ static int Callback_TMSPPReadXuidsFile(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData,LPCSTR szFilename);
+ static int Callback_TMSPPReadConfigFile(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData, LPCSTR szFilename);
+ static int Callback_TMSPPReadDLCFile(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData,LPCSTR szFilename);
+ static int Callback_TMSPPReadBannedList(void *pParam,int iPad, int iUserData, C4JStorage::PTMSPP_FILEDATA pFileData,LPCSTR szFilename);
+
+ virtual bool GetTMSGlobalFileListRead() { return m_bTMSPP_GlobalFileListRead;}
+ virtual bool GetTMSDLCInfoRead() { return m_bRead_TMS_DLCINFO_XML;}
+ virtual bool GetTMSXUIDsFileRead() { return m_bRead_TMS_XUIDS_XML;}
+
+ virtual int LoadLocalTMSFile(WCHAR *wchTMSFile);
+ virtual int LoadLocalTMSFile(WCHAR *wchTMSFile, eFileExtensionType eExt);
+ virtual void FreeLocalTMSFiles(eTMSFileType eType);
+ virtual int GetLocalTMSFileIndex(WCHAR *wchTMSFile,bool bFilenameIncludesExtension,eFileExtensionType eEXT=eFileExtensionType_PNG);
+ virtual int RetrieveTMSFileListIndex(WCHAR *wchTMSFile);
+
+ virtual void OverrideFontRenderer(bool set, bool immediate=true);
+ virtual void ToggleFontRenderer() { OverrideFontRenderer(!m_bFontRendererOverridden,false); }
+
+ virtual LPCWSTR GetString(int iID);
+ CXuiStringTable *GetStringTable();
+
+#ifdef _DEBUG_MENUS_ENABLED
+ void EnableDebugOverlay(bool enable, int iPad);
+#endif
+
+private:
+ XUI_FontRenderer *m_fontRenderer;
+ bool m_bFontRendererOverridden;
+ bool m_bOverrideFontRenderer;
+ // Global string table for this application.
+ CXuiStringTable StringTable;
+ CXuiScene debugContainerScene;
+
+
+ // screenshot for social post, and thumbnail for save
+ LPD3DXBUFFER m_ThumbnailBuffer;
+ LPD3DXBUFFER m_ScreenshotBuffer[XUSER_MAX_COUNT];
+
+private:
+ XTITLE_DEPLOYMENT_TYPE m_titleDeploymentType;
+ XSOCIAL_PREVIEWIMAGE m_PreviewBuffer[XUSER_MAX_COUNT];
+
+ bool m_bTMSPP_GlobalFileListRead; // track whether we have already read the file list from TMSPP
+ bool m_bRead_TMS_XUIDS_XML; // track whether we have already read the TMS xuids.xml file
+ bool m_bRead_TMS_Config_XML; // track whether we have already read the config file
+ bool m_bRead_TMS_DLCINFO_XML; // track whether we have already read the TMS DLC.xml file
+ BYTE *m_pXuidsFileBuffer;
+ DWORD m_dwXuidsFileSize;
+
+#ifdef _DEBUG_MENUS_ENABLED
+ bool debugOverlayCreated;
+ HXUIOBJ m_hDebugOverlay;
+#endif
+
+public:
+
+ void ReadBannedList(int iPad, eTMSAction action=(eTMSAction)0, bool bCallback=false);
+// void ReadXuidsFileFromTMS(int iPad,eTMSAction NextAction,bool bCallback);
+// void ReadDLCFileFromTMS(int iPad,eTMSAction NextAction, bool bCallback);
+
+// static int CallbackReadXuidsFileFromTMS(LPVOID lpParam, WCHAR *wchFilename, int iPad, bool bResult, int iAction);
+// static int CallbackDLCFileFromTMS(LPVOID lpParam, WCHAR *wchFilename, int iPad, bool bResult, int iAction);
+ static int CallbackBannedListFileFromTMS(LPVOID lpParam, WCHAR *wchFilename, int iPad, bool bResult, int iAction);
+
+ HRESULT RegisterFont(eFont eFontLanguage,eFont eFontFallback, bool bSetAsDefault=false);
+
+ WCHAR *GetSceneName(EUIScene eScene, bool bAppendToName,bool bSplitscreenScene);
+
+ virtual HRESULT NavigateToScene(int iPad,EUIScene eScene, void *initData = NULL, bool forceUsePad = false, BOOL bStayVisible=FALSE, HXUIOBJ *phResultingScene=NULL);
+ virtual HRESULT NavigateBack(int iPad, bool forceUsePad = false,EUIScene eScene = eUIScene_COUNT);
+ virtual HRESULT TutorialSceneNavigateBack(int iPad, bool forceUsePad = false);
+ virtual HRESULT CloseXuiScenes(int iPad, bool forceUsePad = false);
+ virtual HRESULT CloseAllPlayersXuiScenes();
+ virtual HRESULT CloseXuiScenesAndNavigateToScene(int iPad,EUIScene eScene, void *initData=NULL, bool forceUsePad = false);
+ virtual HRESULT RemoveBackScene(int iPad);
+ virtual HRESULT NavigateToHomeMenu();
+ D3DXVECTOR3 GetElementScreenPosition(HXUIOBJ hObj);
+ virtual void SetChatTextDisplayed(int iPad, bool bVal);
+ virtual void ReloadChatScene(int iPad, bool bJoining = false, bool bForce = false);
+ virtual void ReloadHudScene(int iPad, bool bJoining = false, bool bForce = false);
+
+ bool GetMenuDisplayed(int iPad);
+ void SetMenuDisplayed(int iPad,bool bVal);
+ void CheckMenuDisplayed();
+ bool IsSceneInStack(int iPad, EUIScene eScene);
+
+ bool IsPauseMenuDisplayed(int iPad) { return m_bPauseMenuDisplayed[iPad]; }
+ bool IsContainerMenuDisplayed(int iPad) { return m_bContainerMenuDisplayed[iPad]; }
+ bool IsIgnoreAutosaveMenuDisplayed(int iPad) { return m_bIgnoreAutosaveMenuDisplayed[iPad]; }
+ void SetIgnoreAutosaveMenuDisplayed(int iPad, bool displayed) { m_bIgnoreAutosaveMenuDisplayed[iPad] = displayed; }
+ bool IsIgnorePlayerJoinMenuDisplayed(int iPad) { return m_bIgnorePlayerJoinMenuDisplayed[iPad]; }
+ void SetIgnorePlayerJoinMenuDisplayed(int iPad, bool displayed) { m_bIgnorePlayerJoinMenuDisplayed[iPad] = displayed; }
+
+ HXUIOBJ GetFirstScene(int iPad)
+ {
+ return m_hFirstScene[iPad];
+ }
+ HXUIOBJ GetCurrentTutorialScene(int iPad)
+ {
+ return m_hCurrentTutorialScene[iPad];
+ }
+ HXUIOBJ GetCurrentHUDScene(int iPad)
+ {
+ return m_hCurrentHudScene[iPad];
+ }
+ HXUIOBJ GetCurrentScene(int iPad) { return m_hCurrentScene[iPad]; }
+
+ // Move splitscreen scenes based on which screen segment they are in
+ void AdjustSplitscreenScene(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, bool bAdjustXForSafeArea=true);
+ void AdjustSplitscreenScene(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, float fXAdjust);
+ HRESULT AdjustSplitscreenScene_PlayerChanged(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, bool bJoining, bool bAdjustXForSafeArea=true);
+ HRESULT AdjustSplitscreenScene_PlayerChanged(HXUIOBJ hScene,D3DXVECTOR3 *pvOriginalPosition, int iPad, bool bJoining, float fXAdjust);
+
+ // functions to store launch data, and to exit the game - required due to possibly being on a demo disc
+ virtual void StoreLaunchData();
+ virtual void ExitGame();
+ virtual void FatalLoadError();
+ static TMS_FILE TMSFileA[TMS_COUNT];
+
+
+ virtual void GetFileFromTPD(eTPDFileType eType,PBYTE pbData,DWORD dwBytes,PBYTE *ppbData,DWORD *pdwBytes );
+
+private:
+ static WCHAR m_wchTMSXZP[];
+ static WCHAR *CConsoleMinecraftApp::wchExt[MAX_EXTENSION_TYPES];
+
+
+};
+
+extern CConsoleMinecraftApp app;
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Xbox_BuildVer.h b/Minecraft.Client/Xbox/Xbox_BuildVer.h
new file mode 100644
index 00000000..02cfd38b
--- /dev/null
+++ b/Minecraft.Client/Xbox/Xbox_BuildVer.h
@@ -0,0 +1,53 @@
+
+#pragma once
+
+
+#define VER_PRODUCTMAJORVERSION 0
+#define VER_PRODUCTMINORVERSION 0
+#define VER_PRODUCTBUILD 232
+#define VER_PRODUCTBUILD_QFE 0
+
+#define VER_FILEVERSION_STRING "1.2"
+#define VER_PRODUCTVERSION_STRING VER_FILEVERSION_STRING
+#define VER_FILEVERSION_STRING_W L"1.2"
+#define VER_PRODUCTVERSION_STRING_W VER_FILEVERSION_STRING_W
+
+#define VER_FILEBETA_STR ""
+#undef VER_FILEVERSION
+#define VER_FILEVERSION VER_PRODUCTMAJORVERSION, VER_PRODUCTMINORVERSION, VER_PRODUCTBUILD, VER_PRODUCTBUILD_QFE
+#define VER_PRODUCTVERSION VER_PRODUCTMAJORVERSION, VER_PRODUCTMINORVERSION, VER_PRODUCTBUILD, VER_PRODUCTBUILD_QFE
+
+#if (VER_PRODUCTBUILD < 10)
+#define VER_FILEBPAD "000"
+#define VER_FILEBPAD_W L"000"
+#elif (VER_PRODUCTBUILD < 100)
+#define VER_FILEBPAD "00"
+#define VER_FILEBPAD_W L"00"
+#elif (VER_PRODUCTBUILD < 1000)
+#define VER_FILEBPAD "0"
+#define VER_FILEBPAD_W L"0"
+#else
+#define VER_FILEBPAD
+#define VER_FILEBPAD_W
+#endif
+
+#define VER_WIDE_PREFIX(x) L##x
+
+#define VER_FILEVERSION_STR2(x,y) VER_FILEVERSION_STRING "." VER_FILEBPAD #x "." #y
+#define VER_FILEVERSION_STR2_W(x,y) VER_FILEVERSION_STRING_W L"." VER_FILEBPAD_W VER_WIDE_PREFIX(#x) L"." VER_WIDE_PREFIX(#y)
+#define VER_FILEVERSION_STR1(x,y) VER_FILEVERSION_STR2(x, y)
+#define VER_FILEVERSION_STR1_W(x,y) VER_FILEVERSION_STR2_W(x, y)
+
+#undef VER_FILEVERSION_STR
+#define VER_FILEVERSION_STR VER_FILEVERSION_STR1(VER_PRODUCTBUILD, VER_PRODUCTBUILD_QFE)
+#define VER_PRODUCTVERSION_STR VER_FILEVERSION_STR1(VER_PRODUCTBUILD, VER_PRODUCTBUILD_QFE)
+
+#define VER_FILEVERSION_STR_W VER_FILEVERSION_STR1_W(VER_PRODUCTBUILD, VER_PRODUCTBUILD_QFE)
+#define VER_PRODUCTVERSION_STR_W VER_FILEVERSION_STR1_W(VER_PRODUCTBUILD, VER_PRODUCTBUILD_QFE)
+
+#if (VER_PRODUCTBUILD_QFE >= 256)
+#error "QFE number cannot exceed 255"
+#endif
+
+
+
diff --git a/Minecraft.Client/Xbox/Xbox_Minecraft.cpp b/Minecraft.Client/Xbox/Xbox_Minecraft.cpp
new file mode 100644
index 00000000..04e4a8d5
--- /dev/null
+++ b/Minecraft.Client/Xbox/Xbox_Minecraft.cpp
@@ -0,0 +1,1077 @@
+// Minecraft.cpp : Defines the entry point for the application.
+//
+
+#include "stdafx.h"
+#include
+#include
+#include "GameConfig\Minecraft.spa.h"
+#include "..\MinecraftServer.h"
+#include "..\LocalPlayer.h"
+#include "..\..\Minecraft.World\ItemInstance.h"
+#include "..\..\Minecraft.World\MapItem.h"
+#include "..\..\Minecraft.World\Recipes.h"
+#include "..\..\Minecraft.World\Recipy.h"
+#include "..\..\Minecraft.World\Language.h"
+#include "..\..\Minecraft.World\StringHelpers.h"
+#include "..\..\Minecraft.World\AABB.h"
+#include "..\..\Minecraft.World\Vec3.h"
+#include "..\..\Minecraft.World\Level.h"
+#include "..\..\Minecraft.World\net.minecraft.world.level.tile.h"
+#include "..\ClientConnection.h"
+#include "..\User.h"
+#include "..\..\Minecraft.World\Socket.h"
+#include "..\..\Minecraft.World\ThreadName.h"
+#include "..\..\Minecraft.Client\StatsCounter.h"
+#include "..\ConnectScreen.h"
+#include "Social\SocialManager.h"
+#include "Leaderboards\XboxLeaderboardManager.h"
+#include "..\Common\XUI\XUI_Scene_Container.h"
+#include "..\..\Minecraft.Client\Tesselator.h"
+#include "..\..\Minecraft.Client\Options.h"
+#include "Sentient\SentientManager.h"
+#include "..\..\Minecraft.World\IntCache.h"
+#include "..\Textures.h"
+#include "..\..\Minecraft.World\compression.h"
+#include "..\..\Minecraft.World\OldChunkStorage.h"
+//#include "..\..\Minecraft.Client\SoundEngine.h"
+
+#include
+
+void GetRenderAndSamplerStates(IDirect3DDevice9 *pDevice,DWORD *RenderStateA,DWORD *SamplerStateA);
+void SetRenderAndSamplerStates(IDirect3DDevice9 *pDevice,DWORD *RenderStateA,DWORD *SamplerStateA);
+
+// 4J-PB - Done - #pragma message(__LOC__"Theme should be GREEN SIGNED before _FINAL_BUILD")
+
+#define THEME_NAME "584111F70AAAAAAA"
+#define THEME_FILESIZE 2797568
+//#define THREE_MB 3145728 // minimum save size (checking for this on a selected device)
+//#define FIVE_MB 5242880 // minimum save size (checking for this on a selected device)
+//#define FIFTY_TWO_MB (1024*1024*52) // Maximum TCR space required for a save (checking for this on a selected device)
+#define FIFTY_ONE_MB (1000000*51) // Maximum TCR space required for a save is 52MB (checking for this on a selected device)
+
+//#define PROFILE_VERSION 3 // new version for the interim bug fix 166 TU
+#define NUM_PROFILE_VALUES 5
+#define NUM_PROFILE_SETTINGS 4
+DWORD dwProfileSettingsA[NUM_PROFILE_VALUES]=
+{
+ XPROFILE_OPTION_CONTROLLER_VIBRATION,
+ XPROFILE_GAMER_YAXIS_INVERSION,
+ XPROFILE_GAMER_CONTROL_SENSITIVITY,
+ XPROFILE_GAMER_ACTION_MOVEMENT_CONTROL,
+ XPROFILE_TITLE_SPECIFIC1,
+};
+
+D3DRENDERSTATETYPE RenderStateModes[]=
+{
+ D3DRS_FILLMODE,
+ D3DRS_CULLMODE,
+ D3DRS_ALPHABLENDENABLE,
+ D3DRS_VIEWPORTENABLE,
+ D3DRS_BLENDOP,
+ D3DRS_SRCBLEND,
+ D3DRS_DESTBLEND,
+ D3DRS_COLORWRITEENABLE
+};
+
+D3DSAMPLERSTATETYPE SamplerStateModes[]=
+{
+ D3DSAMP_MINFILTER,
+ D3DSAMP_MAGFILTER,
+ D3DSAMP_MIPFILTER,
+ D3DSAMP_ADDRESSU,
+ D3DSAMP_ADDRESSV
+};
+
+//-------------------------------------------------------------------------------------
+// Time Since fAppTime is a float, we need to keep the quadword app time
+// as a LARGE_INTEGER so that we don't lose precision after running
+// for a long time.
+//-------------------------------------------------------------------------------------
+
+
+BOOL g_bWidescreen = TRUE;
+
+
+void DefineActions(void)
+{
+ // The app needs to define the actions required, and the possible mappings for these
+
+ // Split into Menu actions, and in-game actions
+
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_A, _360_JOY_BUTTON_A);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_B, _360_JOY_BUTTON_B);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_X, _360_JOY_BUTTON_X);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_Y, _360_JOY_BUTTON_Y);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_OK, _360_JOY_BUTTON_A);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_CANCEL, _360_JOY_BUTTON_B);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_UP, _360_JOY_BUTTON_DPAD_UP | _360_JOY_BUTTON_LSTICK_UP);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_DOWN, _360_JOY_BUTTON_DPAD_DOWN | _360_JOY_BUTTON_LSTICK_DOWN);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_LEFT, _360_JOY_BUTTON_DPAD_LEFT | _360_JOY_BUTTON_LSTICK_LEFT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_RIGHT, _360_JOY_BUTTON_DPAD_RIGHT | _360_JOY_BUTTON_LSTICK_RIGHT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_PAGEUP, _360_JOY_BUTTON_LT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_PAGEDOWN, _360_JOY_BUTTON_RT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_RIGHT_SCROLL, _360_JOY_BUTTON_RB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_LEFT_SCROLL, _360_JOY_BUTTON_LB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_PAUSEMENU, _360_JOY_BUTTON_START);
+
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_STICK_PRESS, _360_JOY_BUTTON_LTHUMB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_OTHER_STICK_PRESS, _360_JOY_BUTTON_RTHUMB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_OTHER_STICK_UP, _360_JOY_BUTTON_RSTICK_UP);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_OTHER_STICK_DOWN, _360_JOY_BUTTON_RSTICK_DOWN);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_OTHER_STICK_LEFT, _360_JOY_BUTTON_RSTICK_LEFT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,ACTION_MENU_OTHER_STICK_RIGHT, _360_JOY_BUTTON_RSTICK_RIGHT);
+
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_JUMP, _360_JOY_BUTTON_A);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_FORWARD, _360_JOY_BUTTON_LSTICK_UP);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_BACKWARD, _360_JOY_BUTTON_LSTICK_DOWN);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_LEFT, _360_JOY_BUTTON_LSTICK_LEFT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_RIGHT, _360_JOY_BUTTON_LSTICK_RIGHT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_LOOK_LEFT, _360_JOY_BUTTON_RSTICK_LEFT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_LOOK_RIGHT, _360_JOY_BUTTON_RSTICK_RIGHT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_LOOK_UP, _360_JOY_BUTTON_RSTICK_UP);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_LOOK_DOWN, _360_JOY_BUTTON_RSTICK_DOWN);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_USE, _360_JOY_BUTTON_LT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_ACTION, _360_JOY_BUTTON_RT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_RIGHT_SCROLL, _360_JOY_BUTTON_RB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_LEFT_SCROLL, _360_JOY_BUTTON_LB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_INVENTORY, _360_JOY_BUTTON_Y);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_PAUSEMENU, _360_JOY_BUTTON_START);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_DROP, _360_JOY_BUTTON_B);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_SNEAK_TOGGLE, _360_JOY_BUTTON_RTHUMB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_CRAFTING, _360_JOY_BUTTON_X);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_RENDER_THIRD_PERSON, _360_JOY_BUTTON_LTHUMB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_GAME_INFO, _360_JOY_BUTTON_BACK);
+
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_DPAD_LEFT, _360_JOY_BUTTON_DPAD_LEFT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_DPAD_RIGHT, _360_JOY_BUTTON_DPAD_RIGHT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_DPAD_UP, _360_JOY_BUTTON_DPAD_UP);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_0,MINECRAFT_ACTION_DPAD_DOWN, _360_JOY_BUTTON_DPAD_DOWN);
+
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_A, _360_JOY_BUTTON_A);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_B, _360_JOY_BUTTON_B);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_X, _360_JOY_BUTTON_X);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_Y, _360_JOY_BUTTON_Y);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_OK, _360_JOY_BUTTON_A);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_CANCEL, _360_JOY_BUTTON_B);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_UP, _360_JOY_BUTTON_DPAD_UP | _360_JOY_BUTTON_LSTICK_UP);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_DOWN, _360_JOY_BUTTON_DPAD_DOWN | _360_JOY_BUTTON_LSTICK_DOWN);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_LEFT, _360_JOY_BUTTON_DPAD_LEFT | _360_JOY_BUTTON_LSTICK_LEFT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_RIGHT, _360_JOY_BUTTON_DPAD_RIGHT | _360_JOY_BUTTON_LSTICK_RIGHT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_PAGEUP, _360_JOY_BUTTON_LB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_PAGEDOWN, _360_JOY_BUTTON_RT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_RIGHT_SCROLL, _360_JOY_BUTTON_RB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_LEFT_SCROLL, _360_JOY_BUTTON_LB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_PAUSEMENU, _360_JOY_BUTTON_START);
+
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_STICK_PRESS, _360_JOY_BUTTON_LTHUMB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_OTHER_STICK_PRESS, _360_JOY_BUTTON_RTHUMB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_OTHER_STICK_UP, _360_JOY_BUTTON_RSTICK_UP);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_OTHER_STICK_DOWN, _360_JOY_BUTTON_RSTICK_DOWN);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_OTHER_STICK_LEFT, _360_JOY_BUTTON_RSTICK_LEFT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,ACTION_MENU_OTHER_STICK_RIGHT, _360_JOY_BUTTON_RSTICK_RIGHT);
+
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_JUMP, _360_JOY_BUTTON_RB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_FORWARD, _360_JOY_BUTTON_LSTICK_UP);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_BACKWARD, _360_JOY_BUTTON_LSTICK_DOWN);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_LEFT, _360_JOY_BUTTON_LSTICK_LEFT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_RIGHT, _360_JOY_BUTTON_LSTICK_RIGHT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_LOOK_LEFT, _360_JOY_BUTTON_RSTICK_LEFT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_LOOK_RIGHT, _360_JOY_BUTTON_RSTICK_RIGHT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_LOOK_UP, _360_JOY_BUTTON_RSTICK_UP);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_LOOK_DOWN, _360_JOY_BUTTON_RSTICK_DOWN);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_USE, _360_JOY_BUTTON_RT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_ACTION, _360_JOY_BUTTON_LT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_RIGHT_SCROLL, _360_JOY_BUTTON_DPAD_RIGHT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_LEFT_SCROLL, _360_JOY_BUTTON_DPAD_LEFT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_INVENTORY, _360_JOY_BUTTON_Y);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_PAUSEMENU, _360_JOY_BUTTON_START);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_DROP, _360_JOY_BUTTON_B);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_SNEAK_TOGGLE, _360_JOY_BUTTON_LTHUMB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_CRAFTING, _360_JOY_BUTTON_X);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_RENDER_THIRD_PERSON, _360_JOY_BUTTON_RTHUMB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_GAME_INFO, _360_JOY_BUTTON_BACK);
+
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_DPAD_LEFT, _360_JOY_BUTTON_DPAD_LEFT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_DPAD_RIGHT, _360_JOY_BUTTON_DPAD_RIGHT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_DPAD_UP, _360_JOY_BUTTON_DPAD_UP);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_1,MINECRAFT_ACTION_DPAD_DOWN, _360_JOY_BUTTON_DPAD_DOWN);
+
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_A, _360_JOY_BUTTON_A);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_B, _360_JOY_BUTTON_B);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_X, _360_JOY_BUTTON_X);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_Y, _360_JOY_BUTTON_Y);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_OK, _360_JOY_BUTTON_A);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_CANCEL, _360_JOY_BUTTON_B);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_UP, _360_JOY_BUTTON_DPAD_UP | _360_JOY_BUTTON_LSTICK_UP);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_DOWN, _360_JOY_BUTTON_DPAD_DOWN | _360_JOY_BUTTON_LSTICK_DOWN);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_LEFT, _360_JOY_BUTTON_DPAD_LEFT | _360_JOY_BUTTON_LSTICK_LEFT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_RIGHT, _360_JOY_BUTTON_DPAD_RIGHT | _360_JOY_BUTTON_LSTICK_RIGHT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_PAGEUP, _360_JOY_BUTTON_DPAD_UP | _360_JOY_BUTTON_LB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_PAGEDOWN, _360_JOY_BUTTON_RT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_RIGHT_SCROLL, _360_JOY_BUTTON_RB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_LEFT_SCROLL, _360_JOY_BUTTON_LB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_PAUSEMENU, _360_JOY_BUTTON_START);
+
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_STICK_PRESS, _360_JOY_BUTTON_LTHUMB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_OTHER_STICK_PRESS, _360_JOY_BUTTON_RTHUMB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_OTHER_STICK_UP, _360_JOY_BUTTON_RSTICK_UP);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_OTHER_STICK_DOWN, _360_JOY_BUTTON_RSTICK_DOWN);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_OTHER_STICK_LEFT, _360_JOY_BUTTON_RSTICK_LEFT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,ACTION_MENU_OTHER_STICK_RIGHT, _360_JOY_BUTTON_RSTICK_RIGHT);
+
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_JUMP, _360_JOY_BUTTON_LT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_FORWARD, _360_JOY_BUTTON_LSTICK_UP);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_BACKWARD, _360_JOY_BUTTON_LSTICK_DOWN);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_LEFT, _360_JOY_BUTTON_LSTICK_LEFT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_RIGHT, _360_JOY_BUTTON_LSTICK_RIGHT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_LOOK_LEFT, _360_JOY_BUTTON_RSTICK_LEFT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_LOOK_RIGHT, _360_JOY_BUTTON_RSTICK_RIGHT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_LOOK_UP, _360_JOY_BUTTON_RSTICK_UP);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_LOOK_DOWN, _360_JOY_BUTTON_RSTICK_DOWN);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_USE, _360_JOY_BUTTON_RT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_ACTION, _360_JOY_BUTTON_A);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_RIGHT_SCROLL, _360_JOY_BUTTON_DPAD_RIGHT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_LEFT_SCROLL, _360_JOY_BUTTON_DPAD_LEFT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_INVENTORY, _360_JOY_BUTTON_Y);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_PAUSEMENU, _360_JOY_BUTTON_START);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_DROP, _360_JOY_BUTTON_B);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_SNEAK_TOGGLE, _360_JOY_BUTTON_LB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_CRAFTING, _360_JOY_BUTTON_X);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_RENDER_THIRD_PERSON, _360_JOY_BUTTON_LTHUMB);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_GAME_INFO, _360_JOY_BUTTON_BACK);
+
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_DPAD_LEFT, _360_JOY_BUTTON_DPAD_LEFT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_DPAD_RIGHT, _360_JOY_BUTTON_DPAD_RIGHT);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_DPAD_UP, _360_JOY_BUTTON_DPAD_UP);
+ InputManager.SetGameJoypadMaps(MAP_STYLE_2,MINECRAFT_ACTION_DPAD_DOWN, _360_JOY_BUTTON_DPAD_DOWN);
+}
+
+
+
+
+HRESULT InitD3D( IDirect3DDevice9 **ppDevice,
+ D3DPRESENT_PARAMETERS *pd3dPP )
+{
+ IDirect3D9 *pD3D;
+
+ pD3D = Direct3DCreate9( D3D_SDK_VERSION );
+
+ // Set up the structure used to create the D3DDevice
+ // Using a permanent 1280x720 backbuffer now no matter what the actual video resolution.right Have also disabled letterboxing,
+ // which would letterbox a 1280x720 output if it detected a 4:3 video source - we're doing an anamorphic squash in this
+ // mode so don't need this functionality.
+
+ ZeroMemory( pd3dPP, sizeof(D3DPRESENT_PARAMETERS) );
+ XVIDEO_MODE VideoMode;
+ XGetVideoMode( &VideoMode );
+ g_bWidescreen = VideoMode.fIsWideScreen;
+ pd3dPP->BackBufferWidth = 1280;
+ pd3dPP->BackBufferHeight = 720;
+ pd3dPP->BackBufferFormat = D3DFMT_A8R8G8B8;
+ pd3dPP->BackBufferCount = 1;
+ pd3dPP->EnableAutoDepthStencil = TRUE;
+ pd3dPP->AutoDepthStencilFormat = D3DFMT_D24S8;
+ pd3dPP->SwapEffect = D3DSWAPEFFECT_DISCARD;
+ pd3dPP->PresentationInterval = D3DPRESENT_INTERVAL_ONE;
+ //pd3dPP->Flags = D3DPRESENTFLAG_NO_LETTERBOX;
+ //ERR[D3D]: Can't set D3DPRESENTFLAG_NO_LETTERBOX when wide-screen is enabled
+ // in the launcher/dashboard.
+ if(g_bWidescreen)
+ pd3dPP->Flags=0;
+ else
+ pd3dPP->Flags = D3DPRESENTFLAG_NO_LETTERBOX;
+
+ // Create the device.
+ return pD3D->CreateDevice(
+ 0,
+ D3DDEVTYPE_HAL,
+ NULL,
+ D3DCREATE_HARDWARE_VERTEXPROCESSING|D3DCREATE_BUFFER_2_FRAMES,
+ pd3dPP,
+ ppDevice );
+}
+//#define MEMORY_TRACKING
+
+#ifdef MEMORY_TRACKING
+void ResetMem();
+void DumpMem();
+void MemPixStuff();
+#else
+void MemSect(int sect)
+{
+}
+#endif
+
+IDirect3DDevice9 *g_pD3DDevice;
+
+//-------------------------------------------------------------------------------------
+// Name: main()
+// Desc: The application's entry point
+//-------------------------------------------------------------------------------------
+int __cdecl main()
+{
+ IDirect3DDevice9 *pDevice;
+ D3DPRESENT_PARAMETERS d3dpp;
+ HRESULT hr;
+ static bool bTrialTimerDisplayed=true;
+
+ //__debugbreak();
+
+#ifdef MEMORY_TRACKING
+ ResetMem();
+ MEMORYSTATUS memStat;
+ GlobalMemoryStatus(&memStat);
+ printf("RESETMEM start: Avail. phys %d\n",memStat.dwAvailPhys/(1024*1024));
+#endif
+ // capture the launch data if there is any
+ app.StoreLaunchData();
+
+#ifdef _DEBUG
+ // Output more verbose errors for sessions
+ XDebugSetSystemOutputLevel( HXAMAPP_XGI, 3 );
+#endif
+
+// DumpMem();
+
+ // Declare an instance of the XUI framework.
+
+ // XUI render can change the following renderstates, so store then before and re-set them after the xui render
+ /* The following D3DRENDERSTATETYPE D3D render states.
+
+ D3DRS_FILLMODE
+
+ D3DRS_CULLMODE
+
+ D3DRS_ALPHABLENDENABLE
+
+ D3DRS_VIEWPORTENABLE
+
+ D3DRS_BLENDOP
+
+ D3DRS_SRCBLEND
+
+ D3DRS_DESTBLEND
+
+ D3DRS_COLORWRITEENABLE
+ */
+
+ DWORD RenderStateA[8];
+ DWORD SamplerStateA[5];
+ DWORD RenderStateA2[8];
+ DWORD SamplerStateA2[5];
+
+ // Initialize D3D
+ hr = InitD3D( &pDevice, &d3dpp );
+ g_pD3DDevice = pDevice;
+ if( FAILED(hr) )
+ {
+ app.DebugPrintf
+ ( "Failed initializing D3D.\n" );
+ return -1;
+ }
+
+ // Initialize the application, assuming sharing of the d3d interface.
+ hr = app.InitShared( pDevice, &d3dpp,
+ XuiPNGTextureLoader );
+
+ if ( FAILED(hr) )
+ {
+ app.DebugPrintf
+ ( "Failed initializing application.\n" );
+
+ return -1;
+ }
+
+ RenderManager.Initialise(pDevice);
+
+ ////////////////
+ // Initialise //
+ ////////////////
+
+ // 4J Stu - XACT was creating these automatically, but we need them for QNet. The setup params
+ // are just copied from a sample app and may need changed for our purposes
+ // Start XAudio2
+ hr = XAudio2Create( &g_pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR );
+ if( FAILED( hr ) )
+ {
+ app.DebugPrintf( "Initializing XAudio2 failed (err = 0x%08x)!\n", hr );
+ app.FatalLoadError();
+ }
+
+ // Create an XAudio2 mastering voice (utilized by XHV2 when voice data is mixed to main speakers)
+ hr = g_pXAudio2->CreateMasteringVoice(&g_pXAudio2MasteringVoice, XAUDIO2_DEFAULT_CHANNELS, XAUDIO2_DEFAULT_SAMPLERATE, 0, 0, NULL);
+ if ( FAILED( hr ) )
+ {
+ app.DebugPrintf( "Creating XAudio2 mastering voice failed (err = 0x%08x)!\n", hr );
+ app.FatalLoadError();
+ }
+
+ app.InitTime();
+
+ // Set the number of possible joypad layouts that the user can switch between, and the number of actions
+ InputManager.Initialise(1,3,MINECRAFT_ACTION_MAX, ACTION_MAX_MENU);
+
+ // Set the default joypad action mappings for Minecraft
+ DefineActions();
+ InputManager.SetJoypadMapVal(0,0);
+ InputManager.SetKeyRepeatRate(0.3f,0.2f);
+
+
+ // Initialise the profile manager with the game Title ID, Offer ID, a profile version number, and the number of profile values and settings
+ ProfileManager.Initialise(TITLEID_MINECRAFT,
+ app.m_dwOfferID,
+ PROFILE_VERSION_10,
+ NUM_PROFILE_VALUES,
+ NUM_PROFILE_SETTINGS,
+ dwProfileSettingsA,
+ app.GAME_DEFINED_PROFILE_DATA_BYTES*XUSER_MAX_COUNT,
+ &app.uiGameDefinedDataChangedBitmask
+ );
+
+ // register the awards
+ ProfileManager.RegisterAward(eAward_TakingInventory, ACHIEVEMENT_01, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_GettingWood, ACHIEVEMENT_02, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_Benchmarking, ACHIEVEMENT_03, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_TimeToMine, ACHIEVEMENT_04, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_HotTopic, ACHIEVEMENT_05, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_AquireHardware, ACHIEVEMENT_06, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_TimeToFarm, ACHIEVEMENT_07, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_BakeBread, ACHIEVEMENT_08, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_TheLie, ACHIEVEMENT_09, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_GettingAnUpgrade, ACHIEVEMENT_10, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_DeliciousFish, ACHIEVEMENT_11, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_OnARail, ACHIEVEMENT_12, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_TimeToStrike, ACHIEVEMENT_13, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_MonsterHunter, ACHIEVEMENT_14, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_CowTipper, ACHIEVEMENT_15, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_WhenPigsFly, ACHIEVEMENT_16, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_LeaderOfThePack, ACHIEVEMENT_17, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_MOARTools, ACHIEVEMENT_18, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_DispenseWithThis, ACHIEVEMENT_19, eAwardType_Achievement);
+ ProfileManager.RegisterAward(eAward_InToTheNether, ACHIEVEMENT_20, eAwardType_Achievement);
+
+ ProfileManager.RegisterAward(eAward_mine100Blocks, GAMER_PICTURE_GAMERPIC1, eAwardType_GamerPic,false,app.GetStringTable(),IDS_AWARD_TITLE,IDS_AWARD_GAMERPIC1,IDS_CONFIRM_OK);
+ ProfileManager.RegisterAward(eAward_kill10Creepers, GAMER_PICTURE_GAMERPIC2, eAwardType_GamerPic,false,app.GetStringTable(),IDS_AWARD_TITLE,IDS_AWARD_GAMERPIC2,IDS_CONFIRM_OK);
+
+ ProfileManager.RegisterAward(eAward_eatPorkChop, AVATARASSETAWARD_PORKCHOP_TSHIRT, eAwardType_AvatarItem,false,app.GetStringTable(),IDS_AWARD_TITLE,IDS_AWARD_AVATAR1,IDS_CONFIRM_OK);
+ ProfileManager.RegisterAward(eAward_play100Days, AVATARASSETAWARD_WATCH, eAwardType_AvatarItem,false,app.GetStringTable(),IDS_AWARD_TITLE,IDS_AWARD_AVATAR2,IDS_CONFIRM_OK);
+ ProfileManager.RegisterAward(eAward_arrowKillCreeper, AVATARASSETAWARD_CAP, eAwardType_AvatarItem,false,app.GetStringTable(),IDS_AWARD_TITLE,IDS_AWARD_AVATAR3,IDS_CONFIRM_OK);
+
+ ProfileManager.RegisterAward(eAward_socialPost, 0, eAwardType_Theme,false,app.GetStringTable(),IDS_AWARD_TITLE,IDS_AWARD_THEME,IDS_CONFIRM_OK,THEME_NAME,THEME_FILESIZE);
+
+ // Rich Presence init - number of presences, number of contexts
+ ProfileManager.RichPresenceInit(4,1);
+ ProfileManager.RegisterRichPresenceContext(CONTEXT_GAME_STATE);
+
+ app.LoadXuiResources();
+
+ // initialise the storage manager with a default save display name, a Minimum save size, and a callback for displaying the saving message
+ StorageManager.Init(app.GetString(IDS_DEFAULT_SAVENAME),"savegame.dat",FIFTY_ONE_MB,&CConsoleMinecraftApp::DisplaySavingMessage,(LPVOID)&app,GROUP_ID);
+ // Set up the global title storage path
+ StorageManager.StoreTMSPathName();
+
+ // set a function to be called when there's a sign in change, so we can exit a level if the primary player signs out
+ ProfileManager.SetSignInChangeCallback(&CConsoleMinecraftApp::SignInChangeCallback,(LPVOID)&app);
+
+ // set a function to be called when the ethernet is disconnected, so we can back out if required
+ ProfileManager.SetNotificationsCallback(&CConsoleMinecraftApp::NotificationsCallback,(LPVOID)&app);
+
+ // Set a callback for the default player options to be set - when there is no profile data for the player
+ ProfileManager.SetDefaultOptionsCallback(&CConsoleMinecraftApp::DefaultOptionsCallback,(LPVOID)&app);
+ // Set a callback to deal with old profile versions needing updated to new versions
+ ProfileManager.SetOldProfileVersionCallback(&CConsoleMinecraftApp::OldProfileVersionCallback,(LPVOID)&app);
+
+ // Set a callback for when there is a read error on profile data
+ ProfileManager.SetProfileReadErrorCallback(&CConsoleMinecraftApp::ProfileReadErrorCallback,(LPVOID)&app);
+
+
+ // QNet needs to be setup after profile manager, as we do not want its Notify listener to handle
+ // XN_SYS_SIGNINCHANGED notifications. This does mean that we need to have a callback in the
+ // ProfileManager for XN_LIVE_INVITE_ACCEPTED for QNet.
+ g_NetworkManager.Initialise();
+
+ app.InitGameSettings();
+
+ // debug switch to trial version
+ ProfileManager.SetDebugFullOverride(true);
+
+ //ProfileManager.AddDLC(2);
+ StorageManager.SetDLCPackageRoot("DLCDrive");
+ StorageManager.RegisterMarketplaceCountsCallback(&CConsoleMinecraftApp::MarketplaceCountsCallback,(LPVOID)&app);
+ // Kinect !
+
+// if(XNuiGetHardwareStatus()!=0)
+// {
+// // If the Kinect Sensor is not physically connected, this function returns 0.
+// NuiInitialize(NUI_INITIALIZE_FLAG_USES_HIGH_QUALITY_COLOR | NUI_INITIALIZE_FLAG_USES_DEPTH |
+// NUI_INITIALIZE_FLAG_EXTRAPOLATE_FLOOR_PLANE | NUI_INITIALIZE_FLAG_USES_FITNESS | NUI_INITIALIZE_FLAG_NUI_GUIDE_DISABLED | NUI_INITIALIZE_FLAG_SUPPRESS_AUTOMATIC_UI,NUI_INITIALIZE_DEFAULT_HARDWARE_THREAD );
+// }
+
+ // Sentient !
+ hr = TelemetryManager->Init();
+
+ // Initialise TLS for tesselator, for this main thread
+ Tesselator::CreateNewThreadStorage(1024*1024);
+ // Initialise TLS for AABB and Vec3 pools, for this main thread
+ AABB::CreateNewThreadStorage();
+ Vec3::CreateNewThreadStorage();
+ IntCache::CreateNewThreadStorage();
+ Compression::CreateNewThreadStorage();
+ OldChunkStorage::CreateNewThreadStorage();
+ Level::enableLightingCache();
+ Tile::CreateNewThreadStorage();
+
+ Minecraft::main();
+ Minecraft *pMinecraft=Minecraft::GetInstance();
+ //bool bDisplayPauseMenu=false;
+
+ // set the default gamma level
+ float fVal=50.0f*327.68f;
+ RenderManager.UpdateGamma((unsigned short)fVal);
+
+ // load any skins
+ //app.AddSkinsToMemoryTextureFiles();
+
+ // set the achievement text for a trial achievement, now we have the string table loaded
+ ProfileManager.SetTrialTextStringTable(app.GetStringTable(),IDS_CONFIRM_OK, IDS_CONFIRM_CANCEL);
+ ProfileManager.SetTrialAwardText(eAwardType_Achievement,IDS_UNLOCK_TITLE,IDS_UNLOCK_ACHIEVEMENT_TEXT);
+ ProfileManager.SetTrialAwardText(eAwardType_GamerPic,IDS_UNLOCK_TITLE,IDS_UNLOCK_GAMERPIC_TEXT);
+ ProfileManager.SetTrialAwardText(eAwardType_AvatarItem,IDS_UNLOCK_TITLE,IDS_UNLOCK_AVATAR_TEXT);
+ ProfileManager.SetTrialAwardText(eAwardType_Theme,IDS_UNLOCK_TITLE,IDS_UNLOCK_THEME_TEXT);
+ ProfileManager.SetUpsellCallback(&app.UpsellReturnedCallback,&app);
+
+ // Set up a debug character press sequence
+#ifndef _FINAL_BUILD
+ app.SetDebugSequence("LRLRYYY");
+#endif
+
+ // Initialise the social networking manager.
+ CSocialManager::Instance()->Initialise();
+
+ // Update the base scene quick selects now that the minecraft class exists
+ //CXuiSceneBase::UpdateScreenSettings(0);
+
+ app.InitialiseTips();
+
+ DWORD initData=0;
+
+
+
+#ifndef _FINAL_BUILD
+#ifndef _DEBUG
+ #pragma message(__LOC__"Need to define the _FINAL_BUILD before submission")
+#endif
+#endif
+
+ // 4J-PB - Having to add in code to stop people being able to play a build from Partnernet unless they know the code
+#ifdef _CONTENT_PACKAGE
+#ifndef _FINAL_BUILD
+// app.SetPartnernetPasswordRunning(true);
+//
+// app.NavigateToScene(XUSER_INDEX_ANY,eUIScene_PartnernetPassword,&initData);
+//
+// while(app.PartnernetPasswordRunning())
+// {
+// ProfileManager.Tick();
+// InputManager.Tick(); // need to ruin this for the edit box
+//
+// // Tick XUI
+// app.RunFrame();
+//
+// // 4J : WESTY : Added to ensure we always have clear background for intro.
+// RenderManager.SetClearColour(D3DCOLOR_RGBA(0,0,0,255));
+// RenderManager.Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+//
+// // Render XUI
+// hr = app.Render();
+//
+// // Present the frame.
+// RenderManager.Present();
+//
+// // Update XUI Timers
+// hr = XuiTimersRun();
+// }
+#endif
+#endif
+ // Set the default sound levels
+ pMinecraft->options->set(Options::Option::MUSIC,1.0f);
+ pMinecraft->options->set(Options::Option::SOUND,1.0f);
+
+ app.NavigateToScene(XUSER_INDEX_ANY,eUIScene_Intro,&initData);
+
+ //Sleep(10000);
+
+ // Intro loop ?
+ while(app.IntroRunning())
+ {
+ ProfileManager.Tick();
+ // Tick XUI
+ app.RunFrame();
+
+ // 4J : WESTY : Added to ensure we always have clear background for intro.
+ RenderManager.SetClearColour(D3DCOLOR_RGBA(0,0,0,255));
+ RenderManager.Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ // Render XUI
+ hr = app.Render();
+
+ // Present the frame.
+ RenderManager.Present();
+
+ // Update XUI Timers
+ hr = XuiTimersRun();
+ }
+
+ while( TRUE )
+ {
+ if(pMinecraft->soundEngine->isStreamingWavebankReady() &&
+ !pMinecraft->soundEngine->GetIsPlayingStreamingGameMusic() &&
+ !pMinecraft->soundEngine->GetIsPlayingStreamingCDMusic() )
+ {
+ // play some music in the menus
+ pMinecraft->soundEngine->playStreaming(L"", 0, 0, 0, 0, 0, false);
+ }
+ app.UpdateTime();
+ PIXBeginNamedEvent(0,"Input manager tick");
+ InputManager.Tick();
+ PIXEndNamedEvent();
+ PIXBeginNamedEvent(0,"Profile manager tick");
+ ProfileManager.Tick();
+ PIXEndNamedEvent();
+ PIXBeginNamedEvent(0,"Storage manager tick");
+ StorageManager.Tick();
+ PIXEndNamedEvent();
+ PIXBeginNamedEvent(0,"Render manager tick");
+ RenderManager.Tick();
+ PIXEndNamedEvent();
+
+ // Tick the social networking manager.
+ PIXBeginNamedEvent(0,"Social network manager tick");
+ CSocialManager::Instance()->Tick();
+ PIXEndNamedEvent();
+
+ // Tick sentient.
+ PIXBeginNamedEvent(0,"Sentient tick");
+ MemSect(37);
+ TelemetryManager->Tick();
+ MemSect(0);
+ PIXEndNamedEvent();
+
+ PIXBeginNamedEvent(0,"Network manager do work #1");
+ g_NetworkManager.DoWork();
+ PIXEndNamedEvent();
+
+ LeaderboardManager::Instance()->Tick();
+ // Render game graphics.
+ if(app.GetGameStarted())
+ {
+ pMinecraft->run_middle();
+ app.SetAppPaused( g_NetworkManager.IsLocalGame() && g_NetworkManager.GetPlayerCount() == 1 && app.IsPauseMenuDisplayed(ProfileManager.GetPrimaryPad()) );
+ }
+ else
+ {
+ MemSect(28);
+ pMinecraft->soundEngine->tick(NULL, 0.0f);
+ MemSect(0);
+ pMinecraft->textures->tick(true,false);
+ IntCache::Reset();
+ if( app.GetReallyChangingSessionType() )
+ {
+ pMinecraft->tickAllConnections(); // Added to stop timing out when we are waiting after converting to an offline game
+ }
+ }
+
+ pMinecraft->soundEngine->playMusicTick();
+
+
+#ifdef MEMORY_TRACKING
+ static bool bResetMemTrack = false;
+ static bool bDumpMemTrack = false;
+
+ MemPixStuff();
+
+ if( bResetMemTrack )
+ {
+ ResetMem();
+ MEMORYSTATUS memStat;
+ GlobalMemoryStatus(&memStat);
+ printf("RESETMEM: Avail. phys %d\n",memStat.dwAvailPhys/(1024*1024));
+ bResetMemTrack = false;
+ }
+
+ if( bDumpMemTrack )
+ {
+ DumpMem();
+ bDumpMemTrack = false;
+ MEMORYSTATUS memStat;
+ GlobalMemoryStatus(&memStat);
+ printf("DUMPMEM: Avail. phys %d\n",memStat.dwAvailPhys/(1024*1024));
+ printf("Renderer used: %d\n",RenderManager.CBuffSize(-1));
+ }
+#endif
+#if 0
+ static bool bDumpTextureUsage = false;
+ if( bDumpTextureUsage )
+ {
+ RenderManager.TextureGetStats();
+ bDumpTextureUsage = false;
+ }
+#endif
+
+ app.HandleButtonPresses();
+
+ // store the minecraft renderstates, and re-set them after the xui render
+ GetRenderAndSamplerStates(pDevice,RenderStateA,SamplerStateA);
+
+ // Tick XUI
+ PIXBeginNamedEvent(0,"Xui running");
+ app.RunFrame();
+ PIXEndNamedEvent();
+
+ // Render XUI
+
+ PIXBeginNamedEvent(0,"XUI render");
+ MemSect(7);
+ hr = app.Render();
+ MemSect(0);
+ GetRenderAndSamplerStates(pDevice,RenderStateA2,SamplerStateA2);
+ PIXEndNamedEvent();
+
+ for(int i=0;i<8;i++)
+ {
+ if(RenderStateA2[i]!=RenderStateA[i])
+ {
+ //printf("Reseting RenderStateA[%d] after a XUI render\n",i);
+ pDevice->SetRenderState(RenderStateModes[i],RenderStateA[i]);
+ }
+ }
+ for(int i=0;i<5;i++)
+ {
+ if(SamplerStateA2[i]!=SamplerStateA[i])
+ {
+ //printf("Reseting SamplerStateA[%d] after a XUI render\n",i);
+ pDevice->SetSamplerState(0,SamplerStateModes[i],SamplerStateA[i]);
+ }
+ }
+
+ RenderManager.Set_matrixDirty();
+ // Present the frame.
+ PIXBeginNamedEvent(0,"Frame present");
+ RenderManager.Present();
+ PIXEndNamedEvent();
+
+ app.CheckMenuDisplayed();
+ PIXBeginNamedEvent(0,"Profile load check");
+ // has the game defined profile data been changed (by a profile load)
+ if(app.uiGameDefinedDataChangedBitmask!=0)
+ {
+ void *pData;
+ for(int i=0;istats[ i ]->clear();
+ pMinecraft->stats[i]->parse(pData);
+
+ // Update the selected item position based on the user's UI setting
+ CXuiSceneBase::UpdateSelectedItemPos(i);
+ }
+ }
+
+ // Check to see if we can post to social networks.
+ CSocialManager::Instance()->RefreshPostingCapability();
+
+ // clear the flag
+ app.uiGameDefinedDataChangedBitmask=0;
+
+ // Check if any profile write are needed
+ app.CheckGameSettingsChanged();
+
+ }
+ PIXEndNamedEvent();
+ app.TickDLCOffersRetrieved();
+ app.TickTMSPPFilesRetrieved();
+
+ PIXBeginNamedEvent(0,"Network manager do work #2");
+ g_NetworkManager.DoWork();
+ PIXEndNamedEvent();
+
+ PIXBeginNamedEvent(0,"Misc extra xui");
+ // Update XUI Timers
+ hr = XuiTimersRun();
+
+ // Any threading type things to deal with from the xui side?
+ app.HandleXuiActions();
+ PIXEndNamedEvent();
+
+ // 4J-PB - Update the trial timer display if we are in the trial version
+ if(!ProfileManager.IsFullVersion())
+ {
+ // display the trial timer
+ if(app.GetGameStarted())
+ {
+ // 4J-PB - if the game is paused, add the elapsed time to the trial timer count so it doesn't tick down
+ if(app.IsAppPaused())
+ {
+ app.UpdateTrialPausedTimer();
+ }
+ CXuiSceneBase::UpdateTrialTimer(ProfileManager.GetPrimaryPad());
+ }
+ }
+ else
+ {
+ // need to turn off the trial timer if it was on , and we've unlocked the full version
+ if(bTrialTimerDisplayed)
+ {
+ CXuiSceneBase::ShowTrialTimer(FALSE);
+ bTrialTimerDisplayed=false;
+ }
+ }
+
+ // Fix for #7318 - Title crashes after short soak in the leaderboards menu
+ // A memory leak was caused because the icon renderer kept creating new Vec3's because the pool wasn't reset
+ Vec3::resetPool();
+ }
+
+ // Free resources, unregister custom classes, and exit.
+ app.Uninit();
+ pDevice->Release();
+}
+
+
+void GetRenderAndSamplerStates(IDirect3DDevice9 *pDevice,DWORD *RenderStateA,DWORD *SamplerStateA)
+{
+ for(int i=0;i<8;i++)
+ {
+ pDevice->GetRenderState(RenderStateModes[i],&RenderStateA[i]);
+ }
+
+ for(int i=0;i<5;i++)
+ {
+ pDevice->GetSamplerState(0,SamplerStateModes[i],&SamplerStateA[i]);
+ }
+}
+
+void SetRenderAndSamplerStates(IDirect3DDevice9 *pDevice,DWORD *RenderStateA,DWORD *SamplerStateA)
+{
+ for(int i=0;i<8;i++)
+ {
+ pDevice->SetRenderState(RenderStateModes[i],RenderStateA[i]);
+ }
+
+ for(int i=0;i<5;i++)
+ {
+ pDevice->SetSamplerState(0,SamplerStateModes[i],SamplerStateA[i]);
+ }
+}
+
+#ifdef MEMORY_TRACKING
+
+int totalAllocGen = 0;
+unordered_map allocCounts;
+bool trackEnable = false;
+bool trackStarted = false;
+volatile size_t sizeCheckMin = 1160;
+volatile size_t sizeCheckMax = 1160;
+volatile int sectCheck = 48;
+CRITICAL_SECTION memCS;
+DWORD tlsIdx;
+
+LPVOID XMemAlloc(SIZE_T dwSize, DWORD dwAllocAttributes)
+{
+ if( !trackStarted )
+ {
+ void *p = XMemAllocDefault(dwSize,dwAllocAttributes);
+ size_t realSize = XMemSizeDefault(p, dwAllocAttributes);
+ totalAllocGen += realSize;
+ return p;
+ }
+
+ EnterCriticalSection(&memCS);
+
+ void *p=XMemAllocDefault(dwSize + 16,dwAllocAttributes);
+ size_t realSize = XMemSizeDefault(p,dwAllocAttributes) - 16;
+
+ if( trackEnable )
+ {
+#if 1
+ int sect = ((int) TlsGetValue(tlsIdx)) & 0x3f;
+ *(((unsigned char *)p)+realSize) = sect;
+
+ if( ( realSize >= sizeCheckMin ) && ( realSize <= sizeCheckMax ) && ( ( sect == sectCheck ) || ( sectCheck == -1 ) ) )
+ {
+ app.DebugPrintf("Found one\n");
+ }
+#endif
+
+ if( p )
+ {
+ totalAllocGen += realSize;
+ trackEnable = false;
+ int key = ( sect << 26 ) | realSize;
+ int oldCount = allocCounts[key];
+ allocCounts[key] = oldCount + 1;
+
+ trackEnable = true;
+ }
+ }
+
+ LeaveCriticalSection(&memCS);
+
+ return p;
+}
+
+void* operator new (size_t size)
+{
+ return (unsigned char *)XMemAlloc(size,MAKE_XALLOC_ATTRIBUTES(0,FALSE,TRUE,FALSE,0,XALLOC_PHYSICAL_ALIGNMENT_DEFAULT,XALLOC_MEMPROTECT_READWRITE,FALSE,XALLOC_MEMTYPE_HEAP));
+}
+
+void operator delete (void *p)
+{
+ XMemFree(p,MAKE_XALLOC_ATTRIBUTES(0,FALSE,TRUE,FALSE,0,XALLOC_PHYSICAL_ALIGNMENT_DEFAULT,XALLOC_MEMPROTECT_READWRITE,FALSE,XALLOC_MEMTYPE_HEAP));
+}
+
+void WINAPI XMemFree(PVOID pAddress, DWORD dwAllocAttributes)
+{
+ bool special = false;
+ if( dwAllocAttributes == 0 )
+ {
+ dwAllocAttributes = MAKE_XALLOC_ATTRIBUTES(0,FALSE,TRUE,FALSE,0,XALLOC_PHYSICAL_ALIGNMENT_DEFAULT,XALLOC_MEMPROTECT_READWRITE,FALSE,XALLOC_MEMTYPE_HEAP);
+ special = true;
+ }
+ if(!trackStarted )
+ {
+ size_t realSize = XMemSizeDefault(pAddress, dwAllocAttributes);
+ XMemFreeDefault(pAddress, dwAllocAttributes);
+ totalAllocGen -= realSize;
+ return;
+ }
+ EnterCriticalSection(&memCS);
+ if( pAddress )
+ {
+ size_t realSize = XMemSizeDefault(pAddress, dwAllocAttributes) - 16;
+
+ if(trackEnable)
+ {
+ int sect = *(((unsigned char *)pAddress)+realSize);
+ totalAllocGen -= realSize;
+ trackEnable = false;
+ int key = ( sect << 26 ) | realSize;
+ int oldCount = allocCounts[key];
+ allocCounts[key] = oldCount - 1;
+ trackEnable = true;
+
+ }
+ XMemFreeDefault(pAddress, dwAllocAttributes);
+ }
+ LeaveCriticalSection(&memCS);
+}
+
+SIZE_T WINAPI XMemSize(
+ PVOID pAddress,
+ DWORD dwAllocAttributes
+)
+{
+ if( trackStarted )
+ {
+ return XMemSizeDefault(pAddress, dwAllocAttributes) - 16;
+ }
+ else
+ {
+ return XMemSizeDefault(pAddress, dwAllocAttributes);
+ }
+}
+
+
+void DumpMem()
+{
+ int totalLeak = 0;
+ for(auto it = allocCounts.begin(); it != allocCounts.end(); it++ )
+ {
+ if(it->second > 0 )
+ {
+ app.DebugPrintf("%d %d %d %d\n",( it->first >> 26 ) & 0x3f,it->first & 0x03ffffff, it->second, (it->first & 0x03ffffff) * it->second);
+ totalLeak += ( it->first & 0x03ffffff ) * it->second;
+ }
+ }
+ app.DebugPrintf("Total %d\n",totalLeak);
+}
+
+void ResetMem()
+{
+ if( !trackStarted )
+ {
+ trackEnable = true;
+ trackStarted = true;
+ totalAllocGen = 0;
+ InitializeCriticalSection(&memCS);
+ tlsIdx = TlsAlloc();
+ }
+ EnterCriticalSection(&memCS);
+ trackEnable = false;
+ allocCounts.clear();
+ trackEnable = true;
+ LeaveCriticalSection(&memCS);
+}
+
+void MemSect(int section)
+{
+ unsigned int value = (unsigned int)TlsGetValue(tlsIdx);
+ if( section == 0 ) // pop
+ {
+ value = (value >> 6) & 0x03ffffff;
+ }
+ else
+ {
+ value = (value << 6) | section;
+ }
+ TlsSetValue(tlsIdx, (LPVOID)value);
+}
+
+void MemPixStuff()
+{
+ const int MAX_SECT = 56;
+
+ int totals[MAX_SECT] = {0};
+
+ for(auto it = allocCounts.begin(); it != allocCounts.end(); it++ )
+ {
+ if(it->second > 0 )
+ {
+ int sect = ( it->first >> 26 ) & 0x3f;
+ int bytes = it->first & 0x03ffffff;
+ totals[sect] += bytes * it->second;
+ }
+ }
+
+ unsigned int allSectsTotal = 0;
+ for( int i = 0; i < MAX_SECT; i++ )
+ {
+ allSectsTotal += totals[i];
+ PIXAddNamedCounter(((float)totals[i])/1024.0f,"MemSect%d",i);
+ }
+
+ PIXAddNamedCounter(((float)allSectsTotal)/(4096.0f),"MemSect total pages");
+}
+
+#endif
diff --git a/Minecraft.Client/Xbox/Xbox_UIController.cpp b/Minecraft.Client/Xbox/Xbox_UIController.cpp
new file mode 100644
index 00000000..51d91ca4
--- /dev/null
+++ b/Minecraft.Client/Xbox/Xbox_UIController.cpp
@@ -0,0 +1,341 @@
+#include "stdafx.h"
+#include "Xbox_UIController.h"
+#include "..\Common\XUI\XUI_Scene_Base.h"
+#include "..\Common\XUI\XUI_Scene_Win.h"
+
+ConsoleUIController ui;
+
+void ConsoleUIController::init()
+{
+}
+
+void ConsoleUIController::tick()
+{
+}
+
+void ConsoleUIController::render()
+{
+}
+
+void ConsoleUIController::StartReloadSkinThread()
+{
+}
+
+bool ConsoleUIController::IsReloadingSkin()
+{
+ return false;
+}
+
+void ConsoleUIController::CleanUpSkinReload()
+{
+}
+
+bool ConsoleUIController::NavigateToScene(int iPad, EUIScene scene, void *initData, EUILayer layer, EUIGroup group)
+{
+ // 4J Stu - The majority of calls to this function use the default parameters
+ return app.NavigateToScene(iPad, scene, initData) == S_OK;
+}
+
+bool ConsoleUIController::NavigateBack(int iPad, bool forceUsePad, EUIScene eScene, EUILayer eLayer)
+{
+ return app.NavigateBack(iPad, forceUsePad, eScene) == S_OK;
+}
+
+void ConsoleUIController::NavigateToHomeMenu()
+{
+ app.NavigateToHomeMenu();
+}
+
+void ConsoleUIController::CloseUIScenes(int iPad, bool forceIPad)
+{
+ app.CloseXuiScenes(iPad,forceIPad);
+}
+
+void ConsoleUIController::CloseAllPlayersScenes()
+{
+ app.CloseAllPlayersXuiScenes();
+}
+
+bool ConsoleUIController::IsPauseMenuDisplayed(int iPad)
+{
+ return app.IsPauseMenuDisplayed(iPad);
+}
+
+bool ConsoleUIController::IsContainerMenuDisplayed(int iPad)
+{
+ return app.IsContainerMenuDisplayed(iPad);
+}
+
+bool ConsoleUIController::IsIgnorePlayerJoinMenuDisplayed(int iPad)
+{
+ return app.IsIgnorePlayerJoinMenuDisplayed(iPad);
+}
+
+bool ConsoleUIController::IsIgnoreAutosaveMenuDisplayed(int iPad)
+{
+ return app.IsIgnoreAutosaveMenuDisplayed(iPad);
+}
+
+void ConsoleUIController::SetIgnoreAutosaveMenuDisplayed(int iPad, bool displayed)
+{
+ app.SetIgnoreAutosaveMenuDisplayed(iPad, displayed);
+}
+
+bool ConsoleUIController::IsSceneInStack(int iPad, EUIScene eScene)
+{
+ return app.IsSceneInStack(iPad, eScene);
+}
+
+bool ConsoleUIController::GetMenuDisplayed(int iPad)
+{
+ return app.GetMenuDisplayed(iPad);
+}
+
+void ConsoleUIController::CheckMenuDisplayed()
+{
+ app.CheckMenuDisplayed();
+}
+
+void ConsoleUIController::AnimateKeyPress(int iPad, int dwKeyCode)
+{
+ CXuiSceneBase::AnimateKeyPress(iPad, dwKeyCode);
+}
+
+void ConsoleUIController::SetTooltipText( unsigned int iPad, unsigned int tooltip, int iTextID )
+{
+ CXuiSceneBase::SetTooltipText(iPad,tooltip,iTextID);
+}
+
+void ConsoleUIController::SetEnableTooltips( unsigned int iPad, BOOL bVal )
+{
+ CXuiSceneBase::SetEnableTooltips(iPad,bVal);
+}
+
+void ConsoleUIController::ShowTooltip( unsigned int iPad, unsigned int tooltip, bool show )
+{
+ CXuiSceneBase::ShowTooltip(iPad,tooltip,show);
+}
+
+void ConsoleUIController::SetTooltips( unsigned int iPad, int iA, int iB, int iX, int iY, int iLT, int iRT, int iLB, int iRB, int iLS, bool forceUpdate)
+{
+ CXuiSceneBase::SetTooltips(iPad,iA,iB,iX,iY,iLT,iRT,iLB,iRB,iLS,forceUpdate);
+}
+
+void ConsoleUIController::EnableTooltip( unsigned int iPad, unsigned int tooltip, bool enable )
+{
+ CXuiSceneBase::EnableTooltip(iPad,tooltip,enable);
+}
+
+void ConsoleUIController::RefreshTooltips(unsigned int iPad)
+{
+ CXuiSceneBase::RefreshTooltips(iPad);
+}
+
+void ConsoleUIController::PlayUISFX(ESoundEffect eSound)
+{
+ CXuiSceneBase::PlayUISFX(eSound);
+}
+
+void ConsoleUIController::DisplayGamertag(unsigned int iPad, bool show)
+{
+ CXuiSceneBase::DisplayGamertag(iPad, show?TRUE:FALSE);
+}
+
+void ConsoleUIController::SetSelectedItem(unsigned int iPad, const wstring &name)
+{
+ CXuiSceneBase::SetSelectedItem(iPad, name);
+}
+
+void ConsoleUIController::UpdateSelectedItemPos(unsigned int iPad)
+{
+ CXuiSceneBase::UpdateSelectedItemPos(iPad);
+}
+
+void ConsoleUIController::HandleDLCMountingComplete()
+{
+ // tell the xui scenes the DLC has mounted
+ XUIMessage xuiMsg;
+ CustomMessage_DLCMountingComplete( &xuiMsg );
+
+ // send the message
+ for(int i=0;ilevel==NULL);
+
+ if(bNotInGame)
+ {
+ XuiBroadcastMessage( CXuiSceneBase::GetPlayerBaseScene(DEFAULT_XUI_MENU_USER), &xuiMsg );
+ }
+ else
+ {
+ XuiBroadcastMessage( CXuiSceneBase::GetPlayerBaseScene(iPad), &xuiMsg );
+ }
+}
+
+void ConsoleUIController::HandleTMSDLCFileRetrieved(int iPad)
+{
+ // send a message to the scene to say we've retrieved the DLC file
+ XUIMessage xuiMsg;
+ CustomMessage_TMS_DLCFileRetrieved( &xuiMsg );
+
+ bool bNotInGame=(Minecraft::GetInstance()->level==NULL);
+
+ if(bNotInGame)
+ {
+ XuiBroadcastMessage( CXuiSceneBase::GetPlayerBaseScene(DEFAULT_XUI_MENU_USER), &xuiMsg );
+ }
+ else
+ {
+ XuiBroadcastMessage( CXuiSceneBase::GetPlayerBaseScene(iPad), &xuiMsg );
+ }
+}
+
+void ConsoleUIController::HandleTMSBanFileRetrieved(int iPad)
+{
+ XUIMessage xuiMsg;
+ CustomMessage_TMS_BanFileRetrieved( &xuiMsg );
+ bool bNotInGame=(Minecraft::GetInstance()->level==NULL);
+
+ if(bNotInGame)
+ {
+ XuiBroadcastMessage( CXuiSceneBase::GetPlayerBaseScene(DEFAULT_XUI_MENU_USER), &xuiMsg );
+ }
+ else
+ {
+ XuiBroadcastMessage( CXuiSceneBase::GetPlayerBaseScene(iPad), &xuiMsg );
+ }
+}
+
+void ConsoleUIController::HandleInventoryUpdated(int iPad)
+{
+ XUIMessage xuiMsg;
+ CustomMessage_InventoryUpdated( &xuiMsg );
+ XuiBroadcastMessage( CXuiSceneBase::GetPlayerBaseScene(iPad), &xuiMsg );
+}
+
+void ConsoleUIController::HandleGameTick()
+{
+ CXuiSceneBase::TickAllBaseScenes();
+}
+
+void ConsoleUIController::SetTutorialDescription(int iPad, TutorialPopupInfo *info)
+{
+ CScene_TutorialPopup::SetDescription(iPad, info);
+}
+
+void ConsoleUIController::SetTutorialVisible(int iPad, bool visible)
+{
+ CScene_TutorialPopup::SetSceneVisible( iPad, visible );
+}
+
+bool ConsoleUIController::IsTutorialVisible(int iPad)
+{
+ return CScene_TutorialPopup::IsSceneVisible(iPad);
+}
+
+void ConsoleUIController::UpdatePlayerBasePositions()
+{
+ CXuiSceneBase::UpdatePlayerBasePositions();
+}
+
+void ConsoleUIController::SetEmptyQuadrantLogo(int iSection)
+{
+ CXuiSceneBase::SetEmptyQuadrantLogo(iSection);
+}
+
+void ConsoleUIController::HideAllGameUIElements()
+{
+ CXuiSceneBase::HideAllGameUIElements();
+}
+
+void ConsoleUIController::ShowOtherPlayersBaseScene(unsigned int iPad, bool show)
+{
+ CXuiSceneBase::ShowOtherPlayersBaseScene(iPad, show);
+}
+
+void ConsoleUIController::ShowTrialTimer(bool show)
+{
+ CXuiSceneBase::ShowTrialTimer(show?TRUE:FALSE);
+}
+
+void ConsoleUIController::SetTrialTimerLimitSecs(unsigned int uiSeconds)
+{
+ CXuiSceneBase::m_dwTrialTimerLimitSecs = uiSeconds;
+}
+
+void ConsoleUIController::UpdateTrialTimer(unsigned int iPad)
+{
+ CXuiSceneBase::UpdateTrialTimer(iPad);
+}
+
+void ConsoleUIController::ReduceTrialTimerValue()
+{
+ CXuiSceneBase::ReduceTrialTimerValue();
+}
+
+void ConsoleUIController::ShowAutosaveCountdownTimer(bool show)
+{
+ CXuiSceneBase::ShowAutosaveCountdownTimer(show?TRUE:FALSE);
+}
+
+void ConsoleUIController::UpdateAutosaveCountdownTimer(unsigned int uiSeconds)
+{
+ CXuiSceneBase::UpdateAutosaveCountdownTimer(uiSeconds);
+}
+
+void ConsoleUIController::ShowSavingMessage(unsigned int iPad, C4JStorage::ESavingMessage eVal)
+{
+ CXuiSceneBase::ShowSavingMessage(iPad, eVal);
+}
+
+bool ConsoleUIController::PressStartPlaying(unsigned int iPad)
+{
+ return CXuiSceneBase::PressStartPlaying(iPad);
+}
+
+void ConsoleUIController::ShowPressStart(unsigned int iPad)
+{
+ CXuiSceneBase::ShowPressStart(iPad);
+}
+
+void ConsoleUIController::SetWinUserIndex(unsigned int iPad)
+{
+ CScene_Win::setWinUserIndex( iPad );
+}
+
+C4JStorage::EMessageResult ConsoleUIController::RequestMessageBox(UINT uiTitle, UINT uiText, UINT *uiOptionA,UINT uiOptionC, DWORD dwPad,
+ int( *Func)(LPVOID,int,const C4JStorage::EMessageResult),LPVOID lpParam, CXuiStringTable *pStringTable, WCHAR *pwchFormatString,DWORD dwFocusButton,bool bIsError)
+{
+ return StorageManager.RequestMessageBox(uiTitle, uiText, uiOptionA, uiOptionC, dwPad, Func, lpParam, pStringTable, pwchFormatString, dwFocusButton);
+}
+
+C4JStorage::EMessageResult ConsoleUIController::RequestUGCMessageBox(UINT title/* = -1 */, UINT message/* = -1 */, int iPad/* = -1*/, int( *Func)(LPVOID,int,const C4JStorage::EMessageResult)/* = NULL*/, LPVOID lpParam/* = NULL*/)
+{
+ // Default title / messages
+ if (title == -1)
+ {
+ title = IDS_CONNECTION_FAILED;
+ }
+
+ if (message == -1)
+ {
+ message = IDS_NO_USER_CREATED_CONTENT_PRIVILEGE_SINGLE_LOCAL;
+ }
+
+ // Default pad to primary player
+ if (iPad == -1) iPad = ProfileManager.GetPrimaryPad();
+
+ UINT uiIDA[1];
+ uiIDA[0]=IDS_CONFIRM_OK;
+ return ui.RequestMessageBox(title, message, uiIDA, 1, iPad, Func, lpParam, app.GetStringTable(), NULL, 0, false);
+}
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/Xbox_UIController.h b/Minecraft.Client/Xbox/Xbox_UIController.h
new file mode 100644
index 00000000..2b273ee5
--- /dev/null
+++ b/Minecraft.Client/Xbox/Xbox_UIController.h
@@ -0,0 +1,79 @@
+#pragma once
+
+#include "..\Common\UI\IUIController.h"
+
+class ConsoleUIController : public IUIController
+{
+public:
+ virtual void init();
+ virtual void tick();
+ virtual void render();
+ virtual void StartReloadSkinThread();
+ virtual bool IsReloadingSkin();
+ virtual void CleanUpSkinReload();
+ virtual bool NavigateToScene(int iPad, EUIScene scene, void *initData = NULL, EUILayer layer = eUILayer_Scene, EUIGroup group = eUIGroup_PAD);
+ virtual bool NavigateBack(int iPad, bool forceUsePad = false, EUIScene eScene = eUIScene_COUNT, EUILayer eLayer = eUILayer_COUNT);
+ virtual void NavigateToHomeMenu();
+ virtual void CloseUIScenes(int iPad, bool forceIPad = false);
+ virtual void CloseAllPlayersScenes();
+
+ virtual bool IsPauseMenuDisplayed(int iPad);
+ virtual bool IsContainerMenuDisplayed(int iPad);
+ virtual bool IsIgnorePlayerJoinMenuDisplayed(int iPad);
+ virtual bool IsIgnoreAutosaveMenuDisplayed(int iPad);
+ virtual void SetIgnoreAutosaveMenuDisplayed(int iPad, bool displayed);
+ virtual bool IsSceneInStack(int iPad, EUIScene eScene);
+ virtual bool GetMenuDisplayed(int iPad);
+ virtual void CheckMenuDisplayed();
+ virtual void AnimateKeyPress(int iPad, int dwKeyCode);
+
+ virtual void SetTooltipText( unsigned int iPad, unsigned int tooltip, int iTextID );
+ virtual void SetEnableTooltips( unsigned int iPad, BOOL bVal );
+ virtual void ShowTooltip( unsigned int iPad, unsigned int tooltip, bool show );
+ virtual void SetTooltips( unsigned int iPad, int iA, int iB=-1, int iX=-1, int iY=-1 , int iLT=-1, int iRT=-1, int iLB=-1, int iRB=-1, int iLS=-1, bool forceUpdate = false);
+ virtual void EnableTooltip( unsigned int iPad, unsigned int tooltip, bool enable );
+ virtual void RefreshTooltips(unsigned int iPad);
+
+ virtual void PlayUISFX(ESoundEffect eSound);
+
+ virtual void DisplayGamertag(unsigned int iPad, bool show);
+ virtual void SetSelectedItem(unsigned int iPad, const wstring &name);
+ virtual void UpdateSelectedItemPos(unsigned int iPad);
+
+ virtual void HandleDLCMountingComplete();
+ virtual void HandleDLCInstalled(int iPad);
+ virtual void HandleTMSDLCFileRetrieved(int iPad);
+ virtual void HandleTMSBanFileRetrieved(int iPad);
+ virtual void HandleInventoryUpdated(int iPad);
+ virtual void HandleGameTick();
+
+ virtual void SetTutorialDescription(int iPad, TutorialPopupInfo *info);
+ virtual void SetTutorialVisible(int iPad, bool visible);
+ virtual bool IsTutorialVisible(int iPad);
+
+ virtual void UpdatePlayerBasePositions();
+ virtual void SetEmptyQuadrantLogo(int iSection);
+ virtual void HideAllGameUIElements();
+ virtual void ShowOtherPlayersBaseScene(unsigned int iPad, bool show);
+
+ virtual void ShowTrialTimer(bool show);
+ virtual void SetTrialTimerLimitSecs(unsigned int uiSeconds);
+ virtual void UpdateTrialTimer(unsigned int iPad);
+ virtual void ReduceTrialTimerValue();
+
+ virtual void ShowAutosaveCountdownTimer(bool show);
+ virtual void UpdateAutosaveCountdownTimer(unsigned int uiSeconds);
+ virtual void ShowSavingMessage(unsigned int iPad, C4JStorage::ESavingMessage eVal);
+
+ virtual bool PressStartPlaying(unsigned int iPad);
+ virtual void ShowPressStart(unsigned int iPad);
+
+ virtual void SetWinUserIndex(unsigned int iPad);
+
+ virtual C4JStorage::EMessageResult RequestMessageBox(UINT uiTitle, UINT uiText, UINT *uiOptionA,UINT uiOptionC, DWORD dwPad=XUSER_INDEX_ANY,
+ int( *Func)(LPVOID,int,const C4JStorage::EMessageResult)=NULL,LPVOID lpParam=NULL, CXuiStringTable *pStringTable=NULL, WCHAR *pwchFormatString=NULL,DWORD dwFocusButton=0, bool bIsError = true);
+
+ C4JStorage::EMessageResult RequestUGCMessageBox(UINT title = -1, UINT message = -1, int iPad = -1, int( *Func)(LPVOID,int,const C4JStorage::EMessageResult) = NULL, LPVOID lpParam = NULL);
+};
+
+extern ConsoleUIController ui;
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/kinect/speech/nuisp1031 b/Minecraft.Client/Xbox/kinect/speech/nuisp1031
new file mode 100644
index 00000000..7faa3bdb
Binary files /dev/null and b/Minecraft.Client/Xbox/kinect/speech/nuisp1031 differ
diff --git a/Minecraft.Client/Xbox/kinect/speech/nuisp1033 b/Minecraft.Client/Xbox/kinect/speech/nuisp1033
new file mode 100644
index 00000000..a115de10
Binary files /dev/null and b/Minecraft.Client/Xbox/kinect/speech/nuisp1033 differ
diff --git a/Minecraft.Client/Xbox/kinect/speech/nuisp1036 b/Minecraft.Client/Xbox/kinect/speech/nuisp1036
new file mode 100644
index 00000000..68b85ae8
Binary files /dev/null and b/Minecraft.Client/Xbox/kinect/speech/nuisp1036 differ
diff --git a/Minecraft.Client/Xbox/kinect/speech/nuisp1040 b/Minecraft.Client/Xbox/kinect/speech/nuisp1040
new file mode 100644
index 00000000..0629f44a
Binary files /dev/null and b/Minecraft.Client/Xbox/kinect/speech/nuisp1040 differ
diff --git a/Minecraft.Client/Xbox/kinect/speech/nuisp1041 b/Minecraft.Client/Xbox/kinect/speech/nuisp1041
new file mode 100644
index 00000000..6af72f39
Binary files /dev/null and b/Minecraft.Client/Xbox/kinect/speech/nuisp1041 differ
diff --git a/Minecraft.Client/Xbox/kinect/speech/nuisp2057 b/Minecraft.Client/Xbox/kinect/speech/nuisp2057
new file mode 100644
index 00000000..3e580d3e
Binary files /dev/null and b/Minecraft.Client/Xbox/kinect/speech/nuisp2057 differ
diff --git a/Minecraft.Client/Xbox/kinect/speech/nuisp2058 b/Minecraft.Client/Xbox/kinect/speech/nuisp2058
new file mode 100644
index 00000000..4d9a6d9c
Binary files /dev/null and b/Minecraft.Client/Xbox/kinect/speech/nuisp2058 differ
diff --git a/Minecraft.Client/Xbox/kinect/speech/nuisp3081 b/Minecraft.Client/Xbox/kinect/speech/nuisp3081
new file mode 100644
index 00000000..4a2fa5a9
Binary files /dev/null and b/Minecraft.Client/Xbox/kinect/speech/nuisp3081 differ
diff --git a/Minecraft.Client/Xbox/kinect/speech/nuisp3082 b/Minecraft.Client/Xbox/kinect/speech/nuisp3082
new file mode 100644
index 00000000..68a214e0
Binary files /dev/null and b/Minecraft.Client/Xbox/kinect/speech/nuisp3082 differ
diff --git a/Minecraft.Client/Xbox/kinect/speech/nuisp3084 b/Minecraft.Client/Xbox/kinect/speech/nuisp3084
new file mode 100644
index 00000000..9d302f1c
Binary files /dev/null and b/Minecraft.Client/Xbox/kinect/speech/nuisp3084 differ
diff --git a/Minecraft.Client/Xbox/loc/Copy localised files.cmd b/Minecraft.Client/Xbox/loc/Copy localised files.cmd
new file mode 100644
index 00000000..67c4e34e
--- /dev/null
+++ b/Minecraft.Client/Xbox/loc/Copy localised files.cmd
@@ -0,0 +1,133 @@
+SET rootPath=..\
+
+SET TOOLS_PATH="C:\Program Files (x86)\Microsoft Xbox 360 SDK\bin\win32"
+
+if not exist ..\..\Common\Media\de-DE mkdir ..\..\Common\Media\de-DE
+if not exist ..\..\Common\Media\es-ES mkdir ..\..\Common\Media\es-ES
+if not exist ..\..\Common\Media\fr-FR mkdir ..\..\Common\Media\fr-FR
+if not exist ..\..\Common\Media\it-IT mkdir ..\..\Common\Media\it-IT
+if not exist ..\..\Common\Media\ja-JP mkdir ..\..\Common\Media\ja-JP
+if not exist ..\..\Common\Media\ko-KR mkdir ..\..\Common\Media\ko-KR
+if not exist ..\..\Common\Media\pt-BR mkdir ..\..\Common\Media\pt-BR
+if not exist ..\..\Common\Media\pt-PT mkdir ..\..\Common\Media\pt-PT
+if not exist ..\..\Common\Media\zh-CHT mkdir ..\..\Common\Media\zh-CHT
+
+if not exist ..\..\Common\Media\cs-CZ mkdir ..\..\Common\Media\cs-CZ
+if not exist ..\..\Common\Media\da-DK mkdir ..\..\Common\Media\da-DK
+if not exist ..\..\Common\Media\el-GR mkdir ..\..\Common\Media\el-GR
+if not exist ..\..\Common\Media\en-GB mkdir ..\..\Common\Media\en-GB
+if not exist ..\..\Common\Media\es-MX mkdir ..\..\Common\Media\es-MX
+if not exist ..\..\Common\Media\fi-FI mkdir ..\..\Common\Media\fi-FI
+if not exist ..\..\Common\Media\nb-NO mkdir ..\..\Common\Media\nb-NO
+if not exist ..\..\Common\Media\nl-BE mkdir ..\..\Common\Media\nl-BE
+if not exist ..\..\Common\Media\pl-PL mkdir ..\..\Common\Media\pl-PL
+if not exist ..\..\Common\Media\ru-RU mkdir ..\..\Common\Media\ru-RU
+if not exist ..\..\Common\Media\sk-SK mkdir ..\..\Common\Media\sk-SK
+if not exist ..\..\Common\Media\sv-SE mkdir ..\..\Common\Media\sv-SE
+if not exist ..\..\Common\Media\zh-CHS mkdir ..\..\Common\Media\zh-CHS
+
+copy .\lcl\de-DE\Minecraft_all.resx ..\..\Common\Media\de-DE
+%TOOLS_PATH%\resxloc ..\..\Common\Media\de-DE\Minecraft_all.resx
+del ..\..\Common\Media\de-DE\Minecraft_all.resx
+
+copy .\lcl\es-ES\Minecraft_all.resx ..\..\Common\Media\es-ES
+%TOOLS_PATH%\resxloc ..\..\Common\Media\es-ES\Minecraft_all.resx
+del ..\..\Common\Media\es-ES\Minecraft_all.resx
+
+copy .\lcl\fr-FR\Minecraft_all.resx ..\..\Common\Media\fr-FR
+%TOOLS_PATH%\resxloc ..\..\Common\Media\fr-FR\Minecraft_all.resx
+del ..\..\Common\Media\fr-FR\Minecraft_all.resx
+
+copy .\lcl\it-IT\Minecraft_all.resx ..\..\Common\Media\it-IT
+%TOOLS_PATH%\resxloc ..\..\Common\Media\it-IT\Minecraft_all.resx
+del ..\..\Common\Media\it-IT\Minecraft_all.resx
+
+copy .\lcl\ja-JP\Minecraft_all.resx ..\..\Common\Media\ja-JP
+%TOOLS_PATH%\resxloc ..\..\Common\Media\ja-JP\Minecraft_all.resx
+del ..\..\Common\Media\ja-JP\Minecraft_all.resx
+
+copy .\lcl\ko-KR\Minecraft_all.resx ..\..\Common\Media\ko-KR
+%TOOLS_PATH%\resxloc ..\..\Common\Media\ko-KR\Minecraft_all.resx
+del ..\..\Common\Media\ko-KR\Minecraft_all.resx
+
+copy .\lcl\pt-BR\Minecraft_all.resx ..\..\Common\Media\pt-BR
+%TOOLS_PATH%\resxloc ..\..\Common\Media\pt-BR\Minecraft_all.resx
+del ..\..\Common\Media\pt-BR\Minecraft_all.resx
+
+copy .\lcl\pt-PT\Minecraft_all.resx ..\..\Common\Media\pt-PT
+%TOOLS_PATH%\resxloc ..\..\Common\Media\pt-PT\Minecraft_all.resx
+del ..\..\Common\Media\pt-PT\Minecraft_all.resx
+
+copy .\lcl\zh-CHT\Minecraft_all.resx ..\..\Common\Media\zh-CHT
+%TOOLS_PATH%\resxloc ..\..\Common\Media\zh-CHT\Minecraft_all.resx
+del ..\..\Common\Media\zh-CHT\Minecraft_all.resx
+
+copy .\lcl\cs-CZ\Minecraft_all.resx ..\..\Common\Media\cs-CZ
+copy .\lcl\da-DK\Minecraft_all.resx ..\..\Common\Media\da-DK
+copy .\lcl\el-GR\Minecraft_all.resx ..\..\Common\Media\el-GR
+copy .\lcl\en-GB\Minecraft_all.resx ..\..\Common\Media\en-GB
+copy .\lcl\es-MX\Minecraft_all.resx ..\..\Common\Media\es-MX
+copy .\lcl\fi-FI\Minecraft_all.resx ..\..\Common\Media\fi-FI
+copy .\lcl\nb-NO\Minecraft_all.resx ..\..\Common\Media\nb-NO
+copy .\lcl\nl-BE\Minecraft_all.resx ..\..\Common\Media\nl-BE
+copy .\lcl\pl-PL\Minecraft_all.resx ..\..\Common\Media\pl-PL
+copy .\lcl\ru-RU\Minecraft_all.resx ..\..\Common\Media\ru-RU
+copy .\lcl\sk-SK\Minecraft_all.resx ..\..\Common\Media\sk-SK
+copy .\lcl\sv-SE\Minecraft_all.resx ..\..\Common\Media\sv-SE
+copy .\lcl\zh-CHS\Minecraft_all.resx ..\..\Common\Media\zh-CHS
+
+%TOOLS_PATH%\resxloc ..\..\Common\Media\cs-CZ\Minecraft_all.resx
+%TOOLS_PATH%\resxloc ..\..\Common\Media\da-DK\Minecraft_all.resx
+%TOOLS_PATH%\resxloc ..\..\Common\Media\el-GR\Minecraft_all.resx
+%TOOLS_PATH%\resxloc ..\..\Common\Media\en-GB\Minecraft_all.resx
+%TOOLS_PATH%\resxloc ..\..\Common\Media\es-MX\Minecraft_all.resx
+%TOOLS_PATH%\resxloc ..\..\Common\Media\fi-FI\Minecraft_all.resx
+%TOOLS_PATH%\resxloc ..\..\Common\Media\nb-NO\Minecraft_all.resx
+%TOOLS_PATH%\resxloc ..\..\Common\Media\nl-BE\Minecraft_all.resx
+%TOOLS_PATH%\resxloc ..\..\Common\Media\pl-PL\Minecraft_all.resx
+%TOOLS_PATH%\resxloc ..\..\Common\Media\ru-RU\Minecraft_all.resx
+%TOOLS_PATH%\resxloc ..\..\Common\Media\sk-SK\Minecraft_all.resx
+%TOOLS_PATH%\resxloc ..\..\Common\Media\sv-SE\Minecraft_all.resx
+%TOOLS_PATH%\resxloc ..\..\Common\Media\zh-CHS\Minecraft_all.resx
+
+del ..\..\Common\Media\cs-CZ\Minecraft_all.resx
+del ..\..\Common\Media\da-DK\Minecraft_all.resx
+del ..\..\Common\Media\el-GR\Minecraft_all.resx
+del ..\..\Common\Media\en-GB\Minecraft_all.resx
+del ..\..\Common\Media\es-MX\Minecraft_all.resx
+del ..\..\Common\Media\fi-FI\Minecraft_all.resx
+del ..\..\Common\Media\nb-NO\Minecraft_all.resx
+del ..\..\Common\Media\nl-BE\Minecraft_all.resx
+del ..\..\Common\Media\pl-PL\Minecraft_all.resx
+del ..\..\Common\Media\ru-RU\Minecraft_all.resx
+del ..\..\Common\Media\sk-SK\Minecraft_all.resx
+del ..\..\Common\Media\sv-SE\Minecraft_all.resx
+del ..\..\Common\Media\zh-CHS\Minecraft_all.resx
+
+
+
+if exist ..\..\Common\Media\de-DE\Tutorialstrings.resx move ..\..\Common\Media\de-DE\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\de-DE.lang
+if exist ..\..\Common\Media\es-ES\Tutorialstrings.resx move ..\..\Common\Media\es-ES\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\es-ES.lang
+if exist ..\..\Common\Media\fr-FR\Tutorialstrings.resx move ..\..\Common\Media\fr-FR\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\fr-FR.lang
+if exist ..\..\Common\Media\it-IT\Tutorialstrings.resx move ..\..\Common\Media\it-IT\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\it-IT.lang
+if exist ..\..\Common\Media\ja-JP\Tutorialstrings.resx move ..\..\Common\Media\ja-JP\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\ja-JP.lang
+if exist ..\..\Common\Media\ko-KR\Tutorialstrings.resx move ..\..\Common\Media\ko-KR\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\ko-KR.lang
+if exist ..\..\Common\Media\pt-BR\Tutorialstrings.resx move ..\..\Common\Media\pt-BR\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\pt-BR.lang
+if exist ..\..\Common\Media\pt-PT\Tutorialstrings.resx move ..\..\Common\Media\pt-PT\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\pt-PT.lang
+if exist ..\..\Common\Media\zh-CHT\Tutorialstrings.resx move ..\..\Common\Media\zh-CHT\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\zh-CHT.lang
+
+if exist ..\..\Common\Media\cs-CZ\Tutorialstrings.resx move ..\..\Common\Media\cs-CZ\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\cs-CZ.lang
+if exist ..\..\Common\Media\da-DK\Tutorialstrings.resx move ..\..\Common\Media\da-DK\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\da-DK.lang
+if exist ..\..\Common\Media\el-GR\Tutorialstrings.resx move ..\..\Common\Media\el-GR\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\el-GR.lang
+if exist ..\..\Common\Media\en-GB\Tutorialstrings.resx move ..\..\Common\Media\en-GB\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\en-GB.lang
+if exist ..\..\Common\Media\es-MX\Tutorialstrings.resx move ..\..\Common\Media\es-MX\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\es-MX.lang
+if exist ..\..\Common\Media\fi-FI\Tutorialstrings.resx move ..\..\Common\Media\fi-FI\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\fi-FI.lang
+if exist ..\..\Common\Media\nb-NO\Tutorialstrings.resx move ..\..\Common\Media\nb-NO\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\nb-NO.lang
+if exist ..\..\Common\Media\nl-BE\Tutorialstrings.resx move ..\..\Common\Media\nl-BE\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\nl-BE.lang
+if exist ..\..\Common\Media\pl-PL\Tutorialstrings.resx move ..\..\Common\Media\pl-PL\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\pl-PL.lang
+if exist ..\..\Common\Media\ru-RU\Tutorialstrings.resx move ..\..\Common\Media\ru-RU\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\ru-RU.lang
+if exist ..\..\Common\Media\sk-SK\Tutorialstrings.resx move ..\..\Common\Media\sk-SK\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\sk-SK.lang
+if exist ..\..\Common\Media\sv-SE\Tutorialstrings.resx move ..\..\Common\Media\sv-SE\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\sv-SE.lang
+if exist ..\..\Common\Media\zh-CHS\Tutorialstrings.resx move ..\..\Common\Media\zh-CHS\Tutorialstrings.resx ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\Microsoft\zh-CHS.lang
+
+pause
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/loc/GenLocalisation.cmd b/Minecraft.Client/Xbox/loc/GenLocalisation.cmd
new file mode 100644
index 00000000..43b056df
--- /dev/null
+++ b/Minecraft.Client/Xbox/loc/GenLocalisation.cmd
@@ -0,0 +1,83 @@
+SET rootPath=..\
+
+SET TOOLS_PATH="C:\Program Files (x86)\Microsoft Xbox 360 SDK\bin\win32"
+
+REM overwrite the edb files with the ones with no localisation data
+copy blank_edbs\*.* .\
+
+if not exist XUR mkdir XUR
+if not exist RESX mkdir RESX
+
+del /Q XUR\*.*
+del /Q RESX\*.*
+del /Q .\Minecraft_all.resx
+
+if not exist .\lcl\de-DE mkdir .\lcl\de-DE
+if not exist .\lcl\es-ES mkdir .\lcl\es-ES
+if not exist .\lcl\fr-FR mkdir .\lcl\fr-FR
+if not exist .\lcl\it-IT mkdir .\lcl\it-IT
+if not exist .\lcl\ja-JP mkdir .\lcl\ja-JP
+if not exist .\lcl\ko-KR mkdir .\lcl\ko-KR
+if not exist .\lcl\pt-BR mkdir .\lcl\pt-BR
+if not exist .\lcl\pt-PT mkdir .\lcl\pt-PT
+if not exist .\lcl\zh-CHT mkdir .\lcl\zh-CHT
+
+if not exist .\lcl\cs-CZ mkdir .\lcl\cs-CZ
+if not exist .\lcl\da-DK mkdir .\lcl\da-DK
+if not exist .\lcl\el-GR mkdir .\lcl\el-GR
+if not exist .\lcl\en-GB mkdir .\lcl\en-GB
+if not exist .\lcl\es-MX mkdir .\lcl\es-MX
+if not exist .\lcl\fi-FI mkdir .\lcl\fi-FI
+if not exist .\lcl\nb-NO mkdir .\lcl\nb-NO
+if not exist .\lcl\nl-BE mkdir .\lcl\nl-BE
+if not exist .\lcl\pl-PL mkdir .\lcl\pl-PL
+if not exist .\lcl\ru-RU mkdir .\lcl\ru-RU
+if not exist .\lcl\sk-SK mkdir .\lcl\sk-SK
+if not exist .\lcl\sv-SE mkdir .\lcl\sv-SE
+if not exist .\lcl\zh-CHS mkdir .\lcl\zh-CHS
+
+for /F "tokens=1,2 delims=." %%A in (..\xuis.txt) DO IF "%%B"=="xui" %TOOLS_PATH%\xui2bin.exe /nologo ..\%%A.xui
+
+for /F "tokens=1,2 delims=." %%A in (..\xuis.txt) DO IF "%%B"=="xui" %TOOLS_PATH%\xui2resx.exe /nologo ..\%%A.xui
+
+for /F "tokens=1,2 delims=." %%A in (..\xuis.txt) DO IF "%%B"=="xui" copy ..\%%A.xur .\XUR\
+for /F "tokens=1,2 delims=." %%A in (..\xuis.txt) DO IF "%%B"=="xui" copy ..\%%A.resx .\RESX\
+for /F "tokens=1,2 delims=." %%A in (..\xuis.txt) DO IF "%%B"=="xui" del ..\%%A.xur
+for /F "tokens=1,2 delims=." %%A in (..\xuis.txt) DO IF "%%B"=="xui" del ..\%%A.resx
+
+
+copy ..\..\Common\media\strings.resx .\RESX\
+copy ..\4JLibs\Media\4J_strings.resx .\RESX\
+
+REM Game rules
+copy ..\..\Common\res\TitleUpdate\GameRules\BuildOnly\Tutorial\Strings\en-EN.lang .\RESX\Tutorialstrings.resx
+
+%TOOLS_PATH%\resxloc /locstudio .\RESX\*.resx .\Minecraft_all.resx
+
+REM Make sure the loc people haven't made the files read only
+attrib -R .\lcl\de-DE\Minecraft_all.resx
+attrib -R .\lcl\es-ES\Minecraft_all.resx
+attrib -R .\lcl\fr-FR\Minecraft_all.resx
+attrib -R .\lcl\it-IT\Minecraft_all.resx
+attrib -R .\lcl\ja-JP\Minecraft_all.resx
+attrib -R .\lcl\ko-KR\Minecraft_all.resx
+attrib -R .\lcl\pt-BR\Minecraft_all.resx
+attrib -R .\lcl\pt-PT\Minecraft_all.resx
+attrib -R .\lcl\zh-CHT\Minecraft_all.resx
+
+attrib -R .\lcl\cs-CZ\Minecraft_all.resx
+attrib -R .\lcl\da-DK\Minecraft_all.resx
+attrib -R .\lcl\el-GR\Minecraft_all.resx
+attrib -R .\lcl\en-GB\Minecraft_all.resx
+attrib -R .\lcl\es-MX\Minecraft_all.resx
+attrib -R .\lcl\fi-FI\Minecraft_all.resx
+attrib -R .\lcl\nb-NO\Minecraft_all.resx
+attrib -R .\lcl\nl-BE\Minecraft_all.resx
+attrib -R .\lcl\pl-PL\Minecraft_all.resx
+attrib -R .\lcl\ru-RU\Minecraft_all.resx
+attrib -R .\lcl\sk-SK\Minecraft_all.resx
+attrib -R .\lcl\sv-SE\Minecraft_all.resx
+attrib -R .\lcl\zh-CHS\Minecraft_all.resx
+
+pause
+
diff --git a/Minecraft.Client/Xbox/loc/Minecraft localisation process.txt b/Minecraft.Client/Xbox/loc/Minecraft localisation process.txt
new file mode 100644
index 00000000..83ead0c8
--- /dev/null
+++ b/Minecraft.Client/Xbox/loc/Minecraft localisation process.txt
@@ -0,0 +1,65 @@
+
+Make sure your strings.resx in the XZP project is up to date.
+Check out the files in the loc dir
+
+Creating a new language .edb (using French as an example)
+-----------------------
+
+Run GenLocalisation.cmd
+
+Create a edb for the project, (Localization Studio - New software database)
+C:\Work\4J\Mojang\Minecraft\Minecraft360\Minecraft.Client\Xbox\loc\Minecraft_fr-FR.edb
+
+Set the source path to loc, and the target path to loc/lcl/fr-FR
+Add the Minecraft_all.resx to it
+Select the Minecraft_xuis in loc studio and set properties to POMXML parse
+
+Select the project and choose Update
+
+add in any translations needed
+If there is a translations file supplied, put it in the loc/lcl/fr-FR, and chose Upload in Loc Studio
+
+
+Generate to create the new translation resx
+Run copy localised files.cmd - this will split the file back into its scene file .resx files and put them in the Media/fr-FR/ dir,
+assuming the originals were in the Media dir.
+
+Build the xzp again
+
+Updating a language .edb
+------------------------
+
+Run GenLocalisation.cmd
+
+Check out all files required, including the loc files found at "res\TitleUpdate\GameRules\BuildOnly\Tutorial".
+Open the required language .edb file to be updated with localization studio.
+Choose Update
+Add any translations required
+Choose Generate
+
+
+Build the xzp again
+
+Checkout the game rules xzps at "res\TitleUpdate\GameRules"
+Build the game rules again by running "res\TitleUpdate\GameRules\BuildOnly\BuildAll.cmd" (or from the GameRules solution)
+
+
+OR....
+
+Run GenLocalisation.cmd
+Run UpdateLocalisations.cmd
+Run Copy localised files.cmd
+
+-------------------------------------------
+NEW TRANSLATIONS HANDLING
+
+When new translations come in, you have to use the loc editor, select all the entries, and ctrl-R to dump the previous translations,
+ --- then do an upload, update, and generate with the new resx file, or run the UpdateLocalisations.cmd
+
+Translations for the gamerconfig
+--------------------------------
+
+When new translations come in, open the gameconfig, and export the strings.
+Open th exml file in texcel, and sort it by language.
+Remove the en-US strings and save.
+Open th egame config and import the saved xml file.
diff --git a/Minecraft.Client/Xbox/loc/Minecraft_all.resx b/Minecraft.Client/Xbox/loc/Minecraft_all.resx
new file mode 100644
index 00000000..03ccb6ce
--- /dev/null
+++ b/Minecraft.Client/Xbox/loc/Minecraft_all.resx
@@ -0,0 +1,4569 @@
+
+Not Used
+
+OK
+
+Back
+
+Cancel
+
+Yes
+
+No
+
+Corrupt Save
+
+Your save data appears to be corrupt. Create a new save and overwrite the corrupt one?
+
+No Free Space
+
+Your selected storage device doesn't have enough free space to create a game save.
+
+Select again
+
+Play without saving
+
+Create a new save
+
+Overwrite save?
+
+Your selected storage device already contains this save. Is it OK to overwrite it?
+
+No - don't overwrite
+
+Overwrite and save
+
+Save failed
+
+Storage Device Problem
+
+Your storage device is unavailable or has an error
+
+Your storage device is unavailable or has an error. Please select a new storage device.
+
+Select a new storage device
+
+No storage device selected
+
+If you do not select a storage device, game saves will be disabled
+
+Select a storage device
+
+Continue without saving
+
+Your storage device has been removed. Please select a new one.
+
+Loading failed
+
+Name the save
+
+Enter a name for your savegame
+
+Return to Xbox Dashboard
+
+Are you sure you want to exit the game?
+
+Signed out
+
+You have been returned to the title screen because your gamer profile was signed out
+
+The match has ended because a gamer profile was signed out
+
+Continue playing
+
+Gamer profile not online
+
+This game has some features which require an Xbox LIVE enabled gamer profile, but you are currently offline.
+
+This feature requires a gamer profile which is signed into Xbox LIVE.
+
+Connect to Xbox LIVE
+
+Continue playing offline
+
+Achievement Award Problem
+
+ There was a problem accessing your gamer profile. Your achievement could not be awarded at this time.
+
+Gamer profile problem
+
+Saving of settings to gamer profile has failed.
+
+Guest Gamer Profile
+
+Guest gamer profile cannot access this feature. Please use a different gamer profile.
+
+Saving…
+
+Saving content. Please don't turn off your console.
+
+Unlock Full Game
+
+This is the Minecraft trial game. If you had the full game, you would just have earned an achievement!
+Unlock the full game to experience the joy of Minecraft and to play with your friends across the globe through Xbox LIVE.
+Would you like to unlock the full game?
+
+You are being returned to the main menu because of a problem reading your profile.
+
+New Downloadable Content is available! Access it from the Minecraft Store button on the Main Menu.
+
+You can change the look of your character with a Skin Pack from the Minecraft Store. Select 'Minecraft Store' on the Main Menu to see what's available.
+
+If you play this game in High Definition mode, you can have up to four players in split-screen on the same console!
+
+Connect extra controllers to your console and press START on them to join a game at any point.
+
+Alter the gamma settings to make the game brighter or darker.
+
+If you set the game difficulty to Peaceful, your health will automatically regenerate, and no monsters will come out at night!
+
+Feed a bone to a wolf to tame it. You can then make it sit or follow you.
+
+You can drop items when in the Inventory menu by moving the cursor off the menu and pressing{*CONTROLLER_VK_A*}
+
+Sleeping in a bed at night will fast forward the game to dawn, but all players in a multiplayer game need to sleep in beds at the same time.
+
+Harvest pork chops from pigs, and cook and eat them to regain health.
+
+Harvest leather from cows, and use it to make armor.
+
+If you have an empty bucket, you can fill it with milk from a cow, or water, or lava!
+
+Use a hoe to prepare areas of ground for planting.
+
+Spiders won't attack you during the day - unless you attack them.
+
+Digging soil or sand with a spade is faster than with your hand!
+
+Eating cooked pork chops gives more health than eating raw pork chops.
+
+Make some torches to light up areas at night. Monsters will avoid the areas around these torches.
+
+Get to destinations faster with a minecart and rail!
+
+Plant some saplings and they'll grow into trees.
+
+Pigmen won't attack you, unless you attack them.
+
+You can change your game spawn point and skip to dawn by sleeping in a bed.
+
+Hit those fireballs back at the Ghast!
+
+Building a portal will allow you to travel to another dimension - The Nether.
+
+Press{*CONTROLLER_VK_B*} to drop the item currently in your hand!
+
+Use the right tool for the job!
+
+If you can't find any coal for your torches, you can always make charcoal from trees in a furnace.
+
+Digging straight down or straight up is not a great idea.
+
+Bonemeal (crafted from a Skeleton bone) can be used as a fertilizer, and can make things grow instantly!
+
+Creepers explode when they get close to you!
+
+Obsidian is created when water hits a lava source block.
+
+Lava can take minutes to disappear COMPLETELY when the source block is removed.
+
+Cobblestone is resistant to Ghast fireballs, making it useful for guarding portals.
+
+Blocks that can be used as a light source will melt snow and ice. This includes torches, glowstone, and Jack-O-Lanterns.
+
+Take caution when building structures made of wool in open air, as lightning from thunderstorms can set wool on fire.
+
+A single bucket of lava can be used in a furnace to smelt 100 blocks.
+
+The instrument played by a note block depends on the material beneath it.
+
+Zombies and Skeletons can survive daylight if they are in water.
+
+Attacking a wolf will cause any wolves in the immediate vicinity to turn hostile and attack you. This trait is also shared by Zombie Pigmen.
+
+Wolves cannot enter the Nether.
+
+Wolves won't attack Creepers.
+
+Chickens lay an egg every 5 to 10 minutes.
+
+Obsidian can only be mined with a diamond pickaxe.
+
+Creepers are the easiest obtainable source of gunpowder.
+
+Placing two chests side by side will make one large chest.
+
+Tame wolves show their health with the position of their tail. Feed them meat to heal them.
+
+Cook cactus in a furnace to get green dye.
+
+You'll get the latest info on this game from 4J Studios and Kappische on twitter!
+
+Impress your friends by posting screenshots of your Minecraft creations to Facebook from the in-game Pause menu!
+
+Read the What's New section in the How To Play menus to see the latest update information about the game.
+
+Stackable fences are in the game now!
+
+minecraftforum has a section dedicated to the Xbox 360 Edition.
+
+Some animals will follow you if you have wheat in your hand.
+
+If an animal can't move more than 20 blocks in any direction, it won't despawn.
+
+Music by C418!
+
+Notch has over a million followers on twitter!
+
+Not all Swedish people have blonde hair. Some, like Jens from Mojang, even have ginger hair!
+
+We think 4J Studios has removed Herobrine from the Xbox 360 console game, but we're not too sure.
+
+There will be an update to this game eventually!
+
+Who is Notch?
+
+Mojang has more awards than staff!
+
+Some famous people play Minecraft!
+
+deadmau5 likes Minecraft!
+
+Do not look directly at the bugs.
+
+Creepers were born from a coding bug.
+
+Is it a chicken or is it a duck?
+
+Were you at Minecon?
+
+No-one at Mojang has ever seen junkboy's face.
+
+Did you know there's a Minecraft Wiki?
+
+Mojang's new office is cool!
+
+Minecraft: Xbox 360 Edition broke lots of records!
+
+Minecon 2013 was in Orlando, Florida, USA!
+
+.party() was excellent!
+
+Always assume rumors are false, rather than assuming they're true!
+
+{*T3*}HOW TO PLAY : BASICS{*ETW*}{*B*}{*B*}
+Minecraft is a game about placing blocks to build anything you can imagine. At night monsters come out, make sure to build a shelter before that happens.{*B*}{*B*}
+Use{*CONTROLLER_ACTION_LOOK*} to look around.{*B*}{*B*}
+Use{*CONTROLLER_ACTION_MOVE*} to move around.{*B*}{*B*}
+Press{*CONTROLLER_ACTION_JUMP*} to jump.{*B*}{*B*}
+Push{*CONTROLLER_ACTION_MOVE*} forward twice in rapid succession to sprint. While you hold {*CONTROLLER_ACTION_MOVE*} forward, the character will continue to sprint unless they run out of sprint time or the Food Bar has less than{*ICON_SHANK_03*}.{*B*}{*B*}
+Hold{*CONTROLLER_ACTION_ACTION*} to mine and chop using your hand or whatever you are holding. You may need to craft a tool to mine some blocks.{*B*}{*B*}
+If you are holding an item in your hand, use{*CONTROLLER_ACTION_USE*} to use that item, or press{*CONTROLLER_ACTION_DROP*} to drop that item.
+
+{*T3*}HOW TO PLAY : HUD{*ETW*}{*B*}{*B*}
+The HUD shows information about your status; your health, your remaining oxygen when you are under water, your hunger level (you need to eat to replenish this), and your armor if you are wearing any. If you lose some health, but have a food bar with 9 or more{*ICON_SHANK_01*} in it, your health will automatically replenish. Eating food will replenish your food bar.{*B*}
+The Experience Bar is also shown here, with a numeric value to show your Experience Level, and the bar indicating how many Experience Points are required to increase your Experience Level. Experience Points are gained by collecting the Experience Orbs dropped by mobs when they die, mining certain block types, breeding animals, fishing, and smelting ores in a furnace.{*B*}{*B*}
+It also shows the items that are available to use. Use{*CONTROLLER_ACTION_LEFT_SCROLL*} and{*CONTROLLER_ACTION_RIGHT_SCROLL*} to change the item in your hand.
+
+{*T3*}HOW TO PLAY : INVENTORY{*ETW*}{*B*}{*B*}
+Use{*CONTROLLER_ACTION_INVENTORY*} to view your inventory.{*B*}{*B*}
+This screen shows items available for use in your hand, and all the other items that you are carrying. Your armor is also shown here.{*B*}{*B*}
+Use{*CONTROLLER_MENU_NAVIGATE*} to move the pointer. Use{*CONTROLLER_VK_A*} to pick an item under the pointer. If there is more than one item here this will pick them all up, or you can use{*CONTROLLER_VK_X*} to pick up just half of them.{*B*}{*B*}
+Move the item with the pointer over another space in the inventory and place it there using{*CONTROLLER_VK_A*}. With multiple items on the pointer, use{*CONTROLLER_VK_A*} to place them all, or{*CONTROLLER_VK_X*} to place just one.{*B*}{*B*}
+If an item you are over is armor, you will be shown a tooltip to enable a quick move of this to the right armor slot in the inventory.{*B*}{*B*}
+It is possible to change the color of your Leather Armor by dying it, you can do this in the inventory menu by holding the dye in your pointer, then pressing{*CONTROLLER_VK_X*} whilst the pointer is over the piece you wish to dye.
+
+
+{*T3*}HOW TO PLAY : CHEST{*ETW*}{*B*}{*B*}
+Once you have crafted a Chest, you can place this in the world and then use it with{*CONTROLLER_ACTION_USE*} to store items from your inventory.{*B*}{*B*}
+Use the pointer to move items between your inventory and the chest.{*B*}{*B*}
+Items in the chest will be stored there for you to swap back into your inventory again later.
+
+
+{*T3*}HOW TO PLAY : LARGE CHEST{*ETW*}{*B*}{*B*}
+Two chests placed next to each other will be combined to form a Large Chest. This can store even more items.{*B*}{*B*}
+It is used in the same way as a normal chest.
+
+
+{*T3*}HOW TO PLAY : CRAFTING{*ETW*}{*B*}{*B*}
+In the Crafting interface, you can combine items from your inventory to create new types of items. Use{*CONTROLLER_ACTION_CRAFTING*} to open the crafting interface.{*B*}{*B*}
+Scroll through the tabs at the top using{*CONTROLLER_VK_LB*} and{*CONTROLLER_VK_RB*} to select the type of item you wish to craft, then use{*CONTROLLER_MENU_NAVIGATE*} to select the item to craft.{*B*}{*B*}
+The crafting area shows the items required to craft the new item. Press{*CONTROLLER_VK_A*} to craft the item and place it in your inventory.
+
+
+{*T3*}HOW TO PLAY : CRAFTING TABLE{*ETW*}{*B*}{*B*}
+You can craft larger items using a Crafting Table.{*B*}{*B*}
+Place the table in the world and press{*CONTROLLER_ACTION_USE*} to use it.{*B*}{*B*}
+Crafting on a table works in the same way as basic crafting, but you have a larger crafting area, and a more varied selection of items to craft.
+
+
+{*T3*}HOW TO PLAY : FURNACE{*ETW*}{*B*}{*B*}
+A Furnace allows you to change items by firing them. For example, you can turn iron ore into iron ingots in the furnace.{*B*}{*B*}
+Place the furnace in the world and press{*CONTROLLER_ACTION_USE*} to use it.{*B*}{*B*}
+You need to put some fuel into the bottom of the furnace, and the item to be fired in the top. The furnace will then fire up and start working.{*B*}{*B*}
+When your items have been fired, you can move them from the output area into your inventory.{*B*}{*B*}
+If an item you are over is an ingredient or fuel for the furnace, you will be shown tooltips to enable a quick move of this to the furnace.
+
+
+{*T3*}HOW TO PLAY : DISPENSER{*ETW*}{*B*}{*B*}
+A Dispenser is used to shoot out items. You will need to place a switch, for example a lever, next to the dispenser to trigger it.{*B*}{*B*}
+To fill the dispenser with items press{*CONTROLLER_ACTION_USE*}, then move the items that you want to dispense from your inventory into the dispenser.{*B*}{*B*}
+Now when you use the switch, the dispenser will shoot out an item.
+
+
+{*T3*}HOW TO PLAY : BREWING{*ETW*}{*B*}{*B*}
+Brewing potions requires a Brewing Stand, which can be built at a crafting table. Every potion starts off with a bottle of water, which is made by filling a Glass Bottle with water from a Cauldron, or a water source.{*B*}
+A Brewing Stand has three slots for bottles, so can make three potions at the same time. One ingredient can be used over all three bottles, so always brew three potions at the same time to best use your resources.{*B*}
+Putting a potion ingredient in the top position at the Brewing Stand will make a base potion after a short time. This doesn't have any effect by itself, but brewing another ingredient with this base potion will give you a potion with an effect.{*B*}
+Once you have this potion you can add a third ingredient to make the effect last longer (using Redstone Dust), be more intense (using Glowstone Dust), or turn into a harmful potion (using a Fermented Spider Eye).{*B*}
+You can also add gunpowder to any potion to turn it into a Splash Potion, which can then be thrown. The thrown Splash Potion will cause the potion effect to apply over the area it lands in.{*B*}
+
+The source ingredients for potions are :-{*B*}{*B*}
+* {*T2*}Nether Wart{*ETW*}{*B*}
+* {*T2*}Spider Eye{*ETW*}{*B*}
+* {*T2*}Sugar{*ETW*}{*B*}
+* {*T2*}Ghast Tear{*ETW*}{*B*}
+* {*T2*}Blaze Powder{*ETW*}{*B*}
+* {*T2*}Magma Cream{*ETW*}{*B*}
+* {*T2*}Glistering Melon{*ETW*}{*B*}
+* {*T2*}Redstone Dust{*ETW*}{*B*}
+* {*T2*}Glowstone Dust{*ETW*}{*B*}
+* {*T2*}Fermented Spider Eye{*ETW*}{*B*}{*B*}
+
+You'll need to experiment with combinations of ingredients in order to find out all the different potions you can make.
+
+
+{*T3*}HOW TO PLAY : ENCHANTING{*ETW*}{*B*}{*B*}
+The Experience Points collected when a mob dies, or when certain blocks are mined or smelted in a furnace, can be used to enchant some tools, weapons, armor and books.{*B*}
+When a Sword, Bow, Axe, Pickaxe, Shovel, Armor or Book is placed in the slot below the book in the Enchantment Table, the three buttons to the right of the slot will display some enchantments and their Experience Levels costs.{*B*}
+If you do not have enough Experience Levels to use some of these, the cost will appear in red, otherwise it will be shown in green.{*B*}{*B*}
+The actual enchantment applied is randomly selected based on the cost displayed.{*B*}{*B*}
+If the Enchantment Table is surrounded by Bookshelves (up to a maximum of 15 Bookshelves), with a one block gap between the Bookcase and the Enchantment Table, the potency of the enchantments will be increased, and arcane glyphs will be seen coming from the book on the Enchantment Table.{*B*}{*B*}
+All the ingredients for an Enchantment Table can be found within the villages in a world, or by mining and cultivation of the world.{*B*}{*B*}
+Enchanted Books are used at the Anvil to apply enchantments to items. This gives you more control over which enchantments you would like on your items.{*B*}
+
+
+{*T3*}HOW TO PLAY : FARMING ANIMALS{*ETW*}{*B*}{*B*}
+If you want to keep your animals in the one place, build a fenced area of less than 20x20 blocks and have your animals inside it. This ensures they will still be there when you come back to see them.
+
+
+{*T3*}HOW TO PLAY : BREEDING ANIMALS{*ETW*}{*B*}{*B*}
+The animals in Minecraft can breed, and will produce baby versions of themselves!{*B*}
+To get the animals to breed, you will need to feed them with the right food to get them to go into 'Love Mode'.{*B*}
+Feed Wheat to a cow, mooshroom or sheep, Carrots to a pig, Wheat Seeds or Nether Wart to a chicken, or any kind of meat to a wolf, and they'll start looking for another animal of the same species near them that is also in Love Mode.{*B*}
+When two animals of the same species meet, and both are in Love Mode, they will kiss for a few seconds, and then a baby animal will appear. The baby animal will follow their parents for a while before growing into a full sized animal itself.{*B*}
+After being in Love Mode, an animal will not be able to enter it again for about five minutes.{*B*}
+There is a limit on the number of animals it is possible to have in a world, so you may find the animals don't breed when you have a lot of them.
+
+{*T3*}HOW TO PLAY : NETHER PORTAL{*ETW*}{*B*}{*B*}
+A Nether Portal allows the player to travel between the Overworld and the Nether world. The Nether world can be used to fast-travel in the Overworld - traveling one block distance in the Nether is equivalent to traveling 3 blocks in the Overworld, so when you build a portal in the Nether world and exit through it, you will be 3 times further away from your entry point.{*B*}{*B*}
+A minimum of 10 Obsidian blocks are required to build the portal, and the portal needs to be 5 blocks high by 4 blocks wide by 1 block deep. Once the portal frame is built, the space inside the frame needs to be set on fire to activate it. This can be done using the Flint and Steel item, or the Fire Charge item.{*B*}{*B*}
+Examples of portal construction are shown in the picture to the right.
+
+
+{*T3*}HOW TO PLAY : MULTIPLAYER{*ETW*}{*B*}{*B*}
+Minecraft on the Xbox 360 console is a multiplayer game by default. If you are playing in a High Definition mode, you can have local players join your game by attaching controllers and pressing START at any point during the game.{*B*}{*B*}
+When you start or join an online game, it will be visible to people in your friends list (unless you've selected Invite Only when hosting the game), and if they join the game, it will also be visible to people in their friends list (if you have selected the Allow Friends of Friends option).{*B*}
+When you are in a game, you can press the BACK button to bring up a list of all other players in the game, view their Gamer Cards, Kick players from the game, and invite others to the game.
+
+
+{*T3*}HOW TO PLAY : SHARING SCREENSHOTS{*ETW*}{*B*}{*B*}
+You can capture a screenshot from your game by bringing up the Pause Menu, and pressing{*CONTROLLER_VK_Y*} to Share to Facebook. You'll be presented with a miniature version of your screenshot, and can edit the text associated with the Facebook post.{*B*}{*B*}
+There's a camera mode especially for taking these screenshots, so that you can see the front of your character in the shot - press{*CONTROLLER_ACTION_CAMERA*} until you can see the front view of your character before pressing{*CONTROLLER_VK_Y*} to Share.{*B*}{*B*}
+Gamertags will not be displayed in the screenshot.
+
+
+{*T3*}HOW TO PLAY : BANNING LEVELS{*ETW*}{*B*}{*B*}
+If you find offensive content within a level you are playing, you can choose to add the level to your Banned Levels list.
+If you would like to do this, bring up the Pause menu, then press{*CONTROLLER_VK_RB*} to select the Ban Level tooltip.
+When you attempt to join this level in future, you will be notified that the level is in your Banned Levels list, and given the option to remove it from the list and continue into the level, or back out.
+
+{*T3*}HOW TO PLAY : CREATIVE MODE{*ETW*}{*B*}{*B*}
+The creative mode interface allows any item in the game to be moved into the player’s inventory without the need for mining or crafting the item.
+The items in the player's inventory will not be removed when they are placed or used in the world, and this allows the player to focus on building rather than resource gathering.{*B*}
+If you create, load or save a world in Creative Mode, that world will have achievements and leaderboard updates disabled, even if it is then loaded in Survival Mode.{*B*}
+To fly when in Creative Mode, press{*CONTROLLER_ACTION_JUMP*} twice quickly. To exit flying, repeat the action. To fly faster, push{*CONTROLLER_ACTION_MOVE*} forward twice in rapid succession while flying.
+When in flying mode, you can hold down{*CONTROLLER_ACTION_JUMP*} to move up and{*CONTROLLER_ACTION_SNEAK*} to move down, or use{*CONTROLLER_ACTION_DPAD_UP*} to move up, {*CONTROLLER_ACTION_DPAD_DOWN*} to move down,
+{*CONTROLLER_ACTION_DPAD_LEFT*} to move left, and {*CONTROLLER_ACTION_DPAD_RIGHT*} to move right.
+
+{*T3*}HOW TO PLAY : HOST AND PLAYER OPTIONS{*ETW*}{*B*}{*B*}
+
+{*T1*}Game Options{*ETW*}{*B*}
+When loading or creating a world, you can press the "More Options" button to enter a menu that allows more control over your game.{*B*}{*B*}
+
+ {*T2*}Player vs Player{*ETW*}{*B*}
+ When enabled, players can inflict damage on other players. This option only affects Survival mode.{*B*}{*B*}
+
+ {*T2*}Trust Players{*ETW*}{*B*}
+ When disabled, players joining the game are restricted in what they can do. They are not able to mine or use items, place blocks, use doors and switches, use containers, attack players or attack animals. You can change these options for a specific player using the in-game menu.{*B*}{*B*}
+
+ {*T2*}Fire Spreads{*ETW*}{*B*}
+ When enabled, fire may spread to nearby flammable blocks. This option can also be changed from within the game.{*B*}{*B*}
+
+ {*T2*}TNT Explodes{*ETW*}{*B*}
+ When enabled, TNT will explode when detonated. This option can also be changed from within the game.{*B*}{*B*}
+
+ {*T2*}Host Privileges{*ETW*}{*B*}
+ When enabled, the host can toggle their ability to fly, disable exhaustion, and make themselves invisible from the in-game menu. {*DISABLES_ACHIEVEMENTS*}{*B*}{*B*}
+
+{*T1*}World Generation Options{*ETW*}{*B*}
+When creating a new world there are some additional options.{*B*}{*B*}
+
+ {*T2*}Generate Structures{*ETW*}{*B*}
+ When enabled, structures such as Villages and Strongholds will generate in the world.{*B*}{*B*}
+
+ {*T2*}Superflat World{*ETW*}{*B*}
+ When enabled, a completely flat world will be generated in the Overworld and in the Nether.{*B*}{*B*}
+
+ {*T2*}Bonus Chest{*ETW*}{*B*}
+ When enabled, a chest containing some useful items will be created near the player spawn point.{*B*}{*B*}
+
+ {*T2*}Reset Nether{*ETW*}{*B*}
+ When enabled, the Nether will be re-generated. This is useful if you have an older save where Nether Fortresses were not present.{*B*}{*B*}
+
+ {*T1*}In-Game Options{*ETW*}{*B*}
+ While in the game a number of options can be accessed by pressing {*BACK_BUTTON*} to bring up the in-game menu.{*B*}{*B*}
+
+ {*T2*}Host Options{*ETW*}{*B*}
+ The host player, and any players set as moderators can access the "Host Option" menu. In this menu they can enable and disable fire spreading and TNT exploding.{*B*}{*B*}
+
+{*T1*}Player Options{*ETW*}{*B*}
+To modify the privileges for a player, select their name and press{*CONTROLLER_VK_A*} to bring up the player privileges menu where you can use the following options.{*B*}{*B*}
+
+ {*T2*}Can Build And Mine{*ETW*}{*B*}
+ This option is only available when "Trust Players" is turned off. When this option is enabled, the player is able to interact with the world as normal. When disabled the player will not be able to place or destroy blocks, or interact with many items and blocks.{*B*}{*B*}
+
+ {*T2*}Can Use Doors and Switches{*ETW*}{*B*}
+ This option is only available when "Trust Players" is turned off. When this option is disabled, the player will not be able to use doors and switches.{*B*}{*B*}
+
+ {*T2*}Can Open Containers{*ETW*}{*B*}
+ This option is only available when "Trust Players" is turned off. When this option is disabled, the player will not be able to open containers, such as chests.{*B*}{*B*}
+
+ {*T2*}Can Attack Players{*ETW*}{*B*}
+ This option is only available when "Trust Players" is turned off. When this option is disabled the player will not be able to cause damage to other players.{*B*}{*B*}
+
+ {*T2*}Can Attack Animals{*ETW*}{*B*}
+ This option is only available when "Trust Players" is turned off. When this option is disabled the player will not be able to cause damage to animals.{*B*}{*B*}
+
+ {*T2*}Moderator{*ETW*}{*B*}
+ When this option is enabled, the player is able to change privileges for other players (except the host) if "Trust Players" is turned off, kick players and they can enable and disable fire spreading and TNT exploding.{*B*}{*B*}
+
+ {*T2*}Kick Player{*ETW*}{*B*}
+ For players that are not on the same {*PLATFORM_NAME*} console as the host player, selecting this option will kick the player from the game and any other players on their {*PLATFORM_NAME*} console. This player will not be able to rejoin the game until it is restarted.{*B*}{*B*}
+
+{*T1*}Host Player Options{*ETW*}{*B*}
+If "Host Privileges" is enabled the host player can modify some privileges for themselves. To modify the privileges for a player, select their name and press{*CONTROLLER_VK_A*} to bring up the player privileges menu where you can use the following options.{*B*}{*B*}
+
+ {*T2*}Can Fly{*ETW*}{*B*}
+ When this option is enabled, the player is able to fly. This option is only relevant to Survival mode, as flying is enabled for all players in Creative mode.{*B*}{*B*}
+
+ {*T2*}Disable Exhaustion{*ETW*}{*B*}
+ This option only affects Survival mode. When enabled, physical activities (walking/sprinting/jumping etc.) do not decrease the food bar. However, if the player becomes injured, the food bar will slowly decrease while the player is healing.{*B*}{*B*}
+
+ {*T2*}Invisible{*ETW*}{*B*}
+ When this option is enabled, the player is not visible to other players and is invulnerable.{*B*}{*B*}
+
+ {*T2*}Can Teleport{*ETW*}{*B*}
+ This allows the player to move players or themselves to other players in the world.
+
+
+Next Page
+
+Previous Page
+
+Basics
+
+HUD
+
+Inventory
+
+Chests
+
+Crafting
+
+Furnace
+
+Dispenser
+
+Farming Animals
+
+Breeding Animals
+
+Brewing
+
+Enchantment
+
+Nether Portal
+
+Multiplayer
+
+Sharing Screenshots
+
+Banning Levels
+
+Creative Mode
+
+Host and Player Options
+
+Trading
+
+Anvil
+
+The End
+
+{*T3*}HOW TO PLAY : THE END{*ETW*}{*B*}{*B*}
+The End is another dimension in the game, which is reached through an active End Portal. The End Portal can be found in a Stronghold, which is deep underground in the Overworld.{*B*}
+To activate the End Portal, you'll need to put an Eye of Ender into any End Portal Frame without one.{*B*}
+Once the portal is active, jump in to it to go to The End.{*B*}{*B*}
+In The End you will meet the Ender Dragon, a fierce and powerful enemy, along with many Enderman, so you will have to be well prepared for the battle before going there!{*B*}{*B*}
+You'll find that there are Ender Crystals on top of eight Obsidian spikes that the Ender Dragon uses to heal itself,
+so the first step in the battle is to destroy each of these.{*B*}
+The first few can be reached with arrows, but the later ones are protected by an Iron Fence cage, and you will need to build up to them.{*B*}{*B*}
+While you are doing this, the Ender Dragon will be attacking you by flying at you and spitting Ender acid balls!{*B*}
+If you approach the Egg Podium in the centre of the spikes, the Ender Dragon will fly down and attack you and this is where you can really do some damage to it!{*B*}
+Avoid the acid breath, and target the Ender Dragon's eyes for the best results. If possible, bring some friends in to The End to help you with the battle!{*B*}{*B*}
+Once you are in The End, your friends will be able to see the location of the End Portal within the Stronghold on their maps,
+so they can easily join you.
+
+
+Sprint
+
+What's New
+
+
+{*T3*}Changes and Additions{*ETW*}{*B*}{*B*}
+- Added new items - Emerald, Emerald Ore, Block of Emerald, Ender Chest, Tripwire Hook, Enchanted Golden Apple, Anvil, Flower Pot, Cobblestone Walls, Mossy Cobblestone Walls, Wither Painting, Potato, Baked Potato, Poisonous Potato, Carrot, Golden Carrot, Carrot on a Stick,
+Pumpkin Pie, Night Vision Potion, Invisibility Potion, Nether Quartz, Nether Quartz Ore, Block of Quartz, Quartz Slab, Quartz Stair, Chiseled Quartz Block, Pillar Quartz Block, Enchanted Book, Carpet.{*B*}
+- Added new recipes for Smooth Sandstone and Chiselled Sandstone.{*B*}
+- Added new Mobs - Zombie Villagers.{*B*}
+- Added new terrain generation features - Desert Temples, Desert Villages, Jungle Temples.{*B*}
+- Added Trading with villagers.{*B*}
+- Added Anvil interface.{*B*}
+- Can dye leather armor.{*B*}
+- Can dye wolf collars.{*B*}
+- Can control riding a pig with a Carrot on a Stick.{*B*}
+- Updated Bonus Chest content with more items.{*B*}
+- Changed placement of half blocks and other blocks on half blocks.{*B*}
+- Changed placement of upside down stairs and slabs.{*B*}
+- Added different villager professions.{*B*}
+- Villagers spawned from a spawn egg will have a random profession.{*B*}
+- Added sideways log placement.{*B*}
+- Furnaces can use wooden tools as a fuel.{*B*}
+- Ice and Glass panes can be collected with silk touch enchanted tools.{*B*}
+- Wooden Buttons and Wooden Pressure Plates can be activated with Arrows.{*B*}
+- Nether mobs can spawn in the Overworld from Portals.{*B*}
+- Creepers and Spiders are aggressive towards the last player that hit them.{*B*}
+- Mobs in Creative mode become neutral again after a short period.{*B*}
+- Remove knockback when drowning.{*B*}
+- Doors being broken by zombies show damage.{*B*}
+- Ice melts in the nether.{*B*}
+- Cauldrons fill up when out in the rain.{*B*}
+- Pistons take twice as long to update.{*B*}
+- Pig drops Saddle when killed (if has one).{*B*}
+- Sky color in The End changed.{*B*}
+- String can be placed (for Tripwires).{*B*}
+- Rain drips through leaves.{*B*}
+- Levers can be placed on the bottom of blocks.{*B*}
+- TNT does variable damage depending on difficulty setting.{*B*}
+- Book recipe changed.{*B*}
+- Boats break Lilypads, instead of Lilypads breaking Boats.{*B*}
+- Pigs drop more Porkchops.{*B*}
+- Slimes spawn less in Superflat worlds.{*B*}
+- Creeper damage variable based on difficulty setting, more knockback.{*B*}
+- Fixed Endermen not opening their jaws.{*B*}
+- Added teleporting of players (using the {*BACK_BUTTON*} menu in-game).{*B*}
+- Added new Host Options for flying, invisibility and invulnerability for remote players.{*B*}
+- Added new tutorials to the Tutorial World for new items and features.{*B*}
+- Updated the positions of the Music Disc Chests in the Tutorial World.{*B*}
+
+
+{*ETB*}Welcome back! You may not have noticed but your Minecraft has just been updated.{*B*}{*B*}
+There are lots of new features for you and friends to play with so here’s just a few highlights. Have a read and then go and have fun!{*B*}{*B*}
+{*T1*}New Items{*ETB*} - Emerald, Emerald Ore, Block of Emerald, Ender Chest, Tripwire Hook, Enchanted Golden Apple, Anvil, Flower Pot, Cobblestone Walls, Mossy Cobblestone Walls, Wither Painting, Potato, Baked Potato, Poisonous Potato, Carrot, Golden Carrot, Carrot on a Stick,
+Pumpkin Pie, Night Vision Potion, Invisibility Potion, Nether Quartz, Nether Quartz Ore, Block of Quartz, Quartz Slab, Quartz Stair, Chiseled Quartz Block, Pillar Quartz Block, Enchanted Book, Carpet.{*B*}{*B*}
+ {*T1*}New Mobs{*ETB*} - Zombie Villagers.{*B*}{*B*}
+{*T1*}New Features{*ETB*} - Trade with villagers, repair or enchant weapons and tools with an Anvil, store items in an Ender Chest, control a pig while riding it using a Carrot on a Stick!{*B*}{*B*}
+{*T1*}New Mini-Tutorials{*ETB*} – Learn how to use the new features in the Tutorial World!{*B*}{*B*}
+{*T1*}New 'Easter Eggs'{*ETB*} – We've moved all the secret Music Discs in the Tutorial World. See if you can find them again!{*B*}{*B*}
+
+
+Deals more damage than by hand.
+
+Used to dig dirt, grass, sand, gravel and snow faster than by hand. Shovels are required to dig snowballs.
+
+Required to mine stone-related blocks and ore.
+
+Used to chop wood-related blocks faster than by hand.
+
+Used to till dirt and grass blocks to prepare for crops.
+
+Wooden doors are activated by using, hitting them or with Redstone.
+
+Iron doors can only be opened by Redstone, buttons or switches.
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+Gives the user 1 Armor when worn.
+
+Gives the user 3 Armor when worn.
+
+Gives the user 2 Armor when worn.
+
+Gives the user 1 Armor when worn.
+
+Gives the user 2 Armor when worn.
+
+Gives the user 5 Armor when worn.
+
+Gives the user 4 Armor when worn.
+
+Gives the user 1 Armor when worn.
+
+Gives the user 2 Armor when worn.
+
+Gives the user 6 Armor when worn.
+
+Gives the user 5 Armor when worn.
+
+Gives the user 2 Armor when worn.
+
+Gives the user 2 Armor when worn.
+
+Gives the user 5 Armor when worn.
+
+Gives the user 3 Armor when worn.
+
+Gives the user 1 Armor when worn.
+
+Gives the user 3 Armor when worn.
+
+Gives the user 8 Armor when worn.
+
+Gives the user 6 Armor when worn.
+
+Gives the user 3 Armor when worn.
+
+A shiny ingot which can be used to craft tools made from this material. Created by smelting ore in a furnace.
+
+Allows ingots, gems, or dyes to be crafted into placeable blocks. Can be used as an expensive building block or compact storage of the ore.
+
+Used to send an electrical charge when stepped on by a player, an animal, or a monster. Wooden Pressure Plates can also be activated by dropping something on them.
+
+Used for compact staircases.
+
+Used for making long staircases. Two slabs placed on top of each other will create a normal-sized double slab block.
+
+Used for making long staircases. Two slabs placed on top of each other will create a normal-sized double slab block.
+
+Used to create light. Torches also melt snow and ice.
+
+Used as a building material and can be crafted into many things. Can be crafted from any form of wood.
+
+Used as a building material. Is not influenced by gravity like normal Sand.
+
+Used as a building material.
+
+Used to craft torches, arrows, signs, ladders, fences and as handles for tools and weapons.
+
+Used to forward time from any time at night to morning if all the players in the world are in bed, and changes the spawn point of the player.
+The colors of the bed are always the same, regardless of the colors of wool used.
+
+Allows you to craft a more varied selection of items than the normal crafting.
+
+Allows you to smelt ore, create charcoal and glass, and cook fish and porkchops.
+
+Stores blocks and items inside. Place two chests side by side to create a larger chest with double the capacity.
+
+Used as a barrier that cannot be jumped over. Counts as 1.5 blocks high for players, animals and monsters, but 1 block high for other blocks.
+
+Used to climb vertically.
+
+Activated by using, hitting them or with redstone. They function as normal doors, but are a one by one block and lay flat on the ground.
+
+Shows text entered by you or other players.
+
+Used to create brighter light than torches. Melts snow/ice and can be used underwater.
+
+Used to cause explosions. Activated after placing by igniting with Flint and Steel item, or with an electrical charge.
+
+Used to hold mushroom stew. You keep the bowl when the stew has been eaten.
+
+Used to hold and transport water, lava and milk.
+
+Used to hold and transport water.
+
+Used to hold and transport lava.
+
+Used to hold and transport milk.
+
+Used to create fire, ignite TNT, and open a portal once it has been built.
+
+Used to catch fish.
+
+Displays positions of the Sun and Moon.
+
+Points to your start point.
+
+Will create an image of an area explored while held. This can be used for path-finding.
+
+Allows for ranged attacks by using arrows.
+
+Used as ammunition for bows.
+
+Restores 2.5{*ICON_SHANK_01*}.
+
+Restores 1{*ICON_SHANK_01*}. Can be used 6 times.
+
+Restores 1{*ICON_SHANK_01*}.
+
+Restores 1{*ICON_SHANK_01*}.
+
+Restores 3{*ICON_SHANK_01*}.
+
+Restores 1{*ICON_SHANK_01*}, or can be cooked in a furnace. Eating this can cause you to be poisoned.
+
+Restores 3{*ICON_SHANK_01*}. Created by cooking raw chicken in a furnace.
+
+Restores 1.5{*ICON_SHANK_01*}, or can be cooked in a furnace.
+
+Restores 4{*ICON_SHANK_01*}. Created by cooking raw beef in a furnace.
+
+Restores 1.5{*ICON_SHANK_01*}, or can be cooked in a furnace.
+
+Restores 4{*ICON_SHANK_01*}. Created by cooking a raw porkchop in a furnace.
+
+Restores 1{*ICON_SHANK_01*}, or can be cooked in a furnace. Can be fed to an Ocelot to tame it.
+
+Restores 2.5{*ICON_SHANK_01*}. Created by cooking a raw fish in a furnace.
+
+Restores 2{*ICON_SHANK_01*}, and can be crafted into a golden apple.
+
+Restores 2{*ICON_SHANK_01*}, and regenerates health for 4 seconds. Crafted from an apple and gold nuggets.
+
+Restores 2{*ICON_SHANK_01*}. Eating this can cause you to be poisoned.
+
+Used in the cake recipe, and as an ingredient for brewing potions.
+
+Used to send an electrical charge by being turned on or off. Stays in the on or off state until pressed again.
+
+Constantly sends an electrical charge, or can be used as a receiver/transmitter when connected to the side of a block.
+Can also be used for low-level lighting.
+
+Used in Redstone circuits as repeater, a delayer, and/or a diode.
+
+Used to send an electrical charge by being pressed. Stays activated for approximately a second before shutting off again.
+
+Used to hold and shoot out items in a random order when given a Redstone charge.
+
+Plays a note when triggered. Hit it to change the pitch of the note. Placing this on top of different blocks will change the type of instrument.
+
+Used to guide minecarts.
+
+When powered, accelerates minecarts that pass over it. When unpowered, causes minecarts to stop on it.
+
+Functions like a Pressure Plate (sends a Redstone signal when powered) but can only be activated by a minecart.
+
+Used to transport you, an animal, or a monster along rails.
+
+Used to transport goods along rails.
+
+Will move along rails and can push other minecarts when coal is put in it.
+
+Used to travel in water more quickly than swimming.
+
+Collected from sheep, and can be colored with dyes.
+
+Used as a building material and can be colored with dyes. This recipe is not recommended because Wool can be easily obtained from Sheep.
+
+Used as a dye to create black wool.
+
+Used as a dye to create green wool.
+
+Used as a dye to create brown wool, as an ingredient in cookies, or to grow Cocoa Pods.
+
+Used as a dye to create silver wool.
+
+Used as a dye to create yellow wool.
+
+Used as a dye to create red wool.
+
+Used to instantly grow crops, trees, tall grass, huge mushrooms and flowers, and can be used in dye recipes.
+
+Used as a dye to create pink wool.
+
+Used as a dye to create orange wool.
+
+Used as a dye to create lime wool.
+
+Used as a dye to create gray wool.
+
+Used as a dye to create light gray wool.
+(Note: light gray dye can also be made by combining gray dye with bone meal, letting you make four light gray dyes from every ink sac instead of three.)
+
+Used as a dye to create light blue wool.
+
+Used as a dye to create cyan wool.
+
+Used as a dye to create purple wool.
+
+Used as a dye to create magenta wool.
+
+Used as dye to create Blue Wool.
+
+Plays Music Discs.
+
+Use these to create very strong tools, weapons or armor.
+
+Used to create brighter light than torches. Melts snow/ice and can be used underwater.
+
+Used to create books and maps.
+
+Can be used to create a bookshelves or enchanted to make Enchanted Books.
+
+Allows the creation of more powerful enchantments when placed around the Enchantment Table.
+
+Used as decoration.
+
+Can be mined with an iron pickaxe or better, then smelted in a furnace to produce gold ingots.
+
+Can be mined with a stone pickaxe or better, then smelted in a furnace to produce iron ingots.
+
+Can be mined with a pickaxe to collect coal.
+
+Can be mined with a stone pickaxe or better to collect lapis lazuli.
+
+Can be mined with an iron pickaxe or better to collect diamonds.
+
+Can be mined with an iron pickaxe or better to collect redstone dust.
+
+Can be mined with a pickaxe to collect cobblestone.
+
+Collected using a shovel. Can be used for construction.
+
+Can be planted and it will eventually grow into a tree.
+
+This cannot be broken.
+
+Sets fire to anything that touches it. Can be collected in a bucket.
+
+Collected using a shovel. Can be smelted into glass using the furnace. Is affected by gravity if there is no other tile underneath it.
+
+Collected using a shovel. Sometimes produces flint when dug up. Is affected by gravity if there is no other tile underneath it.
+
+Chopped using an axe, and can be crafted into planks or used as a fuel.
+
+Created in a furnace by smelting sand. Can be used for construction, but will break if you try to mine it.
+
+Mined from stone using a pickaxe. Can be used to construct a furnace or stone tools.
+
+Baked from clay in a furnace.
+
+Can be baked into bricks in a furnace.
+
+When broken drops clay balls which can be baked into bricks in a furnace.
+
+A compact way to store snowballs.
+
+Can be dug with a shovel to create snowballs.
+
+Sometimes produces wheat seeds when broken.
+
+Can be crafted into a dye.
+
+Can be crafted with a bowl to make stew.
+
+Can only be mined with a diamond pickaxe. Is produced by the meeting of water and still lava, and is used to build a portal.
+
+Spawns monsters into the world.
+
+Is placed on the ground to carry an electrical charge. When brewed with a potion it will increase the duration of the effect.
+
+When fully grown, crops can be harvested to collect wheat.
+
+Ground that has been prepared ready to plant seeds.
+
+Can be cooked in a furnace to create a green dye.
+
+Can be crafted to create sugar.
+
+Can be worn as a helmet or crafted with a torch to create a Jack-O-Lantern. It is also the main ingredient in Pumpkin Pie.
+
+Burns forever if set alight.
+
+Slows the movement of anything walking over it.
+
+Standing in the portal allows you to pass between the Overworld and the Nether.
+
+Used as a fuel in a furnace, or crafted to make a torch.
+
+Collected by killing a spider, and can be crafted into a Bow or Fishing Rod, or placed on the ground to create Tripwire.
+
+Collected by killing a chicken, and can be crafted into an arrow.
+
+Collected by killing a Creeper, and can be crafted into TNT or used as an ingredient for brewing potions.
+
+Can be planted in farmland to grow crops. Make sure there's enough light for the seeds to grow!
+
+Harvested from crops, and can be used to craft food items.
+
+Collected by digging gravel, and can be used to craft a flint and steel.
+
+When used on a pig it allows you to ride the pig. The pig can then be steered using a Carrot on a Stick.
+
+Collected by digging snow, and can be thrown.
+
+Collected by killing a cow, and can be crafted into armor or used to make Books.
+
+Collected by killing a Slime, and used as an ingredient for brewing potions or crafted to make Sticky Pistons.
+
+Dropped randomly by chickens, and can be crafted into food items.
+
+Collected by mining Glowstone, and can be crafted to make Glowstone blocks again or brewed with a potion to increase the potency of the effect.
+
+Collected by killing a Skeleton. Can be crafted into bone meal. Can be fed to a wolf to tame it.
+
+Collected by getting a Skeleton to kill a Creeper. Can be played in a jukebox.
+
+Extinguishes fire and helps crops grow. Can be collected in a bucket.
+
+When broken sometimes drops a sapling which can then be replanted to grow into a tree.
+
+Found in dungeons, can be used for construction and decoration.
+
+Used to obtain wool from sheep and harvest leaf blocks.
+
+When powered (using a button, a lever, a pressure plate, a redstone torch, or redstone with any one of these), a piston extends if it can and pushes blocks.
+
+When powered (using a button, a lever, a pressure plate, a redstone torch, or redstone with any one of these), a piston extends if it can and pushes blocks. When it retracts it pulls back the block touching the extended part of the piston.
+
+Made from Stone blocks, and commonly found in Strongholds.
+
+Used as a barrier, similar to fences.
+
+Similar to a door, but used primarily with fences.
+
+Can be crafted from Melon Slices.
+
+Transparent blocks that can be used as an alternative to Glass Blocks.
+
+Can be planted to grow pumpkins.
+
+Can be planted to grow melons.
+
+Dropped by Enderman when they die. When thrown, the player will be teleported to the position the Ender Pearl lands at, and will lose some health.
+
+A block of dirt with grass growing on top. Collected using a shovel. Can be used for construction.
+
+Can be used for construction and decoration.
+
+Slows movement when walking through it. Can be destroyed using shears to collect string.
+
+Spawns a Silverfish when destroyed. May also spawn Silverfish if nearby to another Silverfish being attacked.
+
+Grows over time when placed. Can be collected using shears. Can be climbed like a ladder.
+
+Slippery when walked on. Turns into water if above another block when destroyed. Melts if close enough to a light source or when placed in The Nether.
+
+Can be used as decoration.
+
+Used in potion brewing, and for locating Strongholds. Dropped by Blazes who tend to be found near or in Nether Fortresses.
+
+Used in potion brewing. Dropped by Ghasts when they die.
+
+Dropped by Zombie Pigmen when they die. Zombie Pigmen can be found in the Nether. Used as an ingredient for brewing potions.
+
+Used in potion brewing. This can be found naturally growing in Nether Fortresses. It can also be planted on Soul Sand.
+
+When used, can have various effects, depending on what it is used on.
+
+Can be filled with water, and used as the starting ingredient for a potion in the Brewing Stand.
+
+This is a poisonous food and brewing item. Dropped when a Spider or Cave Spider is killed by a player.
+
+Used in potion brewing, mainly to create potions with a negative effect.
+
+Used in potion brewing, or crafted with other items to make Eye of Ender or Magma Cream.
+
+Used in potion brewing.
+
+Used for making Potions and Splash Potions.
+
+Filled with water by rain or with a bucket of water, and can then be used to fill Glass Bottles with water.
+
+When thrown, will show the direction to an End Portal. When twelve of these are placed in the End Portal Frames, the End Portal will be activated.
+
+Used in potion brewing.
+
+Similar to Grass Blocks, but very good for growing mushrooms on.
+
+Floats on water, and can be walked on.
+
+Used to build Nether Fortresses. Immune to Ghast's fireballs.
+
+Used in Nether Fortresses.
+
+Found in Nether Fortresses, and will drop Nether Wart when broken.
+
+This allows players to enchant Swords, Pickaxes, Axes, Shovels, Bows and Armor, using the player's Experience Points.
+
+This can be activated using twelve Eye of Ender, and will allow the player to travel to The End dimension.
+
+Used to form an End Portal.
+
+A block type found in The End. It has a very high blast resistance, so is useful for building with.
+
+This block is created by the defeat of the Dragon in The End.
+
+When thrown, it drops Experience Orbs which increase your experience points when collected.
+
+Useful for setting things on fire, or for indiscriminately starting fires when fired from a Dispenser.
+
+These are similar to a display case, and will display the item or block placed in it.
+
+When thrown can spawn a creature of the type indicated.
+
+Used for making long staircases. Two slabs placed on top of each other will create a normal-sized double slab block.
+
+Used for making long staircases. Two slabs placed on top of each other will create a normal-sized double slab block.
+
+Created by smelting Netherrack in a furnace. Can be crafted into Nether Brick blocks.
+
+When powered they emit light.
+
+Can be farmed to collect Cocoa Beans.
+
+Mob Heads can be placed as a decoration, or worn as a mask in the helmet slot.
+
+Squid
+
+Drops ink sacs when killed.
+
+Cow
+
+Drops leather when killed. Can also be milked with a bucket.
+
+Sheep
+
+Drops wool when sheared (if it has not already been sheared). Can be dyed to make its wool a different color.
+
+Chicken
+
+Drops feathers when killed, and also randomly lays eggs.
+
+Pig
+
+Drops porkchops when killed. Can be ridden by using a saddle.
+
+Wolf
+
+Docile until attacked, when they will attack you back. Can be tamed using bones which causes the wolf to follow you around and attack anything that attacks you.
+
+Creeper
+
+Explodes if you get too close!
+
+Skeleton
+
+Fires arrows at you. Drops arrows when killed.
+
+Spider
+
+Attacks you when you are close to it. Can climb walls. Drops string when killed.
+
+Zombie
+
+Attacks you when you are close to it.
+
+Zombie Pigman
+
+Initially docile, but will attack in groups if you attack one.
+
+Ghast
+
+Fires flaming balls at you that explode on contact.
+
+Slime
+
+Split into smaller Slimes when damaged.
+
+Enderman
+
+Will attack you if you look at it. Can also move blocks around.
+
+Silverfish
+
+Attracts nearby hidden Silverfish when attacked. Hides in stone blocks.
+
+Cave Spider
+
+Has a venomous bite.
+
+Mooshroom
+
+Makes mushroom stew when used with a bowl. Drops mushrooms and becomes a normal cow when sheared.
+
+Snow Golem
+
+The Snow Golem can be created by players using snow blocks and a pumpkin. They will throw snowballs at their creators enemies.
+
+Ender Dragon
+
+This is a large black dragon found in The End.
+
+Blaze
+
+These are enemies found in the Nether, mostly inside Nether Fortresses. They will drop Blaze Rods when killed.
+
+Magma Cube
+
+These can be found in The Nether. Similar to Slimes, they will break up into smaller versions when killed.
+
+Villager
+
+Ocelot
+
+These can be found in Jungles. They can be tamed by feeding them Raw Fish. You will need to let the Ocelot approach you though, since any sudden movements will scare it away.
+
+Iron Golem
+
+Appear in Villages to protect them, and can be created using Iron Blocks and Pumpkins.
+
+Explosives Animator
+
+Concept Artist
+
+Number Crunching and Statistics
+
+Bully Coordinator
+
+Original Design and Code by
+
+Project Manager/Producer
+
+Rest of Mojang Office
+
+Lead Game Programmer Minecraft PC
+
+Ninja Coder
+
+CEO
+
+White Collar Worker
+
+Customer Support
+
+Office DJ
+
+Designer/Programmer Minecraft - Pocket Edition
+
+Developer
+
+Chief Architect
+
+Art Developer
+
+Game Crafter
+
+Director of Fun
+
+Music and Sounds
+
+Programming
+
+Art
+
+QA
+
+Executive Producer
+
+Lead Producer
+
+Producer
+
+Test Lead
+
+Lead Tester
+
+Design Team
+
+Development Team
+
+Release Management
+
+Director, XBLA Publishing
+
+Business Development
+
+Portfolio Director
+
+Product Manager
+
+Marketing
+
+ Community Manager
+
+Europe Localization Team
+
+Redmond Localization Team
+
+Asia Localization Team
+
+User Research Team
+
+MGS Central Teams
+
+Milestone Acceptance Tester
+
+Special Thanks
+
+Test Manager
+
+Senior Test Lead
+
+SDET
+
+Project STE
+
+Additional STE
+
+Test Associates
+
+Jon Kågström
+
+Tobias Möllstam
+
+Risë Lugo
+
+Wooden Sword
+
+Stone Sword
+
+Iron Sword
+
+Diamond Sword
+
+Golden Sword
+
+Wooden Shovel
+
+Stone Shovel
+
+Iron Shovel
+
+Diamond Shovel
+
+Golden Shovel
+
+Wooden Pickaxe
+
+Stone Pickaxe
+
+Iron Pickaxe
+
+Diamond Pickaxe
+
+Golden Pickaxe
+
+Wooden Axe
+
+Stone Axe
+
+Iron Axe
+
+Diamond Axe
+
+Golden Axe
+
+Wooden Hoe
+
+Stone Hoe
+
+Iron Hoe
+
+Diamond Hoe
+
+Golden Hoe
+
+Wooden Door
+
+Iron Door
+
+Chain Helmet
+
+Chain Chestplate
+
+Chain Leggings
+
+Chain Boots
+
+Leather Cap
+
+Iron Helmet
+
+Diamond Helmet
+
+Golden Helmet
+
+Leather Tunic
+
+Iron Chestplate
+
+Diamond Chestplate
+
+Golden Chestplate
+
+Leather Pants
+
+Iron Leggings
+
+Diamond Leggings
+
+Golden Leggings
+
+Leather Boots
+
+Iron Boots
+
+Diamond Boots
+
+Golden Boots
+
+Iron Ingot
+
+Gold Ingot
+
+Bucket
+
+Water Bucket
+
+Lava Bucket
+
+Flint and Steel
+
+Apple
+
+Bow
+
+Arrow
+
+Coal
+
+Charcoal
+
+Diamond
+
+Stick
+
+Bowl
+
+Mushroom Stew
+
+String
+
+Feather
+
+Gunpowder
+
+Wheat Seeds
+
+Wheat
+
+Bread
+
+Flint
+
+Raw Porkchop
+
+Cooked Porkchop
+
+Painting
+
+Golden Apple
+
+Sign
+
+Minecart
+
+Saddle
+
+Redstone
+
+Snowball
+
+Boat
+
+Leather
+
+Milk Bucket
+
+Brick
+
+Clay
+
+Sugar Canes
+
+Paper
+
+Book
+
+Slimeball
+
+Minecart with Chest
+
+Minecart with Furnace
+
+Egg
+
+Compass
+
+Fishing Rod
+
+Clock
+
+Glowstone Dust
+
+Raw Fish
+
+Cooked Fish
+
+Dye Powder
+
+Ink Sac
+
+Rose Red
+
+Cactus Green
+
+Cocoa Beans
+
+Lapis Lazuli
+
+Purple Dye
+
+Cyan Dye
+
+Light Gray Dye
+
+Gray Dye
+
+Pink Dye
+
+Lime Dye
+
+Dandelion Yellow
+
+Light Blue Dye
+
+Magenta Dye
+
+Orange Dye
+
+Bone Meal
+
+Bone
+
+Sugar
+
+Cake
+
+Bed
+
+Redstone Repeater
+
+Cookie
+
+Map
+
+Music Disc - "13"
+
+Music Disc - "cat"
+
+Music Disc - "blocks"
+
+Music Disc - "chirp"
+
+Music Disc - "far"
+
+Music Disc - "mall"
+
+Music Disc - "mellohi"
+
+Music Disc - "stal"
+
+Music Disc - "strad"
+
+Music Disc - "ward"
+
+Music Disc - "11"
+
+Music Disc - "where are we now"
+
+Shears
+
+Pumpkin Seeds
+
+Melon Seeds
+
+Raw Chicken
+
+Cooked Chicken
+
+Raw Beef
+
+Steak
+
+Rotten Flesh
+
+Ender Pearl
+
+Melon Slice
+
+Blaze Rod
+
+Ghast Tear
+
+Gold Nugget
+
+Nether Wart
+
+{*splash*}{*prefix*}Potion {*postfix*}
+
+Glass Bottle
+
+Water Bottle
+
+Spider Eye
+
+Fermented Spider Eye
+
+Blaze Powder
+
+Magma Cream
+
+Brewing Stand
+
+Cauldron
+
+Eye of Ender
+
+Glistering Melon
+
+Bottle o' Enchanting
+
+Fire Charge
+
+Fire Charge (Charcoal)
+
+Fire Charge (Coal)
+
+Item Frame
+
+Spawn {*CREATURE*}
+
+Nether Brick
+
+Skull
+
+Skeleton Skull
+
+Wither Skeleton Skull
+
+Zombie Head
+
+Head
+
+%s's Head
+
+Creeper Head
+
+Stone
+
+Grass Block
+
+Dirt
+
+Cobblestone
+
+Oak Wood Planks
+
+Spruce Wood Planks
+
+Birch Wood Planks
+
+Jungle Wood Planks
+
+Sapling
+
+Oak Sapling
+
+Spruce Sapling
+
+Birch Sapling
+
+Jungle Tree Sapling
+
+Bedrock
+
+Water
+
+Lava
+
+Sand
+
+Sandstone
+
+Gravel
+
+Gold Ore
+
+Iron Ore
+
+Coal Ore
+
+Wood
+
+Oak Wood
+
+Spruce Wood
+
+Birch Wood
+
+Jungle Wood
+
+Oak
+
+Spruce
+
+Birch
+
+Leaves
+
+Oak Leaves
+
+Spruce Leaves
+
+Birch Leaves
+
+Jungle Leaves
+
+Sponge
+
+Glass
+
+Wool
+
+Black Wool
+
+Red Wool
+
+Green Wool
+
+Brown Wool
+
+Blue Wool
+
+Purple Wool
+
+Cyan Wool
+
+Light Gray Wool
+
+Gray Wool
+
+Pink Wool
+
+Lime Wool
+
+Yellow Wool
+
+Light Blue Wool
+
+Magenta Wool
+
+Orange Wool
+
+White Wool
+
+Flower
+
+Rose
+
+Mushroom
+
+Block of Gold
+
+A compact way of storing Gold.
+
+A compact way of storing Iron.
+
+Block of Iron
+
+Stone Slab
+
+Stone Slab
+
+Sandstone Slab
+
+Oak Wood Slab
+
+Cobblestone Slab
+
+Bricks Slab
+
+Stone Bricks Slab
+
+Oak Wood Slab
+
+Spruce Wood Slab
+
+Birch Wood Slab
+
+Jungle Wood Slab
+
+Nether Brick Slab
+
+Bricks
+
+TNT
+
+Bookshelf
+
+Moss Stone
+
+Obsidian
+
+Torch
+
+Torch (Coal)
+
+Torch (Charcoal)
+
+Fire
+
+Monster Spawner
+
+Oak Wood Stairs
+
+Chest
+
+Redstone Dust
+
+Diamond Ore
+
+Block of Diamond
+
+A compact way of storing Diamonds.
+
+Crafting Table
+
+Crops
+
+Farmland
+
+Furnace
+
+Sign
+
+Wooden Door
+
+Ladder
+
+Rail
+
+Powered Rail
+
+Detector Rail
+
+Stone Stairs
+
+Lever
+
+Pressure Plate
+
+Iron Door
+
+Redstone Ore
+
+Redstone Torch
+
+Button
+
+Snow
+
+Ice
+
+Cactus
+
+Clay
+
+Sugar Cane
+
+Jukebox
+
+Fence
+
+Pumpkin
+
+Jack-O-Lantern
+
+Netherrack
+
+Soul Sand
+
+Glowstone
+
+Portal
+
+Lapis Lazuli Ore
+
+Lapis Lazuli Block
+
+A compact way of storing Lapis Lazuli.
+
+Dispenser
+
+Note Block
+
+Cake
+
+Bed
+
+Web
+
+Tall Grass
+
+Dead Bush
+
+Diode
+
+Locked Chest
+
+Trapdoor
+
+Wool (any color)
+
+Piston
+
+Sticky Piston
+
+Silverfish Block
+
+Stone Bricks
+
+Mossy Stone Bricks
+
+Cracked Stone Bricks
+
+Chiseled Stone Bricks
+
+Mushroom
+
+Mushroom
+
+Iron Bars
+
+Glass Pane
+
+Melon
+
+Pumpkin Stem
+
+Melon Stem
+
+Vines
+
+Fence Gate
+
+Brick Stairs
+
+Stone Brick Stairs
+
+Silverfish Stone
+
+Silverfish Cobblestone
+
+Silverfish Stone Brick
+
+Mycelium
+
+Lily Pad
+
+Nether Brick
+
+Nether Brick Fence
+
+Nether Brick Stairs
+
+Nether Wart
+
+Enchantment Table
+
+Brewing Stand
+
+Cauldron
+
+End Portal
+
+End Portal Frame
+
+End Stone
+
+Dragon Egg
+
+Shrub
+
+Fern
+
+Sandstone Stairs
+
+Spruce Wood Stairs
+
+Birch Wood Stairs
+
+Jungle Wood Stairs
+
+Redstone Lamp
+
+Cocoa
+
+Skull
+
+Current Controls
+
+Layout
+
+Move/Sprint
+
+Look
+
+Pause
+
+Jump
+
+Jump/Fly Up
+
+Inventory
+
+Cycle Held Item
+
+Action
+
+Use
+
+Crafting
+
+Drop
+
+Sneak
+
+Sneak/Fly Down
+
+Change Camera Mode
+
+Players/Invite
+
+Movement (When Flying)
+
+Layout 1
+
+Layout 2
+
+Layout 3
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+
]]>
+
+{*B*}Press{*CONTROLLER_VK_A*} to continue.
+
+{*B*}Press{*CONTROLLER_VK_A*} to start the tutorial.{*B*}
+ Press{*CONTROLLER_VK_B*} if you think you are ready to play on your own.
+
+Minecraft is a game about placing blocks to build anything you can imagine.
+At night monsters come out, make sure to build a shelter before that happens.
+
+Use{*CONTROLLER_ACTION_LOOK*} to look up, down and around.
+
+Use{*CONTROLLER_ACTION_MOVE*} to move around.
+
+To sprint, push{*CONTROLLER_ACTION_MOVE*} forward twice quickly. While you hold{*CONTROLLER_ACTION_MOVE*} forward, the character will continue to sprint unless they run out of sprint time or food.
+
+Press{*CONTROLLER_ACTION_JUMP*} to jump.
+
+Hold{*CONTROLLER_ACTION_ACTION*} to mine and chop using your hand or whatever you are holding. You may need to craft a tool to mine some blocks...
+
+Hold{*CONTROLLER_ACTION_ACTION*} to chop down 4 blocks of wood (tree trunks).{*B*}When a block breaks you can pick it up by standing near to the floating item that appears, causing it to appear in your inventory.
+
+Press{*CONTROLLER_ACTION_CRAFTING*} to open the crafting interface.
+
+As you collect and craft more items, your inventory will fill up.{*B*}
+ Press{*CONTROLLER_ACTION_INVENTORY*} to open the inventory.
+
+As you move around, mine and attack, you will deplete your food bar{*ICON_SHANK_01*}. Sprinting and sprint jumping use a lot more food than walking and jumping normally.
+
+If you lose some health, but have a food bar with 9 or more{*ICON_SHANK_01*} in it, your health will automatically replenish. Eating food will replenish your food bar.
+
+With a food item in your hand, hold{*CONTROLLER_ACTION_USE*} to eat it and replenish your food bar. You cannot eat if your food bar is full.
+
+Your food bar is low, and you have lost some health. Eat the steak in your inventory to replenish your food bar and start healing.{*ICON*}364{*/ICON*}
+
+The wood that you have collected can be crafted into planks. Open the crafting interface to craft them.{*PlanksIcon*}
+
+A lot of crafting can involve multiple steps. Now that you have some planks there are more items that you can craft. Create a crafting table.{*CraftingTableIcon*}
+
+To make collecting blocks faster you can build tools designed for the job. Some tools have a handle made of sticks. Craft some sticks now.{*SticksIcon*}
+
+Use{*CONTROLLER_ACTION_LEFT_SCROLL*} and{*CONTROLLER_ACTION_RIGHT_SCROLL*} to change the current held item.
+
+Use{*CONTROLLER_ACTION_USE*} to use items, interact with objects and place some items. Items that have been placed can be picked up again by mining them with the right tool.
+
+With the crafting table selected, point the crosshair where you want it and use{*CONTROLLER_ACTION_USE*} to place a crafting table.
+
+Point the crosshair at the crafting table and press{*CONTROLLER_ACTION_USE*} to open it.
+
+A shovel helps dig soft blocks, like dirt and snow, faster. As you collect more materials you can craft tools that work faster and last longer. Create a wooden shovel.{*WoodenShovelIcon*}
+
+An axe helps chop wood and wooden tiles, faster. As you collect more materials you can craft tools that work faster and last longer. Create a wooden axe.{*WoodenHatchetIcon*}
+
+A pickaxe helps dig hard blocks, like stone and ore, faster. As you collect more materials you can craft tools that work faster and last longer, and allow you to mine harder materials. Create a wooden pickaxe.{*WoodenPickaxeIcon*}
+
+Open the container
+
+
+ Night time can approach quickly, and it is dangerous to be outside unprepared. You can craft armor and weapons, but it is sensible to have a safe shelter.
+
+
+
+ Nearby there is an abandoned Miner's shelter that you can complete to be safe overnight.
+
+
+
+ You will need to collect the resources to complete the shelter. Walls and roof can be made of any tile type, but you will want to create a door, some windows and lighting.
+
+
+Use your pickaxe to mine some stone blocks. Stone blocks will produce cobblestone when mined. If you collect 8 cobblestone blocks you can build a furnace. You may need to dig through some dirt to reach the stone, so use your shovel for this.{*StoneIcon*}
+
+You have collected enough cobblestone to build a furnace. Use your crafting table to create one.
+
+Use{*CONTROLLER_ACTION_USE*} to place the furnace in the world, and then open it.
+
+Use the furnace to create some charcoal. If you are waiting for it to finish how about using the time to collect more materials to finish the shelter?
+
+Use the furnace to create some glass. If you are waiting for it to finish how about using the time to collect more materials to finish the shelter?
+
+A good shelter will have a door so that you can easily go in and out without having to mine and replace the walls. Craft a wooden door now.{*WoodenDoorIcon*}
+
+Use{*CONTROLLER_ACTION_USE*} to place the door. You can use{*CONTROLLER_ACTION_USE*} to open and close a wooden door in the world.
+
+It can get very dark at night, so you will want some lighting inside your shelter so that you can see. Craft a torch now from sticks and charcoal using the crafting interface.{*TorchIcon*}
+
+
+ You have completed the first part of the tutorial.
+
+
+
+ {*B*}
+ Press{*CONTROLLER_VK_A*} to continue with the tutorial.{*B*}
+ Press{*CONTROLLER_VK_B*} if you think you are ready to play on your own.
+
+
+
+ This is your inventory. It shows items available for use in your hand, and all the other items that you are carrying. Your armor is also shown here.
+
+
+{*B*}
+ Press{*CONTROLLER_VK_A*} to continue.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know how to use the inventory.
+
+
+
+ Use{*CONTROLLER_MENU_NAVIGATE*} to move the pointer. Use{*CONTROLLER_VK_A*} to pick an item under the pointer.
+ If there is more than one item here this will pick them all up, or you can use{*CONTROLLER_VK_X*} to pick up just half of them.
+
+
+
+ Move this item with the pointer over another space in the inventory and place it down using{*CONTROLLER_VK_A*}.
+ With multiple items on the pointer, use{*CONTROLLER_VK_A*} to place them all, or{*CONTROLLER_VK_X*} to place just one.
+
+
+
+ If you move the pointer outside the edge of the interface with an item on the pointer, you can drop the item.
+
+
+
+ If you want more information about an item, move the pointer over the item and press{*CONTROLLER_VK_RT*} .
+
+
+
+ Press{*CONTROLLER_VK_B*} now to exit the inventory.
+
+
+
+ This is the creative mode inventory. It shows items available for use in your hand, and all the other items that you can choose from.
+
+
+{*B*}
+ Press{*CONTROLLER_VK_A*} to continue.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know how to use the creative mode inventory.
+
+
+
+ Use{*CONTROLLER_MENU_NAVIGATE*} to move the pointer.
+ When on the item list, use{*CONTROLLER_VK_A*} to pick an item under the pointer, and use{*CONTROLLER_VK_Y*} to pick up a full stack of that item.
+
+
+
+ The pointer will automatically move over a space in the use row. You can place it down using{*CONTROLLER_VK_A*}. Once you have placed the item, the pointer will return to the item list where you can select another item.
+
+
+
+ If you move the pointer outside the edge of the interface with an item on the pointer, you can drop the item into the world. To clear all items in the quick select bar, press{*CONTROLLER_VK_X*}.
+
+
+
+ Scroll through the Group Type tabs at the top using{*CONTROLLER_VK_LB*} and{*CONTROLLER_VK_RB*} to select the group type of the item you wish to pickup.
+
+
+
+ If you want more information about an item, move the pointer over the item and press{*CONTROLLER_VK_RT*} .
+
+
+
+ Press{*CONTROLLER_VK_B*} now to exit the creative mode inventory.
+
+
+
+ This is the crafting interface. This interface allows you to combine the items you've collected to make new items.
+
+
+{*B*}
+ Press{*CONTROLLER_VK_A*} to continue.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know how to craft.
+
+
+{*B*}
+ Press{*CONTROLLER_VK_X*} to show the item description.
+
+
+{*B*}
+ Press{*CONTROLLER_VK_X*} to show the ingredients required to make the current item.
+
+
+{*B*}
+ Press{*CONTROLLER_VK_X*} to show the inventory again.
+
+
+
+ Scroll through the Group Type tabs at the top using{*CONTROLLER_VK_LB*} and{*CONTROLLER_VK_RB*} to select the group type of the item you wish to craft, then use{*CONTROLLER_MENU_NAVIGATE*} to select the item to craft.
+
+
+
+ The crafting area shows the items you require in order to craft the new item. Press{*CONTROLLER_VK_A*} to craft the item and place it in your inventory.
+
+
+
+ You can craft a larger selection of items using a crafting table. Crafting on a table works in the same way as basic crafting, but you have a larger crafting area allowing more combinations of ingredients.
+
+
+
+ The bottom right part of the crafting interface shows your inventory. This area can also show a description of the currently selected item, and the ingredients required to craft it.
+
+
+
+ The description of the currently selected item is now displayed. The description can give you an idea of what the item can be used for.
+
+
+
+ The list of ingredients required to craft the selected item are now displayed.
+
+
+The wood that you have collected can be crafted into planks. Select the planks icon and press{*CONTROLLER_VK_A*} to create them.{*PlanksIcon*}
+
+
+ Now you have built a crafting table you should place it in the world to enable you to build a larger selection of items.{*B*}
+ Press{*CONTROLLER_VK_B*} now to exit the crafting interface.
+
+
+
+ Press{*CONTROLLER_VK_LB*} and{*CONTROLLER_VK_RB*} to change to the group type of the items you wish to craft. Select the tools group.{*ToolsIcon*}
+
+
+
+ Press{*CONTROLLER_VK_LB*} and{*CONTROLLER_VK_RB*} to change to the group type of the items you wish to craft. Select the structures group.{*StructuresIcon*}
+
+
+
+ Use{*CONTROLLER_MENU_NAVIGATE*} to change to the item you wish to craft. Some items have multiple versions depending on the materials used. Select the wooden shovel.{*WoodenShovelIcon*}
+
+
+
+ A lot of crafting can involve multiple steps. Now that you have some planks there are more items that you can craft. Use{*CONTROLLER_MENU_NAVIGATE*} to change to the item you wish to craft. Select the crafting table.{*CraftingTableIcon*}
+
+
+
+ With the tools you have built you are off to a great start, and are able to collect a variety of different materials more efficiently.{*B*}
+ Press{*CONTROLLER_VK_B*} now to exit the crafting interface.
+
+
+
+ Some items can not be created using the crafting table, but require a furnace. Craft a furnace now.{*FurnaceIcon*}
+
+
+
+ Place the furnace you have crafted in the world. You will want to put this inside your shelter.{*B*}
+ Press{*CONTROLLER_VK_B*} now to exit the crafting interface.
+
+
+
+ This is the furnace interface. A furnace allows you to change items by firing them. For example, you can turn iron ore into iron ingots in the furnace.
+
+
+{*B*}
+ Press{*CONTROLLER_VK_A*} to continue.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know how to use a furnace.
+
+
+
+ You need to put some fuel into the bottom slot of the furnace, and the item to be changed in the top slot. The furnace will then fire up and start working, putting the result in the right-hand slot.
+
+
+
+ Many wooden items can be used as fuels, but not everything burns for the same time. You may also discover other items in the world that can be used as a fuel.
+
+
+
+ When your items have been fired, you can move them from the output area into your inventory. You should experiment with different ingredients to see what you can make.
+
+
+
+ If you use wood as the ingredient then you can make charcoal. Put some fuel in the furnace and wood in the ingredient slot. It can take some time for the furnace to create the charcoal, so feel free to do something else and come back to check the progress.
+
+
+
+ Charcoal can be used as a fuel, as well as being crafted into a torch with a stick.
+
+
+
+ Placing sand in the ingredient slot allows you to make glass. Create some glass blocks to use as windows in your shelter.
+
+
+
+ This is the brewing interface. You can use this to create potions that have a variety of different effects.
+
+
+{*B*}
+ Press{*CONTROLLER_VK_A*} to continue.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know how to use the brewing stand.
+
+
+
+ You brew potions by placing an ingredient in the top slot, and a potion or water bottle in the bottom slots (up to 3 can be brewed at one time). Once a valid combination is entered the brewing process will start and create the potion after a short time.
+
+
+
+ All potions start with a Water Bottle. Most potions are created by first using a Nether Wart to make an Awkward Potion, and will require at least one more ingredient to make the final potion.
+
+
+
+ Once you have a potion you can modify its effects. Adding Redstone Dust increases the duration of its effect and adding Glowstone Dust can make its effect more powerful.
+
+
+
+ Adding Fermented Spider Eye corrupts the potion and can turn it into a potion with the opposite effect, and adding Gunpowder turns the potion into a Splash Potion which can be thrown to apply its affect to a nearby area.
+
+
+
+ Create a Potion of Fire Resistance by first adding Nether Wart to a Water Bottle, and then adding Magma Cream.
+
+
+
+ Press{*CONTROLLER_VK_B*} now to exit the brewing interface.
+
+
+
+ In this area there is a Brewing Stand, a Cauldron and a chest full of items for brewing.
+
+
+{*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about brewing and potions.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know about brewing and potions.
+
+
+
+ The first step in brewing a potion is to create a Water Bottle. Take a Glass Bottle from the chest.
+
+
+
+ You can fill a glass bottle from a Cauldron that has water in it, or from a block of water. Fill your glass bottle now by pointing at a water source and pressing{*CONTROLLER_ACTION_USE*}.
+
+
+
+ If a cauldron becomes empty, you can refill it with a Water Bucket.
+
+
+
+ Use the Brewing Stand to create a Potion of Fire Resistance. You will need a Water Bottle, Nether Wart and Magma Cream.
+
+
+
+ With a potion in your hand, hold{*CONTROLLER_ACTION_USE*} to use it. For a normal potion you will drink it and apply the effect to yourself, and for a Splash potion you will throw it and apply the effect to creatures near where it hits.
+ Splash potions can be created by adding gunpowder to normal potions.
+
+
+
+ Use your Potion of Fire Resistance on yourself.
+
+
+
+ Now that you are resistant to fire and lava, you should see if there are places you can get to that you couldn't before.
+
+
+
+ This is the enchanting interface which you can use to add enchantments to weapons, armor and some tools.
+
+
+{*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about the enchanting interface.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know about the enchanting interface.
+
+
+
+ To enchant an item, first place it in the enchanting slot. Weapons, armor and some tools can be enchanted to add special effects such as improved damage resistance or increasing the number of items produced when mining a block.
+
+
+
+ When an item is placed in the enchanting slot, the buttons on the right will change to show a selection of random enchantments.
+
+
+
+ The number on the button represents the cost in experience levels to apply that enchantment to the item. If you do not have a high enough level the button will be disabled.
+
+
+
+ Select an enchantment and press{*CONTROLLER_VK_A*} to enchant the item. This will decrease your experience level by the cost of the enchantment.
+
+
+
+ Although the enchantments are all random, some of the better enchantments are only available when you have a high experience level and have lots of bookcases around the Enchantment Table to increase its power.
+
+
+
+ In this area there is an Enchantment Table and some other items to help you learn about enchanting.
+
+
+{*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about enchanting.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know about enchanting.
+
+
+
+ Using an Enchantment Table allows you to add special effects such as increasing the number of items produced when mining a block, or improved damage resistance for weapons, armor and some tools.
+
+
+
+ Placing bookcases around the Enchantment Table increases its power and allows access to higher level enchantments.
+
+
+
+ Enchanting items costs Experience Levels, which can be built up by collecting Experience Orbs which are produced by killing monsters and animals, mining ores, breeding animals, fishing and smelting/cooking some things in a furnace.
+
+
+
+ You can also build experience levels using a Bottle O' Enchanting, which, when thrown, creates Experience Orbs around where it lands. These orbs can then be collected.
+
+
+
+ In the chests in this area you can find some enchanted items, Bottles O' Enchanting, and some items that have yet to be enchanted for you to experiment with at the Enchantment Table.
+
+
+
+ You are now riding in a minecart. To exit the minecart, point the cursor at it and press{*CONTROLLER_ACTION_USE*} .{*MinecartIcon*}
+
+
+{*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about minecarts.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know about minecarts.
+
+
+
+ A minecart runs on rails. You can also craft a powered minecart with a furnace and a minecart with a chest in it.
+ {*RailIcon*}
+
+
+
+ You can also craft powered rails, which take power from redstone torches and circuits to accelerate the cart. These can be connected to switches, levers and pressure plates to make complex systems.
+ {*PoweredRailIcon*}
+
+
+
+ You are now sailing a boat. To exit the boat, point the cursor at it and press{*CONTROLLER_ACTION_USE*} .{*BoatIcon*}
+
+
+
+ {*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about boats.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know about boats.
+
+
+
+ A boat allows you to travel quicker over water. You can steer it using{*CONTROLLER_ACTION_MOVE*} and{*CONTROLLER_ACTION_LOOK*}.
+ {*BoatIcon*}
+
+
+
+ You are now using a fishing rod. Press{*CONTROLLER_ACTION_USE*} to use it.{*FishingRodIcon*}
+
+
+
+ {*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about fishing.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know about fishing.
+
+
+
+ Press{*CONTROLLER_ACTION_USE*} to cast your line and start fishing. Press{*CONTROLLER_ACTION_USE*} again to reel in the fishing line.
+ {*FishingRodIcon*}
+
+
+
+ If you wait until the float sinks below the surface of the water before reeling in you can catch a fish. Fish can be eaten raw, or cooked by a furnace, to restore health.
+ {*FishIcon*}
+
+
+
+ As with many other tools a fishing rod has a fixed number of uses. Those uses are not limited to catching fish though. You should experiment with it to see what else can be caught or activated...
+ {*FishingRodIcon*}
+
+
+
+ This is a bed. Press{*CONTROLLER_ACTION_USE*} while pointing at it at night to sleep through the night and awake in the morning.{*ICON*}355{*/ICON*}
+
+
+
+ {*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about beds.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know about beds.
+
+
+
+ A bed should be placed in a safe, well-lit place so that monsters do not wake you in the middle of the night. Once you have used a bed, if you die you will respawn at that bed.
+ {*ICON*}355{*/ICON*}
+
+
+
+ If there are other players in your game, everyone must be in a bed at the same time to be able to sleep.
+ {*ICON*}355{*/ICON*}
+
+
+
+ In this area there are some simple Redstone and Piston circuits, and a chest with more items to extend these circuits.
+
+
+
+ {*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about Redstone circuits and Pistons.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know about Redstone circuits and Pistons.
+
+
+
+ Levers, Buttons, Pressure Plates and Redstone Torches can all provide power to circuits, either by directly attaching them to the item you want to activate or by connecting them with Redstone dust.
+
+
+
+ The position and direction that you place a power source can change how it affects the surrounding blocks. For example a Redstone torch on the side of a block can be turned off if the block is powered by another source.
+
+
+
+ Redstone dust is collected by mining redstone ore with a pickaxe made of Iron, Diamond or Gold. You can use it to carry power up to 15 blocks, and it can travel up or down one block in height.
+ {*ICON*}331{*/ICON*}
+
+
+
+ Redstone repeaters can be used to extend the distance that the power is carried, or put a delay in a circuit.
+ {*ICON*}356{*/ICON*}
+
+
+
+ When powered, a Piston will extend, pushing up to 12 blocks. When they retract, Sticky Pistons can pull back one block of most types.
+ {*ICON*}33{*/ICON*}
+
+
+
+ In the chest in this area there are some components for making circuits with pistons. Try using or completing the circuits in this area, or put together your own. There are more examples outside the tutorial area.
+
+
+
+ In this area there is a Portal to the Nether!
+
+
+
+ {*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about Portals and The Nether.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know about Portals and The Nether.
+
+
+
+ Portals are created by placing Obsidian blocks into a frame four blocks wide and five blocks tall. The corner blocks are not required.
+
+
+
+ To activate a Nether Portal, set fire to the Obisidian blocks inside the frame with a Flint and Steel. Portals can be deactivated if their frame is broken, an explosion happens nearby or a liquid flows through them.
+
+
+
+ To use a Nether Portal, stand inside it. Your screen will go purple and a sound will play. After a few seconds you will be transported to another dimension.
+
+
+
+ The Nether can be a dangerous place, full of lava, but can be useful to collect Netherrack which burns forever when lit, and Glowstone which produces light.
+
+
+
+ The Nether world can be used to fast-travel in the Overworld - traveling one block distance in the Nether is equivalent to traveling 3 blocks in the Overworld.
+
+
+
+ You are now in Creative mode.
+
+
+
+ {*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about Creative mode.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know about Creative mode.
+
+
+When in Creative mode you have in infinite number of all available items and blocks, you can destroy blocks with one click without a tool, you are invulnerable and you can fly.
+
+Pressing{*CONTROLLER_ACTION_JUMP*} twice quickly will allow you to fly. To exit flying, repeat the action. To fly faster, push{*CONTROLLER_ACTION_MOVE*} forward twice in rapid succession while flying.
+When in flying mode, you can hold down{*CONTROLLER_ACTION_JUMP*} to move up and{*CONTROLLER_ACTION_SNEAK*} to move down, or use the D-pad to move up, down, left or right.
+
+Press{*CONTROLLER_ACTION_CRAFTING*} to open the creative inventory interface.
+
+Make your way to the opposite side of this hole to continue.
+
+You have now completed the Creative mode tutorial.
+
+
+ In this area a farm has been set up. Farming enables you to create a renewable source of food and other items.
+
+
+
+ {*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about farming.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know about farming.
+
+
+Wheat, Pumpkins and Melons are grown from seeds. Wheat seeds are collected by breaking Tall Grass or harvesting wheat, and Pumpkin and Melon seeds are crafted from Pumpkins and Melons respectively.
+
+Before planting seeds the dirt blocks need to be turned into Farmland by using a Hoe. A nearby source of water will help keep the Farmland hydrated and make the crops grow faster, as will keeping the area lit.
+
+Wheat goes through several stages when growing, and is ready to be harvested when it appears darker.{*ICON*}59:7{*/ICON*}
+
+Pumpkins and Melons also need a block next to where you planted the seed for the fruit to grow once the stem has fully grown.
+
+Sugarcane must be planted on a Grass, Dirt or Sand block that is right next to water block. Chopping a Sugarcane block will also drop all blocks that are above it.{*ICON*}83{*/ICON*}
+
+Cacti must be planted on Sand, and will grow up to three blocks high. Like Sugarcane, destroying the lowest block will also allow you to collect the blocks that are above it.{*ICON*}81{*/ICON*}
+
+Mushrooms should be planted in a dimly lit area, and will spread to nearby dimly lit blocks.{*ICON*}39{*/ICON*}
+
+Bonemeal can be used to grow crops to their fully grown state, or grow Mushrooms into Huge Mushrooms.{*ICON*}351:15{*/ICON*}
+
+You have now completed the farming tutorial.
+
+
+ In this area animals have been penned in. You can breed animals to produce baby versions of themselves.
+
+
+
+ {*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about animals and breeding.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know about animals and breeding.
+
+
+To get the animals to breed, you will need to feed them with the right food to get them to go into 'Love Mode'.
+
+Feed Wheat to a cow, mooshroom or sheep, Carrots to pigs, Wheat Seeds or Nether Wart to a chicken, or any kind of meat to a wolf, and they'll start looking for another animal of the same species near them that is also in Love Mode.
+
+When two animals of the same species meet, and both are in Love Mode, they will kiss for a few seconds, and then a baby animal will appear. The baby animal will follow their parents for a while before growing into a full sized animal itself.
+
+After being in Love Mode, an animal will not be able to enter it again for about five minutes.
+
+Some animals will follow you if you are holding their food in your hand. This makes it easier to group animals together to breed them.{*ICON*}296{*/ICON*}
+
+
+ Wild wolves can be tamed by giving them bones. Once tamed Love Hearts will appear around them. Tamed wolves will follow the player and defend them if they haven't been commanded to sit.
+
+
+You have now completed the animal and breeding tutorial.
+
+
+ In this area are some pumpkins and blocks to make a Snow Golem and an Iron Golem.
+
+
+
+ {*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about Golems.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know about Golems.
+
+
+Golems are created by placing a pumpkin on top of a stack of blocks.
+
+Snow Golems are created with two Snow Blocks, one of top of the other, with a pumpkin on top. Snow Golems throw snowballs at your enemies.
+
+Iron Golems are created with four Iron Blocks in the pattern shown, with a pumpkin on top of the middle block. Iron Golems attack your enemies.
+
+Iron Golems also appear naturally to protect villages, and will attack you if you attack any villagers.
+
+You cannot leave this area until you have completed the tutorial.
+
+Different tools are better for different materials. You should use a shovel to mine soft materials like earth and sand.
+
+Different tools are better for different materials. You should use an axe to chop tree trunks.
+
+Different tools are better for different materials. You should use a pickaxe to mine stone and ore. You may need to make your pickaxe from better materials to get resources from some blocks.
+
+Certain tools are better for attacking enemies. Consider using a sword to attack.
+
+Hint: Hold {*CONTROLLER_ACTION_ACTION*}to mine and chop using your hand or whatever you are holding. You may need to craft a tool to mine some blocks...
+
+The tool you are using has become damaged. Every time you use a tool it becomes damaged, and will eventually break. The colored bar below the item in your inventory shows the current damage state.
+
+Hold{*CONTROLLER_ACTION_JUMP*} to swim up.
+
+In this area there is a minecart on a track. To enter the minecart, point the cursor at it and press{*CONTROLLER_ACTION_USE*}. Use{*CONTROLLER_ACTION_USE*} on the button to make the minecart move.
+
+In the chest beside the river there is a boat. To use the boat, point the cursor at water and press{*CONTROLLER_ACTION_USE*}. Use{*CONTROLLER_ACTION_USE*} while pointing at the boat to enter it.
+
+In the chest beside the pond there is a fishing rod. Take the fishing rod from the chest and select it as the current item in your hand to use it.
+
+This more advanced piston mechanism creates a self-repairing bridge! Push the button to activate, then investigate how the components interact to learn more.
+
+If you move the pointer outside of the interface while carrying an item, you can drop that item.
+
+You do not have all the ingredients required to make this item. The box on the bottom left shows the ingredients required to craft this.
+
+
+ Congratulations, you have completed the tutorial. Time in the game is now passing normally, and you don't have long until night time and the monsters come out! Finish your shelter!
+
+
+{*EXIT_PICTURE*} When you are ready to explore further, there is a stairway in this area near the Miner's shelter that leads to a small castle.
+
+Reminder:
+
+
]]>
+
+New features have been added to the game in the latest version, including new areas in the tutorial world.
+
+{*B*}Press{*CONTROLLER_VK_A*} to play through the tutorial as normal.{*B*}
+ Press{*CONTROLLER_VK_B*} to skip the main tutorial.
+
+In this area you will find areas setup to help you learn about fishing, boats, pistons and redstone.
+
+Outside of this area you will find examples of buildings, farming, minecarts and tracks, enchanting, brewing, trading, smithing and more!
+
+
+ Your food bar has depleted to a level where you will no longer heal.
+
+
+
+ {*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about the food bar and eating food.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know about the food bar and eating food.
+
+
+Select
+
+Use
+
+Back
+
+Exit
+
+Cancel
+
+Cancel Join
+
+Select Storage Device
+
+Change Storage Device
+
+Refresh Online Games List
+
+Party Games
+
+All Games
+
+Change Group
+
+Show Inventory
+
+Show Description
+
+Show Ingredients
+
+Crafting
+
+Create
+
+Take/Place
+
+Take
+
+Take All
+
+Take Half
+
+Place
+
+Place All
+
+Place One
+
+Drop
+
+Drop All
+
+Drop One
+
+Swap
+
+Quick Move
+
+Clear Quick Select
+
+What's This?
+
+Share To Facebook
+
+Change Filter
+
+View Gamer Card
+
+View Gamer Profile
+
+Send Friend Request
+
+Page Down
+
+Page Up
+
+Next
+
+Previous
+
+Kick Player
+
+Dye
+
+Mine
+
+Feed
+
+Tame
+
+Heal
+
+Sit
+
+Follow Me
+
+Eject
+
+Empty
+
+Saddle
+
+Place
+
+Hit
+
+Milk
+
+Collect
+
+Eat
+
+Sleep
+
+Wake Up
+
+Play
+
+Ride
+
+Sail
+
+Grow
+
+Swim Up
+
+Open
+
+Change Pitch
+
+Detonate
+
+Read
+
+Hang
+
+Throw
+
+Plant
+
+Till
+
+Harvest
+
+Continue
+
+Unlock Full Game
+
+Delete Save
+
+Delete
+
+Options
+
+Invite Xbox Live Party
+
+Invite Friends
+
+Accept
+
+Shear
+
+Ban Level
+
+Select Skin
+
+Ignite
+
+Navigate
+
+Install Full Version
+
+Install Trial Version
+
+Install
+
+Reinstall
+
+Save Options
+
+Execute Command
+
+Creative
+
+Move Ingredient
+
+Move Fuel
+
+Move Tool
+
+Move Armor
+
+Move Weapon
+
+Equip
+
+Draw
+
+Release
+
+Privileges
+
+Block
+
+Page Up
+
+Page Down
+
+Love Mode
+
+Drink
+
+Rotate
+
+Hide
+
+Upload Save For Xbox One
+
+Clear All Slots
+
+Upload Save for Xbox One
+
+OK
+
+Cancel
+
+Minecraft Store
+
+Are you sure you want to leave your current game and join the new one? Any unsaved progress will be lost.
+
+Exit Game
+
+Save Game
+
+Exit Without Saving
+
+Are you sure you want to overwrite any previous save for this world with the current version of this world?
+
+Are you sure you want to exit without saving? You will lose all progress in this world!
+
+Start Game
+
+If you create, load or save a world in Creative Mode, that world will have achievements and leaderboard updates disabled, even if it is then loaded in Survival Mode. Are you sure you want to continue?
+
+This world has previously been saved in Creative Mode, and it will have achievements and leaderboard updates disabled. Are you sure you want to continue?
+
+This world has previously been saved in Creative Mode, and it will have achievements and leaderboard updates disabled.
+
+If you create, load or save a world with Host Privileges enabled, that world will have achievements and leaderboard updates disabled, even if it is then loaded with those options off. Are you sure you want to continue?
+
+Damaged Save
+
+This save is corrupt or damaged. Would you like to delete it?
+
+Are you sure you want to exit to the main menu and disconnect all players from the game? Any unsaved progress will be lost.
+
+Exit and save
+
+Exit without saving
+
+Are you sure you want to exit to the main menu? Any unsaved progress will be lost.
+
+Are you sure you want to exit to the main menu? Your progress will be lost!
+
+Create New World
+
+Play Tutorial
+
+Tutorial
+
+Name Your World
+
+Enter a name for your world
+
+Input the seed for your world generation
+
+Load Saved World
+
+Press START to join game
+
+Exiting the game
+
+An error occurred. Exiting to the main menu.
+
+Connection failed
+
+Connection lost
+
+Connection to the server was lost. Exiting to the main menu.
+
+Connection to Xbox Live was lost. Exiting to the main menu.
+
+Connection to Xbox Live was lost.
+
+Disconnected by the server
+
+You were kicked from the game
+
+You were kicked from the game for flying
+
+Connection attempt took too long
+
+The server is full
+
+The host has exited the game.
+
+You cannot join this game as you are not friends with anybody in the game.
+
+You cannot join this game as you have previously been kicked by the host.
+
+You cannot join this game as the player you are trying to join is running an older version of the game.
+
+You cannot join this game as the player you are trying to join is running a newer version of the game.
+
+New World
+
+Award Unlocked!
+
+Hurray - you've been awarded a gamerpic featuring Steve from Minecraft!
+
+Hurray - you've been awarded a gamerpic featuring a Creeper!
+
+Hurray - you've been awarded an avatar item - a Minecraft: Xbox 360 Edition t-shirt!
+Go to the dashboard to put the t-shirt on your avatar.
+
+Hurray - you've been awarded an avatar item - a Minecraft: Xbox 360 Edition watch!
+Go to the dashboard to put the watch on your avatar.
+
+Hurray - you've been awarded an avatar item - a Creeper baseball cap!
+Go to the dashboard to put the cap on your avatar.
+
+Hurray - you've been awarded the Minecraft: Xbox 360 Edition theme!
+Go to the dashboard to select this theme.
+
+Unlock Full Game
+
+You're playing the trial game, but you'll need the full game to be able to save your game.
+Would you like to unlock the full game now?
+
+This is the Minecraft: Xbox 360 Edition trial game. If you had the full game, you would just have earned an achievement!
+Would you like to unlock the full game?
+
+This is the Minecraft: Xbox 360 Edition trial game. If you had the full game, you would just have earned an avatar award!
+Would you like to unlock the full game?
+
+This is the Minecraft: Xbox 360 Edition trial game. If you had the full game, you would just have earned a gamerpic!
+Would you like to unlock the full game?
+
+This is the Minecraft: Xbox 360 Edition trial game. If you had the full game, you would just have earned a theme!
+Would you like to unlock the full game?
+
+This is the Minecraft: Xbox 360 Edition trial game. You need the full game to be able to accept this invite.
+Would you like to unlock the full game?
+
+Guest players cannot unlock the full game. Please sign in with an Xbox Live user ID.
+
+Please wait
+
+No results
+
+Filter:
+
+Friends
+
+My Score
+
+Overall
+
+Entries:
+
+Rank
+
+Gamertag
+
+Preparing to Save Level
+
+Preparing Chunks...
+
+Finalizing...
+
+Building Terrain
+
+Simulating world for a bit
+
+Initializing server
+
+Generating spawn area
+
+Loading spawn area
+
+Entering The Nether
+
+Leaving The Nether
+
+Respawning
+
+Generating level
+
+Loading level
+
+Saving players
+
+Connecting to host
+
+Downloading terrain
+
+Switching to offline game
+
+Please wait while the host saves the game
+
+Entering The END
+
+Leaving The END
+
+Finding Seed for the World Generator
+
+This bed is occupied
+
+You can only sleep at night
+
+%s is sleeping in a bed. To skip to dawn, all players need to sleep in beds at the same time.
+
+Your home bed was missing or obstructed
+
+You may not rest now, there are monsters nearby
+
+You are sleeping in a bed. To skip to dawn, all players need to sleep in beds at the same time.
+
+Tools and Weapons
+
+Weapons
+
+Food
+
+Structures
+
+Armor
+
+Mechanisms
+
+Transport
+
+Decorations
+
+Building Blocks
+
+Redstone & Transportation
+
+Miscellaneous
+
+Brewing
+
+Brewing
+
+Tools, Weapons & Armor
+
+Materials
+
+Signed out
+
+You have been returned to the title screen because your gamer profile was signed out
+
+Difficulty
+
+Music
+
+Sound
+
+Gamma
+
+Game Sensitivity
+
+Interface Sensitivity
+
+Peaceful
+
+Easy
+
+Normal
+
+Hard
+
+In this mode, the player regains health over time, and there are no enemies in the environment.
+
+In this mode, enemies spawn in the environment, but will do less damage to the player than in the Normal mode.
+
+In this mode, enemies spawn in the environment and will do a standard amount of damage to the player.
+
+In this mode, enemies will spawn in the environment, and will do a great deal of damage to the player. Watch out for the Creepers too, since they are unlikely to cancel their exploding attack when you move away from them!
+
+Trial Timeout
+
+You've been playing the Minecraft: Xbox 360 Edition Trial Game for the maximum time allowed! To continue the fun, would you like to unlock the full game?
+
+Game full
+
+Failed to join game as there are no spaces left
+
+Enter Sign Text
+
+Enter a line of text for your sign
+
+Enter Title
+
+Enter a title for your post
+
+Enter Caption
+
+Enter a caption for your post
+
+Enter Description
+
+Enter a description for your post
+
+Inventory
+
+Ingredients
+
+Brewing Stand
+
+Chest
+
+Enchant
+
+Furnace
+
+Ingredient
+
+Fuel
+
+Dispenser
+
+There are no downloadable content offers of this type available for this title at the moment.
+
+%s has joined the game.
+
+%s has left the game.
+
+%s was kicked from the game.
+
+Are you sure you want to delete this save game?
+
+Awaiting approval
+
+Censored
+
+Now playing:
+
+Reset Settings
+
+Are you sure you would like to reset your settings to their default values?
+
+Loading Error
+
+"Minecraft: Xbox 360 Edition" has failed to load, and cannot continue.
+
+%s's Game
+
+Unknown host game
+
+Guest signed out
+
+A guest player has signed out causing all guest players to be removed from the game.
+
+Sign in
+
+You are not signed in. In order to play this game, you will need to be signed in. Do you want to sign in now?
+
+Multiplayer not allowed
+
+Failed to join the game as one or more players are not allowed to play multiplayer games on Xbox Live.
+
+Failed to create an online game as one or more players are not allowed to play multiplayer games on Xbox Live. Uncheck the "Online Game" box to start an offline game.
+
+You are not allowed to join this game session because your Member Content privilege setting is too restrictive. Please change this setting in the Privacy and Online Settings portion of the Xbox dashboard if you would like to join this session.
+
+You are not allowed to join this game session because one of your local players has a Member Content privilege setting that is too restrictive.
+
+You are not allowed to join this game session because a player in the session has a Member Content privilege setting of Friends Only, and you are not on their Friends List.
+
+Failed to create game
+
+You are not allowed to create this game session because one of your local players has a Member Content privilege setting that is too restrictive. Uncheck the "Online Game" box to start an offline game, or change this setting in the Privacy and Online Settings portion of the Xbox dashboard.
+
+Auto Selected
+
+No Pack: Default Skins
+
+Favorite Skins
+
+Banned Level
+
+The game you are joining is in your banned level list.
+If you choose to join this game, the level will be removed from your banned level list.
+
+Ban This Level?
+
+Are you sure you want to add this level to your banned level list?
+Selecting OK will also exit this game.
+
+Remove from Banned List
+
+Autosave Interval
+
+Autosave Interval: OFF
+
+Mins
+
+Can't Place Here!
+
+Placing lava close to the level spawn point is not allowed due to the possibility of instant death for spawning players.
+
+This game has a level autosave feature. When you see the icon above displayed, the game is saving your data.
+Please do not turn off your Xbox 360 console while this icon is on-screen.
+
+Interface Opacity
+
+Preparing to Autosave Level
+
+HUD Size
+
+HUD Size (Splitscreen)
+
+Seed
+
+Unlock Skin Pack
+
+To use the skin you have selected, you need to unlock this skin pack.
+Would you like to unlock this skin pack now?
+
+Unlock Texture Pack
+
+To use this texture pack for your world, you need to unlock it.
+Would you like to unlock it now?
+
+Trial Texture Pack
+
+You are using a trial version of the texture pack. You will not be able to save this world unless you unlock the full version.
+Would you like to unlock the full version of the texture pack?
+
+Texture Pack Not Present
+
+Unlock Full Version
+
+Download Trial Version
+
+Download Full Version
+
+This world uses a mash-up pack or texture pack you don't have!
+Would you like to install the mash-up pack or texture pack now?
+
+Get Trial Version
+
+Get Full Version
+
+Kick player
+
+Are you sure you want to kick this player from the game? They will not be able to rejoin until you restart the world.
+
+Gamerpics Packs
+
+Themes
+
+Skins Packs
+
+Allow friends of friends
+
+You cannot join this game because it has been limited to players who are friends of the host.
+
+Can't Join Game
+
+Selected
+
+Selected skin:
+
+Corrupt Downloadable Content
+
+This downloadable content is corrupt and cannot be used. You need to delete it, then re-install it from the Minecraft Store menu.
+
+Some of your downloadable content is corrupt and cannot be used. You need to delete them, then re-install them from the Minecraft Store menu.
+
+Your game mode has been changed
+
+Rename Your World
+
+Enter the new name for your world
+
+Game Mode: Survival
+
+Game Mode: Creative
+
+Survival
+
+Creative
+
+Created in Survival Mode
+
+Created in Creative Mode
+
+Render Clouds
+
+What would you like to do with this save game?
+
+Rename Save
+
+Autosaving in %d...
+
+On
+
+Off
+
+Normal
+
+Superflat
+
+When enabled, the game will be an online game.
+
+When enabled, only invited players can join.
+
+When enabled, friends of people on your Friends List can join the game.
+
+When enabled, players can inflict damage on other players. Only affects Survival mode.
+
+When disabled, players joining the game cannot build or mine until authorised.
+
+When enabled, fire may spread to nearby flammable blocks.
+
+When enabled, TNT will explode when activated.
+
+When enabled, the host can toggle their ability to fly, disable exhaustion, and make themselves invisible from the in-game menu. Disables achievements and leaderboard updates.
+
+When enabled, the Nether world will be re-generated. This is useful if you have an older save where Nether Fortresses were not present.
+
+When enabled, structures such as Villages and Strongholds will generate in the world.
+
+When enabled, a completely flat world will be generated in the Overworld and in the Nether.
+
+When enabled, a chest containing some useful items will be created near the player spawn point.
+
+Skin Packs
+
+Themes
+
+Gamerpics
+
+Avatar Items
+
+Texture Packs
+
+Mash-Up Packs
+
+{*PLAYER*} went up in flames
+
+{*PLAYER*} burned to death
+
+{*PLAYER*} tried to swim in lava
+
+{*PLAYER*} suffocated in a wall
+
+{*PLAYER*} drowned
+
+{*PLAYER*} starved to death
+
+{*PLAYER*} was pricked to death
+
+{*PLAYER*} hit the ground too hard
+
+{*PLAYER*} fell out of the world
+
+{*PLAYER*} died
+
+{*PLAYER*} blew up
+
+{*PLAYER*} was killed by magic
+
+{*PLAYER*} was killed by Ender Dragon breath
+
+{*PLAYER*} was slain by {*SOURCE*}
+
+{*PLAYER*} was slain by {*SOURCE*}
+
+{*PLAYER*} was shot by {*SOURCE*}
+
+{*PLAYER*} was fireballed by {*SOURCE*}
+
+{*PLAYER*} was pummeled by {*SOURCE*}
+
+{*PLAYER*} was killed by {*SOURCE*}
+
+Bedrock Fog
+
+Display HUD
+
+Display Hand
+
+Splitscreen Gamertags
+
+Death Messages
+
+Animated Character
+
+Custom Skin Animation
+
+You can no longer mine or use items
+
+You can now mine and use items
+
+You can no longer place blocks
+
+You can now place blocks
+
+You can now use doors and switches
+
+You can no longer use doors and switches
+
+You can now use containers (e.g. chests)
+
+You can no longer use containers (e.g. chests)
+
+You can no longer attack mobs
+
+You can now attack mobs
+
+You can no longer attack players
+
+You can now attack players
+
+You can no longer attack animals
+
+You can now attack animals
+
+You are now a moderator
+
+You are no longer a moderator
+
+You can now fly
+
+You can no longer fly
+
+You will no longer get exhausted
+
+You will now get exhausted
+
+You are now invisible
+
+You are no longer invisible
+
+You are now invulnerable
+
+You are no longer invulnerable
+
+%d MSP
+
+Ender Dragon
+
+%s has entered The End
+
+%s has left The End
+
+
+{*C3*}I see the player you mean.{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}?{*EF*}{*B*}{*B*}
+{*C3*}Yes. Take care. It has reached a higher level now. It can read our thoughts.{*EF*}{*B*}{*B*}
+{*C2*}That doesn't matter. It thinks we are part of the game.{*EF*}{*B*}{*B*}
+{*C3*}I like this player. It played well. It did not give up.{*EF*}{*B*}{*B*}
+{*C2*}It is reading our thoughts as though they were words on a screen.{*EF*}{*B*}{*B*}
+{*C3*}That is how it chooses to imagine many things, when it is deep in the dream of a game.{*EF*}{*B*}{*B*}
+{*C2*}Words make a wonderful interface. Very flexible. And less terrifying than staring at the reality behind the screen.{*EF*}{*B*}{*B*}
+{*C3*}They used to hear voices. Before players could read. Back in the days when those who did not play called the players witches, and warlocks. And players dreamed they flew through the air, on sticks powered by demons.{*EF*}{*B*}{*B*}
+{*C2*}What did this player dream?{*EF*}{*B*}{*B*}
+{*C3*}This player dreamed of sunlight and trees. Of fire and water. It dreamed it created. And it dreamed it destroyed. It dreamed it hunted, and was hunted. It dreamed of shelter.{*EF*}{*B*}{*B*}
+{*C2*}Hah, the original interface. A million years old, and it still works. But what true structure did this player create, in the reality behind the screen?{*EF*}{*B*}{*B*}
+{*C3*}It worked, with a million others, to sculpt a true world in a fold of the {*EF*}{*NOISE*}{*C3*}, and created a {*EF*}{*NOISE*}{*C3*} for {*EF*}{*NOISE*}{*C3*}, in the {*EF*}{*NOISE*}{*C3*}.{*EF*}{*B*}{*B*}
+{*C2*}It cannot read that thought.{*EF*}{*B*}{*B*}
+{*C3*}No. It has not yet achieved the highest level. That, it must achieve in the long dream of life, not the short dream of a game.{*EF*}{*B*}{*B*}
+{*C2*}Does it know that we love it? That the universe is kind?{*EF*}{*B*}{*B*}
+{*C3*}Sometimes, through the noise of its thoughts, it hears the universe, yes.{*EF*}{*B*}{*B*}
+{*C2*}But there are times it is sad, in the long dream. It creates worlds that have no summer, and it shivers under a black sun, and it takes its sad creation for reality.{*EF*}{*B*}{*B*}
+{*C3*}To cure it of sorrow would destroy it. The sorrow is part of its own private task. We cannot interfere.{*EF*}{*B*}{*B*}
+{*C2*}Sometimes when they are deep in dreams, I want to tell them, they are building true worlds in reality. Sometimes I want to tell them of their importance to the universe. Sometimes, when they have not made a true connection in a while, I want to help them to speak the word they fear.{*EF*}{*B*}{*B*}
+{*C3*}It reads our thoughts.{*EF*}{*B*}{*B*}
+{*C2*}Sometimes I do not care. Sometimes I wish to tell them, this world you take for truth is merely {*EF*}{*NOISE*}{*C2*} and {*EF*}{*NOISE*}{*C2*}, I wish to tell them that they are {*EF*}{*NOISE*}{*C2*} in the {*EF*}{*NOISE*}{*C2*}. They see so little of reality, in their long dream.{*EF*}{*B*}{*B*}
+{*C3*}And yet they play the game.{*EF*}{*B*}{*B*}
+{*C2*}But it would be so easy to tell them...{*EF*}{*B*}{*B*}
+{*C3*}Too strong for this dream. To tell them how to live is to prevent them living.{*EF*}{*B*}{*B*}
+{*C2*}I will not tell the player how to live.{*EF*}{*B*}{*B*}
+{*C3*}The player is growing restless.{*EF*}{*B*}{*B*}
+{*C2*}I will tell the player a story.{*EF*}{*B*}{*B*}
+{*C3*}But not the truth.{*EF*}{*B*}{*B*}
+{*C2*}No. A story that contains the truth safely, in a cage of words. Not the naked truth that can burn over any distance.{*EF*}{*B*}{*B*}
+{*C3*}Give it a body, again.{*EF*}{*B*}{*B*}
+{*C2*}Yes. Player...{*EF*}{*B*}{*B*}
+{*C3*}Use its name.{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}. Player of games.{*EF*}{*B*}{*B*}
+{*C3*}Good.{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}Take a breath, now. Take another. Feel air in your lungs. Let your limbs return. Yes, move your fingers. Have a body again, under gravity, in air. Respawn in the long dream. There you are. Your body touching the universe again at every point, as though you were separate things. As though we were separate things.{*EF*}{*B*}{*B*}
+{*C3*}Who are we? Once we were called the spirit of the mountain. Father sun, mother moon. Ancestral spirits, animal spirits. Jinn. Ghosts. The green man. Then gods, demons. Angels. Poltergeists. Aliens, extraterrestrials. Leptons, quarks. The words change. We do not change.{*EF*}{*B*}{*B*}
+{*C2*}We are the universe. We are everything you think isn't you. You are looking at us now, through your skin and your eyes. And why does the universe touch your skin, and throw light on you? To see you, player. To know you. And to be known. I shall tell you a story.{*EF*}{*B*}{*B*}
+{*C2*}Once upon a time, there was a player.{*EF*}{*B*}{*B*}
+{*C3*}The player was you, {*PLAYER*}.{*EF*}{*B*}{*B*}
+{*C2*}Sometimes it thought itself human, on the thin crust of a spinning globe of molten rock. The ball of molten rock circled a ball of blazing gas that was three hundred and thirty thousand times more massive than it. They were so far apart that light took eight minutes to cross the gap. The light was information from a star, and it could burn your skin from a hundred and fifty million kilometres away.{*EF*}{*B*}{*B*}
+{*C2*}Sometimes the player dreamed it was a miner, on the surface of a world that was flat, and infinite. The sun was a square of white. The days were short; there was much to do; and death was a temporary inconvenience.{*EF*}{*B*}{*B*}
+{*C3*}Sometimes the player dreamed it was lost in a story.{*EF*}{*B*}{*B*}
+{*C2*}Sometimes the player dreamed it was other things, in other places. Sometimes these dreams were disturbing. Sometimes very beautiful indeed. Sometimes the player woke from one dream into another, then woke from that into a third.{*EF*}{*B*}{*B*}
+{*C3*}Sometimes the player dreamed it watched words on a screen.{*EF*}{*B*}{*B*}
+{*C2*}Let's go back.{*EF*}{*B*}{*B*}
+{*C2*}The atoms of the player were scattered in the grass, in the rivers, in the air, in the ground. A woman gathered the atoms; she drank and ate and inhaled; and the woman assembled the player, in her body.{*EF*}{*B*}{*B*}
+{*C2*}And the player awoke, from the warm, dark world of its mother's body, into the long dream.{*EF*}{*B*}{*B*}
+{*C2*}And the player was a new story, never told before, written in letters of DNA. And the player was a new program, never run before, generated by a sourcecode a billion years old. And the player was a new human, never alive before, made from nothing but milk and love.{*EF*}{*B*}{*B*}
+{*C3*}You are the player. The story. The program. The human. Made from nothing but milk and love.{*EF*}{*B*}{*B*}
+{*C2*}Let's go further back.{*EF*}{*B*}{*B*}
+{*C2*}The seven billion billion billion atoms of the player's body were created, long before this game, in the heart of a star. So the player, too, is information from a star. And the player moves through a story, which is a forest of information planted by a man called Julian, on a flat, infinite world created by a man called Markus, that exists inside a small, private world created by the player, who inhabits a universe created by...{*EF*}{*B*}{*B*}
+{*C3*}Shush. Sometimes the player created a small, private world that was soft and warm and simple. Sometimes hard, and cold, and complicated. Sometimes it built a model of the universe in its head; flecks of energy, moving through vast empty spaces. Sometimes it called those flecks "electrons" and "protons".{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}Sometimes it called them "planets" and "stars".{*EF*}{*B*}{*B*}
+{*C2*}Sometimes it believed it was in a universe that was made of energy that was made of offs and ons; zeros and ones; lines of code. Sometimes it believed it was playing a game. Sometimes it believed it was reading words on a screen.{*EF*}{*B*}{*B*}
+{*C3*}You are the player, reading words...{*EF*}{*B*}{*B*}
+{*C2*}Shush... Sometimes the player read lines of code on a screen. Decoded them into words; decoded words into meaning; decoded meaning into feelings, emotions, theories, ideas, and the player started to breathe faster and deeper and realised it was alive, it was alive, those thousand deaths had not been real, the player was alive{*EF*}{*B*}{*B*}
+{*C3*}You. You. You are alive.{*EF*}{*B*}{*B*}
+{*C2*}and sometimes the player believed the universe had spoken to it through the sunlight that came through the shuffling leaves of the summer trees{*EF*}{*B*}{*B*}
+{*C3*}and sometimes the player believed the universe had spoken to it through the light that fell from the crisp night sky of winter, where a fleck of light in the corner of the player's eye might be a star a million times as massive as the sun, boiling its planets to plasma in order to be visible for a moment to the player, walking home at the far side of the universe, suddenly smelling food, almost at the familiar door, about to dream again{*EF*}{*B*}{*B*}
+{*C2*}and sometimes the player believed the universe had spoken to it through the zeros and ones, through the electricity of the world, through the scrolling words on a screen at the end of a dream{*EF*}{*B*}{*B*}
+{*C3*}and the universe said I love you{*EF*}{*B*}{*B*}
+{*C2*}and the universe said you have played the game well{*EF*}{*B*}{*B*}
+{*C3*}and the universe said everything you need is within you{*EF*}{*B*}{*B*}
+{*C2*}and the universe said you are stronger than you know{*EF*}{*B*}{*B*}
+{*C3*}and the universe said you are the daylight{*EF*}{*B*}{*B*}
+{*C2*}and the universe said you are the night{*EF*}{*B*}{*B*}
+{*C3*}and the universe said the darkness you fight is within you{*EF*}{*B*}{*B*}
+{*C2*}and the universe said the light you seek is within you{*EF*}{*B*}{*B*}
+{*C3*}and the universe said you are not alone{*EF*}{*B*}{*B*}
+{*C2*}and the universe said you are not separate from every other thing{*EF*}{*B*}{*B*}
+{*C3*}and the universe said you are the universe tasting itself, talking to itself, reading its own code{*EF*}{*B*}{*B*}
+{*C2*}and the universe said I love you because you are love.{*EF*}{*B*}{*B*}
+{*C3*}And the game was over and the player woke up from the dream. And the player began a new dream. And the player dreamed again, dreamed better. And the player was the universe. And the player was love.{*EF*}{*B*}{*B*}
+{*C3*}You are the player.{*EF*}{*B*}{*B*}
+{*C2*}Wake up.{*EF*}
+
+
+Reset Nether
+
+Are you sure you want to reset the Nether in this savegame to its default state? You will lose anything you have built in the Nether!
+
+Reset Nether
+
+Don't Reset Nether
+
+Can't shear this Mooshroom at the moment. The maximum number of Pigs, Sheep, Cows and Cats has been reached.
+
+Can't use Spawn Egg at the moment. The maximum number of Pigs, Sheep, Cows and Cats has been reached.
+
+Can't use Spawn Egg at the moment. The maximum number of Mooshrooms has been reached.
+
+Can't use Spawn Egg at the moment. The maximum number of Wolves in a world has been reached.
+
+Can't use Spawn Egg at the moment. The maximum number of Chickens in a world has been reached.
+
+Can't use Spawn Egg at the moment. The maximum number of Squid in a world has been reached.
+
+Can't use Spawn Egg at the moment. The maximum number of enemies in a world has been reached.
+
+Can't use Spawn Egg at the moment. The maximum number of villagers in a world has been reached.
+
+The maximum number of Paintings/Item Frames in a world has been reached.
+
+You can't spawn enemies in Peaceful mode.
+
+This animal can't enter Love Mode. The maximum number of breeding Pigs, Sheep, Cows and Cats has been reached.
+
+This animal can't enter Love Mode. The maximum number of breeding Wolves has been reached.
+
+This animal can't enter Love Mode. The maximum number of breeding Chickens has been reached.
+
+This animal can't enter Love Mode. The maximum number of breeding Mooshrooms has been reached.
+
+The maximum number of Boats in a world has been reached.
+
+The maximum number of Mob Heads in a world has been reached.
+
+Invert Look
+
+Southpaw
+
+You Died!
+
+Respawn
+
+Downloadable Content Offers
+
+Change Skin
+
+How To Play
+
+Controls
+
+Settings
+
+Credits
+
+Reinstall Content
+
+Debug Settings
+
+Fire Spreads
+
+TNT Explodes
+
+Player vs Player
+
+Trust Players
+
+Host Privileges
+
+Generate Structures
+
+Superflat World
+
+Bonus Chest
+
+World Options
+
+Can Build and Mine
+
+Can Use Doors and Switches
+
+Can Open Containers
+
+Can Attack Players
+
+Can Attack Animals
+
+Moderator
+
+Kick Player
+
+Can Fly
+
+Disable Exhaustion
+
+Invisible
+
+Host Options
+
+Players/Invite
+
+Online Game
+
+Invite Only
+
+More Options
+
+Load
+
+New World
+
+World Name
+
+Seed for the World Generator
+
+Leave blank for a random seed
+
+Players
+
+Join Game
+
+Start Game
+
+No Games Found
+
+Play Game
+
+Leaderboards
+
+Achievements
+
+Help & Options
+
+Unlock Full Game
+
+Resume Game
+
+Save Game
+
+Difficulty:
+
+Game Type:
+
+Gamertags:
+
+Structures:
+
+Level Type:
+
+PvP:
+
+Trust Players:
+
+TNT:
+
+Fire Spreads:
+
+Reinstall Theme
+
+Reinstall Gamerpic 1
+
+Reinstall Gamerpic 2
+
+Reinstall Avatar Item 1
+
+Reinstall Avatar Item 2
+
+Reinstall Avatar Item 3
+
+Options
+
+Audio
+
+Control
+
+Graphics
+
+User Interface
+
+Reset to Defaults
+
+View Bobbing
+
+Hints
+
+In-Game Tooltips
+
+In-Game Gamertags
+
+2 Player Split-screen Vertical
+
+Done
+
+Edit sign message:
+
+Fill in the details to accompany your screenshot
+
+Caption
+
+Screenshot from in-game
+
+Edit sign message:
+
+Look what I made in Minecraft: Xbox 360 Edition!
+
+The classic Minecraft textures, icons and user interface!
+
+Show all Mash-up Worlds
+
+Select Transfer Save Slot
+
+Empty Slot
+
+Uploading Save Metadata
+
+Uploading Save Data
+
+Uploading Save For Xbox One
+
+Upload Canceled
+
+You have canceled uploading this save to the save transfer area.
+
+No Effects
+
+Speed
+
+Slowness
+
+Haste
+
+Mining Fatigue
+
+Strength
+
+Weakness
+
+Instant Health
+
+Instant Damage
+
+Jump Boost
+
+Nausea
+
+Regeneration
+
+Resistance
+
+Fire Resistance
+
+Water Breathing
+
+Invisibility
+
+Blindness
+
+Night Vision
+
+Hunger
+
+Poison
+
+of Swiftness
+
+of Slowness
+
+of Haste
+
+of Dullness
+
+of Strength
+
+of Weakness
+
+of Healing
+
+of Harming
+
+of Leaping
+
+of Nausea
+
+of Regeneration
+
+of Resistance
+
+of Fire Resistance
+
+of Water Breathing
+
+of Invisibility
+
+of Blindness
+
+of Night Vision
+
+of Hunger
+
+of Poison
+
+
+
+II
+
+III
+
+IV
+
+Splash
+
+Mundane
+
+Uninteresting
+
+Bland
+
+Clear
+
+Milky
+
+Diffuse
+
+Artless
+
+Thin
+
+Awkward
+
+Flat
+
+Bulky
+
+Bungling
+
+Buttered
+
+Smooth
+
+Suave
+
+Debonair
+
+Thick
+
+Elegant
+
+Fancy
+
+Charming
+
+Dashing
+
+Refined
+
+Cordial
+
+Sparkling
+
+Potent
+
+Foul
+
+Odorless
+
+Rank
+
+Harsh
+
+Acrid
+
+Gross
+
+Stinky
+
+Used as the base of all potions. Use in a brewing stand to create potions.
+
+Has no effects, can be used in a brewing stand to create potions by adding more ingredients.
+
+Increases affected players, animals and monsters movement speed, and players sprinting speed, jumping length and field of view.
+
+Reduces affected players, animals and monsters movement speed, and players sprinting speed, jumping length and field of view.
+
+Increase the damage caused by affected players and monsters when attacking.
+
+Reduces the damage cause by affected players and monsters when attacking.
+
+Instantly increases the affected players, animals and monsters health.
+
+Instantly reduces the affected players, animals and monsters health.
+
+Restores health to the affected players, animals and monsters over time.
+
+Makes the affected players, animals and monsters immune to damage from fire, lava, and ranged Blaze attacks.
+
+Reduces health of the affected players, animals and monsters over time.
+
+Sharpness
+
+Smite
+
+Bane of Arthropods
+
+Knockback
+
+Fire Aspect
+
+Protection
+
+Fire Protection
+
+Feather Falling
+
+Blast Protection
+
+Projectile Protection
+
+Respiration
+
+Aqua Affinity
+
+Efficiency
+
+Silk Touch
+
+Unbreaking
+
+Looting
+
+Fortune
+
+Power
+
+Flame
+
+Punch
+
+Infinity
+
+I
+
+II
+
+III
+
+IV
+
+V
+
+VI
+
+VII
+
+VIII
+
+IX
+
+X
+
+Can be mined with an Iron pickaxe or better to collect Emeralds.
+
+Similar to a Chest except that items placed in an Ender Chest are available in every one of the player's Ender Chests, even in different dimensions.
+
+Is activated when an entity passes through a connected Tripwire.
+
+Activates a connected Tripwire Hook when an entity passes through it.
+
+A compact way of storing Emeralds.
+
+A wall made of Cobblestone.
+
+Can be used to repair weapons, tools and armor.
+
+Smelted in a furnace to produce Nether Quartz.
+
+Used as a decoration.
+
+Can be traded with villagers.
+
+Used as a decoration. Flowers, Saplings, Cacti and Mushrooms can be planted in it.
+
+Restores 2{*ICON_SHANK_01*}, and can be crafted into a golden carrot. Can be planted in farmland.
+
+Restores 0.5{*ICON_SHANK_01*}, or can be cooked in a furnace. This can be planted in farmland.
+
+Restores 3{*ICON_SHANK_01*}. Created by cooking a potato in a furnace.
+
+Restores 1{*ICON_SHANK_01*}, or can be cooked in a furnace. This can be planted in farmland. Eating this can cause you to be poisoned.
+
+Restores 3{*ICON_SHANK_01*}. Crafted from a carrot and gold nuggets.
+
+Used to control a saddled pig when riding on it.
+
+Restores 4{*ICON_SHANK_01*}.
+
+Used with an Anvil to enchant weapons, tools or armor.
+
+Created by mining Nether Quartz Ore. Can be crafted into a Block of Quartz.
+
+Crafted from Wool. Used as a decoration.
+
+Emerald
+
+Flower Pot
+
+Carrot
+
+Potato
+
+Baked Potato
+
+Poisonous Potato
+
+Golden Carrot
+
+Carrot on a Stick
+
+Pumpkin Pie
+
+Enchanted Book
+
+Nether Quartz
+
+Emerald Ore
+
+Ender Chest
+
+Tripwire Hook
+
+Tripwire
+
+Block of Emerald
+
+Cobblestone Wall
+
+Mossy Cobblestone Wall
+
+Flower Pot
+
+Carrots
+
+Potatoes
+
+Anvil
+
+Anvil
+
+Slightly Damaged Anvil
+
+Very Damaged Anvil
+
+Nether Quartz Ore
+
+Block of Quartz
+
+Chiseled Quartz Block
+
+Pillar Quartz Block
+
+Quartz Stairs
+
+Carpet
+
+Black Carpet
+
+Red Carpet
+
+Green Carpet
+
+Brown Carpet
+
+Blue Carpet
+
+Purple Carpet
+
+Cyan Carpet
+
+Light Gray Carpet
+
+Gray Carpet
+
+Pink Carpet
+
+Lime Carpet
+
+Yellow Carpet
+
+Light Blue Carpet
+
+Magenta Carpet
+
+Orange Carpet
+
+White Carpet
+
+Chiseled Sandstone
+
+Smooth Sandstone
+
+{*PLAYER*} was killed trying to hurt {*SOURCE*}
+
+{*PLAYER*} was squashed by a falling Anvil.
+
+{*PLAYER*} was squashed by a falling block.
+
+Teleported {*PLAYER*} to {*DESTINATION*}
+
+{*PLAYER*} teleported you to their position
+
+{*PLAYER*} teleported to you
+
+Thorns
+
+Quartz Slab
+
+Makes dark areas appear as if in daylight, even under water.
+
+Makes affected players, animals and monsters invisible.
+
+Repair & Name
+
+Enchantment Cost: %d
+
+Too Expensive!
+
+Rename
+
+You have:
+
+Required Items For Trade
+
+{*VILLAGER_TYPE*} offers %s
+
+Repair
+
+Trade
+
+Dye collar
+
+
+ This is the Anvil interface, which you can use to rename, repair and apply enchantments to weapons, armor, or tools, at the cost of Experience Levels.
+
+
+
+ {*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about the Anvil interface.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know the Anvil interface.
+
+
+
+ To begin working on an item, place it in the first input slot.
+
+
+
+ When the correct raw material is placed in the second input slot (e.g. Iron Ingots for a damaged Iron Sword), the proposed repair appears in the output slot.
+
+
+
+ Alternatively, a second identical item can be placed into the second slot to combine the two items.
+
+
+
+ To enchant items on the Anvil, place an Enchanted Book in the second input slot.
+
+
+
+ The number of Experience Levels that the work will cost is shown beneath the output. If you do not have enough Experience Levels, the repair cannot be completed.
+
+
+
+ It is possible to rename the item by editing the name shown in the textbox.
+
+
+
+ Picking up the repaired item will consume both items used by the Anvil and decrease your Experience Level by the given amount.
+
+
+
+ In this area there is an Anvil and a Chest containing tools and weapons to work on.
+
+
+
+ {*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about the Anvil.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know about the Anvil.
+
+
+
+ Using an Anvil, weapons and tools can be repaired to restore their durability, renamed, or enchanted with Enchanted Books.
+
+
+
+ Enchanted Books can be found inside Chests within dungeons, or enchanted from normal Books at the Enchantment Table.
+
+
+
+ Using the Anvil costs Experience Levels, and each use has a chance to damage the Anvil.
+
+
+
+ The type of work to be done, value of the item, number of enchantments, and amount of prior work all affect the cost of repair.
+
+
+
+ Renaming an item changes the displayed name for all players and permanently reduces the prior work cost.
+
+
+
+ In the Chest in this area you will find damaged Pickaxes, raw materials, Bottles O' Enchanting, and Enchanted Books to experiment with.
+
+
+
+ This is the trading interface which displays trades that can be made with a villager.
+
+
+
+ {*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about the trading interface.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know the trading interface.
+
+
+
+ All trades that the villager is willing to make at the moment are displayed along the top.
+
+
+
+ Trades will appear red and be unavailable if you do not have the required items.
+
+
+
+ The amount and type of items you are giving to the villager are shown in the two boxes on the left.
+
+
+
+ You can see the total number of the items required for the trade in the two boxes on the left.
+
+
+
+ Press{*CONTROLLER_VK_A*} to trade the items the villager requires for the item on offer.
+
+
+
+ In this area there is a villager and a Chest containing Paper to purchase items.
+
+
+
+ {*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about trading.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know about trading.
+
+
+
+ Players can trade items from their inventory with villagers.
+
+
+
+ The trades a villager is likely to offer depends on their profession.
+
+
+
+ Performing a mix of trades will randomly add to or update the villager's available trades.
+
+
+
+ Trades that have been used frequently may be removed temporarily, but the villager will always offer at least one trade.
+
+
+
+ Take some Paper from the Chest and try trading with the villager here.
+
+
+
+ In this area there are two Ender Chests.
+
+
+
+ {*B*}
+ Press{*CONTROLLER_VK_A*} to learn more about Ender Chests.{*B*}
+ Press{*CONTROLLER_VK_B*} if you already know about Ender Chests.
+
+
+
+ All Ender Chests in a world are linked, even across dimensions. Items placed into an Ender Chest are accessible in any other Ender Chest.
+
+
+
+ However, the contents of the Ender Chests are different for each player.
+
+
+
+ This allows players to store items in any Ender Chest, and retrieve them from other Ender Chests in different positions in the world. You can try this now by placing items in either Ender Chest.
+
+
+Restores 2{*ICON_SHANK_01*}, regenerates health for 30 seconds, and grants fire resistance and damage resistance for 5 minutes. Crafted from an apple and gold blocks.
+
+Can Teleport
+
+Teleport
+
+Teleport To Player
+
+Teleport To Me
+
+Can Disable Exhaustion
+
+Can Become Invisible
+
+You can now enable invisibility
+
+You can no longer enable invisibility
+
+You can now enable flying
+
+You can no longer enable flying
+
+You can now disable exhaustion
+
+You can no longer disable exhaustion
+
+You can now teleport
+
+You can no longer teleport
+
+{*T3*}HOW TO PLAY : ANVIL{*ETW*}{*B*}{*B*}
+Experience Levels can be used to repair, enchant or rename items with the Anvil.{*B*}
+All items can be renamed, although only items with durability can be repaired or have enchantments from Enchanted Books applied to them.{*B*}
+An item can be repaired by placing it in one of the input slots on the left, along with either some raw materials of the item, like Iron Ingots for an Iron Sword, or combined with another item of the same type.{*B*}
+Combining items is more efficient when done with an Anvil, and additionally, if either of the items were enchanted, the finished product may have enchantments from either of the inputs.{*B*}
+Enchanted Books can apply enchantments to items by combining them at an Anvil if the Book's enchantment is suitable. Enchanted Books can be found in Chests within dungeons, or enchanted from normal Books at the Enchantment Table.{*B*}
+There is a chance that the Anvil will be damaged with each use and after enough punishment it will be destroyed.{*B*}
+
+
+{*T3*}HOW TO PLAY : TRADING{*ETW*}{*B*}{*B*}
+It is possible to trade items with villagers. Each villager has a profession; they can be Farmers, Butchers, Blacksmiths, Librarians or Priests, and this affects the type of items they might trade.{*B*}
+You can find a list of all the trades a villager is offering in the trading menu. A villager may modify or add to its trades whenever a player trades with it, although a trade might become temporarily disabled if it is used too frequently.{*B*}
+Trades usually involve buying or selling a number of items for emeralds.{*B*}
+If you do not have the items required for a trade, the items are shown in red.{*B*}
+
+
+{*T3*}HOW TO PLAY : ENDER CHEST {*ETW*}{*B*}{*B*}
+All Ender Chests in a world are linked. Items placed into an Ender Chest are accessible in any other. However, the contents of the Ender Chests are different for each player. This allows players to store items in any Ender Chest, and retrieve them from other Ender Chests in different positions in the world.
+
+
+Farmer
+
+Librarian
+
+Priest
+
+Blacksmith
+
+Butcher
+
+Found in villages, villagers will offer to sell items to the player depending on their profession.
+
+Large Chest
+
+
+ You can also create Enchanted Books at the Enchantment Table, which can be used later at the Anvil to apply their enchantment to an item.
+
+
+
+ Tripwire Hooks will also provide constant power to a circuit while something is triggering the string between them.
+
+
+
+ Once tamed, a wolf will always have its collar on. The color of their collar can be changed by dying it.
+
+
+Carrots and Potatoes are farmed by planting Carrots or Potatoes, and are ready for harvesting when the vegetable is visible above the ground.
+
+
+ Additionally, pigs can be saddled and then ridden by players. They are controlled by tempting them with a Carrot on a Stick.
+
+
+
+ If necessary you can slowly move your minecart along using {*CONTROLLER_ACTION_MOVE*}. This helps to start the minecart by getting it onto a powered rail.
+
+
+You cannot join this game as split-screen is only supported when in High Definition mode. Sign out all other players if you wish to join.
+
+Cure
+
+Xbox 360
+
+Back
+
+This option disables achievements and leaderboard updates for this world while playing, and if loading it again after saving with this option on.
+
+Upload Save For Xbox One
+
+Upload Save
+
+Only one Xbox 360 console save can be stored in the save transfer area at a time. Please ensure you have downloaded the save on your Xbox One console before uploading another Xbox 360 console save.
+
+Uploading...
+
+Upload Complete!
+
+Upload Failed. Please try again later.
+
+You have found {*progress*} of {*goal*} Music Discs!
+
+
diff --git a/Minecraft.Client/Xbox/loc/Minecraft_de-DE.edb b/Minecraft.Client/Xbox/loc/Minecraft_de-DE.edb
new file mode 100644
index 00000000..e8c23c3e
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/Minecraft_de-DE.edb differ
diff --git a/Minecraft.Client/Xbox/loc/Minecraft_es-ES.edb b/Minecraft.Client/Xbox/loc/Minecraft_es-ES.edb
new file mode 100644
index 00000000..e5b9b58c
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/Minecraft_es-ES.edb differ
diff --git a/Minecraft.Client/Xbox/loc/Minecraft_fr-FR.edb b/Minecraft.Client/Xbox/loc/Minecraft_fr-FR.edb
new file mode 100644
index 00000000..ac34a6ab
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/Minecraft_fr-FR.edb differ
diff --git a/Minecraft.Client/Xbox/loc/Minecraft_it-IT.edb b/Minecraft.Client/Xbox/loc/Minecraft_it-IT.edb
new file mode 100644
index 00000000..00ae89b2
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/Minecraft_it-IT.edb differ
diff --git a/Minecraft.Client/Xbox/loc/Minecraft_ja-JP.edb b/Minecraft.Client/Xbox/loc/Minecraft_ja-JP.edb
new file mode 100644
index 00000000..cb3d59e9
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/Minecraft_ja-JP.edb differ
diff --git a/Minecraft.Client/Xbox/loc/Minecraft_ko-KR.edb b/Minecraft.Client/Xbox/loc/Minecraft_ko-KR.edb
new file mode 100644
index 00000000..45f6cd37
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/Minecraft_ko-KR.edb differ
diff --git a/Minecraft.Client/Xbox/loc/Minecraft_pt-BR.edb b/Minecraft.Client/Xbox/loc/Minecraft_pt-BR.edb
new file mode 100644
index 00000000..3d4d9b5c
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/Minecraft_pt-BR.edb differ
diff --git a/Minecraft.Client/Xbox/loc/Minecraft_pt-PT.edb b/Minecraft.Client/Xbox/loc/Minecraft_pt-PT.edb
new file mode 100644
index 00000000..a377e12e
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/Minecraft_pt-PT.edb differ
diff --git a/Minecraft.Client/Xbox/loc/Minecraft_zh-CHT.edb b/Minecraft.Client/Xbox/loc/Minecraft_zh-CHT.edb
new file mode 100644
index 00000000..cffb1db6
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/Minecraft_zh-CHT.edb differ
diff --git a/Minecraft.Client/Xbox/loc/UpdateLocalisations.cmd b/Minecraft.Client/Xbox/loc/UpdateLocalisations.cmd
new file mode 100644
index 00000000..ca000b7b
--- /dev/null
+++ b/Minecraft.Client/Xbox/loc/UpdateLocalisations.cmd
@@ -0,0 +1,30 @@
+SET rootPath=..\
+
+SET TOOLS_PATH="C:\Program Files (x86)\Microsoft Xbox 360 SDK\bin\win32"
+SET LOCTOOLS_PATH="C:\Program Files (x86)\LocStudio"
+
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O de-DE.txt Minecraft_de-DE.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O es-ES.txt Minecraft_es-ES.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O fr-FR.txt Minecraft_fr-FR.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O it-IT.txt Minecraft_it-IT.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O ja-JP.txt Minecraft_ja-JP.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O ko-KR.txt Minecraft_ko-KR.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O pt-BR.txt Minecraft_pt-BR.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O pt-PT.txt Minecraft_pt-PT.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O zh-CHT.txt Minecraft_zh-CHT.edb
+
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O cs-CZ.txt Minecraft_cs-CZ.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O da-DK.txt Minecraft_da-DK.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O el-GR.txt Minecraft_el-GR.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O en-GB.txt Minecraft_en-GB.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O es-MX.txt Minecraft_es-MX.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O fi-FI.txt Minecraft_fi-FI.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O nb-NO.txt Minecraft_nb-NO.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O nl-BE.txt Minecraft_nl-BE.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O pl-PL.txt Minecraft_pl-PL.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O ru-RU.txt Minecraft_ru-RU.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O sk-SK.txt Minecraft_sk-SK.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O sv-SE.txt Minecraft_sv-SE.edb
+%LOCTOOLS_PATH%\LSCMD.exe /U /L /G /F /O zh-CHS.txt Minecraft_zh-CHS.edb
+
+pause
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_cs-CZ.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_cs-CZ.edb
new file mode 100644
index 00000000..5633db31
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_cs-CZ.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_da-DK.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_da-DK.edb
new file mode 100644
index 00000000..4ac6e25c
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_da-DK.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_de-DE.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_de-DE.edb
new file mode 100644
index 00000000..4ac1faf7
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_de-DE.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_el-GR.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_el-GR.edb
new file mode 100644
index 00000000..3b8b2ffb
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_el-GR.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_en-GB.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_en-GB.edb
new file mode 100644
index 00000000..3c11bcb4
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_en-GB.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_es-ES.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_es-ES.edb
new file mode 100644
index 00000000..29367b83
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_es-ES.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_es-MX.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_es-MX.edb
new file mode 100644
index 00000000..fd920f0e
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_es-MX.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_fi-FI.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_fi-FI.edb
new file mode 100644
index 00000000..9371c16f
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_fi-FI.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_fr-FR.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_fr-FR.edb
new file mode 100644
index 00000000..7ae5ca22
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_fr-FR.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_it-IT.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_it-IT.edb
new file mode 100644
index 00000000..512880db
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_it-IT.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_ja-JP.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_ja-JP.edb
new file mode 100644
index 00000000..a892108b
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_ja-JP.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_ko-KR.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_ko-KR.edb
new file mode 100644
index 00000000..edaf3a7a
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_ko-KR.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_nb-NO.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_nb-NO.edb
new file mode 100644
index 00000000..ee812aa2
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_nb-NO.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_nl-BE.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_nl-BE.edb
new file mode 100644
index 00000000..c5bbd4a0
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_nl-BE.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_pl-PL.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_pl-PL.edb
new file mode 100644
index 00000000..9b89d95c
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_pl-PL.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_pt-BR.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_pt-BR.edb
new file mode 100644
index 00000000..4b324181
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_pt-BR.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_pt-PT.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_pt-PT.edb
new file mode 100644
index 00000000..6362fce2
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_pt-PT.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_ru-RU.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_ru-RU.edb
new file mode 100644
index 00000000..713eb164
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_ru-RU.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_sk-SK.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_sk-SK.edb
new file mode 100644
index 00000000..d17f6344
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_sk-SK.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_sv-SE.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_sv-SE.edb
new file mode 100644
index 00000000..9416af91
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_sv-SE.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_zh-CHS.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_zh-CHS.edb
new file mode 100644
index 00000000..95759189
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_zh-CHS.edb differ
diff --git a/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_zh-CHT.edb b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_zh-CHT.edb
new file mode 100644
index 00000000..1d5e17f7
Binary files /dev/null and b/Minecraft.Client/Xbox/loc/blank_edbs/Minecraft_zh-CHT.edb differ
diff --git a/Minecraft.Client/Xbox/loc/launchCMD.cmd b/Minecraft.Client/Xbox/loc/launchCMD.cmd
new file mode 100644
index 00000000..d21751d7
--- /dev/null
+++ b/Minecraft.Client/Xbox/loc/launchCMD.cmd
@@ -0,0 +1 @@
+cmd &
\ No newline at end of file
diff --git a/Minecraft.Client/Xbox/loc/lcl/de-DE/Minecraft_all.resx b/Minecraft.Client/Xbox/loc/lcl/de-DE/Minecraft_all.resx
new file mode 100644
index 00000000..b7838b9a
--- /dev/null
+++ b/Minecraft.Client/Xbox/loc/lcl/de-DE/Minecraft_all.resx
@@ -0,0 +1,4579 @@
+
+Nicht verwendet
+
+OK
+
+Zurück
+
+Abbrechen
+
+Ja
+
+Nein
+
+Beschädigte Speicherdatei
+
+Deine Speicherdatei ist beschädigt. Beschädigte Speicherdatei überschreiben und neue erstellen?
+
+Kein freier Speicherplatz
+
+Auf dem ausgewählten Speichergerät steht nicht genug freier Speicherplatz zur Verfügung, um eine Speicherdatei für das Spiel zu erstellen.
+
+Erneut auswählen
+
+Ohne Speichern spielen
+
+Neue Speicherdatei erstellen
+
+Speicherdatei überschreiben?
+
+Diese Speicherdatei existiert bereits auf deinem ausgewählten Speichergerät. Möchtest du sie überschreiben?
+
+Nein, nicht überschreiben
+
+Überschreiben und speichern
+
+Fehler beim Speichern
+
+Problem mit dem Speichergerät
+
+Dein Speichergerät ist nicht verfügbar oder hat einen Fehler verursacht.
+
+Dein Speichergerät ist nicht verfügbar oder hat einen Fehler verursacht. Wähl ein neues Speichergerät aus.
+
+Neues Speichergerät auswählen
+
+Kein Speichergerät ausgewählt
+
+Wenn du kein Speichergerät auswählst, wird die Speicherfunktion deaktiviert.
+
+Speichergerät auswählen
+
+Ohne Speichern fortsetzen
+
+Dein Speichergerät wurde entfernt. Wähl ein neues aus.
+
+Fehler beim Laden
+
+Speicherdatei benennen
+
+Gib einen Namen für deine Speicherdatei ein.
+
+Zurück zur Xbox Steuerung
+
+Bist du sicher, dass du das Spiel verlassen möchtest?
+
+Abgemeldet
+
+Du bist zum Titelbildschirm zurückgekehrt, weil dein Spielerprofil abgemeldet wurde.
+
+Das Spiel wurde beendet, weil ein Spielerprofil abgemeldet wurde.
+
+Weiterspielen
+
+Spielerprofil nicht online
+
+Dieses Spiel verfügt über Funktionen, die ein Spielerprofil mit Xbox Live-Berechtigung erfordern, du bist derzeit aber offline.
+
+Diese Funktion erfordert ein Spielerprofil, das bei Xbox Live angemeldet ist.
+
+Mit Xbox Live verbinden
+
+Offline weiterspielen
+
+Verleihen des Erfolgs misslungen
+
+ Beim Zugriff auf dein Spielerprofil ist ein Problem aufgetreten. Dein Erfolg kann derzeit nicht verliehen werden.
+
+Problem mit Spielerprofil
+
+Fehler beim Speichern der Einstellungen im Spielerprofil.
+
+Gast-Spielerprofil
+
+Ein Gast-Spielerprofil kann diese Funktion nicht verwenden. Verwende bitte ein anderes Spielerprofil.
+
+Speichern ...
+
+Inhalt wird gespeichert. Bitte schalten Sie Ihre Konsole nicht aus.
+
+Vollständiges Spiel freischalten
+
+Dies ist die Testversion von Minecraft. Würdest du das vollständige Spiel besitzen, hättest du dir gerade einen Erfolg verdient!
+Schalte das vollständige Spiel frei, um den ganzen Spaß von Minecraft zu erleben und zusammen mit deinen Freunden auf der ganzen Welt über Xbox Live zu spielen.
+Jetzt das vollständige Spiel freischalten?
+
+Du bist zum Hauptmenü zurückgekehrt, weil beim Lesen deines Profils ein Fehler aufgetreten ist.
+
+Es sind neue Inhalte zum Herunterladen verfügbar! Du kannst sie im Hauptmenü über die Schaltfläche "Minecraft Store" herunterladen.
+
+Du kannst das Aussehen deiner Spielfigur mit einem Skinpaket aus dem Minecraft Store anpassen. Wähle "Minecraft Store" im Hauptmenü, um zu sehen, was verfügbar ist.
+
+Wenn du dieses Spiel im HD-Modus spielst, können auf einer Konsole mit geteiltem Bildschirm bis zu vier Spieler spielen!
+
+Schließ zusätzliche Controller an deine Konsole an und drück auf ihnen START, um jederzeit einem Spiel beizutreten.
+
+Ändere die Gamma-Einstellung, um das Spiel heller oder dunkler anzeigen zu lassen.
+
+Wenn du die Spielschwierigkeit auf Friedlich setzt, wird deine Gesundheit automatisch regeneriert und nachts tauchen keine Monster auf!
+
+Füttere einen Wolf mit einem Knochen, um ihn zu zähmen. Du kannst ihm dann befehlen, sich zu setzen oder dir zu folgen.
+
+Du kannst vom Inventarmenü aus Gegenstände ablegen, indem du den Cursor aus dem Menü hinaus bewegst und{*CONTROLLER_VK_A*}drückst.
+
+Wenn du nachts in einem Bett schläfst, wird die Zeit bis zum Sonnenaufgang vorgedreht. In einem Multiplayer-Spiel müssen sich dafür aber alle Spieler gleichzeitig im Bett befinden.
+
+Hol dir Schweinefleisch von Schweinen. Koch und iss es, um deine Gesundheit zu regenerieren.
+
+Hol dir Leder von Kühen und stell daraus Rüstungen her.
+
+Wenn du einen leeren Eimer hast, kannst du ihn mit Milch von einer Kuh, Wasser oder Lava füllen!
+
+Bereite mit einer Hacke den Boden aufs Bepflanzen vor.
+
+Spinnen werden dich tagsüber nicht angreifen, es sei denn, du greifst sie an!
+
+Erde oder Sand lässt sich mit einem Spaten schneller abbauen als per Hand!
+
+Mit gekochtem Schweinefleisch regeneriert die Gesundheit besser als mit rohem.
+
+Stelle Fackeln her, um nachts die Gegend zu erhellen. Monster werden die Bereiche rund um diese Fackeln meiden.
+
+Mit einer Lore und Schienen erreichst du dein Ziel schneller!
+
+Pflanz ein paar Setzlinge. Sie werden zu Bäumen heranwachsen.
+
+Pigmen greifen dich nicht an, es sei denn, du greifst sie an.
+
+Du kannst deinen Wiedereintrittspunkt ändern und zum Sonnenaufgang vorspringen, indem du in einem Bett schläfst.
+
+Schleudere die Feuerbälle auf den Ghast zurück!
+
+Wenn du ein Portal baust, kannst du damit in eine andere Dimension reisen - den Nether.
+
+Drück{*CONTROLLER_VK_B*}, um den Gegenstand abzulegen, den du derzeit in der Hand hältst!
+
+Verwende für jede Arbeit das geeignete Werkzeug!
+
+Wenn du keine Kohle für deine Fackeln findest, kannst du immer noch im Ofen aus Bäumen Holzkohle herstellen.
+
+Gerade nach unten oder oben zu graben, ist keine so gute Idee.
+
+Knochenmehl (hergestellt aus einem Skelettknochen) kann als Dünger verwendet werden und lässt Pflanzen sofort wachsen!
+
+Creeper explodieren, wenn sie dir zu nahe kommen!
+
+Obsidian entsteht, wenn Wasser auf eine Lavaquelle trifft.
+
+Es kann Minuten dauern, bis die Lava VOLLSTÄNDIG verschwindet, nachdem die Lavaquelle entfernt wurde.
+
+Pflasterstein ist immun gegen die Feuerbälle von Ghasts und eignet sich daher zum Schutz von Portalen.
+
+Alle Blöcke, die als Lichtquelle verwendet werden können, schmelzen Schnee und Eis. Dazu zählen Fackeln, Glowstone und Kürbislaternen.
+
+Sei vorsichtig, wenn du unter freiem Himmel Strukturen aus Wolle baust, da Gewitterblitze Wolle entzünden können.
+
+Ein einziger Eimer Lava reicht als Brennmaterial, um in einem Ofen 100 Blöcke zu schmelzen.
+
+Das Instrument, das ein Notenblock spielt, hängt von dem Material unter dem Block ab.
+
+Zombies und Skelette können den Kontakt mit Tageslicht überleben, wenn sie sich im Wasser befinden.
+
+Wenn du einen Wolf angreifst, werden alle Wölfe in der unmittelbaren Umgebung aggressiv und greifen dich an. Das Gleiche gilt für Zombie Pigmen.
+
+Wölfe können nicht den Nether betreten.
+
+Wölfe werden keine Creeper angreifen.
+
+Hühner legen alle 5 bis 10 Minuten ein Ei.
+
+Obsidian kann nur mit einer Diamantspitzhacke abgebaut werden.
+
+Creeper sind die einfachste Möglichkeit, zu Schießpulver zu kommen.
+
+Wenn du zwei Truhen direkt nebeneinander stellst, entsteht eine große Truhe.
+
+Zahme Wölfe zeigen ihre Gesundheit durch die Haltung ihres Schwanzes an. Füttere sie mit Fleisch, um sie zu heilen.
+
+Koche Kaktus im Ofen, um grüne Farbe zu erhalten.
+
+Die neuesten Informationen von 4J Studios und Kappische zu diesem Spiel findest du auf Twitter!
+
+Beeindrucke deine Freunde, indem du vom Pause-Menü aus Screenshots deiner Minecraft-Werke auf Facebook freigibst!
+
+Lies dir den Abschnitt „Was ist neu“ im Menü „So wird gespielt“ durch, um die aktuellen Update-Informationen über das Spiel zu erfahren.
+
+Es gibt jetzt stapelbare Zäune im Spiel!
+
+minecraftforum hat einen eigenen Bereich zur Xbox 360 Edition.
+
+Manche Tiere folgen dir, wenn du Weizen in deiner Hand hältst.
+
+Wenn ein Tier sich nicht mehr als 20 Blöcke in eine beliebige Richtung bewegen kann, verschwindet es nicht.
+
+Musik von C418!
+
+Notch hat mehr als eine Million Follower auf Twitter!
+
+Nicht alle Schweden sind blond. Manche wie Jens von Mojang haben sogar rote Haare!
+
+Wir glauben, dass 4J Studios Herobrine aus dem Xbox 360 Konsolenspiel entfernt haben, aber wir sind uns nicht ganz sicher.
+
+Irgendwann wird es ein Update für dieses Spiel geben!
+
+Wer ist Notch?
+
+Mojang hat mehr Preise als Mitarbeiter!
+
+Es gibt berühmte Personen, die Minecraft spielen!
+
+deadmau5 mag Minecraft!
+
+Bitte schau nicht direkt auf die Bugs.
+
+Creeper wurden aus einem Programmierfehler geboren.
+
+Ist es ein Huhn oder eine Ente?
+
+Warst du auf der MineCon?
+
+Niemand bei Mojang hat je das Gesicht von Junkboy gesehen.
+
+Wusstest du schon, dass es ein Minecraft Wiki gibt?
+
+Mojangs neues Büro ist cool!
+
+Minecraft: Xbox 360 Edition hat jede Menge Rekorde gebrochen!
+
+Die Minecon 2013 fand in Orlando, Florida (USA) statt!
+
+.party() war exzellent!
+
+Gerüchte sind sicherlich immer eher falsch als wahr!
+
+{*T3*}SO WIRD GESPIELT: GRUNDLAGEN{*ETW*}{*B*}{*B*}
+Minecraft ist ein Spiel, bei dem du Blöcke platzierst, um alles zu bauen, was du dir vorstellen kannst. Nachts treiben sich Monster herum, du solltest dir eine Zuflucht bauen, bevor sie herauskommen.{*B*}{*B*}
+Mit{*CONTROLLER_ACTION_LOOK*} kannst du dich umsehen.{*B*}{*B*}
+Mit{*CONTROLLER_ACTION_MOVE*} kannst du dich bewegen.{*B*}{*B*}
+Drück{*CONTROLLER_ACTION_JUMP*}, um zu springen.{*B*}{*B*}
+Drück{*CONTROLLER_ACTION_MOVE*} zweimal schnell nacheinander nach vorn, um zu sprinten. Solange du{*CONTROLLER_ACTION_MOVE*} nach vorn gedrückt hältst, sprintest du weiter, bis dir die Sprintzeit ausgeht oder deine Hungerleiste weniger als{*ICON_SHANK_03*} anzeigt.
+Halte{*CONTROLLER_ACTION_ACTION*} gedrückt, um mit deiner Hand oder dem, was du darin hältst, zu graben oder zu hacken. Möglicherweise musst du dir ein Werkzeug bauen, um manche Blöcke abbauen zu können.{*B*}{*B*}
+Wenn du einen Gegenstand in der Hand hältst, kannst du ihn mit{*CONTROLLER_ACTION_USE*} verwenden. Drück{*CONTROLLER_ACTION_DROP*}, um ihn abzulegen.
+
+{*T3*}SO WIRD GESPIELT: DISPLAY{*ETW*}{*B*}{*B*}
+Das Display auf dem Bildschirm zeigt dir Informationen zu deinem Zustand: deine Gesundheit, deinen restlichen Sauerstoff, wenn du unter Wasser bist, deinen Hunger (du musst etwas essen, um ihn zu stillen) und deine Rüstung, wenn du eine trägst. Wenn du Gesundheit verlierst, du aber 9 oder mehr{*ICON_SHANK_01*} in deiner Hungerleiste hast, regeneriert deine Gesundheit sich automatisch. Wenn du Nahrung isst, wird deine Hungerleiste aufgefüllt.{*B*}
+Hier wird auch die Erfahrungsleiste angezeigt. Ein Zahlenwert gibt deinen Erfahrungslevel an; die Länge der Leiste zeigt an, wie viele Erfahrungspunkte du benötigst, um deinen Erfahrungslevel zu steigern. Du erhältst Erfahrungspunkte durch Einsammeln von Erfahrungskugeln, die entstehen, wenn NPCs sterben oder wenn du bestimmte Blocktypen abbaust, Tiere züchtest, angelst oder Erze im Ofen schmilzt.{*B*}{*B*}
+Das Display zeigt auch die Gegenstände an, die du verwenden kannst. Wechsle mit{*CONTROLLER_ACTION_LEFT_SCROLL*} oder{*CONTROLLER_ACTION_RIGHT_SCROLL*} den Gegenstand in deiner Hand.
+
+{*T3*}SO WIRD GESPIELT: INVENTAR{*ETW*}{*B*}{*B*}
+Sieh dir mit{*CONTROLLER_ACTION_INVENTORY*} dein Inventar an.{*B*}{*B*}
+Auf diesem Bildschirm siehst du die Gegenstände, die du in deiner Hand verwenden kannst, und alle anderen Gegenstände, die du bei dir trägst. Außerdem wird hier deine Rüstung angezeigt.{*B*}{*B*}
+Beweg den Cursor mit{*CONTROLLER_MENU_NAVIGATE*}. Wähl mit{*CONTROLLER_VK_A*} den Gegenstand unter dem Cursor aus. Wenn sich mehr als ein Gegenstand unter dem Cursor befindet, werden alle aufgenommen. Mit{*CONTROLLER_VK_X*} kannst du nur die Hälfte von ihnen aufnehmen.{*B*}{*B*}
+Beweg den Gegenstand mit dem Cursor an einen anderen Platz im Inventar, und leg ihn dort mit{*CONTROLLER_VK_A*} ab. Wenn unter dem Cursor mehrere Gegenstände liegen, kannst du mit{*CONTROLLER_VK_A*} alle ablegen oder mit{*CONTROLLER_VK_X*} nur einen.{*B*}{*B*}
+Wenn du den Cursor über eine Rüstung bewegst, informiert eine QuickInfo dich über die Möglichkeit zum Aktivieren des schnellen Bewegens der Rüstung an den richtigen Rüstungsplatz im Inventar.{*B*}{*B*}
+Du kannst deine Lederrüstung einfärben, indem du im Inventarmenü die Farbe mit dem Cursor hältst und sie dann mit{*CONTROLLER_VK_X*} auf das Teil anwendest, über dem sich der Cursor befindet.
+
+
+{*T3*}SO WIRD GESPIELT: TRUHE{*ETW*}{*B*}{*B*}
+Wenn du eine Truhe erschaffen hast, kannst du sie in der Welt platzieren und dann mit{*CONTROLLER_ACTION_USE*}verwenden, um Gegenstände aus deinem Inventar hineinzulegen.{*B*}{*B*}
+Verwende den Cursor, um Gegenstände zwischen deinem Inventar und der Truhe zu verschieben.{*B*}{*B*}
+Du kannst Gegenstände in der Truhe lagern, um sie später wieder deinem Inventar hinzuzufügen.
+
+
+{*T3*}SO WIRD GESPIELT: GROSSE TRUHE{*ETW*}{*B*}{*B*}
+Wenn du zwei Truhen nebeneinander stellst, werden sie zu einer großen Truhe zusammengefügt. In ihr kannst du noch mehr Gegenstände lagern.{*B*}{*B*}
+Sie funktioniert genauso wie eine normale Truhe.
+
+
+{*T3*}SO WIRD GESPIELT: CRAFTING{*ETW*}{*B*}{*B*}
+Auf der Crafting-Oberfläche kannst du Gegenstände aus deinem Inventar kombinieren, um neue Arten von Gegenständen zu erschaffen. Öffne die Crafting-Oberfläche mit{*CONTROLLER_ACTION_CRAFTING*}.{*B*}{*B*}
+Wechsle mit{*CONTROLLER_VK_LB*} und{*CONTROLLER_VK_RB*} zwischen den Reitern am oberen Rand, um die Art des Gegenstands auszuwählen, den du herstellen möchtest. Wähl dann mit{*CONTROLLER_MENU_NAVIGATE*}den Gegenstand aus, den du herstellen möchtest.{*B*}{*B*}
+Der Crafting-Bereich zeigt dir die Gegenstände, die du brauchst, um den neuen Gegenstand herzustellen. Drück{*CONTROLLER_VK_A*}, um den Gegenstand herzustellen und ihn in deinem Inventar abzulegen.
+
+
+{*T3*}SO WIRD GESPIELT: WERKBANK{*ETW*}{*B*}{*B*}
+Mit einer Werkbank kannst du größere Gegenstände herstellen.{*B*}{*B*}
+Platzier die Werkbank in der Welt und drück{*CONTROLLER_ACTION_USE*}, um sie zu verwenden.{*B*}{*B*}
+Crafting auf der Werkbank funktioniert genauso wie einfaches Crafting, allerdings bietet sie mehr Platz und dadurch eine größere Auswahl an Gegenständen, die du herstellen kannst.
+
+
+{*T3*}SO WIRD GESPIELT: OFEN{*ETW*}{*B*}{*B*}
+Mit einem Ofen kannst du Gegenstände durch Erhitzen verändern. Zum Beispiel kannst du im Ofen aus Eisenerz Eisenbarren herstellen.{*B*}{*B*}
+Platzier den Ofen in der Welt und drück{*CONTROLLER_ACTION_USE*}, um ihn zu verwenden.{*B*}{*B*}
+Du musst unten in den Ofen etwas Brennstoff legen und oben in den Ofen den Gegenstand, den du erhitzen möchtest. Der Ofen wird dann angeheizt und beginnt zu arbeiten.{*B*}{*B*}
+Wenn deine Gegenstände erhitzt sind, kannst du sie aus dem Ausgangsbereich in dein Inventar verschieben.{*B*}{*B*}
+Wenn du den Cursor über eine Zutat oder einen Brennstoff für den Ofen bewegst, informiert eine Quickinfo dich über die Möglichkeit zum Aktivieren des schnellen Bewegens des Gegenstands in den Ofen.
+
+
+{*T3*}SO WIRD GESPIELT: DISPENSER{*ETW*}{*B*}{*B*}
+Ein Dispenser wird verwendet, um Gegenstände zu verschießen. Du musst einen Schalter wie zum Beispiel einen Hebel neben den Dispenser platzieren, um diesen auszulösen.{*B*}{*B*}
+Um den Dispenser mit Gegenständen zu befüllen, drück{*CONTROLLER_ACTION_USE*}, und beweg dann die zu verschießenden Gegenstände aus deinem Inventar in den Dispenser.{*B*}{*B*}
+Wenn du jetzt den Schalter betätigst, wird der Dispenser einen Gegenstand verschießen.
+
+
+{*T3*}SO WIRD GESPIELT: BRAUEN{*ETW*}{*B*}{*B*}
+Zum Brauen von Tränken brauchst du einen Braustand, den du an der Werkbank herstellen kannst. Jeder Trank beginnt mit einer Flasche Wasser, die man erhält, indem man eine Glasflasche mit Wasser aus einem Kessel oder einer Wasserquelle füllt. {*B*}
+Ein Braustand hat drei Plätze für Flaschen, du kannst also drei Tränke auf einmal herstellen. Eine Zutat reicht für alle drei Flaschen aus, du solltest also immer drei Tränke auf einmal brauchen, um deine Rohstoffe optimal auszunutzen. {*B*}
+Wenn du eine Trankzutat in das obere Feld des Braustandes legst, wird nach kurzer Zeit ein Grundtrank gebraut. Dieser hat noch keinen Effekt, aber du kannst aus diesem Grundtrank und einer weiteren Zutat einen Trank mit einem Effekt brauen. {*B*}
+Wenn du diesen Trank hast, kannst du ihm noch eine dritte Zutat hinzufügen, damit der Effekt länger anhält (durch Redstone-Staub), stärker wirkt (durch Glowstone-Staub) oder zu einem schädlichen Trank wird (durch ein Fermentiertes Spinnenauge). {*B*}
+Du kannst jedem Trank auch Schießpulver hinzufügen, wodurch er zu einem Wurftrank wird. Wenn du ihn wirfst, wird der Effekt des Tranks auf das Gebiet angewendet, in dem der Trank landet. {*B*}
+
+Die Grundzutaten für Tränke sind:{*B*}{*B*}
+* {*T2*}Netherwarze{*ETW*}{*B*}
+* {*T2*}Spinnenauge{*ETW*}{*B*}
+* {*T2*}Zucker{*ETW*}{*B*}
+* {*T2*}Ghastträne{*ETW*}{*B*}
+* {*T2*}Lohenstaub{*ETW*}{*B*}
+* {*T2*}Magmacreme{*ETW*}{*B*}
+* {*T2*}Funkelnde Melone{*ETW*}{*B*}
+* {*T2*}Redstone-Staub{*ETW*}{*B*}
+* {*T2*}Glowstone-Staub{*ETW*}{*B*}
+* {*T2*}Fermentiertes Spinnenauge{*ETW*}{*B*}{*B*}
+
+Du wirst selbst mit Kombinationen von Zutaten experimentieren müssen, um alle verschiedenen Tränke zu finden, die du brauen kannst.
+
+
+{*T3*}SO WIRD GESPIELT: VERZAUBERN{*ETW*}{*B*}{*B*}
+Mithilfe der Erfahrungspunkte, die du erhältst, wenn ein NPC stirbt oder wenn du bestimmte Blöcke abbaust oder im Ofen einschmilzt, kannst du einige Werkzeuge, Waffen, Rüstungen und Bücher verzaubern. {*B*}
+Wenn ein Schwert, ein Bogen, eine Axt, eine Spitzhacke, eine Schaufel, eine Rüstung oder ein Buch in das Feld unter dem Buch in den Zaubertisch gelegt werden, zeigen die drei Schaltflächen rechts des Feldes ein paar Zauber und ihre Kosten in Erfahrungsleveln an. {*B*}
+Wenn du für einen der Zauber nicht genug Erfahrungslevel hast, werden seine Kosten in Rot angezeigt, sonst in Grün. {*B*}{*B*}
+Die tatsächlich angewendete Verzauberung wird zufällig aus den angezeigten Verzauberungen ausgewählt. {*B*}{*B*}
+Wenn der Zaubertisch von Bücherregalen umgeben ist (bis hin zu maximal 15 Bücherregalen), wobei zwischen Zaubertisch und Bücherregal ein Block Abstand sein muss, werden die Verzauberungen verstärkt und man kann sehen, wie arkane Schriftzeichen aus dem Buch auf dem Zaubertisch herausfliegen. {*B*}{*B*}
+Alle Zutaten für einen Zaubertisch kann man in den Dörfern einer Welt finden oder indem man die Welt abbaut und bewirtschaftet.{*B*}{*B*}
+Zauberbücher werden beim Amboss benutzt, um Verzauberungen auf Gegenstände anzuwenden. Das gibt dir mir Kontrolle darüber, welche Verzauberungen du auf deinen Gegenständen möchtest.{*B*}
+
+
+{*T3*}SO WIRD GESPIELT: TIERHALTUNG{*ETW*}{*B*}{*B*}
+Wenn du deine Tiere an einer Stelle halten willst, solltest du einen eingezäunten Bereich von mindestens 20x20 Blöcke anlegen und deine Tiere dort unterbringen. Dann sind sie das nächste Mal auch noch da, wenn du sie besuchen willst.
+
+
+{*T3*}SO WIRD GESPIELT: TIERZUCHT{*ETW*}{*B*}{*B*}
+Die Tiere in Minecraft können sich vermehren und werden Babyversionen von sich selbst in die Welt setzen!{*B*}
+Damit Tiere sich paaren, musst du sie mit dem richtigen Futter füttern, um sie in den "Liebesmodus" zu versetzen.{*B*}
+Füttere eine Kuh, eine Pilzkuh oder ein Schaf mit Weizen, ein Schwein mit Karotten, ein Huhn mit Weizensamen oder Netherwarzen, einen Wolf mit beliebigem Fleisch und schon ziehen sie los und suchen in der Nähe nach einem anderen Tier derselben Gattung, das auch im Liebesmodus ist.{*B*}
+Wenn sich zwei Tiere derselben Gattung begegnen und beide im Liebesmodus sind, küssen sie sich für ein paar Sekunden und dann erscheint ein Babytier. Das Babytier folgt seinen Eltern für eine Weile, bevor es zu einem ausgewachsenen Tier heranwächst.{*B*}
+Nachdem ein Tier im Liebesmodus war, dauert es fünf Minuten, bis das Tier den Liebesmodus erneut annehmen kann.{*B*}
+Du kannst in einer Welt maximal eine bestimmte Anzahl an Tieren haben; es kann also sein, dass Tiere sich nicht vermehren, wenn du schon viele hast.
+
+{*T3*}SO WIRD GESPIELT: NETHERPORTAL{*ETW*}{*B*}{*B*}
+Mithilfe eines Netherportals kannst du zwischen der oberirdischen Welt und dem Nether hin und her reisen. Wenn du im Nether eine Entfernung von einem Block reist, entspricht das einer Reise von drei Blöcken in der oberirdischen Welt. Wenn du also ein Portal in die Netherwelt baust und sie darüber verlässt, wirst du dich dreimal so weit von deinem Startpunkt entfernt befinden.{*B*}{*B*}
+Du brauchst mindestens 10 Blöcke Obsidian, um ein Portal zu bauen. Das Portal muss 5 Blöcke hoch, 4 Blöcke breit und 1 Block tief sein. Wenn der Rahmen des Portals gebaut ist, muss der Inhalt des Rahmens angezündet werden, um das Portal zu aktivieren. Dies kannst du mit dem Feuerzeug oder einer Feuerkugel tun.{*B*}{*B*}
+Beispiele für Portale sind im Bild rechts dargestellt.
+
+
+{*T3*}SO WIRD GESPIELT: MULTIPLAYER{*ETW*}{*B*}{*B*}
+Minecraft auf der Xbox 360 Konsole ist als Standard ein Multiplayer-Spiel. Wenn du in einem HD-Modus spielst, weitere Controller anschließt und START drückst, können lokale Spieler jederzeit deinem Spiel beitreten.{*B*}{*B*}
+Wenn du ein Onlinespiel startest oder einem beitrittst, können die Spieler in deiner Freundesliste es sehen (es sei denn, du hostest das Spiel und hast "Nur mit Einladung" ausgewählt), und wenn sie dem Spiel beitreten, können Spieler in ihrer Freundesliste es auch sehen (falls du die Option "Freunde von Freunden zulassen" ausgewählt hast).{*B*}
+Wenn du in einem Spiel bist, kannst du durch Drücken der BACK-Taste eine Liste aller anderen Spieler im Spiel aufrufen, dir ihre Spielerkarten ansehen, Spieler aus dem Spiel ausschließen und andere ins Spiel einladen.
+
+
+{*T3*}SO WIRD GESPIELT: SCREENSHOTS GETEILT{*ETW*}{*B*} {*B*}
+Du kannst einen Screenshot von deinem Spiel erstellen, indem du das Pause-Menü aufrufst und{*CONTROLLER_VK_Y*} drückst, um den Screenshot auf Facebook zu veröffentlichen. Es wird eine verkleinerte Version deines Screenshots angezeigt, und du kannst den Begleittext deines Facebook-Beitrags bearbeiten.{*B*}{*B*}
+Es gibt einen eigenen Kameramodus für das Erstellen solcher Screenshots, damit du auf dem Bild deine Spielfigur von vorn sehen kannst. Drück{*CONTROLLER_ACTION_CAMERA*}, bis du deine Spielfigur von vorn siehst, bevor du zum Teilen{*CONTROLLER_VK_Y*} drückst.{*B*}{*B*}
+Gamertags werden auf Screenshots nicht angezeigt.
+
+
+{*T3*}SO WIRD GESPIELT: LEVEL SPERREN{*ETW*}{*B*}{*B*}
+Wenn du in einem Level, den du spielst, anstößige Inhalte findest, kannst du den Level deiner Liste der gesperrten Level hinzufügen.
+Ruf dafür das Pause-Menü auf, und drück dann{*CONTROLLER_VK_RB*}, um die QuickInfo zum Sperren eines Levels aufzurufen.
+Wenn du in Zukunft versuchst, diesem Level beizutreten, wirst du darüber benachrichtigt, dass dieser Level sich auf deiner Liste der gesperrten Level befindet, und du erhältst die Wahl, den Level von der Liste zu entfernen und ihn zu betreten oder abzubrechen.
+
+{*T3*}SO WIRD GESPIELT: KREATIVMODUS{*ETW*}{*B*}{*B*}
+Die Oberfläche des Kreativmodus erlaubt es dir, alle Gegenstände im Spiel in dein Inventar zu verschieben, ohne dass du sie vorher abbauen oder herstellen musst.
+Die Gegenstände werden nicht aus deinem Inventar entfernt, wenn du sie in der Welt platzierst oder sie verbrauchst. Dadurch kannst du dich ganz aufs Bauen konzentrieren anstatt auf das Sammeln von Ressourcen. {*B*}
+Wenn du eine Welt im Kreativmodus erstellst, lädst oder speicherst, sind Erfolge und Bestenlisten-
+Aktualisierungen in dieser Welt deaktiviert, selbst wenn du die Welt später im Überlebensmodus lädst.{*B*}
+Um im Kreativmodus zu fliegen, drücke zweimal schnell {*CONTROLLER_ACTION_JUMP*}. Um das Fliegen zu beenden, wiederhole die Aktion. Um schneller zu fliegen, drück beim Fliegen{*CONTROLLER_ACTION_MOVE*} zweimal schnell nach vorn.
+Im Flugmodus halte{*CONTROLLER_ACTION_JUMP*} nach unten gedrückt, um dich nach oben zu bewegen, und{*CONTROLLER_ACTION_SNEAK*}, um dich nach unten zu bewegen. Oder verwende{*CONTROLLER_ACTION_DPAD_UP*}, um dich nach oben zu bewegen, {*CONTROLLER_ACTION_DPAD_DOWN*}, um dich nach unten zu bewegen,
+{*CONTROLLER_ACTION_DPAD_LEFT*}, um dich nach links zu bewegen, und {*CONTROLLER_ACTION_DPAD_RIGHT*}, um dich nach rechts zu bewegen.
+
+{*T3*}SO WIRD GESPIELT: HOST- UND SPIELEROPTIONEN{*ETW*}{*B*}{*B*}
+
+{*T1*}Spieloptionen{*ETW*}{*B*}
+Beim Laden oder Erstellen einer Welt kannst du mit der Schaltfläche "Weitere Optionen" ein Menü aufrufen, mit dem du mehr Kontrolle über dein Spiel hast.{*B*}{*B*}
+
+ {*T2*}Spieler gegen Spieler{*ETW*}{*B*}
+ Aktiviert, dass Spieler anderen Spielern Schaden zufügen können. Diese Option betrifft nur den Überlebensmodus.{*B*}{*B*}
+
+ {*T2*}Spielern vertrauen{*ETW*}{*B*}
+ Ist diese Option deaktiviert, sind Spieler, die dem Spiel beitreten, in ihren Handlungen eingeschränkt. Folgende Handlungen sind nicht möglich: Vorkommen abbauen, Gegenstände verwenden, Blöcke platzieren, Türen und Schalter verwenden, Container verwenden, Spieler angreifen, Tiere angreifen. Über das Spielmenü kannst du die Privilegien für einen speziellen Spieler ändern.{*B*}{*B*}
+
+ {*T2*}Feuer breitet sich aus{*ETW*}{*B*}
+ Aktiviert, dass Feuer auf brennbare Blöcke in der Nähe übergreifen kann. Diese Option kann ebenfalls über das Spielmenü geändert werden.{*B*}{*B*}
+
+ {*T2*}TNT explodiert{*ETW*}{*B*}
+ Aktiviert, dass TNT nach dem Zünden explodiert. Diese Option kann ebenfalls über das Spielmenü geändert werden.{*B*}{*B*}
+
+ {*T2*}Hostprivilegien{*ETW*}{*B*}
+ Aktiviert, dass der Host das Fliegen nutzen, Erschöpfung deaktivieren und sich selbst im Spielmenü unsichtbar machen kann. {*DISABLES_ACHIEVEMENTS*}{*B*}{*B*}
+
+{*T1*}Optionen für das Erstellen der Welt{*ETW*}{*B*}
+Beim Erstellen einer neuen Welt gibt es einige zusätzliche Optionen.{*B*}{*B*}
+
+ {*T2*}Strukturen erzeugen{*ETW*}{*B*}
+ Aktiviert, dass Strukturen wie Dörfer und Festungen in der Welt erstellt werden.{*B*}{*B*}
+
+ {*T2*}Superflache Welt{*ETW*}{*B*}
+ Aktiviert, dass eine völlig flache Welt in der Oberwelt und im Nether erschaffen wird.{*B*}{*B*}
+
+ {*T2*}Bonustruhe{*ETW*}{*B*}
+ Aktiviert, dass eine Truhe mit nützlichen Gegenständen in der Nähe des Startpunkts des Spielers erstellt wird.{*B*}{*B*}
+
+ {*T2*}Nether zurücksetzen{*ETW*}{*B*}
+ Bei Aktivierung wird der Nether neu erstellt. Das ist nützlich, wenn du einen älteren Spielstand ohne Netherfestungen hast.{*B*}{*B*}
+
+ {*T1*}Optionen im Spiel{*ETW*}{*B*}
+ Während des Spielens hast du Zugriff auf eine Reihe von Optionen, indem du mit der BACK-Taste das Spielmenü aufrufst.{*B*}{*B*}
+
+ {*T2*}Hostoptionen{*ETW*}{*B*}
+ Der Host-Spieler und alle anderen als Moderatoren eingesetzten Spieler haben Zugriff auf das Menü "Hostoptionen". In diesem Menü können "Feuer breitet sich aus" und "TNT explodiert" aktiviert und deaktiviert werden.{*B*}{*B*}
+
+{*T1*}Spieleroptionen{*ETW*}{*B*}
+Um die Privilegien für einen Spieler zu bearbeiten, rufst du mit {*CONTROLLER_VK_A*} das Privilegien-Menü eines Spielers auf, wo du die folgenden Optionen benutzen kannst.{*B*}{*B*}
+
+ {*T2*}Kann bauen und abbauen{*ETW*}{*B*}
+ Diese Option ist nur verfügbar, wenn "Spielern vertrauen" ausgeschaltet ist. Ist diese Option aktiviert, kann der Spieler wie gewöhnlich mit der Welt interagieren. Ist diese Option deaktiviert, kann der Spieler keine Blöcke platzieren und vernichten und auch nicht mit vielen Gegenständen und Blöcken interagieren.{*B*}{*B*}
+
+ {*T2*}Kann Türen und Schalter verwenden{*ETW*}{*B*}
+ Diese Option ist nur verfügbar, wenn "Spielern vertrauen" ausgeschaltet ist. Ist diese Option deaktiviert, kann der Spieler keine Türen und Schalter verwenden.{*B*}{*B*}
+
+ {*T2*}Kann Container öffnen{*ETW*}{*B*}
+ Diese Option ist nur verfügbar, wenn "Spielern vertrauen" ausgeschaltet ist. Ist diese Option deaktiviert, kann der Spieler keine Container wie etwa Truhen öffnen.{*B*}{*B*}
+
+ {*T2*}Kann Spieler angreifen{*ETW*}{*B*}
+ Diese Option ist nur verfügbar, wenn "Spielern vertrauen" ausgeschaltet ist. Ist diese Option deaktiviert, kann der Spieler anderen Spielern keinen Schaden zufügen.{*B*}{*B*}
+
+ {*T2*}Kann Tiere angreifen{*ETW*}{*B*}
+ Diese Option ist nur verfügbar, wenn "Spielern vertrauen" ausgeschaltet ist. Ist diese Option deaktiviert, kann der Spieler Tieren keinen Schaden zufügen.{*B*}{*B*}
+
+ {*T2*}Moderator{*ETW*}{*B*}
+ Ist diese Option aktiviert, kann der Spieler Privilegien für andere Spieler (den Host ausgenommen) ändern, wenn "Spielern vertrauen" ausgeschaltet ist. Der Spieler kann andere Spieler ausschließen und "Feuer breitet sich aus" sowie "TNT explodiert" an- und ausschalten.{*B*}{*B*}
+
+ {*T2*}Spieler ausschließen{*ETW*}{*B*}
+ Ist diese Option ausgewählt, werden Spieler, die nicht auf der gleichen {*PLATFORM_NAME*} Konsole wie der Host-Spieler spielen, ebenso wie alle anderen Spieler auf seiner {*PLATFORM_NAME*} Konsole vom Spiel ausgeschlossen. Dieser Spieler kann dem Spiel erst wieder beitreten, wenn es neu gestartet wird.{*B*}{*B*}
+
+{*T1*}Optionen für Host-Spieler{*ETW*}{*B*}
+Wenn "Hostprivilegien" aktiviert ist, kann der Host-Spieler einige seiner eigenen Privilegien bearbeiten. Zur Bearbeitung der Privilegien für einen Spieler rufst du mit {*CONTROLLER_VK_A*} das Privilegien-Menü für Spieler auf, wo du die folgenden Optionen nutzen kannst.{*B*}{*B*}
+
+ {*T2*}Kann fliegen{*ETW*}{*B*}
+ Ist diese Option aktiviert, kann der Spieler fliegen. Diese Option ist nur für den Überlebensmodus relevant, da das Fliegen im Kreativmodus für alle Spieler aktiviert ist.{*B*}{*B*}
+
+ {*T2*}Erschöpfung deaktivieren{*ETW*}{*B*}
+ Diese Option betrifft nur den Überlebensmodus. Aktiviert, dass körperliche Aktivitäten (Laufen/Sprinten/Springen etc.) sich nicht auf die Hungerleiste auswirken. Verletzt der Spieler sich allerdings, verringert sich die Hungerleiste langsam während des Heilungsvorgangs.{*B*}{*B*}
+
+ {*T2*}Unsichtbar{*ETW*}{*B*}
+ Ist diese Option aktiviert, kann der Spieler von anderen Spielern nicht gesehen werden und ist unverwundbar.{*B*}{*B*}
+
+ {*T2*}Kann teleportieren{*ETW*}{*B*}
+ Dies erlaubt dem Spieler, sich selbst oder andere Spieler zu anderen Spielern in der Welt zu bewegen.
+
+
+Nächste Seite
+
+Vorige Seite
+
+Grundlagen
+
+Display
+
+Inventar
+
+Truhen
+
+Dinge herstellen
+
+Ofen
+
+Dispenser
+
+Tierhaltung
+
+Tierzucht
+
+Brauen
+
+Verzaubern
+
+Nether-Portal
+
+Multiplayer
+
+Screenshots teilen
+
+Level sperren
+
+Kreativmodus
+
+Host- und Spieleroptionen
+
+Handel
+
+Amboss
+
+Das Ende
+
+{*T3*}SO WIRD GESPIELT: DAS ENDE{*ETW*}{*B*}{*B*}
+Das Ende ist eine andere Dimension im Spiel, die durch ein aktives Endportal erreicht wird. Das Endportal findest du in einer Festung tief unter der Oberwelt.{*B*}
+Um das Endportal zu aktivieren, musst du eine Enderperle in einen Endportalrahmen einsetzen, in dem keine ist.{*B*}
+Wenn das Portal aktiv ist, kannst du hindurch in Das Ende springen.{*B*}{*B*}
+Im Ende begegnest du dem Enderdrachen, einem bösen, mächtigen Feind, und vielen Endermen; bereite dich also gut auf den Kampf vor, bevor du dich aufmachst!{*B*}{*B*}
+Der Enderdrache heilt sich mithilfe von Enderkristallen, die auf acht Obsidianstacheln ruhen;
+du musst diese zuallererst einzeln zerstören.{*B*}
+Die ersten paar davon erreichst du mit Pfeilen, doch die späteren werden durch einen Eisengitterkäfig geschützt, und du musst dich zu ihnen hochbauen.{*B*}{*B*}
+Dabei greift dich der Enderdrache aus der Luft mit Endersäurekugeln an!{*B*}
+Nähere dich dem Eierpodest inmitten der Stacheln; der Enderdrache fliegt herab und greift dich an, und du kannst ihm nun einigen Schaden zufügen!{*B*}
+Nimm dich vor dem Säureatem in Acht und ziele auf die Augen des Enderdrachens, um wirkungsvolle Treffer zu landen. Bring, wenn du kannst, einen Freund mit in Das Ende, der dir im Kampf beisteht!{*B*}{*B*}
+Sobald du Das Ende besuchst, sehen deine Freunde die Lage des Endportals in den Festungen auf ihren Karten;
+sie können dir also leicht zu Hilfe kommen.
+
+
+Sprinten
+
+Neuigkeiten
+
+
+{*T3*}Veränderungen und Neuerungen{*ETW*}{*B*}{*B*}
+- Neue Gegenstände hinzugefügt: Smaragde, Smaragderz, Smaragdblock, Endertruhe, Stolperdrahthaken, verzauberter goldener Apfel, Amboss, Blumentopf, Pflastersteinmauer, bemooste Pflastersteinmauer, Dörrgemälde, Kartoffel, Ofenkartoffel, giftige Kartoffel, Karotte, goldene Karotte,
+Karottenangel, Kürbiskuchen, Nachtsichttrank, Unsichtbarkeitstrank, Netherquarz, Netherquarzerz, Quarzblock, Quarzstufe, Quarztreppe, gemeißelter Quarzblock, Säulen-Quarzblock, Zauberbuch, Teppich.{*B*}
+- Neue Rezepte für glatten und gemeißelten Sandstein hinzugefügt.{*B*}
+- Neue NPCs hinzugefügt: Zombie-Dorfbewohner.{*B*}
+- Neue Geländeerstellungsfunktionen hinzugefügt: Wüstentempel, Wüstendörfer, Dschungeltempel.{*B*}
+- Handel mit Dorfbewohnern hinzugefügt.{*B*}
+- Ambossmenü hinzugefügt.{*B*}
+- Lederrüstungen können nun eingefärbt werden.{*B*}
+- Wolfshalsbänder können nun eingefärbt werden.{*B*}
+- Beim Reiten auf Schweinen kann mit einer Karottenangel gesteuert werden.{*B*}
+- Aktualisierter Bonustruheninhalt mit mehr Gegenständen.{*B*}
+- Die Platzierung halber Blöcke sowie von Blöcken auf halben Blöcken wurde geändert.{*B*}
+- Die Platzierung von umgedrehten Treppen und Stufen wurde geändert.{*B*}
+- Verschiedene Berufe für Dorfbewohner hinzugefügt.{*B*}
+- Dorfbewohner, die aus einem Eintrittsei spawnen, haben zufällige Berufe.{*B*}
+- Baumstämme können seitwärts platziert werden.{*B*}
+- Öfen können mit hölzernen Werkzeugen befeuert werden.{*B*}
+- Eis- und Glasscheiben können mit Werkzeugen gesammelt werden, die mit Behutsamkeit verzaubert wurden.{*B*}
+- Hölzerne Knöpfe und Druckplatten können durch Pfeile betätigt werden.{*B*}
+- Nether-NPCs können oberirdisch aus Portalen spawnen.{*B*}
+- Creeper und Spinnen sind aggressiver gegenüber dem Spieler, der sie zuletzt geschlagen hat.{*B*}
+- Im Kreativmodus werden NPCs nach kurzer Zeit wieder neutral.{*B*}
+- Der Rückstoßeffekt beim Ertrinken wurde entfernt.{*B*}
+- Wenn Zombies Türen zerstören, ist der Schaden jetzt sichtbar.{*B*}
+- Eis schmilzt im Nether.{*B*}
+- Kessel, die draußen im Regen stehen, werden aufgefüllt.{*B*}
+- Die Aktualisierungszeit von Kolben wurde verdoppelt.{*B*}
+- Schweine verlieren gegebenenfalls ihren Sattel, wenn sie getötet werden.{*B*}
+- Die Farbe des Himmels im Ende wurde geändert.{*B*}
+- Draht für Stolperdraht kann platziert werden.{*B*}
+- Regen tropft durch Blätter.{*B*}
+- Hebel können an der Unterseite von Blöcken platziert werden.{*B*}
+- Je nach Schwierigkeit verursacht TNT mehr oder weniger Schaden.{*B*}
+- Das Bücherrezept wurde geändert.{*B*}
+- Boote zerstören jetzt Seerosenblätter, nicht mehr umgekehrt.{*B*}
+- Schweine lassen mehr Schweinefleisch fallen.{*B*}
+- In superflachen Welten spawnen weniger Slimes.{*B*}
+- Creeper verursachen je nach Schwierigkeit mehr oder weniger Schaden und der Rückstoß wurde erhöht.{*B*}
+- Das Problem, durch das Endermen ihre Kiefer nicht bewegen konnten, wurde behoben.{*B*}
+- Spieler können nun im BACK-Taste-Menü während des Spiels teleportieren.{*B*}
+- Neue Hostoptionen für Flug, Unsichtbarkeit und Unverwundbarkeit entfernter Spieler hinzugefügt.{*B*}
+- Neue Tutorials über neue Gegenstände und Funktionen zur Tutorial-Welt hinzugefügt.{*B*}
+- Die Schallplattentruhen in der Tutorial-Welt wurden neu verteilt.{*B*}
+
+
+{*ETB*}Willkommen zurück! Vielleicht hast du es gar nicht bemerkt, aber dein Minecraft wurde gerade aktualisiert.{*B*}{*B*}
+Es gibt jede Menge neue Funktionen für dich und deine Freunde. Hier stellen wir dir nur ein paar Highlights vor. Lies sie dir durch und dann ziehe los und hab Spaß!{*B*}{*B*}
+{*T1*}Neue Gegenstände{*ETB*}: Smaragde, Smaragderz, Smaragdblock, Endertruhe, Stolperdrahthaken, verzauberter goldener Apfel, Amboss, Blumentopf, Pflastersteinmauer, bemooste Pflastersteinmauer, Dörrgemälde, Kartoffel, Ofenkartoffel, giftige Kartoffel, Karotte, goldene Karotte,
+Karottenangel, Kürbiskuchen, Nachtsichttrank, Unsichtbarkeitstrank, Netherquarz, Netherquarzerz, Quarzblock, Quarzstufe, Quarztreppe, gemeißelter Quarzblock, Säulen-Quarzblock, Zauberbuch, Teppich.{*B*}{*B*}
+ {*T1*}Neue NPCs{*ETB*} – Zombie-Dorfbewohner.{*B*}{*B*}
+{*T1*}Neue Funktionen{*ETB*}: Handel mit Dorfbewohnern, Waffen und Werkzeuge auf Ambossen reparieren oder verzaubern, Gegenstände in einer Endertruhe lagern, Steuerung beim Reiten auf Schweinen mit einer Karottenangel!{*B*}{*B*}
+{*T1*}Neue Mini-Tutorials{*ETB*} – Lerne in der Tutorial-Welt, wie man die neuen Features benutzt!{*B*}{*B*}
+{*T1*}Neue 'Easter Eggs'{*ETB*} – Wir haben alle geheimen Schallplatten in der Tutorial-Welt neu platziert. Versuch, sie alle wiederzufinden!{*B*}{*B*}
+
+
+Fügt mehr Schaden zu als eine leere Hand.
+
+Hiermit kannst du Erde, Gras, Sand, Kies und Schnee schneller als mit der Hand abbauen. Du brauchst eine Schaufel, um Schneebälle abzubauen.
+
+Wird benötigt, um Stein- und Erzblöcke abzubauen.
+
+Wird verwendet, um Holzblöcke schneller als per Hand abzubauen.
+
+Wird verwendet, um Erd- und Grasblöcke umzugraben und sie damit fürs Bepflanzen vorzubereiten.
+
+Holztüren werden geöffnet, indem du sie verwendest, dagegen schlägst oder mittels Redstone.
+
+Eisentüren können nur mit Redstone, Knöpfen oder Schaltern geöffnet werden.
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+Verleiht dem Träger 1 Rüstungspunkt.
+
+Verleiht dem Spieler beim Tragen 3 Rüstungspunkte.
+
+Verleiht dem Träger 2 Rüstungspunkte.
+
+Verleihen dem Träger 1 Rüstungspunkt.
+
+Verleiht dem Träger 2 Rüstungspunkte.
+
+Verleiht dem Träger 5 Rüstungspunkte.
+
+Verleiht dem Spieler beim Tragen 4 Rüstungspunkte.
+
+Verleihen dem Träger 1 Rüstungspunkt.
+
+Verleiht dem Träger 2 Rüstungspunkte.
+
+Verleiht dem Träger 6 Rüstungspunkte.
+
+Verleiht dem Träger 5 Rüstungspunkte.
+
+Verleihen dem Träger 2 Rüstungspunkte.
+
+Verleiht dem Träger 2 Rüstungspunkte.
+
+Verleiht dem Träger 5 Rüstungspunkte.
+
+Verleiht dem Spieler beim Tragen 3 Rüstungspunkte.
+
+Verleiht dem Träger 1 Rüstungspunkt.
+
+Verleiht dem Spieler beim Tragen 3 Rüstungspunkte.
+
+Verleiht dem Träger 8 Rüstungspunkte.
+
+Verleiht dem Träger 6 Rüstungspunkte.
+
+Verleiht dem Spieler beim Tragen 3 Rüstungspunkte.
+
+Ein glänzender Barren, aus dem du Werkzeuge herstellen kannst, die aus diesem Material bestehen. Entsteht, wenn du im Ofen Erz schmilzt.
+
+Ermöglicht es, aus Barren, Diamanten oder Farben platzierbare Blöcke zu erzeugen. Kann als teurer Baublock oder kompakter Erzspeicher
+verwendet werden.
+
+Wird verwendet, um einen elektrischen Impuls zu erzeugen, wenn ein Spieler, ein Tier oder ein Monster darauftritt. Hölzerne Druckplatten können auch aktiviert werden, indem etwas darauf abgelegt wird.
+
+Wird zum Bau platzsparender Treppen verwendet.
+
+Wird zum Bau langer Treppen verwendet. Zwei Stufen, die aufeinandergelegt werden, werden zu einem normal großen Doppelstufen-Block verschmolzen.
+
+Wird zum Bau langer Treppen verwendet. Zwei aufeinander platzierte Stufen erzeugen einen normal großen Doppelstufen-Block.
+
+Wird verwendet, um Licht zu erzeugen. Fackeln schmelzen außerdem Schnee und Eis.
+
+Wird als Baumaterial und zur Herstellung vieler Dinge verwendet. Kann aus jeder Art von Holz hergestellt werden.
+
+Wird als Baumaterial verwendet. Zerfällt nicht wie normaler Sand durch die Schwerkraft.
+
+Wird als Baumaterial verwendet.
+
+Wird zur Herstellung von
+Fackeln, Pfeilen, Schildern,
+Leitern, Zäunen und als Griff
+für Werkzeuge und Waffen
+verwendet.
+
+Kann die Zeit von einem beliebigen Zeitpunkt in der Nacht bis zum Morgen vorstellen, wenn alle Spieler in der Welt im Bett liegen. Kann auch deinen Wiedereintrittspunkt ändern.
+Das Bett hat immer dieselbe Farbe, egal aus Wolle welcher Farbe es hergestellt wurde.
+
+Erlaubt dir, eine größere Auswahl von Gegenständen zu erschaffen als beim normalen Crafting.
+
+Erlaubt dir, Erz zu schmelzen, Holzkohle und Glas herzustellen sowie Fisch und Schweinefleisch zu kochen.
+
+Lässt dich in ihrem Inneren Blöcke und Gegenstände lagern. Platzier zwei Truhen nebeneinander, um eine größere Truhe mit der doppelten Kapazität zu erschaffen.
+
+Wird als Barriere verwendet, über die nicht hinübergesprungen werden kann. Hat für Spieler, Tiere und Monster eine Höhe von 1,5 Blöcken, für andere Blöcke aber die normale Höhe von 1 Block.
+
+Verwendet, um sich in vertikaler Richtung zu bewegen.
+
+Wird durch Verwenden, Dagegenschlagen oder mittels Redstone aktiviert. Funktioniert wie eine normale Tür, ist 1 x 1 Block groß und liegt flach auf dem Boden.
+
+Zeigt den Text an, den du oder andere Spieler eingegeben
+haben.
+
+Erzeugt helleres Licht als Fackeln. Schmilzt Schnee und Eis und kann unter Wasser verwendet werden.
+
+Erzeugt eine Explosion. Wird nach Platzieren mit dem Feuerzeug oder elektrisch gezündet.
+
+Wird verwendet, um Pilzsuppe aufzubewahren. Wenn die Suppe aufgegessen ist, behältst du die Schüssel.
+
+Wird zum Aufbewahren und zum Transport von Wasser, Lava und Milch verwendet.
+
+Wird zum Aufbewahren und zum Transport von Wasser verwendet.
+
+Wird zum Aufbewahren und zum Transport von Lava verwendet.
+
+Wird zum Aufbewahren und zum Transport von Milch verwendet.
+
+Kann Feuer erzeugen, TNT zünden und ein Portal nach dem Bau öffnen.
+
+Wird verwendet, um Fische zu fangen.
+
+Zeigt die Position der Sonne und des Mondes an.
+
+Zeigt auf deinen Startpunkt.
+
+Erzeugt ein Abbild einer Gegend, bei deren Erforschung du sie in der Hand hattest. Nützlich, um den Weg zu finden.
+
+Erlaubt Fernangriffe mit Pfeilen.
+
+Wird als Munition für Bögen verwendet.
+
+Regeneriert 2,5{*ICON_SHANK_01*}.
+
+Regeneriert 1,5{*ICON_SHANK_01*}. Kann 6-mal verwendet werden.
+
+Regeneriert 1{*ICON_SHANK_01*}.
+
+Regeneriert 1{*ICON_SHANK_01*}.
+
+Regeneriert 3{*ICON_SHANK_01*}.
+
+Regeneriert 1{*ICON_SHANK_01*}, kann dich aber krankmachen. Kann im Ofen gebraten werden.
+
+Regeneriert 3{*ICON_SHANK_01*}. Entsteht, wenn man rohes Hühnchen im Ofen brät.
+
+Regeneriert 1,5{*ICON_SHANK_01*}. Kann im Ofen gebraten werden.
+
+Regeneriert 4{*ICON_SHANK_01*}. Entsteht, wenn man rohes Rindfleisch im Ofen brät.
+
+Regeneriert 1,5{*ICON_SHANK_01*}. Kann im Ofen gebraten werden.
+
+Regeneriert 4{*ICON_SHANK_01*}. Entsteht, wenn man rohes Schweinefleisch im Ofen brät.
+
+Regeneriert 1{*ICON_SHANK_01*}. Kann im Ofen gebraten werden. Füttere einen Ozelot damit, um ihn zu zähmen.
+
+Regeneriert 2,5{*ICON_SHANK_01*}. Entsteht, wenn man rohen Fisch im Ofen brät.
+
+Regeneriert 2{*ICON_SHANK_01*} und kann zu einem goldenen Apfel verarbeitet werden.
+
+Regeneriert 2{*ICON_SHANK_01*} und regeneriert 4 Sekunden lang Gesundheit. Wird aus einem Apfel und Goldnuggets hergestellt.
+
+Regeneriert 2{*ICON_SHANK_01*}, kann dich aber krankmachen.
+
+Wird für das Kuchenrezept und als Zutat für Tränke benötigt.
+
+Erzeugt einen elektrischen Impuls, wenn er gedrückt wird. Bleibt ein- oder ausgeschaltet, bis er erneut gedrückt wird.
+
+Konstante Stromquelle. Kann als Empfänger/Sender verwendet werden, wenn sie mit der Seite eines Blocks verbunden ist.
+Kann auch genutzt werden, um ein wenig Licht zu erzeugen.
+
+Wird in Redstone-Schaltkreisen als Repeater, Verzögerer und/oder als Diode eingesetzt.
+
+Erzeugt ein elektrisches Signal, wenn er gedrückt wird. Bleibt für ungefähr eine Sekunde aktiv, bevor er sich wieder deaktiviert.
+
+Kann Gegenstände in zufälliger Reihenfolge verschießen, wenn er einen Impuls von einem Redstone-Stromkreis erhält.
+
+Spielt beim Auslösen eine Note ab. Schlag auf den Block, um die Tonhöhe zu ändern. Wenn du diesen Block auf verschiedenen Untergründen platzierst, ändert sich das verwendete Instrument.
+
+Wird verwendet, um Loren eine Richtung vorzugeben.
+
+Beschleunigt darüberfahrende Loren, wenn sie unter Strom steht. Wenn kein Strom anliegt, bewirkt sie, dass Loren auf ihr anhalten.
+
+Funktioniert wie eine Druckplatte – sendet ein Redstone-Signal, wenn sie aktiviert wird, kann aber nur durch Loren aktiviert werden.
+
+Kann dich, ein Tier oder ein Monster auf Schienen transportieren.
+
+Wird verwendet, um Waren auf Schienen zu transportieren.
+
+Bewegt sich auf Schienen und kann andere Loren schieben, wenn du Kohle hineinlegst.
+
+Wird verwendet, um schneller als schwimmend übers Wasser zu reisen.
+
+Wird von Schafen eingesammelt und kann mit Farben gefärbt werden.
+
+Wird als Baumaterial verwendet und kann mit Farben gefärbt werden. Dieses Rezept ist nicht empfehlenswert, da man Wolle leicht von Schafen erhalten
+kann.
+
+Wird als Farbe verwendet, um Wolle schwarz zu färben.
+
+Wird als Farbe verwendet, um Wolle grün zu färben.
+
+Werden als Farbe verwendet, um Wolle braun zu färben, als Zutat für Kekse und um Kakaoschoten wachsen zu lassen.
+
+Wird als Farbe verwendet, um Wolle silbern zu färben.
+
+Wird als Farbe verwendet, um Wolle gelb zu färben.
+
+Wird als Farbe verwendet, um Wolle rot zu färben.
+
+Wird verwendet, um Getreide, Bäume, hohes Gras, riesige Pilze und Blumen fast augenblicklich wachsen zu lassen. Kann außerdem als Zutat in Farbrezepten verwendet werden.
+
+Wird als Farbe verwendet, um Wolle rosa zu färben.
+
+Wird als Farbe verwendet, um Wolle orange zu färben.
+
+Wird als Farbe verwendet, um Wolle hellgrün zu färben.
+
+Wird als Farbe verwendet, um Wolle grau zu färben.
+
+Wird als Farbe verwendet, um Wolle hellgrau zu färben.
+(Hinweis: Hellgraue Farbe kann auch aus grauer Farbe und Knochenmehl erzeugt werden. So erhältst du aus jedem
+Tintensack 4 hellgraue Farbe
+statt nur 3.)
+
+Wird als Farbe verwendet, um Wolle hellblau zu färben.
+
+Wird als Farbe verwendet, um Wolle cyanfarben zu färben.
+
+Wird als Farbe verwendet, um Wolle lila zu färben.
+
+Wird als Farbe verwendet, um Wolle magentafarben zu färben.
+
+Wird als Farbe verwendet, um Wolle blau zu färben.
+
+Spielt Schallplatten ab.
+
+Hieraus kannst du sehr beständige Werkzeuge, Waffen und Rüstungen herstellen.
+
+Erzeugt helleres Licht als Fackeln. Schmilzt Schnee und Eis und kann unter Wasser verwendet werden.
+
+Wird zur Herstellung von Büchern und Karten verwendet.
+
+Wird zur Herstellung eines Bücherregals verwendet oder verzaubert, um Zauberbücher herzustellen.
+
+Ermöglicht die Herstellung mächtigerer Verzauberungen bei Anordnung um den Zaubertisch.
+
+Wird als Dekoration eingesetzt.
+
+Muss mit mindestens einer Eisenspitzhacke abgebaut und dann in einem Ofen geschmolzen werden, um Goldbarren zu erzeugen.
+
+Muss mit mindestens einer Steinspitzhacke abgebaut und dann in einem Ofen geschmolzen werden, um Eisenbarren zu erzeugen.
+
+Kann mit einer Spitzhacke abgebaut werden, um Kohle zu erhalten.
+
+Muss mit mindestens einer Steinspitzhacke abgebaut werden, um Lapislazuli zu erhalten.
+
+Muss mit mindestens einer Eisenspitzhacke abgebaut werden, um Diamanten zu erhalten.
+
+Muss mit mindestens einer Eisenspitzhacke abgebaut werden, um Redstone-Staub zu erhalten.
+
+Kann mit einer Spitzhacke abgebaut werden, um Pflasterstein zu erhalten.
+
+Wird mithilfe einer Schaufel abgebaut. Kann für Bauarbeiten verwendet werden.
+
+Kann gepflanzt werden und wächst mit der Zeit zu einem Baum heran.
+
+Ist unzerstörbar.
+
+Setzt alles in Brand, was es berührt. Kann in einem Eimer eingesammelt werden.
+
+Wird mithilfe einer Schaufel abgebaut. Kann im Ofen zu Glas geschmolzen werden. Wird unter dem Einfluss der Schwerkraft nach unten fallen, wenn sich kein anderer Block darunter befindet.
+
+Wird mithilfe einer Schaufel abgebaut, wodurch man gelegentlich Feuerstein erhält. Fällt unter dem Einfluss der Schwerkraft nach unten, wenn es darunter keinen anderen Block gibt.
+
+Kann mit einer Axt abgebaut und zur Herstellung von Holz oder als Brennstoff verwendet werden.
+
+Wird im Ofen durch Schmelzen von Sand hergestellt. Kann zum Bauen verwendet werden, bricht aber weg, wenn du versuchst, ihn abzubauen.
+
+Kann aus Stein mit einer Spitzhacke abgebaut werden. Kann zum Bau von Öfen oder Steinwerkzeugen verwendet werden.
+
+Wird in einem Ofen aus Lehm gebacken.
+
+Kann in einem Ofen zu Ziegeln gebacken werden.
+
+Wenn er zerstört wird, entstehen Lehmbälle, die in einem Ofen zu Lehmziegeln gebacken werden können.
+
+Eine platzsparende Art, Schneebälle zu lagern.
+
+Kann mit einer Schaufel abgebaut werden, um Schneebälle zu erzeugen.
+
+Erzeugt beim Abbauen gelegentlich Weizensamen.
+
+Kann zu Farbe verarbeitet werden.
+
+Kann mithilfe einer Schüssel zu Suppe verarbeitet werden.
+
+Kann nur mit einer Diamantspitzhacke abgebaut werden. Entsteht, wenn fließendes Wasser und ruhende Lava aufeinandertreffen. Wird zum Bauen von Portalen verwendet.
+
+Erschafft Monster und setzt sie in die Welt.
+
+Wird auf den Boden gelegt, um eine elektrische Ladung zu erzeugen. Verlängert die Dauer eines Trankeffekts bei Verwendung als Zutat.
+
+Im reifen Zustand kann Getreide geerntet werden, wodurch man Weizen erhält.
+
+Boden, der vorbereitet wurde, um bepflanzt zu werden.
+
+Kann im Ofen gekocht werden, um grüne Farbe herzustellen.
+
+Kann zu Zucker verarbeitet werden.
+
+Kann als Helm getragen oder mit einer Fackel zu einer Kürbislaterne verarbeitet werden. Ist außerdem die Hauptzutat von Kürbiskuchen.
+
+Brennt unendlich lange, wenn er angezündet wird.
+
+Verlangsamt die Bewegung von allem, was darüber läuft.
+
+Mit einem Portal kannst du dich zwischen der oberirdischen Welt und dem Nether hin und her bewegen.
+
+Kann im Ofen als Brennstoff verwendet oder zu einer Fackel verarbeitet werden.
+
+Erhält man durch Töten einer Spinne. Kann zu einem Bogen oder einer Angel verarbeitet oder auf den Boden gelegt werden, um Stolperdraht zu erschaffen.
+
+Erhält man durch Töten eines Huhns. Kann zu einem Pfeil verarbeitet werden.
+
+Erhält man durch Töten eines Creepers. Kann zu TNT verarbeitet oder als Zutat für Tränke verwendet werden.
+
+Kann auf Ackerboden gepflanzt werden, um Getreide wachsen zu lassen. Achte darauf, dass es genügend Licht gibt, damit die Pflanzen wachsen können!
+
+Erhält man durch Ernten von Getreide. Kann zu Nahrung verarbeitet werden.
+
+Erhält man beim Abbauen von Kies. Kann zu einem Feuerzeug verarbeitet werden.
+
+Kann mit einem Schwein verwendet werden, wodurch es möglich ist, auf ihm zu reiten. Gesteuert wird dabei mit einer Karottenangel.
+
+Entsteht beim Abbauen von Schnee. Kann geworfen werden.
+
+Erhält man durch Töten einer Kuh. Kann zu Rüstungen oder Büchern verarbeitet werden.
+
+Erhält man durch Töten eines Slimes. Wird als Zutat für Tränke oder haftende Kolben verwendet.
+
+Wird zufällig von Hühnern fallen gelassen. Kann zu Nahrung verarbeitet werden.
+
+Erhält man durch Abbauen von Glowstone. Kann verarbeitet werden, um wieder Glowstone-Blöcke zu bilden oder zum Brauen eines Tranks verwendet werden, um dessen Effekt zu verstärken.
+
+Erhält man durch Töten eines Skeletts. Kann zu Knochenmehl verarbeitet werden. Kann an einen Wolf verfüttert werden, um ihn zu zähmen.
+
+Entsteht, wenn ein Creeper von einem Skelett getötet wird. Kann in einer Jukebox abgespielt werden.
+
+Löscht Feuer und lässt Getreide wachsen. Kann in einem Eimer eingesammelt werden.
+
+Wenn sie abgebaut werden, erscheint manchmal ein Setzling, den man wieder einpflanzen kann, woraus ein neuer Baum wächst.
+
+Kann in Dungeons gefunden und für Bauarbeiten und als Dekoration verwendet werden.
+
+Wird verwendet, um Wolle von Schafen zu erhalten und Blätterblöcke zu ernten.
+
+Wenn Strom an einen Kolben angelegt wird (mit einem Schalter, einem Hebel, einer Druckplatte, einer Redstone-Fackel oder Redstone mit einem der vorgenannten Dinge), wird der Kolben länger, falls möglich, und verschiebt Blöcke.
+
+Wenn Strom an einen Kolben angelegt wird (mit einem Schalter, einem Hebel, einer Druckplatte, einer Redstone-Fackel oder Redstone mit einem der vorgenannten Dinge), wird der Kolben länger, falls möglich, und verschiebt Blöcke. Wenn der Kolben zurückgezogen wird, zieht er den Block mit zurück, der den Kolben berührt.
+
+Hergestellt aus Steinblöcken, findet man oft in Festungen.
+
+Wird als Absperrung verwendet, ähnlich wie Zäune.
+
+Wie eine Tür, findet aber hauptsächlich in Zäunen Verwendung.
+
+Kann aus Melonenscheiben hergestellt werden.
+
+Transparente Blöcke, können als Alternative zu Glasblöcken verwendet werden.
+
+Kann gepflanzt werden, um Kürbisse wachsen zu lassen.
+
+Kann gepflanzt werden, um Melonen wachsen zu lassen.
+
+Wird von einem sterbenden Enderman fallen gelassen. Wenn du die Enderperle wirfst, wirst du an die Stelle teleportiert, wo sie landet, und verlierst etwas Gesundheit.
+
+Ein Block Erde, auf dem Gras wächst. Wird mithilfe einer Schaufel abgebaut. Kann für Bauarbeiten verwendet werden.
+
+Kann für Bauarbeiten und als Dekoration verwendet werden.
+
+Verlangsamt beim Darüberlaufen die Bewegung. Kann mit einer Schere zerstört werden, um Faden zu erhalten.
+
+Lässt bei Zerstörung einen Silberfisch entstehen. Kann auch Silberfische entstehen lassen, wenn in der Nähe Silberfische angegriffen werden.
+
+Wächst nach Platzierung mit der Zeit. Kann mit einer Schere eingesammelt werden. Du kannst daran wie an einer Leiter klettern.
+
+Ist beim Darüberlaufen rutschig. Wird bei Zerstörung zu Wasser, wenn darunter ein anderer Block ist. Schmilzt in der Nähe einer Lichtquelle oder bei Platzierung im Nether.
+
+Kann als Dekoration verwendet werden.
+
+Kann zum Brauen verwendet werden und zum Finden von Festungen. Wird von Lohen hinterlassen, die sich meist in oder nahe von Netherfestungen aufhalten.
+
+Kann zum Brauen verwendet werden. Wird von sterbenden Ghasts fallen gelassen.
+
+Wird von sterbenden Zombie Pigmen fallen gelassen. Zombie Pigmen findest du im Nether. Wird als Zutat für Tränke verwendet.
+
+Kann zum Brauen verwendet werden. Wächst auf natürliche Weise in Netherfestungen. Kann auch auf Seelensand gepflanzt werden.
+
+Kann verschiedene Effekte haben, abhängig davon, worauf er angewendet wird.
+
+Kann mit Wasser gefüllt werden und wird als Startzutat zum Brauen von Tränken am Braustand verwendet.
+
+Giftige Nahrung und Brauzutat. Wird von Spinnen und Höhlenspinnen fallen gelassen, wenn sie von einem Spieler getötet werden.
+
+Kann zum Brauen verwendet werden, hauptsächlich, um Tränke mit einem negativen Effekt herzustellen.
+
+Kann zum Brauen verwendet werden oder um mit anderen Gegenständen Enderaugen oder Magmacreme herzustellen.
+
+Kann zum Brauen verwendet werden.
+
+Wird verwendet, um Tränke und Wurftränke herzustellen.
+
+Kann mithilfe von Regen oder eines Eimers mit Wasser gefüllt werden, und kann dann verwendet werden, um Glasflaschen mit Wasser zu füllen.
+
+Wenn man es wirft, zeigt es die Richtung zu einem Endportal an. Wenn zwölf davon in die Endportalblöcke gelegt werden, wird das Endportal aktiviert.
+
+Kann zum Brauen verwendet werden.
+
+Ähnlich wie Grasblöcke, eignet sich aber gut, um Pilze darauf wachsen zu lassen.
+
+Schwimmt auf dem Wasser, und man kann darüber laufen.
+
+Wird verwendet, um Netherfestungen zu bauen. Immun gegenüber den Feuerbällen von Ghasts.
+
+Wird in Netherfestungen verwendet.
+
+Findet man in Netherfestungen. Wenn man ihn zerbricht, erhält man Netherwarzen.
+
+Erlaubt es Spielern, Schwerter, Spitzhacken, Schaufeln, Äxte und Bögen sowie Rüstungen mithilfe der Erfahrungspunkte des Spielers zu verzaubern.
+
+Kann mit zwölf Enderaugen aktiviert werden, und erlaubt es dem Spieler, in die Enddimension zu reisen.
+
+Wird verwendet, um ein Endportal zu bilden.
+
+Ein Block, den man im Ende findet. Ist sehr widerstandsfähig gegenüber Explosionen und daher ein nützliches Baumaterial.
+
+Dieser Block entsteht, wenn der Spieler im Ende den Drachen besiegt.
+
+Wenn man sie wirft, erscheint eine Erfahrungskugel, die deine Erfahrungspunkte steigert, wenn du sie einsammelst.
+
+Nützlich, um Dinge in Brand zu stecken oder beim Abschuss durch einen Dispenser, um willkürlich Feuer zu erzeugen.
+
+Ähnelt einem Schaukasten und zeigt den Gegenstand oder Block, der darin platziert wurde.
+
+Wirft man damit, kann eine Kreatur des angegebenen Typs erscheinen.
+
+Wird zum Bau langer Treppen verwendet. Zwei Stufen, die aufeinandergelegt werden, werden zu einem normal großen Doppelstufen-Block verschmolzen.
+
+Wird zum Bau langer Treppen verwendet. Zwei Stufen, die aufeinandergelegt werden, werden zu einem normal großen Doppelstufen-Block verschmolzen.
+
+Entsteht, wenn du im Ofen Netherstein schmilzt. Kann zu Netherziegelblöcken verarbeitet werden.
+
+Sie leuchten, wenn sie unter Strom stehen.
+
+Kann angebaut werden, um Kakaobohnen zu erhalten.
+
+NPC-Köpfe können als Dekoration platziert werden oder als Maske anstatt eines Helms getragen werden.
+
+Tintenfisch
+
+Wenn er getötet wird, lässt er einen Tintensack fallen.
+
+Kuh
+
+Wenn sie getötet wird, lässt sie Leder fallen. Kann außerdem mit einem Eimer gemolken werden.
+
+Schaf
+
+Wenn es geschoren wird, lässt es Wolle fallen, wenn es nicht schon geschoren war. Kann gefärbt werden, wodurch seine Wolle eine andere Farbe erhält.
+
+Huhn
+
+Wenn es getötet wird, lässt es Federn fallen. Legt in zufälligen Abständen Eier.
+
+Schwein
+
+Wenn es getötet wird, lässt es Schweinefleisch fallen. Kann mithilfe eines Sattels geritten werden.
+
+Wolf
+
+Friedlich, bis er angegriffen wird, dann wehrt er sich. Kann mithilfe von Knochen gezähmt werden. Der Wolf wird dir dann folgen und alles angreifen, was dich angreift.
+
+Creeper
+
+Explodiert, wenn du ihm zu nahe kommst!
+
+Skelett
+
+Schießt mit Pfeilen auf dich. Wenn es getötet wird, lässt es Pfeile fallen.
+
+Spinne
+
+Greift dich an, wenn du ihr zu nahe kommst. Kann Wände hochklettern. Wenn sie getötet wird, lässt sie Faden fallen.
+
+Zombie
+
+Greift dich an, wenn du ihm zu nahe kommst.
+
+Zombie-Schweinezüchter
+
+Eigentlich friedlich, greift dich aber in Gruppen an, wenn du einen angreifst.
+
+Ghast
+
+Schießt Feuerbälle auf dich, die beim Auftreffen explodieren.
+
+Slime
+
+Zerfällt in kleinere Slimes, wenn er Schaden erhält.
+
+Enderman
+
+Greift dich an, wenn du ihn ansiehst. Kann außerdem Blöcke bewegen.
+
+Silberfisch
+
+Lockt in der Nähe versteckte Silberfische an, wenn er angegriffen wird. Versteckt sich in Steinblöcken.
+
+Höhlenspinne
+
+Hat einen giftigen Biss.
+
+Pilzkuh
+
+Kann mithilfe einer Schüssel zu Pilzsuppe verarbeitet werden. Lässt Pilze fallen und wird zu einer normalen Kuh, wenn man sie schert.
+
+Schneegolem
+
+Der Schneegolem entsteht, wenn Spieler Schneeblöcke und einen Kürbis kombinieren. Bewirft die Feinde seines Erbauers mit Schneebällen.
+
+Enderdrache
+
+Ein großer schwarzer Drache, den man im Ende findet.
+
+Lohe
+
+Gegner, die man im Nether findet, vorwiegend in Netherfestungen. Lassen Lohenruten fallen, wenn sie getötet werden.
+
+Magmawürfel
+
+Findet man im Nether. Ähnlich wie Schleim zerfallen sie zu kleineren Versionen, wenn man sie tötet.
+
+Dorfbewohner
+
+Ozelot
+
+Findet man in Dschungeln. Füttere sie mit rohem Fisch, um sie zu zähmen. Du musst aber zulassen, dass der Ozelot sich dir nähert, denn bei schnellen Bewegungen läuft er weg.
+
+Eisengolem
+
+Erscheinen in Dörfern, um sie zu beschützen, und können mittels Eisenblöcken und Kürbissen erstellt werden.
+
+Explosives Animator
+
+Concept Artist
+
+Number Crunching and Statistics
+
+Bully Coordinator
+
+Original Design and Code by
+
+Project Manager/Producer
+
+Rest of Mojang Office
+
+Lead Game Programmer Minecraft PC
+
+Ninja Coder
+
+CEO
+
+White Collar Worker
+
+Customer Support
+
+Office DJ
+
+Designer/Programmer Minecraft - Pocket Edition
+
+Developer
+
+Chief Architect
+
+Art Developer
+
+Game Crafter
+
+Director of Fun
+
+Music and Sounds
+
+Programming
+
+Art
+
+QA
+
+Executive Producer
+
+Lead Producer
+
+Producer
+
+Test Lead
+
+Lead Tester
+
+Design Team
+
+Development Team
+
+Release Management
+
+Director, XBLA Publishing
+
+Business Development
+
+Portfolio Director
+
+Product Manager
+
+Marketing
+
+ Community Manager
+
+Europe Localization Team
+
+Redmond Localization Team
+
+Asia Localization Team
+
+User Research Team
+
+MGS Central Teams
+
+Milestone Acceptance Tester
+
+Special Thanks
+
+Test Manager
+
+Senior Test Lead
+
+SDET
+
+Project STE
+
+Additional STE
+
+Test Associates
+
+Jon Kågström
+
+Tobias Möllstam
+
+Risë Lugo
+
+Holzschwert
+
+Steinschwert
+
+Eisenschwert
+
+Diamantschwert
+
+Goldschwert
+
+Holzschaufel
+
+Steinschaufel
+
+Eisenschaufel
+
+Diamantschaufel
+
+Goldschaufel
+
+Holzspitzhacke
+
+Steinspitzhacke
+
+Eisenspitzhacke
+
+Diamantspitzhacke
+
+Goldspitzhacke
+
+Holzaxt
+
+Steinaxt
+
+Eisenaxt
+
+Diamantaxt
+
+Goldaxt
+
+Holzhacke
+
+Steinhacke
+
+Eisenhacke
+
+Diamanthacke
+
+Goldhacke
+
+Holztür
+
+Eisentür
+
+Kettenhelm
+
+Kettenbrustplatte
+
+Kettenhose
+
+Kettenstiefel
+
+Lederkappe
+
+Eisenhelm
+
+Diamanthelm
+
+Goldhelm
+
+Ledertunika
+
+Eisenbrustplatte
+
+Diamantbrustplatte
+
+Goldbrustplatte
+
+Lederhose
+
+Eisenhose
+
+Diamanthose
+
+Goldhose
+
+Lederstiefel
+
+Eisenstiefel
+
+Diamantstiefel
+
+Goldstiefel
+
+Eisenbarren
+
+Goldbarren
+
+Eimer
+
+Wassereimer
+
+Lavaeimer
+
+Feuerzeug
+
+Apfel
+
+Bogen
+
+Pfeil
+
+Kohle
+
+Holzkohle
+
+Diamant
+
+Stock
+
+Schüssel
+
+Pilzsuppe
+
+Faden
+
+Feder
+
+Schießpulver
+
+Weizensamen
+
+Weizen
+
+Brot
+
+Feuerstein
+
+Rohes Schweinefleisch
+
+Gekochtes Schweinefleisch
+
+Gemälde
+
+Goldener Apfel
+
+Schild
+
+Lore
+
+Sattel
+
+Redstone
+
+Schneeball
+
+Boot
+
+Leder
+
+Milcheimer
+
+Ziegel
+
+Lehm
+
+Zuckerrohr
+
+Papier
+
+Buch
+
+Schleimball
+
+Lore mit Truhe
+
+Lore mit Ofen
+
+Ei
+
+Kompass
+
+Angel
+
+Uhr
+
+Glowstone-Staub
+
+Roher Fisch
+
+Gekochter Fisch
+
+Farbpulver
+
+Tintensack
+
+Rosenrot
+
+Kaktusgrün
+
+Kakaobohnen
+
+Lapislazuli
+
+Lila Farbe
+
+Farbe Cyan
+
+Hellgraue Farbe
+
+Graue Farbe
+
+Rosa Farbe
+
+Hellgrüne Farbe
+
+Löwenzahngelb
+
+Hellblaue Farbe
+
+Farbe Magenta
+
+Farbe Orange
+
+Knochenmehl
+
+Knochen
+
+Zucker
+
+Kuchen
+
+Bett
+
+Redstone-Repeater
+
+Keks
+
+Karte
+
+Schallplatte - "13"
+
+Schallplatte - "cat"
+
+Schallplatte - "blocks"
+
+Schallplatte - "chirp"
+
+Schallplatte - "far"
+
+Schallplatte - "mall"
+
+Schallplatte - "mellohi"
+
+Schallplatte - "stal"
+
+Schallplatte - "strad"
+
+Schallplatte - "ward"
+
+Schallplatte - "11"
+
+Schallplatte - "where are we now"
+
+Schere
+
+Kürbissamen
+
+Melonensamen
+
+Rohes Hühnchen
+
+Gebratenes Hühnchen
+
+Rohes Rindfleisch
+
+Steak
+
+Verrottetes Fleisch
+
+Enderperle
+
+Melonenscheibe
+
+Lohenrute
+
+Ghastträne
+
+Goldklumpen
+
+Netherwarze
+
+{*prefix*} {*splash*}Trank {*postfix*}
+
+Glasflasche
+
+Wasserflasche
+
+Spinnenauge
+
+Fermentiertes Spinnenauge
+
+Lohenstaub
+
+Magmacreme
+
+Braustand
+
+Kessel
+
+Enderauge
+
+Funkelnde Melone
+
+Erfahrungsfläschchen
+
+Feuerkugel
+
+Feuerkugel (Holzkohle)
+
+Feuerkugel (Kohle)
+
+Gegenstandsrahmen
+
+{*CREATURE*} erzeugen
+
+Netherziegel
+
+Schädel
+
+Skelettschädel
+
+Dörrskelettschädel
+
+Zombiekopf
+
+Kopf
+
+Kopf von %s
+
+Creeper-Kopf
+
+Stein
+
+Grasblock
+
+Erde
+
+Pflasterstein
+
+Eichenholzbretter
+
+Fichtenholzbretter
+
+Birkenholzbretter
+
+Dschungelholzbretter
+
+Setzling
+
+Eichensetzling
+
+Fichtensetzling
+
+Birkensetzling
+
+Dschungelbaumsetzling
+
+Bedrock
+
+Wasser
+
+Lava
+
+Sand
+
+Sandstein
+
+Kies
+
+Golderz
+
+Eisenerz
+
+Kohlenerz
+
+Baumstamm
+
+Eichenholz
+
+Fichtenholz
+
+Birkenholz
+
+Dschungelholz
+
+Eiche
+
+Fichte
+
+Birke
+
+Blätter
+
+Eichenblätter
+
+Fichtenblätter
+
+Birkenblätter
+
+Dschungelblätter
+
+Schwamm
+
+Glas
+
+Wolle
+
+Schwarze Wolle
+
+Rote Wolle
+
+Grüne Wolle
+
+Braune Wolle
+
+Blaue Wolle
+
+Lila Wolle
+
+Cyanfarbene Wolle
+
+Hellgraue Wolle
+
+Graue Wolle
+
+Rosa Wolle
+
+Hellgrüne Wolle
+
+Gelbe Wolle
+
+Hellblaue Wolle
+
+Magentafarbene Wolle
+
+Orangefarbene Wolle
+
+Weiße Wolle
+
+Blume
+
+Rose
+
+Pilz
+
+Goldblock
+
+Eine kompakte Lagermöglichkeit für Gold.
+
+Eine kompakte Lagermöglichkeit für Eisen.
+
+Eisenblock
+
+Steinstufe
+
+Steinstufe
+
+Sandsteinstufe
+
+Eichenholzstufe
+
+Pflastersteinstufe
+
+Ziegelstufe
+
+Steinziegelstufe
+
+Eichenholzstufe
+
+Fichtenholzstufe
+
+Birkenholzstufe
+
+Dschungelholzstufe
+
+Netherziegelstufe
+
+Ziegel
+
+TNT
+
+Bücherregal
+
+Bemooster Pflasterstein
+
+Obsidian
+
+Fackel
+
+Fackel (Kohle)
+
+Fackel (Holzkohle)
+
+Feuer
+
+Monster-Spawner
+
+Eichenholztreppe
+
+Truhe
+
+Redstone-Staub
+
+Diamanterz
+
+Diamantblock
+
+Eine kompakte Lagermöglichkeit für Diamanten.
+
+Werkbank
+
+Getreide
+
+Ackerland
+
+Ofen
+
+Schild
+
+Holztür
+
+Leiter
+
+Schiene
+
+Booster-Schiene
+
+Detektor-Schiene
+
+Steintreppe
+
+Hebel
+
+Druckplatte
+
+Eisentür
+
+Redstone-Erz
+
+Redstone-Fackel
+
+Schalter
+
+Schnee
+
+Eis
+
+Kaktus
+
+Lehm
+
+Zuckerrohr
+
+Jukebox
+
+Zaun
+
+Kürbis
+
+Kürbislaterne
+
+Netherrack
+
+Soul Sand
+
+Glowstone
+
+Portal
+
+Lapislazulierz
+
+Lapislazuliblock
+
+Eine kompakte Lagermöglichkeit für Lapislazuli.
+
+Dispenser
+
+Notenblock
+
+Kuchen
+
+Bett
+
+Netz
+
+Hohes Gras
+
+Toter Strauch
+
+Diode
+
+Verschlossene Truhe
+
+Falltür
+
+Wolle (beliebige Farbe)
+
+Kolben
+
+Haftender Kolben
+
+Silberfischblock
+
+Steinziegel
+
+Bemooste Steinziegel
+
+Rissige Steinziegel
+
+Gemeißelter Steinziegel
+
+Pilz
+
+Pilz
+
+Eisengitter
+
+Glasscheibe
+
+Melone
+
+Kürbispflanze
+
+Melonenpflanze
+
+Ranken
+
+Zauntor
+
+Ziegeltreppe
+
+Steinziegeltreppe
+
+Silberfischstein
+
+Silberfisch-Pflasterstein
+
+Silberfisch-Steinziegel
+
+Myzel
+
+Seerosenblatt
+
+Netherziegel
+
+Netherzaun
+
+Netherziegeltreppe
+
+Netherwarze
+
+Zaubertisch
+
+Braustand
+
+Kessel
+
+Endportal
+
+Endportalrahmen
+
+Endstein
+
+Drachenei
+
+Strauch
+
+Hohes Gras
+
+Sandsteintreppe
+
+Fichtenholztreppe
+
+Birkenholztreppe
+
+Dschungelholztreppe
+
+Redstone-Lampe
+
+Kakao
+
+Schädel
+
+Derzeitige Steuerung
+
+Layout
+
+Bewegen/Sprinten
+
+Schauen
+
+Pause
+
+Springen
+
+Springen/Hochfliegen
+
+Inventar
+
+Gegenstand wechseln
+
+Aktion
+
+Verwenden
+
+Crafting
+
+Ablegen
+
+Schleichen
+
+Schleichen/Runterfliegen
+
+Kameramodus ändern
+
+Spieler/Einladen
+
+Bewegen (Beim Fliegen)
+
+Layout 1
+
+Layout 2
+
+Layout 3
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+
]]>
+
+{*B*}Drück zum Fortfahren{*CONTROLLER_VK_A*}.
+
+{*B*}Drück{*CONTROLLER_VK_A*}, um das Tutorial zu starten.{*B*}
+ Drück{*CONTROLLER_VK_B*}, wenn du denkst, dass du so weit bist, dass du allein spielen kannst.
+
+Minecraft ist ein Spiel, bei dem du Blöcke platzierst, um alles zu bauen, was du dir vorstellen kannst.
+Nachts treiben sich Monster herum, du solltest dir einen Unterstand bauen, bevor sie herauskommen.
+
+Mit{*CONTROLLER_ACTION_LOOK*}kannst du nach oben, unten und in die anderen Richtungen schauen.
+
+Mit{*CONTROLLER_ACTION_MOVE*}kannst du dich umherbewegen.
+
+Um zu sprinten, drücke {*CONTROLLER_ACTION_MOVE*} zweimal schnell nacheinander nach vorn. Solange du {*CONTROLLER_ACTION_MOVE*} nach vorn gedrückt hältst, sprintest du, bis dir die Sprintzeit oder die Nahrung ausgeht.
+
+Drück{*CONTROLLER_ACTION_JUMP*}, um zu springen.
+
+Halte{*CONTROLLER_ACTION_ACTION*}gedrückt, um mit deiner Hand oder dem Werkzeug in deiner Hand zu graben oder zu hacken. Um manche Blöcke abbauen zu können, wirst du dir ein Werkzeug herstellen müssen.
+
+Halte{*CONTROLLER_ACTION_ACTION*}gedrückt, um 4 Blöcke von Baumstämmen abzuhacken.{*B*}Wenn ein Block abbricht, kannst du ihn aufnehmen, indem du dich dicht neben das auftauchende, schwebende Objekt stellst, wodurch es in deinem Inventar erscheint.
+
+Drück{*CONTROLLER_ACTION_CRAFTING*}, um die Crafting-Oberfläche zu öffnen.
+
+Wenn du zunehmend mehr Gegenstände einsammelst und herstellst, wird sich dein Inventar langsam füllen.{*B*}
+ Drück{*CONTROLLER_ACTION_INVENTORY*}, um das Inventar zu öffnen.
+
+Durch Umherlaufen, Graben und Angreifen leerst du deine Hungerleiste {*ICON_SHANK_01*}. Durch Sprinten und Sprint-Springen verbrauchst du viel mehr Nahrung als durch normales Laufen und Springen.
+
+Wenn du Gesundheit verlierst, aber eine Hungerleiste mit 9 oder mehr{*ICON_SHANK_01*} darin hast, regeneriert sich deine Gesundheit automatisch. Wenn du Nahrung isst, regeneriert sich deine Hungerleiste.
+
+Halte{*CONTROLLER_ACTION_USE*} gedrückt, wenn du Nahrung in der Hand hast, um sie zu essen und deine Hungerleiste aufzufüllen. Du kannst nichts essen, wenn deine Hungerleiste voll ist.
+
+Deine Hungerleiste ist fast leer, und du hast etwas Gesundheit verloren. Iss das Steak aus deinem Inventar, um deine Hungerleiste aufzufüllen und deine Gesundheit zu regenerieren.{*ICON*}364{*/ICON*}
+
+Die eingesammelten Baumstämme können zu Holz verarbeitet werden. Öffne dazu die Crafting-Oberfläche.{*PlanksIcon*}
+
+Viele Crafting-Vorgänge bestehen aus mehreren Schritten. Jetzt, da du etwas Holz hast, kannst du weitere Gegenstände herstellen. Erstell eine Werkbank.{*CraftingTableIcon*}
+
+Um Blöcke schneller einsammeln zu können, kannst du dir besser geeignete Werkzeuge herstellen. Manche Werkzeuge haben einen Griff, der aus Stöcken hergestellt wird. Stell jetzt ein paar Stöcke her.{*SticksIcon*}
+
+Wechsle mit{*CONTROLLER_ACTION_LEFT_SCROLL*} oder{*CONTROLLER_ACTION_RIGHT_SCROLL*} den Gegenstand in deiner Hand.
+
+Drück{*CONTROLLER_ACTION_USE*}, um Gegenstände zu verwenden, mit Objekten zu interagieren und geeignete Gegenstände zu platzieren. Platzierte Gegenstände kannst du wieder aufnehmen, indem du sie mit dem geeigneten Werkzeug abbaust.
+
+Wenn du die Werkbank ausgewählt hast, zeig mit dem Fadenkreuz dahin, wo du sie aufstellen möchtest, und platzier sie, indem du{*CONTROLLER_ACTION_USE*} drückst.
+
+Zeig mit dem Fadenkreuz auf die Werkbank und drück{*CONTROLLER_ACTION_USE*}, um sie zu öffnen.
+
+Eine Schaufel hilft dir, weiche Blöcke wie Erde und Schnee schneller abzubauen. Wenn du weitere Materialien gesammelt hast, kannst du Werkzeuge herstellen, mit denen du schneller arbeiten kannst und die länger halten. Stell eine Holzschaufel her.{*WoodenShovelIcon*}
+
+Mit einer Axt kannst du schneller Stämme und hölzerne Gegenstände bearbeiten. Wenn du weitere Materialien gesammelt hast, kannst du Werkzeuge herstellen, mit denen du schneller arbeiten kannst und die länger halten. Stell eine Holzaxt her.{*WoodenHatchetIcon*}
+
+Eine Spitzhacke hilft dir, harte Blöcke wie Stein und Erz schneller abzubauen. Wenn du weitere Materialien gesammelt hast, kannst du Werkzeuge herstellen, mit denen du schneller arbeiten sowie härtere Materialien abbauen kannst und die länger halten. Stell eine Holzspitzhacke her.{*WoodenPickaxeIcon*}
+
+Container öffnen
+
+
+ Die Nacht kann schnell hereinbrechen, und dann wird es gefährlich, sich unvorbereitet im Freien aufzuhalten. Du kannst Rüstungen und Waffen herstellen, es ist aber eine gute Idee, einen sicheren Unterstand zu haben.
+
+
+
+ In der Nähe gibt es einen verlassenen Unterstand von Minenarbeitern, den du fertigstellen kannst, um nachts in Sicherheit zu sein.
+
+
+
+ Du wirst die nötigen Materialien sammeln müssen, um den Unterstand fertig zu bauen. Wände und Dach können aus beliebigem Material bestehen, aber du wirst eine Tür, ein paar Fenster und Beleuchtung brauchen.
+
+
+Bau mithilfe deiner Spitzhacke ein paar Steinblöcke ab. Steinblöcke erzeugen beim Abbauen Pflastersteine. Wenn du 8 Blöcke Pflasterstein sammelst, kannst du einen Ofen bauen. Möglicherweise musst du dich durch Erde graben, um auf Stein zu stoßen. Verwende dazu deine Schaufel.{*StoneIcon*}
+
+Du hast genügend Pflastersteine gesammelt, um einen Ofen zu bauen. Verwende deine Werkbank, um einen herzustellen.
+
+Drück{*CONTROLLER_ACTION_USE*}, um den Ofen in der Welt zu platzieren, und öffne ihn dann.
+
+Verwende den Ofen, um etwas Holzkohle herzustellen. Wie wäre es, wenn du noch weitere Materialien für deinen Unterstand sammelst, während du wartest?
+
+Verwende den Ofen, um etwas Glas herzustellen. Wie wäre es, wenn du noch weitere Materialien für deinen Unterstand sammelst, während du wartest?
+
+Eine gute Unterkunft sollte eine Tür haben, damit du leicht hinaus- und hineingehen kannst, ohne immer die Wände abbauen und wieder ersetzen zu müssen. Stell jetzt eine Holztür her.{*WoodenDoorIcon*}
+
+Drück{*CONTROLLER_ACTION_USE*}, um die Tür zu platzieren. Du kannst {*CONTROLLER_ACTION_USE*}verwenden, um eine Holztür zu öffnen oder zu schließen.
+
+Nachts kann es sehr dunkel werden, du wirst daher deine Unterkunft beleuchten wollen, damit du etwas sehen kannst. Stell auf der Crafting-Oberfläche eine Fackel aus Stöcken und Holzkohle her.{*TorchIcon*}
+
+
+ Du hast den ersten Teil des Tutorials abgeschlossen.
+
+
+
+ {*B*}
+ Drück{*CONTROLLER_VK_A*}, um das Tutorial fortzusetzen.{*B*}
+ Drück{*CONTROLLER_VK_B*}, wenn du denkst, dass du so weit bist, dass du allein spielen kannst.
+
+
+
+ Dies ist dein Inventar. Hier werden die Gegenstände angezeigt, die du in deiner Hand verwenden kannst, sowie alle anderen Gegenstände, die du bei dir trägst. Außerdem wird hier deine Rüstung angezeigt.
+
+
+{*B*}
+ Drück zum Fortfahren{*CONTROLLER_VK_A*}.{*B*}
+ Drück{*CONTROLLER_VK_B*}, wenn du bereits weißt, wie das Inventar verwendet wird.
+
+
+
+ Beweg den Cursor mit{*CONTROLLER_MENU_NAVIGATE*}. Drück{*CONTROLLER_VK_A*}, um einen Gegenstand unter dem Cursor aufzunehmen.
+ Falls es dort mehr als einen Gegenstand gibt, werden alle aufgenommen. Du kannst auch {*CONTROLLER_VK_X*}drücken, um nur die Hälfte von ihnen aufzunehmen.
+
+
+
+ Beweg diesen Gegenstand mit dem Cursor an einen anderen Platz im Inventar, und platzier ihn dort, indem du{*CONTROLLER_VK_A*} drückst.
+ Wenn sich mehrere Gegenstände unter dem Cursor befinden, drück{*CONTROLLER_VK_A*}, um alle abzulegen, oder{*CONTROLLER_VK_X*}, um nur einen abzulegen.
+
+
+
+ Wenn du den Cursor mit einem Gegenstand über den Rand der Oberfläche hinaus bewegst, kannst du den Gegenstand ablegen.
+
+
+
+ Wenn du mehr Informationen über einen Gegenstand brauchst, beweg den Cursor über den Gegenstand und drück{*CONTROLLER_VK_RT*}.
+
+
+
+ Drück jetzt{*CONTROLLER_VK_B*}, um das Inventar zu verlassen.
+
+
+
+ Dies ist das Inventar des Kreativmodus. Hier werden die Gegenstände angezeigt, die du in der Hand verwenden kannst, sowie alle anderen Gegenstände, die dir zur Verfügung stehen.
+
+
+{*B*}
+ Drück zum Fortfahren{*CONTROLLER_VK_A*}. {*B*}
+ Drück{*CONTROLLER_VK_B*}, wenn du schon weißt, wie man das Kreativmodus-Inventar verwendet.
+
+
+
+ Beweg den Cursor mithilfe von{*CONTROLLER_MENU_NAVIGATE*}.
+ Wähle in der Gegenstandsliste mit{*CONTROLLER_VK_A*} den Gegenstand unter dem Cursor oder mit{*CONTROLLER_VK_Y*} eine ganze Gruppe dieses Gegenstands aus.
+
+
+
+ Der Cursor bewegt sich automatisch über ein Feld in der Verwendungsreihe. Du kannst den Gegenstand mit {*CONTROLLER_VK_A*} ablegen. Sobald du den Gegenstand abgelegt hast, kehrt der Cursor in die Gegenstandsliste zurück, wo du einen weiteren Gegenstand auswählen kannst.
+
+
+
+ Wenn du den Cursor mit einem Gegenstand über den Rand der Oberfläche hinaus bewegst, kannst du den Gegenstand in der Welt ablegen. Drück {*CONTROLLER_VK_X*}, um alle Gegenstände in der Schnellauswahlleiste zu löschen.
+
+
+
+ Wechsle mit{*CONTROLLER_VK_LB*} und{*CONTROLLER_VK_RB*} zwischen den Reitern der einzelnen Gruppen, um die Gruppe des Gegenstands auszuwählen, den du brauchst.
+
+
+
+ Wenn du mehr Informationen über einen Gegenstand brauchst, beweg den Cursor über den Gegenstand und drück{*CONTROLLER_VK_RT*}.
+
+
+
+ Drück jetzt{*CONTROLLER_VK_B*}, um das Kreativmodus-Inventar zu verlassen.
+
+
+
+ Dies ist die Crafting-Oberfläche. Hier kannst du gesammelte Gegenstände kombinieren, um neue Gegenstände herzustellen.
+
+
+{*B*}
+ Drück zum Fortfahren{*CONTROLLER_VK_A*}.{*B*}
+ Drück{*CONTROLLER_VK_B*}, wenn du bereits weißt, wie man craftet.
+
+
+{*B*}
+ Drück{*CONTROLLER_VK_X*}, um eine Beschreibung des Gegenstands anzuzeigen.
+
+
+{*B*}
+ Drück{*CONTROLLER_VK_X*}, um die Zutaten anzuzeigen, die du für den aktuellen Gegenstand benötigst.
+
+
+{*B*}
+ Drück{*CONTROLLER_VK_X*}, um wieder das Inventar anzuzeigen.
+
+
+
+ Wechsle mit{*CONTROLLER_VK_LB*} und{*CONTROLLER_VK_RB*} zwischen den Reitern der einzelnen Gruppen, um die Gruppe des gewünschten Gegenstands auszuwählen, und wähl dann den herzustellenden Gegenstand mit{*CONTROLLER_MENU_NAVIGATE*} aus.
+
+
+
+ Der Crafting-Bereich zeigt die Gegenstände an, die du brauchst, um den neuen Gegenstand herzustellen. Drück{*CONTROLLER_VK_A*}, um den Gegenstand herzustellen und in deinem Inventar abzulegen.
+
+
+
+ Mithilfe einer Werkbank kannst du eine größere Auswahl an Gegenständen herstellen. Crafting auf einer Werkbank funktioniert genau wie einfaches Crafting, du hast aber einen größeren Crafting-Bereich, der mehr Zutatenkombinationen erlaubt.
+
+
+
+ Der untere rechte Bereich der Crafting-Oberfläche zeigt dein Inventar an. In diesem Bereich kannst du dir auch eine Beschreibung des derzeit ausgewählten Gegenstands samt der dafür benötigten Zutaten anzeigen lassen.
+
+
+
+ Jetzt wird die Beschreibung des derzeit ausgewählten Gegenstands angezeigt. Die Beschreibung hilft dir zu verstehen, wofür der Gegenstand eingesetzt werden kann.
+
+
+
+ Jetzt wird die Liste der Zutaten angezeigt, die benötigt werden, um den ausgewählten Gegenstand herzustellen.
+
+
+Die eingesammelten Baumstämme können zu Holz verarbeitet werden. Wähl das Holzsymbol aus und drück{*CONTROLLER_VK_A*}, um Holz herzustellen.{*PlanksIcon*}
+
+
+ Du solltest deine Werkbank jetzt in der Welt platzieren, damit du eine größere Auswahl an Gegenständen herstellen kannst.{*B*}
+ Drück jetzt{*CONTROLLER_VK_B*}, um die Crafting-Oberfläche zu verlassen.
+
+
+
+ Drück{*CONTROLLER_VK_LB*} und{*CONTROLLER_VK_RB*}, um zur Gruppe der Gegenstände zu wechseln, die du herstellen möchtest. Wähl die Gruppe „Werkzeuge“ aus.{*ToolsIcon*}
+
+
+
+ Drück{*CONTROLLER_VK_LB*} und{*CONTROLLER_VK_RB*}, um zur Gruppe der Gegenstände zu wechseln, die du herstellen möchtest. Wähl die Gruppe „Strukturen“ aus.{*StructuresIcon*}
+
+
+
+ Ändere mit{*CONTROLLER_MENU_NAVIGATE*} den Gegenstand, den du herstellen möchtest. Von manchen Gegenständen gibt es mehrere Versionen, abhängig vom verwendeten Material. Wähl die Holzschaufel aus.{*WoodenShovelIcon*}
+
+
+
+ Viele Crafting-Vorgänge bestehen aus mehreren Schritten. Jetzt, da du etwas Holz hast, kannst du weitere Gegenstände herstellen. Ändere mit{*CONTROLLER_MENU_NAVIGATE*} den Gegenstand, den du herstellen möchtest. Wähl die Werkbank aus.{*CraftingTableIcon*}
+
+
+
+ Mit den Werkzeugen, die du gebaut hast, hast du einen guten Start hingelegt. Du bist jetzt in der Lage, eine Vielzahl verschiedener Materialien effektiver zu sammeln.{*B*}
+ Drück jetzt{*CONTROLLER_VK_B*}, um die Crafting-Oberfläche zu verlassen.
+
+
+
+ Manche Gegenstände kannst du nicht mit der Werkbank herstellen, sondern brauchst dafür einen Ofen. Stell jetzt einen Ofen her.{*FurnaceIcon*}
+
+
+
+ Platzier den hergestellten Ofen in der Welt. Du wirst ihn in deinen Unterstand stellen wollen.{*B*}
+ Drück jetzt{*CONTROLLER_VK_B*}, um die Crafting-Oberfläche zu verlassen.
+
+
+
+ Dies ist die Ofen-Oberfläche. Ein Ofen erlaubt dir, Gegenstände zu verändern, indem du sie erhitzt. Du kannst im Ofen zum Beispiel Eisenbarren aus Eisenerz herstellen.
+
+
+{*B*}
+ Drück zum Fortfahren{*CONTROLLER_VK_A*}.{*B*}
+ Drück{*CONTROLLER_VK_B*}, wenn du bereits weißt, wie man einen Ofen verwendet.
+
+
+
+ Du musst in das untere Feld des Ofens Brennstoff legen und in das obere den Gegenstand, den du verändern möchtest. Der Ofen wird dann angeheizt und beginnt zu arbeiten, wodurch das Ergebnis im rechten Feld erscheint.
+
+
+
+ Du kannst viele Holzgegenstände als Brennstoff verwenden, aber nicht alles brennt gleich lange. Du wirst auch andere Gegenstände in der Welt finden, die du als Brennstoff verwenden kannst.
+
+
+
+ Wenn dein Gegenstand fertig erhitzt ist, kannst du ihn aus dem Ausgabefeld in dein Inventar verschieben. Du solltest mit verschiedenen Zutaten experimentieren, um zu sehen, was du alles herstellen kannst.
+
+
+
+ Wenn du Baumstämme als Zutat verwendest, kannst du Holzkohle herstellen. Leg Brennstoff in den Ofen und einen Baumstamm in das Zutatenfeld. Es wird eine Weile dauern, bis der Ofen die Holzkohle fertig hat, du kannst währenddessen etwas anderes tun und später wiederkommen, um dir den Fortschritt anzusehen.
+
+
+
+ Holzkohle kann als Brennstoff verwendet werden, du kannst daraus aber auch mit einem Stock eine Fackel herstellen.
+
+
+
+ Wenn du Sand ins Zutatenfeld legst, kannst du Glas herstellen. Erschaff ein paar Glasblöcke, die du als Fenster in deinem Unterstand verwenden kannst.
+
+
+
+ Dies ist die Brau-Oberfläche. Hier kannst du Tränke erschaffen, die die verschiedensten Effekte haben können.
+
+
+{*B*}
+ Drück zum Fortfahren{*CONTROLLER_VK_A*}. {*B*}
+ Drück{*CONTROLLER_VK_B*}, wenn du schon weißt, wie man den Braustand verwendet.
+
+
+
+ Du braust Tränke, indem du in das obere Feld eine Zutat legst und in die unteren Felder je einen Trank oder eine Wasserflasche (du kannst gleichzeitig bis zu 3 Tränke brauen). Sobald eine funktionierende Kombination eingelegt wurde, beginnt der Brauprozess und nach kurzer Zeit entsteht der Trank.
+
+
+
+ Basis aller Tränke ist eine Wasserflasche. Die meisten Tränke werden hergestellt, indem zuerst mit einer Netherwarze ein Seltsamer Trank hergestellt wird. Sie erfordern mindestens eine weitere Zutat, bevor der Trank fertig ist.
+
+
+
+ Wenn du einen Trank fertig hast, kannst du seinen Effekt noch weiter modifizieren. Wenn du ihm Redstone-Staub hinzufügst, steigerst du die Dauer seines Effekts. Wenn du ihm Glowstone-Staub hinzufügst, machst du ihn stärker.
+
+
+
+ Wenn du dem Trank ein Fermentiertes Spinnenauge hinzufügst, verdirbt der Trank und kann den entgegengesetzten Effekt hervorrufen. Wenn du dem Trank Schießpulver hinzufügst, wird aus dem Trank ein Wurftrank und du kannst seinen Effekt auf einen ganzen Bereich entfalten.
+
+
+
+ Erzeuge einen Trank der Feuerresistenz, indem du zuerst eine Netherwarze zu einer Wasserflasche hinzufügst und dann Magmacreme.
+
+
+
+ Drück jetzt{*CONTROLLER_VK_B*}, um die Brauoberfläche zu verlassen.
+
+
+
+ In diesem Gebiet gibt es einen Braustand, einen Kessel sowie eine Truhe mit Gegenständen zum Brauen.
+
+
+{*B*}
+ Drück{*CONTROLLER_VK_A*}, wenn du mehr über das Brauen und Tränke erfahren möchtest. {*B*}
+ Drück{*CONTROLLER_VK_B*}, wenn du schon alles über das Brauen und Tränke weißt.
+
+
+
+ Der erste Schritt zum Brauen eines Trankes ist es, eine Wasserflasche zu erschaffen. Nimm eine Glasflasche aus der Truhe.
+
+
+
+ Du kannst eine Glasflasche aus einem Kessel mit Wasser füllen oder aus einem Wasserblock. Fülle jetzt deine Glasflasche, indem du damit auf eine Wasserquelle zeigst und{*CONTROLLER_ACTION_USE*} drückst.
+
+
+
+ Wenn ein Kessel leer ist, kannst du ihn mit einem Wassereimer wieder auffüllen.
+
+
+
+ Braue mithilfe des Braustandes einen Trank der Feuerresistenz. Du brauchst dazu eine Wasserflasche, eine Netherwarze und Magmacreme.
+
+
+
+ Nimm einen Trank in deine Hand und halte{*CONTROLLER_ACTION_USE*} gedrückt, um ihn zu verwenden. Einen normalen Trank wirst du trinken und den Effekt auf dich selbst anwenden, Wurftränke wirst du werfen und den Effekt auf die Kreaturen in der Nähe der Aufschlagstelle anwenden.
+ Wurftränke kannst du herstellen, indem du zu einem normalen Trank Schießpulver hinzufügst.
+
+
+
+ Verwende deinen Trank der Feuerresistenz für dich selbst.
+
+
+
+ Jetzt bist du resistent gegenüber Feuer und Lava. Probier doch mal aus, ob du jetzt Orte erreichen kannst, die dir vorher versperrt geblieben sind.
+
+
+
+ Dies ist die Verzauberoberfläche, über die du Waffen, Rüstungen und einige Werkzeuge verzaubern kannst.
+
+
+{*B*}
+ Drück{*CONTROLLER_VK_A*}, wenn du mehr über die Verzauberoberfläche erfahren möchtest. {*B*}
+ Drück{*CONTROLLER_VK_B*}, wenn du schon alles über die Verzauberoberfläche weißt.
+
+
+
+ Um einen Gegenstand zu verzaubern, lege ihn in das Verzauberfeld. Waffen, Rüstungen und manche Werkzeuge können verzaubert werden, um Spezialeffekte zu erhalten wie einen verbesserten Widerstand gegenüber Schaden oder eine Steigerung der Anzahl der Gegenstände, die du erhältst, wenn du einen Block abbaust.
+
+
+
+ Wenn ein Gegenstand in das Verzauberfeld gelegt wird, ändern sich die Schaltflächen rechts und zeigen eine Auswahl zufälliger Verzauberungen an.
+
+
+
+ Die Zahl auf den Schaltflächen symbolisiert die Kosten in Erfahrungsleveln, um die Verzauberung auf den Gegenstand anzuwenden. Wenn dein Erfahrungslevel nicht hoch genug ist, ist die Schaltfläche deaktiviert.
+
+
+
+ Wähl eine Verzauberung aus und drück{*CONTROLLER_VK_A*}, um den Gegenstand zu verzaubern. Dadurch sinkt dein Erfahrungslevel um die Kosten der Verzauberung.
+
+
+
+ Auch wenn alle Verzauberungen zufällig sind, sind einige der besseren doch nur verfügbar, wenn du einen hohen Erfahrungslevel und viele Bücherregale rund um den Zaubertisch errichtet hast, um die Stärke des Zaubers zu vergrößern.
+
+
+
+ In diesem Gebiet stehen ein Zaubertisch und weitere Gegenstände, die dir helfen, etwas über das Verzaubern zu lernen.
+
+
+{*B*}
+ Drücke {*CONTROLLER_VK_A*}, um mehr über das Verzaubern zu erfahren.{*B*}
+ Drücke {*CONTROLLER_VK_B*}, wenn du bereits alles über das Verzaubern weißt.
+
+
+
+ Mithilfe eines Zaubertisches kannst du Waffen, Rüstungen und manchen Werkzeugen Spezialeffekte hinzufügen wie einen verbesserten Widerstand gegenüber Schaden oder eine Steigerung der Anzahl der Gegenstände, die du erhältst, wenn du einen Block abbaust.
+
+
+
+ Wenn du Bücherregale rund um den Zaubertisch baust, steigerst du seine Zauberkraft und kannst Verzauberungen höherer Level erhalten.
+
+
+
+ Gegenstände verzaubern kostet Erfahrungslevel, die du durch das Sammeln von Erfahrungskugeln steigerst. Erfahrungskugeln entstehen, wenn du Monster und Tiere tötest, Erz abbaust, Tiere züchtest, angelst und manche Dinge in einem Ofen kochst/einschmilzt.
+
+
+
+ Du kannst Erfahrung auch durch den Einsatz von Erfahrungsflaschen erhalten. Wenn diese geworfen werden, entstehen Erfahrungskugeln rund um die Stelle, wo sie gelandet ist. Diese Kugeln können eingesammelt werden.
+
+
+
+ In den Truhen in dieser Gegend findest du ein paar verzauberte Gegenstände, Erfahrungsflaschen und ein paar Gegenstände, die noch verzaubert werden müssen – also alles, was du brauchst, um mit dem Zaubertisch zu experimentieren.
+
+
+
+ Du fährst jetzt in einer Lore. Um die Lore zu verlassen, platzier den Cursor darauf und drück{*CONTROLLER_ACTION_USE*}.{*MinecartIcon*}
+
+
+{*B*}
+ Drück{*CONTROLLER_VK_A*}, um mehr über Loren zu erfahren.{*B*}
+ Drück{*CONTROLLER_VK_B*}, wenn du bereits alles über Loren weißt.
+
+
+
+ Loren fahren auf Schienen. Mit einem Ofen und einer Lore kannst du eine angetriebene Lore erschaffen. Du kannst auch eine Lore mit einer Truhe darin erschaffen.
+ {*RailIcon*}
+
+
+
+ Du kannst auch Booster-Schienen erschaffen, die Loren mit Strom aus Redstone-Fackeln und -Stromkreisen beschleunigen. Sie können mit Schaltern, Hebeln und Druckplatten verbunden werden, um komplexe Systeme zu erschaffen.
+ {*PoweredRailIcon*}
+
+
+
+ Du segelst jetzt in einem Boot. Um das Boot zu verlassen, platzier den Cursor darauf und drück{*CONTROLLER_ACTION_USE*}.{*BoatIcon*}
+
+
+
+ {*B*}
+ Drück{*CONTROLLER_VK_A*}, um mehr über Boote zu erfahren.{*B*}
+ Drück{*CONTROLLER_VK_B*}, wenn du bereits alles über Boote weißt.
+
+
+
+ Ein Boot erlaubt dir, schneller übers Wasser zu reisen. Du kannst es mit{*CONTROLLER_ACTION_MOVE*} und{*CONTROLLER_ACTION_LOOK*} steuern.
+ {*BoatIcon*}
+
+
+
+ Du verwendest jetzt eine Angel. Drück{*CONTROLLER_ACTION_USE*}, um sie einzusetzen.{*FishingRodIcon*}
+
+
+
+ {*B*}
+ Drück{*CONTROLLER_VK_A*}, um mehr übers Angeln zu erfahren.{*B*}
+ Drück{*CONTROLLER_VK_B*}, wenn du bereits alles übers Angeln weißt.
+
+
+
+ Drück{*CONTROLLER_ACTION_USE*}, um deine Angel auszuwerfen und mit dem Angeln zu beginnen. Drück erneut{*CONTROLLER_ACTION_USE*}, um die Angel einzuholen.
+ {*FishingRodIcon*}
+
+
+
+ Wenn du mit dem Einholen wartest, bis der Schwimmer unter die Wasseroberfläche versunken ist, kannst du einen Fisch fangen. Fische können roh gegessen oder in einem Ofen gekocht werden, um deine Gesundheit zu regenerieren.
+ {*FishIcon*}
+
+
+
+ Genau wie viele andere Werkzeuge kann eine Angel nicht unbegrenzt oft eingesetzt werden. Ihr Einsatz beschränkt sich aber nicht aufs Fangen von Fischen. Du solltest mit ihr experimentieren, um zu sehen, was du sonst noch so fangen oder aktivieren kannst ...
+ {*FishingRodIcon*}
+
+
+
+ Dies ist ein Bett. Drück{*CONTROLLER_ACTION_USE*}, während du nachts darauf zeigst, um die Nacht zu verschlafen und am Morgen wieder zu erwachen.{*ICON*}355{*/ICON*}
+
+
+
+ {*B*}
+ Drück{*CONTROLLER_VK_A*}, um mehr über Betten zu erfahren.{*B*}
+ Drück{*CONTROLLER_VK_B*}, wenn du bereits alles über Betten weißt.
+
+
+
+ Ein Bett sollte an einem sicheren, gut beleuchteten Ort stehen, damit du nicht mitten in der Nacht von Monstern geweckt wirst. Sobald du einmal ein Bett verwendet hast und später stirbst, erscheinst du in diesem Bett wieder in der Spielwelt.
+ {*ICON*}355{*/ICON*}
+
+
+
+ Wenn es in deinem Spiel noch weitere Spieler gibt, müssen sich alle gleichzeitig im Bett befinden, um schlafen zu können.
+ {*ICON*}355{*/ICON*}
+
+
+
+ In diesem Gebiet gibt es ein paar einfache Redstone- und Kolben-Schaltkreise sowie eine Truhe mit weiteren Gegenständen, um diese Schaltkreise zu erweitern.
+
+
+
+ {*B*}
+ Drück{*CONTROLLER_VK_A*}, um mehr über Redstone-Schaltkreise und Kolben zu erfahren.{*B*}
+ Drück{*CONTROLLER_VK_B*}, wenn du bereits alles über Redstone-Schaltkreise und Kolben weißt.
+
+
+
+ Hebel, Schalter, Druckplatten und auch Redstone-Fackeln können Schaltkreise mit Strom versorgen, indem du sie entweder direkt oder mithilfe von Redstone-Staub mit dem Gegenstand verbindest, den du aktivieren möchtest.
+
+
+
+ Sowohl Position als auch Ausrichtung einer Stromquelle können einen Einfluss darauf haben, welchen Effekt sie auf die umgebenden Blöcke hat. Wenn du zum Beispiel eine Redstone-Fackel seitlich an einem Block anbringst, kann sie ausgeschaltet werden, wenn der Block Strom von einer anderen Quelle erhält.
+
+
+
+ Redstone-Staub kannst du beim Abbauen von Redstone-Erz mit einer Spitzhacke aus Eisen, Diamant oder Gold erhalten. Mit seiner Hilfe kannst du Strom 15 Blöcke weit und einen Block nach oben oder unten übertragen.
+ {*ICON*}331{*/ICON*}
+
+
+
+ Mit Redstone-Repeatern kannst du die Distanz verlängern, über die du Strom übertragen kannst, oder eine Verzögerung in einem Schaltkreis verursachen.
+ {*ICON*}356{*/ICON*}
+
+
+
+ Wenn Strom an den Kolben angelegt wird, wird der Kolben länger und verschiebt bis zu 12 Blöcke. Wenn ein haftender Kolben zurückgezogen wird, zieht er einen Block der meisten Typen mit sich zurück.
+ {*ICON*}33{*/ICON*}
+
+
+
+ In der Truhe in diesem Gebiet findest du Komponenten, um Schaltkreise mit Kolben herzustellen. Versuch, die Schaltkreise in diesem Gebiet zu verwenden oder sie fertigzustellen, oder bau deine eigenen zusammen. Außerhalb des Tutorial-Gebiets findest du weitere Beispiele.
+
+
+
+ In diesem Gebiet gibt es ein Portal in den Nether!
+
+
+
+ {*B*}
+ Drück {*CONTROLLER_VK_A*}, um mehr über das Portal und den Nether zu erfahren.{*B*}
+ Drück {*CONTROLLER_VK_B*}, wenn du schon alles über das Portal und den Nether weißt.
+
+
+
+ Portale werden erzeugt, indem man Obsidian-Blöcke zu einem vier Blöcke breiten und fünf Blöcke hohen Rahmen anordnet. Die Eckblöcke können dabei weggelassen werden.
+
+
+
+ Um ein Nether-Portal zu aktivieren, entzünde die Obsidian-Blöcke in dem Rahmen mit einem Feuerzeug. Portale können deaktiviert werden, wenn ihr Rahmen zerbrochen wird, wenn sich in der Nähe eine Explosion ereignet oder wenn eine Flüssigkeit hindurchfließt.
+
+
+
+ Um ein Nether-Portal zu verwenden, stell dich hinein. Dein Bildschirm wird sich lila färben, und du hörst ein Geräusch. Nach ein paar Sekunden wirst du in eine andere Dimension transportiert.
+
+
+
+ Der Nether kann ein gefährlicher Ort sein, voller Lava. Er ist aber auch nützlich, um Netherstein zu sammeln, der nach dem Anzünden ewig brennt, sowie Glowstone, der Licht produziert.
+
+
+
+ Mithilfe der Netherwelt kann man in der oberirdischen Welt schneller reisen – eine Entfernung von einem Block im Nether entspricht drei Blöcken in der oberirdischen Welt.
+
+
+
+ Du bist jetzt im Kreativmodus.
+
+
+
+ {*B*}
+ Drück{*CONTROLLER_VK_A*}, wenn du mehr über den Kreativmodus erfahren möchtest. {*B*}
+ Drück{*CONTROLLER_VK_B*}, wenn du schon alles über den Kreativmodus weißt.
+
+
+Im Kreativmodus hast du einen unbegrenzten Vorrat aller verfügbaren Gegenstände und Blöcke, du kannst Blöcke ohne Werkzeug mit einem Klick zerstören, bist unverwundbar und kannst fliegen.
+
+Drücke zweimal schnell nacheinander {*CONTROLLER_ACTION_JUMP*}, um zu fliegen. Um das Fliegen zu beenden, wiederhole die Aktion. Um schneller zu fliegen, drück{*CONTROLLER_ACTION_MOVE*} beim Fliegen zweimal schnell nach vorn.
+Im Flugmodus halte{*CONTROLLER_ACTION_JUMP*} nach unten gedrückt, um dich nach oben zu bewegen, und{*CONTROLLER_ACTION_SNEAK*}, um dich nach unten zu bewegen, oder verwende das Steuerkreuz, um dich nach oben, nach unten, nach links oder nach rechts zu bewegen.
+
+Drück{*CONTROLLER_ACTION_CRAFTING*}, um die Kreativinventar-Oberfläche zu öffnen.
+
+Begib dich auf die andere Seite dieses Lochs.
+
+Du hast jetzt das Tutorial zum Kreativmodus abgeschlossen.
+
+
+ In diesem Gebiet wurde eine Farm errichtet. Mithilfe von Landwirtschaft kannst du eine erneuerbare Quelle von Nahrung und anderen Gegenständen erschaffen.
+
+
+
+ {*B*}
+ Drück {*CONTROLLER_VK_A*}, um mehr über Landwirtschaft zu erfahren.{*B*}
+ Drück {*CONTROLLER_VK_B*}, wenn du bereits alles über Landwirtschaft weißt.
+
+
+Weizen, Kürbisse und Melonen zieht man aus Samen. Weizensamen kann man sammeln, indem man Weizen erntet oder Hohes Gras abbaut. Kürbis- und Melonensamen kann man aus Kürbissen bzw. Melonen herstellen.
+
+Bevor du Samen pflanzt, musst du Erdblöcke mithilfe einer Hacke in Ackerboden umwandeln. Wenn sich in der Nähe eine Wasserquelle befindet, wird sie den Ackerboden befeuchten, wodurch die Pflanzen schneller wachsen. Denselben Effekt erzielt man, indem man die Gegend permanent beleuchtet.
+
+Weizen durchläuft beim Wachstum mehrere Phasen. Er kann geerntet werden, wenn er dunkler aussieht.{*ICON*}59:7{*/ICON*}
+
+Kürbisse und Melonen benötigen einen Block Platz neben der Stelle, wo du den Samen gepflanzt hast, damit die Frucht wachsen kann, nachdem der Stängel voll ausgewachsen ist.
+
+Zuckerrohr muss auf einem Gras-, Erd- oder Sandblock gepflanzt werden, der sich direkt neben einem Wasserblock befindet. Wenn man einen Zuckerrohrblock entfernt, zerfallen auch alle darüber liegenden Zuckerrohrblöcke.{*ICON*}83{*/ICON*}
+
+Kakteen müssen auf Sand gepflanzt werden. Sie wachsen bis zu drei Blöcke hoch. Genau wie bei Zuckerrohrblock musst du nur den untersten Block zerstören, um auch die darüber liegenden Blöcke einsammeln zu können.{*ICON*}81{*/ICON*}
+
+Pilze solltest du in einem spärlich beleuchteten Gebiet pflanzen. Sie breiten sich auf umliegende spärlich beleuchtete Blöcke aus.{*ICON*}39{*/ICON*}
+
+Man kann Knochenmehl verwenden, um Pflanzen schneller auswachsen zu lassen oder um Pilze zu Riesigen Pilzen wachsen zu lassen.{*ICON*}351:15{*/ICON*}
+
+Du hast jetzt das Tutorial zur Landwirtschaft abgeschlossen.
+
+
+ In diesem Gebiet sind Tiere untergebracht. Du kannst Tiere dazu bringen, dass sie Tierbabys produzieren.
+
+
+
+{*B*}
+ Drücke {*CONTROLLER_VK_A*}, um mehr über Tiere und ihre Zucht zu erfahren.{*B*}
+ Drücke {*CONTROLLER_VK_B*}, wenn du bereits alles über Tiere und ihre Zucht weißt.
+
+
+Damit Tiere sich paaren, musst du sie mit dem richtigen Futter füttern, um sie in den "Liebesmodus" zu versetzen.
+
+Füttere eine Kuh, eine Pilzkuh oder ein Schaf mit Weizen, ein Schwein mit Karotten, ein Huhn mit Weizensamen bzw. Netherwarzen oder einen Wolf mit beliebigem Fleisch und schon ziehen sie los und suchen in der Nähe nach einem anderen Tier derselben Gattung, das auch im Liebesmodus ist.
+
+Wenn sich zwei Tiere derselben Gattung begegnen und beide im Liebesmodus sind, küssen sie sich für ein paar Sekunden und dann erscheint ein Babytier. Das Babytier folgt seinen Eltern für eine Weile, bevor es zu einem ausgewachsenen Tier heranwächst.
+
+Nachdem ein Tier im Liebesmodus war, dauert es fünf Minuten, bis das Tier den Liebesmodus erneut annehmen kann.
+
+Manche Tiere folgen dir, wenn du ihr Futter in deiner Hand hältst. Das erleichtert es, Tiere zu Gruppen zu versammeln, um die Paarung zu erleichtern.{*ICON*}296{*/ICON*}
+
+
+ Gib wilden Wölfen Knochen, um sie zu zähmen. Wenn sie gezähmt sind, erscheinen Liebesherzen um sie herum. Gezähmte Wölfe folgen dir und verteidigen dich, wenn ihnen nicht befohlen wurde, Sitz zu machen.
+
+
+Du hast jetzt das Tutorial zu Tieren und ihrer Zucht abgeschlossen.
+
+
+ In dieser Gegend gibt es Kürbisse und Blöcke, um einen Schneegolem und einen Eisengolem zu erstellen.
+
+
+
+ {*B*}
+ Drück {*CONTROLLER_VK_A*}, um mehr über Golems zu erfahren.{*B*}
+ Drück {*CONTROLLER_VK_B*}, wenn du bereits alles über Golems weißt.
+
+
+Du erstellst Golems, indem du einen Kürbis auf einen Stapel Blöcke legst.
+
+Schneegolems bestehen aus zwei aufeinanderliegenden Schneeblöcken mit einem Kürbis darauf. Schneegolems bewerfen deine Feinde mit Schneebällen.
+
+Eisengolems bestehen aus vier Eisenblöcken im gezeigten Muster mit einem Kürbis auf dem mittleren Block. Eisengolems greifen deine Feinde an.
+
+Eisengolems erscheinen auch auf natürliche Art, um Dörfer zu verteidigen, und greifen dich an, falls du Dorfbewohner attackierst.
+
+Du kannst diesen Bereich erst verlassen, wenn du das Tutorial abgeschlossen hast.
+
+Verschiedene Werkzeuge eignen sich verschieden gut für verschiedene Materialien. Du solltest eine Schaufel verwenden, um weiches Material wie Erde und Sand abzubauen.
+
+Verschiedene Werkzeuge eignen sich verschieden gut für verschiedene Materialien. Du solltest eine Axt verwenden, um Baumstämme abzuhacken.
+
+Verschiedene Werkzeuge eignen sich verschieden gut für verschiedene Materialien. Du solltest eine Spitzhacke verwenden, um Steine und Erz abzubauen. Möglicherweise musst du eine Spitzhacke aus besserem Material herstellen, um aus manchen Blöcken Rohstoffe gewinnen zu können.
+
+Manche Werkzeuge eignen sich besser, um Gegner anzugreifen. Probier zum Angreifen mal ein Schwert aus.
+
+Tipp: Halte {*CONTROLLER_ACTION_ACTION*}gedrückt, um mit deiner Hand oder dem Werkzeug in deiner Hand zu graben oder zu hacken. Um manche Blöcke abbauen zu können, wirst du dir ein Werkzeug anfertigen müssen.
+
+Das verwendete Werkzeug ist beschädigt worden. Jedes Mal, wenn du ein Werkzeug einsetzt, erhält es ein wenig Schaden, und irgendwann geht es kaputt. Die farbige Leiste unterhalb des Gegenstands in deinem Inventar zeigt seinen aktuellen Zustand an.
+
+Halte{*CONTROLLER_ACTION_JUMP*} gedrückt, um nach oben zu schwimmen.
+
+In diesem Gebiet gibt es Schienen, auf denen eine Lore steht. Um die Lore zu betreten, platzier den Cursor darauf und drück{*CONTROLLER_ACTION_USE*}. Verwende{*CONTROLLER_ACTION_USE*} auf dem Schalter, um die Lore in Bewegung zu setzen.
+
+In der Truhe neben dem Fluss befindet sich ein Boot. Um das Boot zu verwenden, platzier den Cursor auf Wasser und drück{*CONTROLLER_ACTION_USE*}. Verwende{*CONTROLLER_ACTION_USE*}, während du auf das Boot zeigst, um es zu betreten.
+
+In der Truhe neben dem Teich befindet sich eine Angel. Nimm die Angel aus der Truhe, und nimm sie in deine Hand, um sie zu verwenden.
+
+Dieser kompliziertere Kolbenmechanismus erzeugt eine selbstreparierende Brücke! Drück zum Aktivieren den Schalter und schau dir dann an, wie die Komponenten interagieren, um alles besser zu verstehen.
+
+Wenn du den Cursor über den Rand der Oberfläche hinaus bewegst, während du einen Gegenstand trägst, kannst du den Gegenstand ablegen.
+
+Du hast nicht alle Zutaten, die du brauchst, um diesen Gegenstand herzustellen. Das Feld unten links zeigt dir die benötigten Zutaten an.
+
+
+ Glückwunsch, du hast das Tutorial abgeschlossen. Die Spielzeit vergeht jetzt mit normaler Geschwindigkeit, und du hast nicht mehr viel Zeit, bis die Nacht hereinbricht und Monster auftauchen! Stell deinen Unterstand fertig!
+
+
+{*EXIT_PICTURE*} Wenn du bereit bist, dich weiter umzusehen, gibt es in der Nähe des Unterstands der Minenarbeiter eine Treppe, die zu einer kleinen Burg führt.
+
+Erinnerung:
+
+
]]>
+
+Mit der aktuellen Version wurden dem Spiel neue Features hinzugefügt, darunter neue Gebiete in der Tutorial-Welt.
+
+{*B*}Drück{*CONTROLLER_VK_A*}, um das Tutorial ganz normal zu spielen.{*B*}
+ Drück{*CONTROLLER_VK_B*}, um das Haupt-Tutorial zu überspringen.
+
+In diesem Gebiet gibt es Bereiche, in denen du mehr über das Angeln, Boote, Kolben und Redstone erfahren kannst.
+
+Außerhalb dieses Gebiets findest du Beispiele für Gebäude, Landwirtschaft, Loren und Schienen sowie zum Verzaubern, Brauen, Handeln, Schmieden und noch einiges mehr!
+
+
+ Deine Hungerleiste ist so weit geleert, dass du dich nicht mehr regenerieren kannst.
+
+
+
+ {*B*}
+ Drück{*CONTROLLER_VK_A*}, um mehr über die Hungerleiste und die Nahrungsaufnahme zu erfahren.{*B*}
+ Drück{*CONTROLLER_VK_B*}, wenn du schon alles über die Hungerleiste und die Nahrungsaufnahme weißt.
+
+
+Auswählen
+
+Verwenden
+
+Zurück
+
+Verlassen
+
+Abbrechen
+
+Beitritt abbrechen
+
+Speichergerät auswählen
+
+Gerät wechseln
+
+Onlinespiele aktualisieren
+
+Partyspiele
+
+Alle Spiele
+
+Gruppe wechseln
+
+Inventar
+
+Beschreibg.
+
+Zutaten
+
+Crafting
+
+Erschaffen
+
+Nehmen/Ablegen
+
+Nehmen
+
+Alles nehmen
+
+Hälfte nehmen
+
+Platzieren
+
+Alles platzieren
+
+Eins platzieren
+
+Ablegen
+
+Alles ablegen
+
+Eins ablegen
+
+Tauschen
+
+Verschieben
+
+Schnellauswahl leeren
+
+?
+
+Auf Facebook teilen
+
+Filter ändern
+
+Spielerkarte
+
+Spielerprofil ansehen
+
+Freundschaftsanfrage
+
+Seite runter
+
+Seite hoch
+
+Weiter
+
+Zurück
+
+Spieler ausschließen
+
+Färben
+
+Abbauen
+
+Füttern
+
+Zähmen
+
+Heilen
+
+Sitz
+
+Folge mir
+
+Auswerfen
+
+Leeren
+
+Sattel
+
+Platzieren
+
+Treffen
+
+Melken
+
+Sammeln
+
+Essen
+
+Schlafen
+
+Aufwachen
+
+Spielen
+
+Reiten
+
+Segeln
+
+Anbauen
+
+Hochschwimmen
+
+Öffnen
+
+Tonhöhe ändern
+
+Explodieren
+
+Lesen
+
+Hängen
+
+Werfen
+
+Pflanzen
+
+Umgraben
+
+Ernten
+
+Weiter
+
+Vollständiges Spiel freischalten
+
+Spielstand löschen
+
+Löschen
+
+Optionen
+
+Xbox Live Party Einladung
+
+Freunde einladen
+
+Annehmen
+
+Schere
+
+Level sperren
+
+Skin auswählen
+
+Anzünden
+
+Navigieren
+
+Vollständiges Spiel installieren
+
+Testversion installieren
+
+Installieren
+
+Neu installieren
+
+Speicheroptionen
+
+Kommando ausführen
+
+Kreativ
+
+Zutat verschieben
+
+Brennstoff verschieben
+
+Beweg-Werkzeug
+
+Rüstung bewegen
+
+Waffe bewegen
+
+Verwenden
+
+Ziehen
+
+Loslassen
+
+Privilegien
+
+Blocken
+
+Seite hoch
+
+Seite runter
+
+Liebesmodus
+
+Trinken
+
+Drehen
+
+Ausblenden
+
+Spielstand für Xbox One hochladen
+
+Alle Slots leeren
+
+Spielstand für Xbox One hochladen
+
+OK
+
+Abbrechen
+
+Minecraft Store
+
+Möchtest du dieses Spiel wirklich verlassen und dem neuen beitreten? Dabei gehen nicht gespeicherte Fortschritte verloren.
+
+Spiel verlassen
+
+Spiel speichern
+
+Verlassen ohne Speichern
+
+Willst du wirklich mit der aktuellen Version dieser Welt alle früheren Speicherdateien für diese Welt überschreiben?
+
+Möchtest du wirklich ohne Speichern aufhören? Du verlierst dabei alle Fortschritte in dieser Welt!
+
+Spiel starten
+
+Wenn du eine Welt im Kreativmodus erstellst, lädst oder speicherst, sind in dieser Welt Erfolge und Bestenlisten-Aktualisierungen deaktiviert, selbst wenn sie später im Überlebensmodus geladen wird. Möchtest du wirklich fortfahren?
+
+Diese Welt wurde früher im Kreativmodus gespeichert, Erfolge und Bestenlisten-Aktualisierungen sind deaktiviert. Möchtest du wirklich fortfahren?
+
+Diese Welt wurde im Kreativmodus gespeichert, Erfolge und Bestenlisten-Aktualisierungen sind deaktiviert.
+
+Wenn du eine Welt mit aktivierten Hostprivilegien erstellst, lädst oder speicherst, sind in diese Welt Erfolge und Bestenlisten-Aktualisierungen deaktiviert, selbst wenn sie später ohne diese Privilegien geladen wird. Möchtest du wirklich fortfahren?
+
+Datei beschädigt
+
+Diese Speicherdatei ist ungültig oder beschädigt. Möchtest du sie löschen?
+
+Möchtest du wirklich zum Hauptmenü zurückkehren und alle Spieler vom Spiel trennen? Dabei gehen nicht gespeicherte Fortschritte verloren.
+
+Verlassen und speichern
+
+Verlassen ohne speichern
+
+Möchtest du das Spiel wirklich verlassen und zum Hauptmenü zurückkehren? Dabei gehen nicht gespeicherte Fortschritte verloren.
+
+Möchtest du das Spiel wirklich verlassen und zum Hauptmenü zurückkehren? Dabei geht dein Fortschritt verloren!
+
+Neue Welt erschaffen
+
+Tutorial spielen
+
+Tutorial
+
+Benenne deine Welt
+
+Gib einen Namen für deine Welt ein.
+
+Gib den Seed fürs Erstellen deiner Welt ein
+
+Gespeicherte Welt laden
+
+Drück START, um dem Spiel beizutreten
+
+Spiel verlassen
+
+Es ist ein Fehler aufgetreten. Zurück zum Hauptmenü.
+
+Fehler beim Herstellen der Verbindung
+
+Verbindung verloren.
+
+Die Verbindung zum Server wurde unterbrochen. Zurück zum Hauptmenü.
+
+Die Verbindung zu Xbox Live wurde unterbrochen. Zurück zum Hauptmenü.
+
+Die Verbindung zu Xbox Live wurde unterbrochen.
+
+Die Verbindung zum Server wurde getrennt.
+
+Du wurdest aus dem Spiel ausgeschlossen.
+
+Du wurdest wegen Fliegens aus dem Spiel ausgeschlossen.
+
+Verbindungsversuch dauert zu lange.
+
+Der Server ist voll.
+
+Der Host hat das Spiel verlassen.
+
+Du kannst diesem Spiel nicht beitreten, da du mit niemandem in diesem Spiel befreundet bist.
+
+Du kannst diesem Spiel nicht beitreten, da du vom Host aus dem Spiel ausgeschlossen wurdest.
+
+Du kannst diesem Spiel nicht beitreten, da der Spieler, zu dem du zu gelangen versuchst, eine ältere Spielversion verwendet.
+
+Du kannst diesem Spiel nicht beitreten, da der Spieler, zu dem du zu gelangen versuchst, eine neuere Spielversion verwendet.
+
+Neue Welt
+
+Preis freigeschaltet!
+
+Hurra - du hast ein Spielerbild mit Steve von Minecraft gewonnen!
+
+Hurra - du hast ein Spielerbild mit einem Creeper gewonnen!
+
+Hurra – du hast einen Avatar-Gegenstand gewonnen – ein Minecraft: Xbox 360 Edition-T-Shirt!
+Geh zur Xbox Steuerung, um es deinem Avatar anzuziehen!
+
+Hurra – du hast einen Avatar-Gegenstand gewonnen – eine Minecraft: Xbox 360 Edition-Uhr!
+Geh zur Xbox Steuerung, um sie deinem Avatar anzulegen!
+
+Hurra – du hast einen Avatar-Gegenstand gewonnen – eine Creeper-Basecap!
+Geh zur Xbox Steuerung, um sie deinem Avatar aufzusetzen!
+
+Hurra – du hast das Minecraft: Xbox 360 Edition-Design gewonnen!
+Geh zur Xbox Steuerung, um dieses Design auszuwählen!
+
+Vollständiges Spiel freischalten
+
+Du spielst die Testversion, kannst deinen Spielstand aber nur im vollständigen Spiel speichern.
+Möchtest du jetzt das vollständige Spiel freischalten?
+
+Dies ist die Testversion von Minecraft: Xbox 360 Edition. Würdest du das vollständige Spiel besitzen, hättest du dir gerade einen Erfolg verdient!
+Jetzt das vollständige Spiel freischalten?
+
+Dies ist die Testversion von Minecraft: Xbox 360 Edition. Würdest du das vollständige Spiel besitzen, hättest du dir gerade eine Avatar-Auszeichnung verdient!
+Jetzt das vollständige Spiel freischalten?
+
+Dies ist die Testversion von Minecraft: Xbox 360 Edition. Würdest du das vollständige Spiel besitzen, hättest du dir gerade ein Spielerbild verdient!
+Jetzt das vollständige Spiel freischalten?
+
+Dies ist die Testversion von Minecraft: Xbox 360 Edition. Würdest du das vollständige Spiel besitzen, hättest du dir gerade ein Design verdient!
+Jetzt das vollständige Spiel freischalten?
+
+Dies ist die Testversion von Minecraft: Xbox 360 Edition. Du brauchst das vollständige Spiel, um diese Einladung anzunehmen.
+Möchtest du das vollständige Spiel freischalten?
+
+Gastspieler können das vollständige Spiel nicht freischalten. Melde dich mit einer Xbox Live-Benutzer-ID an.
+
+Bitte warten
+
+Keine Ergebnisse
+
+Filter:
+
+Freunde
+
+Meine Punkte
+
+Insgesamt
+
+Einträge:
+
+Rang
+
+Gamertag
+
+Vorbereiten fürs Speichern des Levels
+
+Teile werden vorbereitet ...
+
+Wird finalisiert ...
+
+Gelände bauen
+
+Welt simulieren
+
+Server initialisieren
+
+Startbereich generieren
+
+Startbereich laden
+
+Nether betreten
+
+Nether verlassen
+
+Erneut erscheinen
+
+Level generieren
+
+Level laden
+
+Spieler speichern
+
+Mit dem Host verbinden
+
+Gelände herunterladen
+
+Wechsel in den Offline-Modus.
+
+Warte bitte, bis der Host das Spiel gespeichert hat.
+
+Das ENDE betreten
+
+Das ENDE verlassen
+
+Seed für den Weltengenerator finden
+
+Dieses Bett ist belegt.
+
+Du kannst nur nachts schlafen.
+
+%s schläft in einem Bett. Um zum Sonnenaufgang vorzuspringen, müssen alle Spieler gleichzeitig in Betten schlafen.
+
+Dein Bett fehlt oder ist versperrt.
+
+Du kannst dich jetzt nicht ausruhen, es sind Monster in der Nähe.
+
+Du schläfst in einem Bett. Um zum Sonnenaufgang zu wechseln, müssen alle Spieler gleichzeitig schlafen.
+
+Werkzeuge und Waffen
+
+Waffen
+
+Nahrung
+
+Strukturen
+
+Rüstung
+
+Mechanismen
+
+Transport
+
+Dekorationen
+
+Blöcke bauen
+
+Redstone & Transport
+
+Verschiedenes
+
+Brauen
+
+Brauen
+
+Werkzeuge, Waffen & Rüstungen
+
+Materialien
+
+Abgemeldet
+
+Du bist zum Titelbildschirm zurückgekehrt, weil dein Spielerprofil abgemeldet wurde.
+
+Schwierigkeit
+
+Musik
+
+Sound
+
+Gamma
+
+Spielempfindlichkeit
+
+Menüempfindlichkeit
+
+Friedlich
+
+Leicht
+
+Normal
+
+Schwierig
+
+In diesem Modus regeneriert sich deine Gesundheit mit der Zeit, und es gibt keine Gegner in der Welt.
+
+In diesem Modus erscheinen Gegner in der Umgebung, sie fügen dem Spieler aber weniger Schaden zu als im normalen Modus.
+
+In diesem Modus erscheinen Gegner in der Umgebung und fügen dem Spieler eine normale Menge Schaden zu.
+
+In diesem Modus erscheinen Gegner in der Umgebung und fügen dem Spieler eine große Menge Schaden zu. Achte auch auf die Creeper, sie brechen ihren Explosionsangriff nicht ab, wenn du dich von ihnen entfernst!
+
+Testversion abgelaufen
+
+Du hast die Testversion von Minecraft: Xbox 360 Edition die maximal erlaubte Zeit lang gespielt! Möchtest du jetzt das vollständige Spiel freischalten, um weiterhin Minecraft spielen zu können?
+
+Spiel voll
+
+Fehler beim Spielbeitritt, da keine Plätze mehr frei sind.
+
+Schildtext eingeben
+
+Gib eine Textzeile für dein Schild ein.
+
+Titel eingeben
+
+Gib einen Titel für deinen Beitrag ein.
+
+Überschrift eingeben
+
+Gib eine Überschrift für deinen Beitrag ein.
+
+Beschreibung eingeben
+
+Gib eine Beschreibung für deinen Beitrag ein.
+
+Inventar
+
+Zutaten
+
+Braustand
+
+Truhe
+
+Verzaubern
+
+Ofen
+
+Zutat
+
+Brennstoff
+
+Dispenser
+
+Es stehen derzeit keine entsprechenden Inhalte zum Herunterladen für diesen Titel zur Verfügung.
+
+%s ist dem Spiel beigetreten.
+
+%s hat das Spiel verlassen.
+
+%s wurde aus dem Spiel ausgeschlossen.
+
+Möchtest du diesen Spielstand wirklich löschen?
+
+Wird genehmigt ...
+
+Zensiert
+
+Jetzt wird gespielt:
+
+Einstellungen zurücksetzen
+
+Möchtest du deine Einstellungen wirklich auf die Standardwerte zurücksetzen?
+
+Ladefehler
+
+Minecraft: Xbox 360 Edition konnte nicht geladen werden und kann daher nicht fortgesetzt werden.
+
+Spiel von %s
+
+Unbekanntes Hostspiel
+
+Gast abgemeldet
+
+Ein Gastspieler hat sich abgemeldet, dadurch wurden alle Gastspieler aus dem Spiel entfernt.
+
+Anmelden
+
+Du bist derzeit nicht angemeldet. Du musst angemeldet sein, um dieses Spiel zu spielen. Möchtest du dich jetzt anmelden?
+
+Multiplayer nicht möglich
+
+Beitritt zum Spiel nicht möglich: Einer oder mehrere Spieler haben keine Multiplayer-Berechtigung für Xbox Live.
+
+Erstellen des Online-Spiels nicht möglich: Einer oder mehrere Spieler haben keine Multiplayer-Berechtigung für Xbox Live. Deaktiviere die Option "Onlinespiel", um offline zu spielen.
+
+Du kannst dieser Spielsitzung nicht beitreten, weil deine Rechteeinstellung für Inhalte von Mitgliedern zu streng ist. Ändere diese Einstellung bitte unter den Datenschutz- und Onlineeinstellungen in der Xbox Steuerung, wenn du dieser Sitzung beitreten möchtest.
+
+Du kannst dieser Spielsitzung nicht beitreten, weil die Rechteeinstellung für Inhalte von Mitgliedern eines deiner lokalen Spieler zu streng ist.
+
+Du kannst dieser Spielsitzung nicht beitreten, weil die Rechteeinstellung für Inhalte von Mitgliedern eines Spielers in der Sitzung "Nur Freunde" ist und du nicht auf seiner Freundesliste bist.
+
+Fehler beim Erstellen des Spiels
+
+Du kannst diese Spielsitzung nicht erstellen, weil die Rechteeinstellung für Inhalte von Mitgliedern eines deiner lokalen Spieler zu streng ist. Entferne die Markierung bei "Online-Spiel", um ein Offline-Spiel zu starten, oder ändere diese Einstellung unter den Datenschutz- und Onlineeinstellungen in der Xbox Steuerung.
+
+Automatisch ausgewählt
+
+Kein Paket: Standard-Skins
+
+Skin-Favoriten
+
+Gesperrter Level
+
+Das Spiel, dem du beitrittst, steht auf deiner Liste gesperrter Level.
+Wenn du dem Spiel beitrittst, wird der Level von deiner Liste gesperrter Level entfernt.
+
+Diesen Level sperren?
+
+Möchtest du diesen Level wirklich deiner Liste gesperrter Level hinzufügen?
+Wenn du OK auswählst, verlässt du dieses Spiel.
+
+Von Liste gesperrter Level entfernen
+
+Intervall für automatisches Speichern
+
+Speicherintervall: AUS
+
+Min
+
+Kann hier nicht platziert werden!
+
+Das Platzieren von Lava neben dem Wiedereintrittspunkt ist nicht gestattet, das sonst Spieler beim Wiedereintritt in den Level sofort sterben könnten.
+
+Dieses Spiel verfügt eine automatische Levelspeicherfunktion. Wenn du das obige Symbol siehst, speichert das Spiel deine Daten.
+Bitte schalte deine Xbox 360 Konsole nicht aus, solange dieses Symbol angezeigt wird.
+
+Oberflächen-Undurchsichtigkeit
+
+Autospeichern des Levels wird vorbereitet
+
+Displaygröße
+
+Displaygröße (geteilter Bildschirm)
+
+Seed
+
+Skinpaket freischalten
+
+Um die ausgewählte Skin zu verwenden, musst du dieses Skinpaket freischalten.
+Möchtest du dieses Skinpaket jetzt freischalten?
+
+Texturpaket freischalten
+
+Du musst das Texturpaket freischalten, um es für deine Welt zu verwenden.
+Möchtest du es jetzt freischalten?
+
+Texturpaket-Testversion
+
+Du verwendest nun eine Testversion des Texturpakets. Du kannst diese Welt erst speichern, wenn du die Vollversion freischaltest.
+Möchtest du die Vollversion des Texturpakets freischalten?
+
+Texturpaket nicht verfügbar
+
+Vollversion freischalten
+
+Testversion herunterladen
+
+Vollversion herunterladen
+
+Diese Welt verwendet ein Mash-up-Paket oder Texturpaket, das dir fehlt!
+Möchtest du das Mash-up-Paket oder Texturpaket jetzt installieren?
+
+Testversion holen
+
+Vollständiges Spiel holen
+
+Spieler ausschließen
+
+Möchtest du diesen Spieler wirklich aus dem Spiel ausschließen? Er wird bis zum Neustart der Welt dem Spiel nicht mehr beitreten können.
+
+Spielerbilder-Paket
+
+Themen
+
+Skinpaket
+
+Freunde von Freunden zulassen
+
+Du kannst diesem Spiel nicht beitreten, da es auf Spieler beschränkt wurde, die mit dem Host befreundet sind.
+
+Spielbeitritt nicht möglich
+
+Ausgewählt
+
+Ausgewählte Skin:
+
+Inhalte zum Herunterladen def.
+
+Diese Inhalte zum Herunterladen sind beschädigt und können nicht verwendet werden. Du musst sie löschen und dann vom Menü "Minecraft Store" aus neu installieren.
+
+Einige deiner Inhalte zum Herunterladen sind beschädigt und können nicht verwendet werden. Du musst sie löschen und dann vom Menü "Minecraft Store" aus neu installieren.
+
+Dein Spielmodus wurde geändert.
+
+Welt umbenennen
+
+Gib den neuen Namen für deine Welt ein.
+
+Spielmodus: Überleben
+
+Spielmodus: Kreativ
+
+Überleben
+
+Kreativ
+
+Im Überlebensmodus
+
+Im Kreativmodus
+
+Wolken erstellen
+
+Was möchtest du mit diesem Spielstand tun?
+
+Spielstand umbenennen
+
+Automatisches Speichern in %d ...
+
+Ein
+
+Aus
+
+Normal
+
+Superflach
+
+Wenn dies aktiviert ist, ist das Spiel online.
+
+Wenn dies aktiviert ist, können nur eingeladene Spieler beitreten.
+
+Wenn dies aktiviert ist, können nur Freunde von Leuten auf deiner Freundesliste dem Spiel beitreten.
+
+Aktiviert, dass Spieler sich gegenseitig Schaden zufügen können. Hat nur Einfluss auf den Überlebensmodus.
+
+Wenn deaktiviert, können Spieler, die dem Spiel beitreten, nicht bauen oder abbauen, bis sie autorisiert wurden.
+
+Aktiviert, dass Feuer auf brennbare Blöcke in der Nähe übergreifen kann.
+
+Aktiviert, dass aktiviertes TNT explodieret.
+
+Aktiviert, dass der Host das Fliegen nutzen, Erschöpfung deaktivieren und sich selbst im Spielmenü unsichtbar machen kann. Deaktiviert Erfolge und Bestenlisten-Aktualisierungen.
+
+Sorgt bei Aktivierung dafür, dass der Nether neu erstellt wird. Dies ist nützlich, wenn du einen alten Spielstand hast, der keine Netherfestungen enthält.
+
+Aktiviert, dass Strukturen wie Dörfer und Festungen in der Welt erstellt werden.
+
+Aktiviert, dass eine völlig flache Welt in der Oberwelt und im Nether erschaffen wird.
+
+Aktiviert, dass eine Truhe mit nützlichen Gegenständen in der Nähe des Startpunkts des Spielers erstellt wird.
+
+Skinpakete
+
+Themen
+
+Spielerbilder
+
+Avatargegenstände
+
+Texturpakete
+
+Mash-up-Pakete
+
+{*PLAYER*} ist in Flammen aufgegangen.
+
+{*PLAYER*} ist zu Tode verbrannt.
+
+{*PLAYER*} hat versucht, in Lava zu schwimmen.
+
+{*PLAYER*} ist in einer Wand erstickt.
+
+{*PLAYER*} ist ertrunken.
+
+{*PLAYER*} ist verhungert.
+
+{*PLAYER*} wurde erstochen.
+
+{*PLAYER*} ist zu hart auf dem Boden aufgeschlagen.
+
+{*PLAYER*} ist aus der Welt herausgefallen.
+
+{*PLAYER*} ist gestorben.
+
+{*PLAYER*} ist in die Luft gegangen.
+
+{*PLAYER*} wurde durch Magie getötet.
+
+{*PLAYER*} wurde durch Enderdrachen-Odem getötet.
+
+{*PLAYER*} wurde durch {*SOURCE*} getötet.
+
+{*PLAYER*} wurde durch {*SOURCE*} getötet.
+
+{*PLAYER*} wurde von {*SOURCE*} erschossen.
+
+{*PLAYER*} starb durch einen Feuerball von {*SOURCE*}.
+
+{*PLAYER*} wurde von {*SOURCE*} erschlagen.
+
+{*PLAYER*} wurde durch {*SOURCE*} getötet.
+
+Grundgesteinnebel
+
+Display anzeigen
+
+Hand anzeigen
+
+Gamertags auf geteiltem Bildschirm
+
+Todesmeldungen
+
+Animierte Spielfigur
+
+Eigene Skin-Animation
+
+Du kannst nicht mehr graben und keine Gegenstände mehr verwenden.
+
+Du kannst jetzt graben und Gegenstände verwenden.
+
+Du kannst keine Blöcke mehr platzieren.
+
+Du kannst jetzt Blöcke platzieren.
+
+Du kannst jetzt Türen und Schalter verwenden.
+
+Du kannst keine Türen und Schalter mehr verwenden.
+
+Du kannst jetzt Container (z. B. Truhen) verwenden.
+
+Du kannst keine Container (z. B. Truhen) mehr verwenden.
+
+Du kannst keine NPCs mehr angreifen.
+
+Du kannst jetzt NPCs angreifen.
+
+Du kannst keine Spieler mehr angreifen.
+
+Du kannst jetzt Spieler angreifen.
+
+Du kannst keine Tiere mehr angreifen.
+
+Du kannst jetzt Tiere angreifen.
+
+Du bist jetzt ein Moderator.
+
+Du bist kein Moderator mehr.
+
+Du kannst jetzt fliegen.
+
+Du kannst nicht mehr fliegen.
+
+Du wirst keine Erschöpfung mehr spüren.
+
+Du wirst jetzt wieder Erschöpfung spüren.
+
+Du bist jetzt unsichtbar.
+
+Du bist nicht mehr unsichtbar.
+
+Du bist jetzt unverwundbar.
+
+Du bist nicht mehr unverwundbar.
+
+%d MSP
+
+Enderdrache
+
+%s hat das Ende betreten.
+
+%s hat das Ende verlassen.
+
+
+{*C3*}Ich sehe das spielende Wesen, das du meinst.{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}?{*EF*}{*B*}{*B*}
+{*C3*}Ja. Sei auf der Hut. Es hat eine höhere Stufe erreicht. Es kann unsere Gedanken lesen.{*EF*}{*B*}{*B*}
+{*C2*}Das ist gleichgültig. Es denkt, wir gehören zum Spiel.{*EF*}{*B*}{*B*}
+{*C3*}Ich mag dieses spielende Wesen. Es hat gut gespielt. Es hat nicht aufgegeben.{*EF*}{*B*}{*B*}
+{*C2*}Es liest unsere Gedanken, als wären sie Worte auf einem Bildschirm.{*EF*}{*B*}{*B*}
+{*C3*}So stellt es sich vielerlei Dinge vor, wenn es sich tief im Traum eines Spiels befindet.{*EF*}{*B*}{*B*}
+{*C2*}Worte sind eine wunderbare Schnittstelle. Äußerst flexibel. Und weniger furchteinflößend, als auf die Realität hinter dem Bildschirm zu starren.{*EF*}{*B*}{*B*}
+{*C3*}Früher haben sie Stimmen gehört. Eher die spielenden Wesen lesen konnten. Damals, als jene, die nicht spielten, die spielenden Wesen als Hexen und Hexer beschimpften. Und die spielenden Wesen träumten, sie flögen durch die Luft, auf Stöcken, die von Dämonen angetrieben waren.{*EF*}{*B*}{*B*}
+{*C2*}Was hat dieses spielende Wesen geträumt?{*EF*}{*B*}{*B*}
+{*C3*}Dieses spielende Wesen hat von Sonnenlicht und Bäumen geträumt. Von Feuer und Wasser. Es hat davon geträumt, etwas zu erschaffen. Und es hat davon geträumt zu zerstören. Es hat davon geträumt zu jagen und gejagt zu werden. Es hat von einem Unterschlupf geträumt.{*EF*}{*B*}{*B*}
+{*C2*}Ha, die ursprüngliche Schnittstelle. Eine Million Jahre alt, und doch funktioniert sie immer noch. Aber welche Struktur hat dieses spielende Wesen wirklich geschaffen, in der Realität jenseits des Bildschirms?{*EF*}{*B*}{*B*}
+{*C3*}Es hat, zusammen mit Millionen anderen, daran gearbeitet, eine wahre Welt in einer Falte des {*EF*}{*NOISE*}{*C3*} zu bauen und erschuf eine{*EF*}{*NOISE*}{*C3*} für {*EF*}{*NOISE*}{*C3*}, in der {*EF*}{*NOISE*}{*C3*}.{*EF*}{*B*}{*B*}
+{*C2*}Es kann diesen Gedanken nicht lesen.{*EF*}{*B*}{*B*}
+{*C3*}Nein. Es hat die höchste Stufe noch nicht erreicht. Diese muss es im langen Traum des Lebens erreichen, nicht im kurzen Traum eines Spiels.{*EF*}{*B*}{*B*}
+{*C2*}Weiß es, dass wir es lieben? Dass das Universum gütig ist?{*EF*}{*B*}{*B*}
+{*C3*}Manchmal hört es, durch den Lärm seiner Gedanken hindurch, das Universum, ja.{*EF*}{*B*}{*B*}
+{*C2*}Aber bisweilen ist es auch traurig, im langen Traum. Es erschafft Welten, in denen es keinen Sommer gibt, und es zittert unter einer schwarzen Sonne. Und es hält seine erbärmliche Schöpfung für die Wirklichkeit.{*EF*}{*B*}{*B*}
+{*C3*}Es vom Kummer zu erlösen, würde es zerstören. Der Kummer ist Teil seiner eigenen, ganz privaten Aufgabe. Da können wir uns nicht einmischen.{*EF*}{*B*}{*B*}
+{*C2*}Manchmal, wenn sie sich in den Tiefen der Träume befinden, möchte ich ihnen sagen, dass sie echte Welten in der Realität bauen. Manchmal möchte ich ihnen mitteilen, wie wichtig sie dem Universum sind. Manchmal, wenn sie schon eine Weile keine richtige Verbindung mehr aufgebaut haben, möchte ich ihnen helfen, das Wort auszusprechen, das sie fürchten.{*EF*}{*B*}{*B*}
+{*C3*}Es liest unsere Gedanken.{*EF*}{*B*}{*B*}
+{*C2*}Manchmal ist es mir gleichgültig. Manchmal möchte ich es ihnen sagen: Diese Welt, die ihr für die Wahrheit haltet, ist lediglich {*EF*}{*NOISE*}{*C2*} und {*EF*}{*NOISE*}{*C2*}, ich möchte ihnen sagen, dass sie {*EF*}{*NOISE*}{*C2*} in der {*EF*}{*NOISE*}{*C2*} sind. Sie sehen so wenig von der Realität in ihrem langen Traum.{*EF*}{*B*}{*B*}
+{*C3*}Und dennoch spielen sie das Spiel.{*EF*}{*B*}{*B*}
+{*C2*}Aber es wäre so leicht, es ihnen zu sagen ...{*EF*}{*B*}{*B*}
+{*C3*}Zu stark für diesen Traum. Ihnen zu sagen, wie sie leben sollen, würde sie davon abhalten zu leben.{*EF*}{*B*}{*B*}
+{*C2*}Ich werde dem spielenden Wesen nicht sagen, wie es leben soll.{*EF*}{*B*}{*B*}
+{*C3*}Das spielende Wesen wird langsam ungeduldig.{*EF*}{*B*}{*B*}
+{*C2*}Ich werde dem spielenden Wesen eine Geschichte erzählen.{*EF*}{*B*}{*B*}
+{*C3*}Aber nicht die Wahrheit.{*EF*}{*B*}{*B*}
+{*C2*}Nein. Eine Geschichte, in der die Wahrheit sicher aufgehoben ist, in einem Käfig aus Worten. Nicht die nackte Wahrheit, die aus beliebiger Entfernung Feuer entzünden kann.{*EF*}{*B*}{*B*}
+{*C3*}Ihm einen neuen Körper geben.{*EF*}{*B*}{*B*}
+{*C2*}Ja. Spielendes Wesen ...{*EF*}{*B*}{*B*}
+{*C3*}Benutze seinen Namen.{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}. Wesen, das Spiele spielt.{*EF*}{*B*}{*B*}
+{*C3*}Gut.{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}Atme jetzt tief ein. Atme noch einmal ein. Fühle die Luft in deine Lungen strömen. Lass deine Gliedmaßen aufwachen. Ja, bewege die Finger. Erhalte einen Körper zurück, in der Schwerkraft, in der Luft. Erscheine erneut im langen Traum. Da bist du nun. Dein Körper berührt das Universum wieder, an jedem Punkt, als würdet ihr getrennt existieren. Als würden wir getrennt existieren.{*EF*}{*B*}{*B*}
+{*C3*}Wer sind wir? Einst nannte man uns den Geist des Berges. Vater Sonne, Mutter Mond. Uralte Geister, Tiergeister. Dschinnen. Gespenster. Grüne Männchen. Dann Götter, Dämonen. Engel. Poltergeister. Aliens, Außerirdische. Leptonen, Quarks. Die Worte ändern sich. Wir ändern uns nicht.{*EF*}{*B*}{*B*}
+{*C2*}Wir sind das Universum. Wir sind alles, von dem du denkst, dass es nicht du sei. Du siehst uns jetzt an, durch deine Haut und deine Augen. Und wieso berührt das Universum deine Haut und wirft Licht auf dich? Um dich zu sehen, spielendes Wesen. Um dich zu kennen. Und um selbst gekannt zu werden. Ich werde dir eine Geschichte erzählen.{*EF*}{*B*}{*B*}
+{*C2*}Es war einmal ein spielendes Wesen.{*EF*}{*B*}{*B*}
+{*C3*}Dieses spielende Wesen warst du, {*PLAYER*}.{*EF*}{*B*}{*B*}
+{*C2*}Manchmal hielt es sich für einen Menschen, auf der dünnen Kruste einer sich drehenden Kugel aus geschmolzenem Gestein. Dieser Globus aus flüssigem Fels drehte sich um einen Ball aus brennendem Gas, der dreihundertdreißigtausendmal so viel Masse besaß wie er selbst. Sie waren so weit voneinander entfernt, dass das Licht acht Minuten benötigte, um die Strecke zurückzulegen. Das Licht war Information von einem Stern, und es konnte deine Haut aus einer Entfernung von hundertfünfzig Millionen Kilometer verbrennen.{*EF*}{*B*}{*B*}
+{*C2*}Manchmal träumte das spielende Wesen, es wäre ein Bergarbeiter, auf der Oberfläche einer Welt, die flach und unendlich war. Die Sonne war ein weißes Quadrat. Die Tage waren kurz, es gab viel zu tun, und der Tod war ein vorübergehendes Ärgernis.{*EF*}{*B*}{*B*}
+{*C3*}Manchmal träumte das spielende Wesen, es hätte sich in einer Geschichte verirrt.{*EF*}{*B*}{*B*}
+{*C2*}Manchmal träumte das spielende Wesen, es wäre etwas anderes, an anderen Orten. Manchmal waren diese Träume beunruhigend. Manchmal wirklich wunderschön. Manchmal erwachte das spielende Wesen aus einem Traum und glitt in einen anderen hinein, und aus diesem in einen dritten.{*EF*}{*B*}{*B*}
+{*C3*}Manchmal träumte das spielende Wesen, es würde Worte auf einem Bildschirm betrachten.{*EF*}{*B*}{*B*}
+{*C2*}Aber nun zurück.{*EF*}{*B*}{*B*}
+{*C2*}Die Atome des spielenden Wesens waren im Gras verstreut, in den Flüssen, in der Luft, im Boden. Eine Frau sammelte die Atome; sie trank und aß und atmete ein; und die Frau setzte das spielende Wesen in ihrem Körper zusammen.{*EF*}{*B*}{*B*}
+{*C2*}Und das spielende Wesen erwachte, aus der warmen, dunklen Welt des Körpers seiner Mutter, in den langen Traum hinein.{*EF*}{*B*}{*B*}
+{*C2*}Und das spielende Wesen war eine neue Geschichte, die noch nie zuvor erzählt worden war, in den Buchstaben der DNA geschrieben. Und das spielende Wesen war ein neues Programm, das noch nie zuvor ausgeführt worden war, von einem Source-Code erzeugt, der eine Milliarde Jahre alt war. Und das spielende Wesen war ein neuer Mensch, der noch nie lebendig gewesen war, aus nichts als Milch und Liebe erschaffen.{*EF*}{*B*}{*B*}
+{*C3*}Du bist das spielende Wesen. Die Geschichte. Das Programm. Der Mensch. Aus nichts als Milch und Liebe erschaffen.{*EF*}{*B*}{*B*}
+{*C2*}Gehen wir nun noch weiter zurück.{*EF*}{*B*}{*B*}
+{*C2*}Die sieben Milliarden Milliarden Milliarden Atome des Körpers des spielenden Wesens wurden lange vor diesem Spiel im Herzen eines Sterns erschaffen. Also repräsentiert auch das spielende Wesen Information aus einem Stern. Und das spielende Wesen bewegt sich durch eine Geschichte, die einen Wald aus Informationen darstellt, von einem Mann namens Julian gepflanzt, in einer flachen, unendlichen Welt, die von einem Mann namens Markus erschaffen wurde, die wiederum innerhalb einer kleinen, privaten Welt existiert, die vom spielenden Wesen erschaffen wurde, das ein Universum bewohnt, erschaffen von ...{*EF*}{*B*}{*B*}
+{*C3*}Pssst. Manchmal erschuf das spielende Wesen eine kleine, private Welt, die weich war, warm und einfach. Manchmal war sie hart und kalt und kompliziert. Manchmal baute es ein Modell des Universums in seinem Kopf; Flecken aus Energie, die sich durch weite, leere Räume bewegen. Manchmal nannte es diese Flecken "Elektronen" und "Protonen".{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}Manchmal nannte es sie "Planeten" und "Sterne".{*EF*}{*B*}{*B*}
+{*C2*}Manchmal glaubte es, es befände sich in einem Universum, das aus Energie bestand, welche wiederum aus Aus- und An-Zuständen bestand, aus Nullen und Einsen; Programmzeilen. Manchmal glaubte es, dass es ein Spiel spielte. Manchmal glaubte es, dass es Worte auf einem Bildschirm las.{*EF*}{*B*}{*B*}
+{*C3*}Du bist das spielende Wesen, das die Worte liest ...{*EF*}{*B*}{*B*}
+{*C2*}Pssst ... Manchmal las das spielende Wesen Programmzeilen auf einem Bildschirm. Entschlüsselte sie, um Worte zu erhalten; entschlüsselte die Worte, um deren Bedeutung zu erfahren; entschlüsselte die Bedeutung, und gewann daraus Gefühle, Emotionen, Theorien, Ideen. Und das spielende Wesen begann schneller zu atmen, tiefer zu atmen, und es erkannte, dass es am Leben war. Jene tausend Tode waren nicht reell gewesen, das spielende Wesen lebte.{*EF*}{*B*}{*B*}
+{*C3*}Du. Du. Du lebst.{*EF*}{*B*}{*B*}
+{*C2*}Und manchmal glaubte das spielende Wesen, das Universum habe durch das Sonnenlicht, das durch die raschelnden Blätter der sommerlichen Bäume drang, zu ihm gesprochen.{*EF*}{*B*}{*B*}
+{*C3*}Und manchmal glaubte das spielende Wesen, das Universum habe durch das Licht, welches aus dem klaren Nachthimmel des Winters herabschien, zu ihm gesprochen, wo ein Lichtfleck, den das spielende Wesen aus dem Augenwinkel erhaschte, ein Stern sein könnte, dessen Masse die der Sonne um ein Millionenfaches übertrifft und der seine Planeten zu Plasma zerkocht, um für einen kurzen Moment vom spielenden Wesen wahrgenommen zu werden, das am anderen Ende des Universums nach Hause geht, plötzlich Essen riecht, kurz vor der vertrauten Tür, hinter der es bald wieder träumen wird.{*EF*}{*B*}{*B*}
+{*C2*}Und manchmal glaubte das spielende Wesen, das Universum habe durch die Nullen und Einsen, durch die Elektrizität der Welt, durch die über den Bildschirm huschenden Worte am Ende eines Traumes zu ihm gesprochen.{*EF*}{*B*}{*B*}
+{*C3*}Und das Universum sprach: Ich liebe dich.{*EF*}{*B*}{*B*}
+{*C2*}Und das Universum sprach: Du hast gut gespielt.{*EF*}{*B*}{*B*}
+{*C3*}Und das Universum sprach: Alles, was du brauchst, befindet sich in deinem Innern.{*EF*}{*B*}{*B*}
+{*C2*}Und das Universum sprach: Du bist stärker, als du denkst.{*EF*}{*B*}{*B*}
+{*C3*}Und das Universum sprach: Du bist das Tageslicht.{*EF*}{*B*}{*B*}
+{*C2*}Und das Universum sprach: Du bist die Nacht.{*EF*}{*B*}{*B*}
+{*C3*}Und das Universum sprach: Die Finsternis, gegen die du kämpfst, befindet sich in deinem Innern.{*EF*}{*B*}{*B*}
+{*C2*}Und das Universum sprach: Das Licht, nach dem du trachtest, befindet sich in deinem Innern.{*EF*}{*B*}{*B*}
+{*C3*}Und das Universum sprach: Du bist nicht allein.{*EF*}{*B*}{*B*}
+{*C2*}Und das Universum sprach: Du existierst nicht getrennt von allem anderen.{*EF*}{*B*}{*B*}
+{*C3*}Und das Universum sprach: Du bist das Universum, das von sich selbst kostet, das mit sich selbst spricht und seinen eigenen Code liest.{*EF*}{*B*}{*B*}
+{*C2*}Und das Universum sprach: Ich liebe dich, denn du bist die Liebe.{*EF*}{*B*}{*B*}
+{*C3*}Und das Spiel war vorbei und das spielende Wesen erwachte aus dem Traum. Und das spielende Wesen begann einen neuen Traum. Und das spielende Wesen träumte wieder, träumte besser. Und das spielende Wesen war das Universum. Und das spielende Wesen war Liebe.{*EF*}{*B*}{*B*}
+{*C3*}Du bist das spielende Wesen.{*EF*}{*B*}{*B*}
+{*C2*}Wach auf.{*EF*}
+
+
+Nether zurücksetzen
+
+Möchtest du wirklich den Nether in diesem Spielstand auf den ursprünglichen Zustand zurücksetzen? Alles, was du im Nether gebaut hast, geht verloren!
+
+Nether zurücksetzen
+
+Nether nicht zurücksetzen
+
+Pilzkuh kann momentan nicht geschoren werden. Die Höchstanzahl von Schweinen, Schafen, Kühen und Katzen wurde erreicht.
+
+Eintrittsei kann momentan nicht verwendet werden. Die Höchstanzahl von Schweinen, Schafen, Kühen und Katzen wurde erreicht.
+
+Kann momentan kein Eintrittsei verwenden. Die Höchstanzahl von Pilzkühen wurde erreicht.
+
+Kann momentan kein Eintrittsei verwenden. Die Höchstanzahl von Wölfen in einer Welt wurde erreicht.
+
+Kann momentan kein Eintrittsei verwenden. Die Höchstanzahl von Hühnern in einer Welt wurde erreicht.
+
+Kann momentan kein Eintrittsei verwenden. Die Höchstanzahl von Tintenfischen in einer Welt wurde erreicht.
+
+Kann momentan kein Eintrittsei verwenden. Die Höchstanzahl von Feinden in einer Welt wurde erreicht.
+
+Kann momentan kein Eintrittsei verwenden. Die Höchstanzahl von Dorfbewohnern in einer Welt wurde erreicht.
+
+Die Höchstanzahl von Gemälden/Gegenstandsrahmen in einer Welt wurde erreicht.
+
+Im friedlichen Modus kannst du keine Feinde erscheinen lassen.
+
+Tier kann nicht in den Liebesmodus versetzt werden. Die Zuchtobergrenze für Schweine, Schafe, Kühe und Katzen wurde erreicht.
+
+Tier kann nicht in den Liebesmodus versetzt werden. Die Zuchtobergrenze für Wölfe wurde erreicht.
+
+Tier kann nicht in den Liebesmodus versetzt werden. Die Zuchtobergrenze für Hühner wurde erreicht.
+
+Tier kann nicht in den Liebesmodus versetzt werden. Die Zuchtobergrenze für Pilzkühe wurde erreicht.
+
+Die Höchstanzahl von Booten in einer Welt wurde erreicht.
+
+Die Höchstanzahl von NPC-Köpfen in einer Welt wurde erreicht.
+
+Sicht umkehren
+
+Linkshänder
+
+Gestorben!
+
+Wieder erscheinen
+
+Inhalte zum Herunterladen
+
+Skin ändern
+
+So wird gespielt
+
+Steuerung
+
+Einstellungen
+
+Mitwirkende
+
+Inhalte neu installieren
+
+Debug-Einstellungen
+
+Feuer breitet sich aus
+
+TNT explodiert
+
+Spieler gegen Spieler
+
+Spielern vertrauen
+
+Hostprivilegien
+
+Strukturen erzeugen
+
+Superflache Welt
+
+Bonustruhe
+
+Weltoptionen
+
+Kann bauen und abbauen
+
+Kann Türen und Schalter verwenden
+
+Kann Container öffnen
+
+Kann Spieler angreifen
+
+Kann Tiere angreifen
+
+Moderator
+
+Spieler ausschließen
+
+Kann fliegen
+
+Erschöpfung deaktivieren
+
+Unsichtbar
+
+Hostoptionen
+
+Spieler/Einladen
+
+Onlinespiel
+
+Nur mit Einladung
+
+Weitere Optionen
+
+Laden
+
+Neue Welt
+
+Weltname
+
+Seed für den Weltengenerator
+
+Freilassen für zufälligen Seed
+
+Spieler
+
+Spiel beitreten
+
+Spiel starten
+
+Keine Spiele gefunden
+
+Spielen
+
+Bestenlisten
+
+Erfolge
+
+Hilfe & Optionen
+
+Vollständiges Spiel freischalten
+
+Spiel fortsetzen
+
+Spiel speichern
+
+Schwierigkeit:
+
+Spieltyp:
+
+Gamertags:
+
+Strukturen:
+
+Leveltyp:
+
+PvP:
+
+Spielern vertrauen:
+
+TNT:
+
+Feuer breitet sich aus:
+
+Design neu installieren
+
+Spielerbild 1 neu installieren
+
+Spielerbild 2 neu installieren
+
+Avatar-Gegenstand 1 neu installieren
+
+Avatar-Gegenstand 2 neu installieren
+
+Avatar-Gegenstand 3 neu installieren
+
+Optionen
+
+Audio
+
+Steuerung
+
+Grafik
+
+Benutzeroberfläche
+
+Standardeinstellungen
+
+Kamerabewegung ansehen
+
+Tipps
+
+Spiel-QuickInfos
+
+Gamertags im Spiel
+
+2 Spieler auf geteiltem Bildschirm vertikal
+
+Fertig
+
+Schildnachricht ändern:
+
+Gib erklärende Texte zu deinem Screenshot ein.
+
+Überschrift
+
+Screenshot aus dem Spiel
+
+Schildnachricht ändern:
+
+Schau mal, was ich in Minecraft: Xbox 360 Edition erschaffen habe!
+
+Die klassischen Texturen, Symbole und Benutzeroberfläche aus Minecraft!
+
+Alle Mash-up-Welten zeigen
+
+Spielstandtransferslot auswählen
+
+Slot leeren
+
+Spielstand-Metadaten hochladen
+
+Spielstand hochladen
+
+Spielstand für Xbox One hochladen
+
+Upload abgebrochen
+
+Du hast den Upload dieses Spielstands in den Transferslot abgebrochen.
+
+Keine Effekte
+
+Geschwindigkeit
+
+Langsamkeit
+
+Grabeile
+
+Grabmüdigkeit
+
+Stärke
+
+Schwäche
+
+Sofortgesundheit
+
+Sofortschaden
+
+Sprungverstärkung
+
+Verwirrtheit
+
+Regeneration
+
+Widerstand
+
+Feuerwiderstand
+
+Wasseratmung
+
+Unsichtbarkeit
+
+Blindheit
+
+Nachtsicht
+
+Hunger
+
+Gift
+
+der Geschwindigkeit
+
+der Langsamkeit
+
+der Grabeile
+
+der Langsamkeit
+
+der Stärke
+
+der Schwäche
+
+der Heilung
+
+des Schadens
+
+der Sprungverstärkung
+
+der Verwirrtheit
+
+der Regeneration
+
+des Widerstands
+
+des Feuerwiderstands
+
+der Wasseratmung
+
+der Unsichtbarkeit
+
+der Blindheit
+
+der Nachtsicht
+
+des Hungers
+
+des Gifts
+
+
+
+II
+
+III
+
+IV
+
+Wurf-
+
+Mondäner
+
+Uninteressanter
+
+Fader
+
+Farbloser
+
+Milchiger
+
+Diffuser
+
+Schlichter
+
+Dünner
+
+Seltsamer
+
+Flacher
+
+Bauchiger
+
+Gepfuschter
+
+Gebutterter
+
+Glatter
+
+Sanfter
+
+Gefälliger
+
+Dicker
+
+Eleganter
+
+Aparter
+
+Charmanter
+
+Schneidiger
+
+Veredelter
+
+Belebender
+
+Prickelnder
+
+Potenter
+
+Fauler
+
+Geruchloser
+
+Kräftiger
+
+Harscher
+
+Beißender
+
+Ekliger
+
+Stinkender
+
+Dient als Basis für alle Tränke. Wird in einem Braustand verwendet, um Tränke zu brauen.
+
+Hat keinen Effekt. Kann in einem Braustand verwendet werden, um durch Zugabe weiterer Zutaten Tränke zu brauen.
+
+Vergrößert die Bewegungsgeschwindigkeit betroffener Spieler, Tiere und Monster sowie die Sprintgeschwindigkeit, die Sprungweite und das Gesichtsfeld von Spielern.
+
+Verkleinert die Bewegungsgeschwindigkeit betroffener Spieler, Tiere und Monster sowie die Sprintgeschwindigkeit, die Sprungweite und das Gesichtsfeld von Spielern.
+
+Vergrößert den Schaden, den betroffene Spieler und Monster beim Angreifen anrichten.
+
+Verringert den Schaden, den betroffene Spieler und Monster beim Angreifen anrichten.
+
+Verbessert sofort die Gesundheit betroffener Spieler, Tiere und Monster.
+
+Verschlechtert sofort die Gesundheit betroffener Spieler, Tiere und Monster.
+
+Stellt mit der Zeit die Gesundheit von betroffenen Spielern, Tieren und Monstern wieder her.
+
+Macht die betroffenen Spieler, Tiere und Monster immun gegen Schaden durch Feuer, Lava und Fernangriffe von Lohen.
+
+Verringert mit der Zeit die Gesundheit von betroffenen Spielern, Tieren und Monstern.
+
+Schärfe
+
+Bann
+
+Nemesis der Gliederfüßer
+
+Rückstoß
+
+Verbrennung
+
+Schutz
+
+Feuerschutz
+
+Federfall
+
+Explosionsschutz
+
+Schusssicher
+
+Atmung
+
+Wasseraffinität
+
+Effizienz
+
+Behutsamkeit
+
+Haltbarkeit
+
+Plünderung
+
+Glück
+
+Stärke
+
+Feuer
+
+Schlag
+
+Unendlichkeit
+
+I
+
+II
+
+III
+
+IV
+
+V
+
+VI
+
+VII
+
+VIII
+
+IX
+
+X
+
+Muss mit mindestens einer Eisenspitzhacke abgebaut werden, um Smaragde zu erhalten.
+
+Ähnlich wie eine Truhe, doch Gegenstände, die in eine Endertruhe gelegt werden, sind in jeder Endertruhe des Spielers verfügbar, auch in anderen Dimensionen.
+
+Wird aktiviert, wenn etwas oder jemand einen verbundenen Stolperdraht durchquert.
+
+Aktiviert einen verbundenen Stolperdrahthaken, wenn etwas oder jemand ihn durchquert.
+
+Eine kompakte Lagermöglichkeit für Smaragde.
+
+Eine Mauer aus Pflasterstein.
+
+Damit kann man Waffen, Werkzeuge und Rüstungen reparieren.
+
+Kann in einem Ofen geschmolzen werden, um Netherquarz herzustellen.
+
+Wird als Dekoration verwendet.
+
+Kann mit Dorfbewohnern gehandelt werden.
+
+Wird als Dekoration verwendet. Blumen, Setzlinge, Kakteen und Pilze können darin eingepflanzt werden.
+
+Regeneriert 2{*ICON_SHANK_01*} und kann zu einer goldenen Karotte verarbeitet werden. Kann auf Ackerland gepflanzt werden.
+
+Regeneriert 0,5{*ICON_SHANK_01*}. Kann in einem Ofen gebraten oder auf Ackerland gepflanzt werden.
+
+Regeneriert 3{*ICON_SHANK_01*}. Entsteht, wenn man eine Kartoffel im Ofen brät.
+
+Regeneriert 1{*ICON_SHANK_01*}, doch du kannst dich damit vergiften. Kann in einem Ofen gebraten oder auf Ackerland gepflanzt werden.
+
+Regeneriert 3{*ICON_SHANK_01*}. Wird aus einer Karotte und Goldnuggets hergestellt.
+
+Hiermit steuerst du beim Reiten auf einem gesattelten Schwein.
+
+Regeneriert 4{*ICON_SHANK_01*}.
+
+Hiermit kannst du auf einem Amboss Waffen, Werkzeuge und Rüstungen verzaubern.
+
+Kann von Netherquarzerz abgebaut und zu Quarzblöcken verarbeitet werden.
+
+Wird aus Wolle hergestellt und als Dekoration verwendet.
+
+Smaragd
+
+Blumentopf
+
+Karotte
+
+Kartoffel
+
+Ofenkartoffel
+
+Giftige Kartoffel
+
+Goldene Karotte
+
+Karottenangel
+
+Kürbiskuchen
+
+Zauberbuch
+
+Netherquarz
+
+Smaragderz
+
+Endertruhe
+
+Stolperdrahthaken
+
+Stolperdraht
+
+Smaragdblock
+
+Pflastersteinmauer
+
+Bemooste Pflastersteinmauer
+
+Blumentopf
+
+Karotten
+
+Kartoffeln
+
+Amboss
+
+Amboss
+
+Leicht beschädigter Amboss
+
+Schwer beschädigter Amboss
+
+Netherquarzerz
+
+Quarzblock
+
+Gemeißelter Quarzblock
+
+Säulen-Quarzblock
+
+Quarztreppe
+
+Teppich
+
+Schwarzer Teppich
+
+Roter Teppich
+
+Grüner Teppich
+
+Brauner Teppich
+
+Blauer Teppich
+
+Lila Teppich
+
+Cyanfarbener Teppich
+
+Hellgrauer Teppich
+
+Grauer Teppich
+
+Rosa Teppich
+
+Hellgrüner Teppich
+
+Gelber Teppich
+
+Hellblauer Teppich
+
+Magentafarbener Teppich
+
+Oranger Teppich
+
+Weißer Teppich
+
+Gemeißelter Sandstein
+
+Glatter Sandstein
+
+{*PLAYER*} wurde beim Versuch, {*SOURCE*} zu verletzen, getötet.
+
+{*PLAYER*} wurde von einem fallenden Amboss erschlagen.
+
+{*PLAYER*} wurde von einem fallenden Block erschlagen.
+
+{*PLAYER*} zu {*DESTINATION*} teleportiert.
+
+{*PLAYER*} hat dich zu sich teleportiert.
+
+{*PLAYER*} ist zu dir teleportiert.
+
+Dornen
+
+Quarzstufe
+
+Lässt dunkle Stellen taghell erscheinen, auch unter Wasser.
+
+Macht betroffene Spieler, Tiere und Monster unsichtbar.
+
+Reparieren & benennen
+
+Verzauberungskosten: %d
+
+Zu teuer!
+
+Umbenennen
+
+Du hast:
+
+Benötigte Handelsgüter
+
+{*VILLAGER_TYPE*} bietet: %s
+
+Reparieren
+
+Handeln
+
+Halsband einfärben
+
+
+ Dies ist das Ambossmenü, über das du Waffen, Rüstungen und Werkzeuge für Erfahrungspunkte umbenennen, reparieren und verzaubern kannst.
+
+
+
+ {*B*}
+ Drücke {*CONTROLLER_VK_A*}, wenn du mehr über das Ambossmenü erfahren möchtest. {*B*}
+ Drücke {*CONTROLLER_VK_B*}, wenn du schon alles über das Ambossmenü weißt.
+
+
+
+ Lege einen Gegenstand in den ersten Eingabeplatz, um ihn zu bearbeiten.
+
+
+
+ Wenn das richtige Rohmaterial in den zweiten Eingabeplatz gelegt wird (z. B. Eisenbarren für ein Eisenschwert), erscheint die vorgeschlagene Reparatur im Ausgabeplatz.
+
+
+
+ Stattdessen kannst du auch einen identischen Gegenstand in den zweiten Eingabeplatz legen, um beide Gegenstände zu kombinieren.
+
+
+
+ Um Gegenstände auf dem Amboss zu verzaubern, legst du ein Zauberbuch in den zweiten Eingabeplatz.
+
+
+
+ Unter der Ausgabe siehst du, wie viele Erfahrungslevel der Vorgang kostet. Wenn du nicht genug davon hast, ist die Reparatur nicht möglich.
+
+
+
+ Ändere den Namen im Textfeld, um den Gegenstand, den du bearbeitest, umzubenennen.
+
+
+
+ Wenn du den reparierten Gegenstand aufhebst, werden beide Gegenstände vom Amboss verbraucht und dein Erfahrungslevel sinkt um den angegebenen Wert.
+
+
+
+ Hier sind ein Amboss und eine Truhe mit Werkzeugen und Waffen zur Bearbeitung.
+
+
+
+ {*B*}
+ Drücke {*CONTROLLER_VK_A*}, wenn du mehr über den Amboss erfahren möchtest. {*B*}
+ Drücke {*CONTROLLER_VK_B*}, wenn du schon alles über den Amboss weißt.
+
+
+
+ Auf einem Amboss können Waffen und Werkzeuge repariert und so wieder haltbar gemacht, umbenannt oder mithilfe von Zauberbüchern verzaubert werden.
+
+
+
+ Zauberbücher findest du in Truhen in Dungeons. Du kannst auch normale Bücher auf dem Zaubertisch verzaubern.
+
+
+
+ Die Nutzung des Ambosses kostet Erfahrungslevel. Bei jeder Nutzung besteht das Risiko, dass der Amboss beschädigt wird.
+
+
+
+ Die Kosten der Reparatur hängen von der Art der Bearbeitung, dem Wert des Gegenstands, der Anzahl an Verzauberungen und der Anzahl an vorherigen Bearbeitungen ab.
+
+
+
+ Wenn du einen Gegenstand umbenennst, wird der neue Name allen Spielern angezeigt und die Kosten für vorherige Bearbeitungen sinken dauerhaft.
+
+
+
+ In dieser Truhe findest du beschädigte Spitzhacken, Rohmaterialien, Erfahrungsfläschchen und Zauberbücher, mit denen du experimentieren kannst.
+
+
+
+ Dies ist das Handelsmenü, wo du siehst, was mit einem Dorfbewohner gehandelt werden kann.
+
+
+
+ {*B*}
+ Drücke {*CONTROLLER_VK_A*}, wenn du mehr über das Handelsmenü erfahren möchtest. {*B*}
+ Drücke {*CONTROLLER_VK_B*}, wenn du schon alles über das Handelsmenü weißt.
+
+
+
+ Alle Handel, auf die sich der Dorfbewohner momentan einlässt, werden oben angezeigt.
+
+
+
+ Wenn du die benötigten Gegenstände nicht hast, sind die Handel rot markiert und nicht verfügbar.
+
+
+
+ In den zwei Kästen links siehst du, wie viele und welche Gegenstände du dem Dorfbewohner anbietest.
+
+
+
+ In den zwei Kästen links siehst du, wie viele der Gegenstände für den Handel benötigt werden.
+
+
+
+ Drücke {*CONTROLLER_VK_A*}, um die benötigten Gegenstände mit dem Dorfbewohner zu tauschen.
+
+
+
+ Hier sind ein Dorfbewohner und eine Truhe mit Papier zum Kauf von Gegenständen.
+
+
+
+ {*B*}
+ Drücke {*CONTROLLER_VK_A*}, um mehr über das Handeln zu erfahren.{*B*}
+ Drücke {*CONTROLLER_VK_B*}, wenn du bereits alles über das Handeln weißt.
+
+
+
+ Spieler können Gegenstände aus ihrem Inventar mit Dorfbewohnern handeln.
+
+
+
+ Mit welchen Gegenständen ein Dorfbewohner handelt, hängt wahrscheinlich von seinem Beruf ab.
+
+
+
+ Wenn du mit verschiedenen Dingen handelst, ändern oder erweitern sich zufällig die verfügbaren Handelsangebote des Dorfbewohners.
+
+
+
+ Zu oft genutzte Angebote werden mitunter vorübergehend ausgesetzt, doch der Dorfbewohner hat stets mindestens einen Handel, auf den er sich einlässt.
+
+
+
+ Nimm etwas Papier aus der Truhe und handle mit dem Dorfbewohner.
+
+
+
+ Hier sind zwei Endertruhen.
+
+
+
+ {*B*}
+ Drücke {*CONTROLLER_VK_A*}, um mehr über Endertruhen zu erfahren.{*B*}
+ Drücke {*CONTROLLER_VK_B*}, wenn du bereits alles über Endertruhen weißt.
+
+
+
+ Alle Endertruhen in einer Welt sind verknüpft, sodass Gegenstände, die in eine Endertruhe gelegt werden, in jeder anderen verfügbar werden.
+
+
+
+ Allerdings sind die Inhalte der Endertruhen für jeden Spieler unterschiedlich.
+
+
+
+ So können Spieler Gegenstände in eine beliebige Endertruhe legen und aus einer anderen Endertruhe irgendwo auf der Welt herausnehmen. Versuche dies jetzt, indem du einen Gegenstand in eine der beiden Endertruhen legst.
+
+
+Regeneriert 2{*ICON_SHANK_01*}, regeneriert 30 Sekunden lang Gesundheit und gewährt 5 Minuten lang Widerstand gegen Feuer und Schaden. Wird aus einem Apfel und Goldblöcken hergestellt.
+
+Kann teleportieren
+
+Teleportieren
+
+Zu Spieler teleportieren
+
+Zu mir teleportieren
+
+Kann Erschöpfung deaktivieren
+
+Kann unsichtbar werden
+
+Du kannst jetzt Unsichtbarkeit aktivieren.
+
+Du kannst nicht länger Unsichtbarkeit aktivieren.
+
+Du kannst jetzt das Fliegen aktivieren.
+
+Du kannst nicht länger das Fliegen aktivieren.
+
+Du kannst jetzt Erschöpfung deaktivieren.
+
+Du kannst nicht länger Erschöpfung deaktivieren.
+
+Du kannst jetzt teleportieren.
+
+Du kannst nicht mehr teleportieren.
+
+{*T3*}SO WIRD GESPIELT: AMBOSS{*ETW*}{*B*}{*B*}
+Erfahrungslevel können auch dafür genutzt werden, Gegenstände auf dem Amboss zu reparieren, verzaubern oder umzubenennen.{*B*}
+Jeder Gegenstand kann umbenannt werden, doch nur haltbare Gegenstände können repariert oder mithilfe von Zauberbüchern verzaubert werden.{*B*}
+Lege den Gegenstand, der repariert werden soll, in einen der Eingabeplätze links und füge entweder Rohmaterialien des Gegenstands, zum Beispiel Eisenbarren für ein Eisenschwert, oder einen Gegenstand desselben Typs hinzu.{*B*}
+Gegenstände können auf einem Amboss effizienter kombiniert werden, und falls einer der Gegenstände verzaubert ist, erbt der kombinierte Gegenstand mitunter Verzauberungen von beiden Ursprungsgegenständen.{*B*}
+Wenn Gegenstände auf einem Amboss mit passenden Zauberbüchern kombiniert werden, werden sie verzaubert. Zauberbücher findest du in Truhen in Dungeons, du kannst aber auch normale Bücher auf dem Zaubertisch verzaubern.{*B*}
+Bei jeder Nutzung des Ambosses besteht die Gefahr, dass er beschädigt wird. Ist er zu stark beschädigt, geht er kaputt.{*B*}
+
+
+{*T3*}SO WIRD GESPIELT: HANDEL{*ETW*}{*B*}{*B*}
+Du kannst Gegenstände mit Dorfbewohnern handeln. Jeder Dorfbewohner hat einen Beruf. Es gibt Farmer, Metzger, Schmiede, Bibliothekare und Priester. Je nach Beruf handeln sie mit verschiedenen Gegenständen.{*B*}
+Im Handelsmenü findest du eine Liste mit allen Handelsangeboten eines Dorfbewohners. Eventuell verändern oder erweitern Dorfbewohner beim Handeln ihr Angebot, doch wird ein Angebot zu häufig genutzt, so kann es vorübergehend ausgesetzt werden.{*B*}
+Beim Handeln werden üblicherweise diverse Gegenstände für Smaragde ge- oder verkauft.{*B*}
+Falls du die Gegenstände nicht besitzt, die für einen Handel benötigt werden, werden die Gegenstände rot markiert.{*B*}
+
+
+{*T3*}SO WIRD GESPIELT: ENDERTRUHE{*ETW*}{*B*}{*B*}
+Alle Endertruhen in einer Welt sind verknüpft, sodass Gegenstände, die in eine Endertruhe gelegt werden, in jeder anderen verfügbar werden. Allerdings sind die Inhalte der Endertruhen für jeden Spieler unterschiedlich; so können Spieler Gegenstände in jeder beliebigen Endertruhe verstauen und sie aus anderen Endertruhen in der Welt wieder entnehmen.
+
+
+Farmer
+
+Bibliothekar
+
+Priester
+
+Schmied
+
+Metzger
+
+In Dörfern zu finden. Dorfbewohner verkaufen je nach Beruf verschiedene Gegenstände.
+
+Große Truhe
+
+
+ Du kannst auf dem Zaubertisch auch Zauberbücher herstellen, mit denen du später auf dem Amboss Gegenstände verzaubern kannst.
+
+
+
+ Während sie von etwas ausgelöst werden, versorgen Stolperdrahthaken Kreisläufe mit Strom.
+
+
+
+ Ein gezähmter Wolf trägt stets sein Halsband. Du kannst das Halsband beliebig einfärben.
+
+
+Karotten und Kartoffeln müssen angebaut werden. Wenn das Gemüse an die Oberfläche dringt, ist es erntereif.
+
+
+ Du kannst Schweine auch satteln und reiten. Verwende eine Karottenangel, um sie in die gewünschte Richtung zu locken.
+
+
+
+ Mit {*CONTROLLER_ACTION_MOVE*} kannst du deine Lore falls nötig langsam weiterbewegen. Das hilft beim Starten einer Lore, indem sie auf eine Booster-Schiene bewegt wird.
+
+
+Du kannst diesem Spiel nicht beitreten, da Spielen mit geteiltem Bildschirm nur im HD-Modus unterstützt wird. Alle anderen Spieler müssen sich abmelden, wenn du beitreten möchtest.
+
+Heilen
+
+Xbox 360
+
+Back
+
+Diese Option deaktiviert für diese Welt Erfolge und Bestenlisten-Aktualisierungen während des Spielens und wenn nach dem Speichern mit aktivierter Option erneut geladen wird.
+
+Spielstand für Xbox One hochladen
+
+Spielstand hochladen
+
+Nur ein Spielstand der Xbox 360 Konsole kann jeweils im Spielstandtransferslot gespeichert werden. Bitte vergewissere dich, dass du den Spielstand auf deine Xbox One Konsole heruntergeladen hast, bevor du einen weiteren Spielstand hochlädst.
+
+Hochladen ...
+
+Upload abgeschlossen!
+
+Fehler beim Upload. Bitte versuche es später erneut.
+
+Du hast {*progress*} von {*goal*} Schallplatten gefunden!
+
+
diff --git a/Minecraft.Client/Xbox/loc/lcl/es-ES/Minecraft_all.resx b/Minecraft.Client/Xbox/loc/lcl/es-ES/Minecraft_all.resx
new file mode 100644
index 00000000..61cf459c
--- /dev/null
+++ b/Minecraft.Client/Xbox/loc/lcl/es-ES/Minecraft_all.resx
@@ -0,0 +1,4582 @@
+
+Sin usar
+
+Aceptar
+
+Atrás
+
+Cancelar
+
+Sí
+
+No
+
+Archivo dañado
+
+Parece que tus datos guardados están dañados. ¿Crear un nuevo archivo de guardado y sobrescribir el archivo dañado?
+
+No hay espacio libre
+
+El dispositivo de almacenamiento seleccionado no tiene suficiente espacio libre para crear un archivo de guardado.
+
+Volver a seleccionar
+
+Jugar sin guardar
+
+Crear nuevo archivo de guardado
+
+¿Sobrescribir archivo guardado?
+
+El dispositivo de almacenamiento seleccionado ya contiene este archivo guardado. ¿Te parece bien sobrescribirlo?
+
+No, no sobrescribir.
+
+Sobrescribir y guardar.
+
+Error al guardar
+
+Problema con disp. almacenaje
+
+El dispositivo de almacenamiento no está disponible o produce un error.
+
+El dispositivo de almacenamiento no está disponible o produce un error. Selecciona un nuevo dispositivo de almacenamiento.
+
+Sel. nuevo disp. almacenamiento.
+
+No disp. de almacenaje selec.
+
+Si no seleccionas un dispositivo de almacenamiento, se deshabilitará la función de guardado de juegos.
+
+Selecciona disp. almacenamiento
+
+Continuar sin guardar
+
+Se ha extraído el dispositivo de almacenamiento. Selecciona uno nuevo.
+
+Error al cargar
+
+Nombrar el archivo de guardado
+
+Escribe un nombre para tu archivo de guardado.
+
+Volver a la Interfaz Xbox
+
+¿Seguro que quieres salir del juego?
+
+Sesión cerrada
+
+Has vuelto a la pantalla de título porque tu perfil de jugador ha cerrado la sesión.
+
+La partida ha finalizado porque un perfil de jugador ha cerrado la sesión.
+
+Seguir jugando
+
+Perfil de jugador no en línea
+
+Este juego ofrece características que requieren un perfil de jugador habilitado para Xbox Live, pero en estos momentos estás desconectado.
+
+Esta característica requiere un perfil de jugador con sesión iniciada en Xbox Live.
+
+Conectarse a Xbox Live
+
+Seguir jugando sin conexión
+
+Problema con el premio de logro
+
+ Se ha producido un problema al acceder a tu perfil de jugador. No se puede conceder tu logro en este momento.
+
+Problema con perfil de jugador
+
+Se ha producido un error al guardar la configuración en el perfil de jugador.
+
+Perfil de jugador de invitado
+
+El perfil de jugador de invitado no puede acceder a esta característica. Usa un perfil de jugador diferente.
+
+Guardando…
+
+Guardando contenido. No apagues tu consola.
+
+Desbloquear juego completo
+
+Esta es la versión de prueba de Minecraft. Si tuvieras el juego completo, ¡habrías conseguido un logro!
+Desbloquea el juego completo para vivir toda la emoción de Minecraft y jugar con amigos de todo el mundo a través de Xbox Live.
+¿Te gustaría desbloquear el juego completo?
+
+Volverás al menú principal porque se ha producido un error al leer tu perfil.
+
+¡Nueva descarga de contenido disponible! Utiliza el botón Tienda de Minecraft del menú principal para acceder a él.
+
+Puedes cambiar el aspecto de tu personaje con el pack de aspecto de la tienda Minecraft. Ve a "Tienda Minecraft" en el menú principal para ver qué hay disponible.
+
+¡Si juegas en el modo de alta definición puedes incluir a un máximo de cuatro jugadores en pantalla dividida en la misma consola!
+
+Conecta más mandos a tu consola y pulsa START sobre ellos para unirte al juego en cualquier momento.
+
+Varía la configuración de gamma para que la visualización del juego sea más clara o más oscura.
+
+Si estableces la dificultad del juego en Pacífico, tu salud se regenerará automáticamente. ¡Además, no saldrán monstruos por la noche!
+
+Dale un hueso a un lobo para domesticarlo. Puedes hacer que se siente o que te siga.
+
+Para soltar objetos desde el menú de inventario, mueve el cursor fuera del menú y pulsa{*CONTROLLER_VK_A*}.
+
+Si duermes en una cama de noche, el juego avanzará hasta el amanecer, pero en los juegos multijugador todos los jugadores tienen que dormir en camas a la vez.
+
+Extrae chuletas de los cerdos y cocínalas para comerlas y recuperar tu salud.
+
+Extrae cuero de las vacas y úsalo para fabricar armaduras.
+
+Si tienes un cubo vacío, puedes llenarlo con leche de vaca, agua ¡o lava!
+
+Usa una azada para preparar el terreno para la cosecha.
+
+Las arañas no atacan por el día, a no ser que tú las ataques a ellas.
+
+¡Es más fácil excavar arena o tierra con un azadón que a mano!
+
+Si comes las chuletas de cerdo cocinadas, recuperarás más salud que si las comes crudas.
+
+Crea antorchas para iluminar áreas oscuras de noche. Los monstruos evitarán las áreas cercanas a las antorchas.
+
+¡Con una vagoneta y un raíl llegarás a tu destino más rápido!
+
+Planta arbolillos y se convertirán en árboles.
+
+Los cerdos no te atacarán a no ser que tú los ataques a ellos.
+
+Puedes echarte a dormir en una cama para cambiar el punto de generación del juego y avanzar hasta el amanecer.
+
+¡Golpea esas bolas de fuego de vuelta al Ghast!
+
+Si construyes un portal podrás viajar a otra dimensión: el mundo inferior.
+
+¡Pulsa {*CONTROLLER_VK_B*} para soltar el objeto que llevas en la mano!
+
+¡Usa la herramienta correcta para el trabajo!
+
+Si no encuentras hulla para las antorchas, siempre puedes convertir árboles en carbón en un horno.
+
+Excavar en línea recta hacia abajo o hacia arriba no es buena idea.
+
+La carne de hueso (se fabrica con hueso de esqueleto) se puede usar como fertilizante, y hace que las cosas crezcan al instante.
+
+¡Los Creepers explotan cuando se acercan a ti!
+
+La obsidiana se crea cuando el agua alcanza un bloque de origen de lava.
+
+Al eliminar el bloque de origen, la lava puede tardar varios minutos en desaparecer por completo.
+
+Los guijarros son resistentes a las bolas de fuego del Ghast, lo que los hace útiles para defender portales.
+
+Los bloques que se pueden usar como fuente de luz derriten la nieve y el hielo. Entre ellos se incluyen las antorchas, las piedras brillantes y los fuegos fatuos.
+
+Ten cuidado cuando construyas estructuras de lana al aire libre, ya que los rayos de las tormentas pueden prenderles fuego.
+
+Un solo cubo de lava se puede usar para fundir 100 bloques en un horno.
+
+El instrumento que toca un bloque de nota depende del material que tenga debajo.
+
+Los zombis y los esqueletos pueden sobrevivir a la luz del día si están en el agua.
+
+Si atacas a un lobo provocarás que todos los lobos de los alrededores se vuelvan hostiles hacia ti y te ataquen. Esta característica la comparten también los porqueros zombis.
+
+Los lobos no pueden entrar en el mundo inferior.
+
+Los lobos no atacan a los Creepers.
+
+Las gallinas ponen huevos cada 5 o 10 minutos.
+
+La obsidiana solo se puede perforar con un pico de diamante.
+
+Los Creepers son la fuente de pólvora de más sencilla obtención.
+
+Si colocas dos cofres juntos crearás un cofre grande.
+
+Los lobos domesticados indican su salud con la posición de su cola. Dales de comer para curarlos.
+
+Cocina un cactus en un horno para obtener tinte verde.
+
+¡En Twitter obtendrás la información más reciente sobre 4J Studios y Kappische!
+
+¡Impresiona a tus amigos publicando capturas de pantalla de tus creaciones de Minecraft en Facebook desde el menú de pausa del juego!
+
+Lee la sección Novedades en el menú Cómo se juega para ver la información más reciente sobre el juego.
+
+¡Ahora hay vallas apilables en el juego!
+
+minecraftforum cuenta con una sección dedicada a la edición para Xbox 360.
+
+Algunos animales te seguirán si llevas trigo en la mano.
+
+Si un animal no pude desplazarse más de 20 bloques en cualquier dirección, no se degenerará.
+
+¡Música de C418!
+
+¡Notch tiene más de un millón de seguidores en Twitter!
+
+No todos los suecos son rubios. ¡Algunos, como Jens de Mojang, son pelirrojos!
+
+Creemos que 4J Studios ha eliminado a Herobrine del juego para la Consola Xbox 360, pero no estamos seguros.
+
+¡Pronto habrá una actualización de este juego!
+
+¿Quién es Notch?
+
+¡Mojang tiene más premios que empleados!
+
+¡Hay famosos que juegan a Minecraft!
+
+¡A deadmau5 le gusta Minecraft!
+
+No mires directamente a los bichos.
+
+Los Creepers surgieron de un fallo de código.
+
+¿Es una gallina o es un pato?
+
+¿Estuviste en la Minecon?
+
+Nadie de Mojang ha visto jamás la cara a junkboy.
+
+¿Sabías que hay una Wiki de Minecraft?
+
+¡El nuevo despacho de Mojang mola!
+
+¡Minecraft: Xbox 360 Edition ha batido todos los récords!
+
+¡Minecon 2013 tuvo lugar en Orlando, Florida!
+
+.party() fue excelente.
+
+Supón siempre que los rumores son falsos, ¡no creas que son ciertos!
+
+{*T3*}CÓMO SE JUEGA: FUNDAMENTOS{*ETW*}{*B*}{*B*}
+Minecraft es un juego que consiste en colocar bloques para construir cualquier cosa que puedas imaginar. De noche salen los monstruos, así que procura construir un refugio antes de que eso suceda.{*B*}{*B*}
+Usa{*CONTROLLER_ACTION_LOOK*} para mirar a tu alrededor.{*B*}{*B*}
+Usa{*CONTROLLER_ACTION_MOVE*} para moverte.{*B*}{*B*}
+Pulsa{*CONTROLLER_ACTION_JUMP*} para saltar.{*B*}{*B*}
+Pulsa{*CONTROLLER_ACTION_MOVE*} dos veces hacia delante en sucesión rápida para correr. Mientras mantienes pulsado {*CONTROLLER_ACTION_MOVE*} hacia delante, el personaje seguirá corriendo a menos que se agote el tiempo de carrera o la barra de comida tenga menos de {*ICON_SHANK_03*}.{*B*}{*B*}
+Mantén pulsado{*CONTROLLER_ACTION_ACTION*} para perforar y picar con la mano o con cualquier objeto que sostengas. Quizá necesites crear una herramienta para perforar algunos bloques.{*B*}{*B*}
+Si tienes un objeto en la mano, usa{*CONTROLLER_ACTION_USE*} para utilizar ese objeto o pulsa{*CONTROLLER_ACTION_DROP*} para soltarlo.
+
+{*T3*}CÓMO SE JUEGA: HUD{*ETW*}{*B*}{*B*}
+El HUD muestra información sobre tu estado, tu salud, el oxígeno que te queda cuando estás bajo el agua, tu nivel de hambre (para llenarlo tienes que comer) y la armadura, si la llevas. Si pierdes salud pero tienes una barra de comida con 9 o más{*ICON_SHANK_01*}, tu salud se recargará automáticamente. Si comes, se recargará la barra de comida.{*B*}
+Aquí también aparece la barra de experiencia, con un valor numérico que indica tu nivel de experiencia y la barra que señala los puntos de experiencia que necesitas para subir de nivel. Los puntos de experiencia se obtienen al recoger los orbes de experiencia que sueltan los enemigos al morir, al extraer cierto tipo de bloques, al criar nuevos animales, al pescar y al fundir mineral en un horno.{*B*}{*B*}
+También muestra los objetos que puedes utilizar. Usa{*CONTROLLER_ACTION_LEFT_SCROLL*} y{*CONTROLLER_ACTION_RIGHT_SCROLL*} para cambiar el objeto que llevas en la mano.
+
+{*T3*}CÓMO SE JUEGA: INVENTARIO{*ETW*}{*B*}{*B*}
+Usa{*CONTROLLER_ACTION_INVENTORY*} para ver el inventario.{*B*}{*B*}
+Esta pantalla muestra los objetos que puedes llevar en la mano y todos los objetos que ya llevas. También aparece tu armadura.{*B*}{*B*}
+Usa{*CONTROLLER_MENU_NAVIGATE*} para mover el foco. Usa{*CONTROLLER_VK_A*} para coger el objeto que se encuentra bajo el foco. Si hay más de un objeto, los cogerá todos; también puedes usar{*CONTROLLER_VK_X*} para coger solo la mitad de ellos.{*B*}{*B*}
+Mueve el objeto con el foco hacia otro espacio del inventario y colócalo con{*CONTROLLER_VK_A*}. Si hay varios objetos en el foco, usa{*CONTROLLER_VK_A*} para colocarlos todos o{*CONTROLLER_VK_X*} para colocar solo uno.{*B*}{*B*}
+Si un objeto sobre el que estás es una armadura, aparecerá un mensaje de función para activar un movimiento rápido y enviarla al espacio de armadura correspondiente del inventario.{*B*}{*B*}
+Puedes teñir tu armadura de cuero para cambiarla de color. Para ello, accede al menú del inventario, mantén el foco sobre el tinte y después pulsa{*CONTROLLER_VK_X*} mientras señalas con el foco la prenda que quieres teñir.
+
+
+{*T3*}CÓMO SE JUEGA: COFRE{*ETW*}{*B*}{*B*}
+Cuando creas un cofre, puedes colocarlo en el mundo y usarlo con{*CONTROLLER_ACTION_USE*} para almacenar objetos de tu inventario.{*B*}{*B*}
+Usa el foco para mover objetos del inventario al cofre y viceversa.{*B*}{*B*}
+Los objetos del cofre se almacenan para que puedas volver a colocarlos en el inventario más tarde.
+
+
+{*T3*}CÓMO SE JUEGA: COFRE GRANDE{*ETW*}{*B*}{*B*}
+Si se colocan dos cofres normales, uno junto a otro, se combinarán para formar un cofre grande.{*B*}{*B*}
+Se usa como si fuera un cofre normal.
+
+
+{*T3*}CÓMO SE JUEGA: CREACIÓN{*ETW*}{*B*}{*B*}
+En la interfaz de creación puedes combinar objetos del inventario para crear nuevos tipos de objetos. Usa{*CONTROLLER_ACTION_CRAFTING*} para abrir la interfaz de creación.{*B*}{*B*}
+Desplázate por las pestañas de la parte superior con {*CONTROLLER_VK_LB*} y {*CONTROLLER_VK_RB*} para seleccionar el tipo de objeto que quieres crear; a continuación, usa{*CONTROLLER_MENU_NAVIGATE*} para seleccionar el objeto y crearlo.{*B*}{*B*}
+La zona de creación indica los objetos que se necesitan para crear el nuevo objeto. Pulsa{*CONTROLLER_VK_A*} para crear el objeto y colocarlo en tu inventario.
+
+
+{*T3*}CÓMO SE JUEGA: MESA DE CREACIÓN{*ETW*}{*B*}{*B*}
+Con una mesa de creación puedes crear objetos más grandes.{*B*}{*B*}
+Coloca la mesa en el mundo y pulsa{*CONTROLLER_ACTION_USE*} para usarla.{*B*}{*B*}
+La creación en una mesa se realiza igual que la creación normal, pero dispones de un área de creación mayor y una selección de objetos para crear más amplia.
+
+
+{*T3*}CÓMO SE JUEGA: HORNO{*ETW*}{*B*}{*B*}
+En el horno puedes cambiar objetos con fuego. Por ejemplo, puedes convertir mineral de hierro en lingotes de hierro.{*B*}{*B*}
+Coloca el horno en el mundo y pulsa{*CONTROLLER_ACTION_USE*} para usarlo.{*B*}{*B*}
+En la parte inferior del horno debes colocar combustible y el objeto que quieres fundir en la parte superior. El horno se encenderá y empezará a funcionar.{*B*}{*B*}
+Después de fundir los objetos puedes trasladarlos de la zona de producción a tu inventario.{*B*}{*B*}
+Si un objeto sobre el que estás es un ingrediente o combustible para el horno, aparecerán mensajes de función para activar un movimiento rápido y enviarlo al horno.
+
+
+{*T3*}CÓMO SE JUEGA: DISPENSADOR{*ETW*}{*B*}{*B*}
+El dispensador se usa para arrojar objetos. Para ello tendrás que colocar un interruptor, como por ejemplo una palanca, junto al dispensador para accionarlo.{*B*}{*B*}
+Para llenar el dispensador con objetos, pulsa{*CONTROLLER_ACTION_USE*} y mueve los objetos que quieres arrojar desde tu inventario al dispensador.{*B*}{*B*}
+A partir de ese momento, cuando uses el interruptor, el dispensador arrojará un objeto.
+
+
+{*T3*}CÓMO SE JUEGA: DESTILACIÓN{*ETW*}{*B*}{*B*}
+Para destilar pociones se necesita un puesto de destilado, que se puede construir en la mesa de creación. Todas las pociones se empiezan con una botella de agua, que se obtiene al llenar una botella de cristal con agua de un caldero o una fuente.{*B*}
+Los puestos de destilado tienen tres espacios para botellas, de forma que puedes hacer tres pociones a la vez. Se puede usar un ingrediente en las tres botellas, así que procura destilar siempre tres pociones a la vez para aprovechar mejor tus recursos.{*B*}
+Si colocas un ingrediente de poción en la posición superior del puesto de destilado, tras un breve periodo de tiempo obtendrás una poción básica. Esto no tiene ningún efecto por sí mismo, pero si destilas otro ingrediente con esta poción básica, obtendrás una poción con un efecto.{*B*}
+Cuando obtengas esa poción, podrás añadir un tercer ingrediente para que el efecto sea más duradero (usando polvo de piedra rojiza), más intenso (con polvo de piedra brillante) o convertirlo en una poción perjudicial (con un ojo de araña fermentado).{*B*}
+También puedes añadir pólvora a cualquier poción para convertirla en una poción de salpicadura, que después podrás arrojar. Si lanzas una poción de salpicadura, su efecto se aplicará sobre toda la zona donde caiga.{*B*}
+
+Los ingredientes originales de las pociones son :{*B*}{*B*}
+* {*T2*}Verruga del mundo inferior{*ETW*}{*B*}
+* {*T2*}Ojo de araña{*ETW*}{*B*}
+* {*T2*}Azúcar{*ETW*}{*B*}
+* {*T2*}Lágrima de espectro{*ETW*}{*B*}
+* {*T2*}Polvo de llama{*ETW*}{*B*}
+* {*T2*}Crema de magma{*ETW*}{*B*}
+* {*T2*}Melón resplandeciente{*ETW*}{*B*}
+* {*T2*}Polvo de piedra rojiza{*ETW*}{*B*}
+* {*T2*}Polvo p. brillante{*ETW*}{*B*}
+* {*T2*}Ojo de araña fermentado{*ETW*}{*B*}{*B*}
+
+Tendrás que experimentar y combinar ingredientes para averiguar cuántas pociones diferentes puedes crear.
+
+
+{*T3*}CÓMO SE JUEGA: HECHIZOS{*ETW*}{*B*}{*B*}
+Los puntos de experiencia que se recogen cuando muere un enemigo, o cuando se extraen o se funden determinados bloques en un horno, se pueden usar para hechizar herramientas, armas, armaduras y libros.{*B*}
+Cuando la espada, el arco, el hacha, el pico, la pala, la armadura o el libro se colocan en el espacio que está debajo del libro en la mesa de hechizos, los tres botones de la parte derecha del espacio mostrarán algunos hechizos y sus niveles de experiencia correspondientes.{*B*}
+Si no tienes suficientes niveles de experiencia para usarlos, el coste aparecerá en rojo; si no, aparecerá en verde.{*B*}{*B*}
+El hechizo real que se aplica se selecciona aleatoriamente en función del coste que aparece.{*B*}{*B*}
+Si la mesa de hechizos está rodeada de estanterías (hasta un máximo de 15), con un espacio de un bloque entre la estantería y la mesa de hechizos, la intensidad de los hechizos aumentará y aparecerán glifos arcanos en el libro de la mesa de hechizos.{*B*}{*B*}
+Todos los ingredientes para la mesa de hechizos se pueden encontrar en las aldeas de un mundo o al extraer mineral y cultivar en él.{*B*}{*B*}
+Usa los libros hechizados en el yunque para aplicar hechizos a los objetos. De este modo tendrás más control sobre los hechizos que te gustaría aplicar a tus objetos.{*B*}
+
+
+{*T3*}CÓMO SE JUEGA: CUIDAR ANIMALES{*ETW*}{*B*}{*B*}
+Si quieres guardar a tus animales en un único lugar, construye una zona vallada de menos de 20x20 bloques y coloca a tus animales dentro. Así te asegurarás de que estén allí cuando vuelvas.
+
+
+{*T3*}CÓMO SE JUEGA: CRIAR ANIMALES{*ETW*}{*B*}{*B*}
+¡Los animales de Minecraft pueden reproducirse y tener crías que son sus réplicas exactas!{*B*}
+Para que los animales tengan crías, tienes que alimentarles con la comida correcta para que pasen a estar en el "modo Amor".{*B*}
+Si alimentas con trigo a las vacas, champiñacas u ovejas, con zanahorias a un cerdo, con semillas de trigo o verrugas del mundo inferior a los pollos, o con cualquier tipo de carne a los lobos, estos animales empezarán a buscar a otros animales de la misma especie que también estén en el modo Amor.{*B*}
+Cuando dos animales de la misma especie se encuentran, y ambos están en el modo Amor, se besarán durante unos segundos y luego aparecerá una cría. La cría seguirá a sus padres durante un tiempo antes de crecer y convertirse en adulto.{*B*}
+Tras dejar de estar en modo Amor, un animal no podrá volver a estarlo hasta pasados 5 minutos.{*B*}
+Existe un límite para la cantidad de animales que puedes tener en un mundo, por lo que es posible que tus animales no tengan más crías cuando tengas muchos.
+
+{*T3*}CÓMO SE JUEGA: PORTAL INFERIOR{*ETW*}{*B*}{*B*}
+El portal inferior permite al jugador viajar entre el mundo superior y el mundo inferior. El mundo inferior sirve para viajar a toda velocidad por el mundo superior, ya que un bloque de distancia en el mundo inferior equivale a 3 bloques en el mundo superior, así que cuando construyas un portal en el mundo inferior y salgas por él, estarás 3 veces más lejos del punto de entrada.{*B*}{*B*}
+Se necesita un mínimo de 10 bloques de obsidiana para construir el portal, y el portal tiene que tener 5 bloques de alto, 4 de ancho y 1 de profundidad. Una vez construida la estructura del portal, tendrás que prender fuego al espacio interior para activarlo. Para ello, usa el objeto "chisquero de pedernal" o "descarga de fuego".{*B*}{*B*}
+En la imagen de la derecha dispones de ejemplos de construcción de un portal.
+
+
+{*T3*}CÓMO SE JUEGA: MULTIJUGADOR{*ETW*}{*B*}{*B*}
+Minecraft para la consola Xbox 360 es, de forma predeterminada, un juego multijugador. En el modo de alta definición los jugadores locales pueden unirse a tu partida conectando un mando y pulsando START en cualquier momento del juego.{*B*}{*B*}
+Si inicias o te unes a una partida en línea, los miembros de tu lista de amigos podrán verla (a menos que selecciones Solo por invitación cuando crees la partida), y si ellos se unen a la partida, los miembros de su lista de amigos también podrán verla (a menos que selecciones la opción Permitir amigos de amigos).{*B*}
+Una vez en la partida, pulsa el Botón BACK para mostrar la lista de todos los jugadores, ver sus tarjetas de jugador, expulsar a jugadores de la partida e invitar a otros miembros a la partida.
+
+
+{*T3*}CÓMO SE JUEGA: COMPARTIR CAPTURAS DE PANTALLA{*ETW*}{*B*}{*B*}
+Si quieres realizar una captura de pantalla de tu partida, ve al menú de pausa y pulsa {*CONTROLLER_VK_Y*} para compartirla en Facebook. Obtendrás una versión en miniatura de tu captura y podrás editar el texto asociado a la publicación de Facebook.{*B*}{*B*}
+Existe un modo de cámara especial para tomar estas capturas, de forma que podrás ver la parte frontal de tu personaje en la imagen. Pulsa{*CONTROLLER_ACTION_CAMERA*} hasta que veas la parte frontal del personaje y después pulsa{*CONTROLLER_VK_Y*} para compartir.{*B*}{*B*}
+En la captura de pantalla no se mostrarán los gamertags.
+
+
+{*T3*}CÓMO SE JUEGA: BLOQUEAR NIVELES{*ETW*}{*B*}{*B*}
+Si detectas contenido ofensivo en algún nivel, puedes añadirlo a la lista de niveles bloqueados.
+Si quieres hacerlo, accede al menú de pausa y pulsa {*CONTROLLER_VK_RB*} para seleccionar el mensaje de información sobre herramientas Bloquear nivel.
+Si en un momento posterior quieres unirte a este nivel, recibirás una notificación de que se encuentra en la lista de niveles bloqueados y tendrás la opción de eliminarlo de la lista y continuarlo, o dejarlo bloqueado.
+
+{*T3*}CÓMO SE JUEGA: MODO CREATIVO{*ETW*}{*B*}{*B*}
+La interfaz de modo Creativo del juego permite mover cualquier objeto del juego al inventario del jugador sin tener que extraerlo o crearlo.
+Los objetos del inventario del jugador no se eliminan cuando se colocan o se usan en el mundo, lo que permite al jugador centrarse en la construcción más que en la recolección de recursos.{*B*}
+Si creas, cargas o guardas un mundo en el modo Creativo, ese mundo tendrá deshabilitado los logros y las actualizaciones de marcador, aunque después lo cargues en el modo Supervivencia.{*B*}
+Para volar en el modo Creativo, pulsa {*CONTROLLER_ACTION_JUMP*} dos veces con rapidez. Para dejar de volar, repite la acción. Para volar más rápido, pulsa{*CONTROLLER_ACTION_MOVE*} dos veces en una sucesión rápida mientras vuelas.
+En modo de vuelo, puedes mantener pulsado{*CONTROLLER_ACTION_JUMP*} para subir y{*CONTROLLER_ACTION_SNEAK*} para bajar, o usa{*CONTROLLER_ACTION_DPAD_UP*} para subir, {*CONTROLLER_ACTION_DPAD_DOWN*} para bajar,
+{*CONTROLLER_ACTION_DPAD_LEFT*} para ir a la izquierda y {*CONTROLLER_ACTION_DPAD_RIGHT*} para ir a la derecha.
+
+{*T3*}CÓMO SE JUEGA: OPCIONES DE HOST Y DE JUGADOR{*ETW*}{*B*}{*B*}
+
+{*T1*}Opciones de juego{*ETW*}{*B*}
+Al cargar o crear un mundo, pulsa el botón "Más opciones" para entrar en un menú donde podrás tener más control sobre tu juego.{*B*}{*B*}
+
+ {*T2*}Jugador contra jugador{*ETW*}{*B*}
+ Si está habilitada, los jugadores pueden causar daño a otros jugadores. Esta opción solo afecta al modo Supervivencia.{*B*}{*B*}
+
+ {*T2*}Confiar en jugadores{*ETW*}{*B*}
+ Si está deshabilitada, los jugadores que se unen al juego tienen restringidas sus acciones. No pueden extraer ni usar objetos, colocar bloques, usar puertas ni interruptores, usar contenedores, atacar a jugadores o atacar a animales. Las opciones de un jugador determinado se pueden cambiar en el menú de juego.{*B*}{*B*}
+
+ {*T2*}El fuego se propaga{*ETW*}{*B*}
+ Si está habilitada, el fuego se puede propagar a los bloques inflamables cercanos. Esta opción también se puede cambiar dentro del juego.{*B*}{*B*}
+
+ {*T2*}La dinamita explota{*ETW*}{*B*}
+ Si está habilitada, la dinamita explota cuando se detona. Esta opción también se puede cambiar dentro del juego.{*B*}{*B*}
+
+ {*T2*}Privilegios de host{*ETW*}{*B*}
+ Si está habilitada, el host puede activar su habilidad para volar, deshabilitar la extenuación y hacerse invisible desde el menú de juego. Esta opción deshabilita los logros y las actualizaciones del marcador de este mundo cuando se juega y si se vuelve a cargar después de guardarlo con esta opción activada.{*B*}{*B*}
+
+{*T1*}Opciones de generación del mundo{*ETW*}{*B*}
+Cuando se crea un mundo existen opciones adicionales.{*B*}{*B*}
+
+ {*T2*}Genera estructuras{*ETW*}{*B*}
+ Si está habilitada, se generarán estructuras como aldeas y fortalezas en el mundo.{*B*}{*B*}
+
+ {*T2*}Mundo superplano{*ETW*}{*B*}
+ Si está habilitada, se generará un mundo completamente plano en el mundo superior y en el mundo inferior.{*B*}{*B*}
+
+ {*T2*}Cofre de bonificación{*ETW*}{*B*}
+ Si está habilitada, se creará un cofre con objetos útiles cerca del punto de generación del jugador.{*B*}{*B*}
+
+ {*T2*}Restablecer mundo inferior{*ETW*}{*B*}
+ Si está habilitada, el mundo inferior se regenará. Esta opción te será útil si tienes una partida guardada en la que no aparecían fortalezas del mundo inferior.{*B*}{*B*}
+
+ {*T1*}Opciones del juego{*ETW*}{*B*}
+ Dentro del juego se pueden acceder a varias opciones pulsando BACK para mostrar el menú del juego.{*B*}{*B*}
+
+ {*T2*}Opciones de host{*ETW*}{*B*}
+ El host y cualquier jugador establecido como moderador pueden acceder al menú "Opciones de host". En este menú se puede habilitar y deshabilitar la propagación del fuego y la explosión de dinamita.{*B*}{*B*}
+
+{*T1*}Opciones del jugador{*ETW*}{*B*}
+Para modificar los privilegios de un jugador, selecciona su nombre y pulsa{*CONTROLLER_VK_A*} para mostrar el menú de privilegios donde podrás usar las siguientes opciones.{*B*}{*B*}
+
+ {*T2*}Puede construir y extraer{*ETW*}{*B*}
+ Esta opción solo está disponible cuando "Confiar en jugadores" está desactivada. Cuando esta opción está habilitada, el jugador puede interaccionar con el mundo de forma normal. Cuando está deshabilitada el jugador no puede colocar ni destruir bloques ni interaccionar con muchos objetos y bloques.{*B*}{*B*}
+
+ {*T2*}Puede usar puertas e interruptores{*ETW*}{*B*}
+ Esta opción solo está disponible cuando "Confiar en jugadores" está desactivada. Cuando esta opción está deshabilitada, el jugador no puede usar puertas e interruptores.{*B*}{*B*}
+
+ {*T2*}Puede abrir contenedores{*ETW*}{*B*}
+ Esta opción solo está disponible cuando "Confiar en jugadores" está desactivada. Cuando esta opción está deshabilitada, el jugador no puede abrir contenedores, como por ejemplo cofres.{*B*}{*B*}
+
+ {*T2*}Puede atacar a jugadores{*ETW*}{*B*}
+ Esta opción solo está disponible cuando "Confiar en jugadores" está desactivada. Cuando esta opción está deshabilitada, el jugador no puede causar daños a otros jugadores.{*B*}{*B*}
+
+ {*T2*}Puede atacar a animales{*ETW*}{*B*}
+ Esta opción solo está disponible cuando "Confiar en jugadores" está desactivada. Cuando esta opción está deshabilitada, el jugador no puede causar daños a los animales.{*B*}{*B*}
+
+ {*T2*}Moderador{*ETW*}{*B*}
+ Cuando esta opción está habilitada, el jugador puede cambiar los privilegios de otros jugadores (excepto los del host) si "Confiar en jugadores" está desactivada, expulsar jugadores, y activar y desactivar "El fuego se propaga" y "La dinamita explota".{*B*}{*B*}
+
+ {*T2*}Expulsar jugador{*ETW*}{*B*}
+ En el caso de jugadores que no estén en la misma Consola Xbox 360 que el host, si se selecciona esta opción se expulsará al jugador de la partida y a cualquier otro jugador en la misma Consola Xbox 360. El jugador no podrá volver a unirse al juego hasta que se reinicie.{*B*}{*B*}
+
+{*T1*}Opciones de host{*ETW*}{*B*}
+Si "Privilegios de host" está habilitado, el host podrá modificar algunos privilegios para sí mismo. Para modificar los privilegios de un jugador, selecciona su nombre y pulsa{*CONTROLLER_VK_A*} para mostrar el menú de privilegios donde podrás usar las siguientes opciones.{*B*}{*B*}
+
+ {*T2*}Puede volar{*ETW*}{*B*}
+ Cuando esta opción está habilitada, el jugador puede volar. Esta opción solo es relevante en el modo Supervivencia, ya que el vuelo está habilitado para todos los jugadores en el modo Creativo.{*B*}{*B*}
+
+ {*T2*}Desactivar extenuación{*ETW*}{*B*}
+ Esta opción solo afecta al modo Supervivencia. Si se habilita, las actividades físicas (caminar/correr/saltar, etc.) no disminuyen la barra de comida. Sin embargo, si el jugador resulta herido, la barra de comida disminuye lentamente mientras el jugador se cura.{*B*}{*B*}
+
+ {*T2*}Invisible{*ETW*}{*B*}
+ Cuando esta opción está habilitada, el jugador es invisible para otros jugadores y es invulnerable.{*B*}{*B*}
+
+ {*T2*}Puede teletransportarse{*ETW*}{*B*}
+ Permite al jugador desplazarse o desplazar a otros hasta la posición de otros jugadores en el mundo.
+
+
+Página siguiente
+
+Página anterior
+
+Fundamentos
+
+HUD
+
+Inventario
+
+Cofres
+
+Creando
+
+Horno
+
+Dispensador
+
+Cuidar animales
+
+Reproducción de animales
+
+Destilación
+
+Hechizo
+
+Portal inferior
+
+Multijugador
+
+Compartir capturas de pantalla
+
+Bloquear niveles
+
+Modo Creativo
+
+Opciones de host y de jugador
+
+Comerciar
+
+Yunque
+
+El Fin
+
+{*T3*}CÓMO SE JUEGA: EL FIN{*ETW*}{*B*}{*B*}
+El Fin es otra dimensión del juego, a la que se llega a través de un portal final activo. Puedes encontrar el portal final en una fortaleza, en lo más profundo del mundo superior.{*B*}
+Para activar el portal final, debes colocar un ojo de Ender en la estructura de un portal final que no tenga uno.{*B*}
+Una vez que el portal esté activo, introdúcete en él para ir a El fin.{*B*}{*B*}
+En El Fin te encontrarás con el dragón de Ender, un feroz y poderoso enemigo, además de muchos finalizadores, por lo que tendrás que estar preparado para la batalla antes de ir allí.{*B*}{*B*}
+En lo alto de ocho pilares obsidianos, verás cristales finalizadores que el dragón de Ender usa para curarse,
+así que lo primero que deberás hacer será destruirlos todos.{*B*}
+Podrás alcanzar a los primeros con flechas, pero los últimos están en una jaula con barrotes de hierro. Tendrás que subir a lo alto para llegar a ellos.{*B*}{*B*}
+Mientras lo haces, el dragón de Ender volará hacia ti y te atacará escupiendo bolas de ácido de Ender.{*B*}
+Si te acercas al nido de huevos en el centro de los pilares, el dragón de Ender irá hacia abajo y te atacará. ¡Tienes que aprovechar ese momento para hacerle daño!{*B*}
+Esquiva su aliento de ácido y apunta a los ojos del dragón de Ender para hacerle el máximo daño posible. Si puedes, ¡tráete amigos a El Fin para que te echen una mano en la batalla!{*B*}{*B*}
+En cuanto hayas llegado a El Fin, tus amigos podrán ver la ubicación del portal final dentro de la fortaleza en sus mapas,
+para que puedan unirse a ti con facilidad.
+
+
+Correr
+
+Novedades
+
+
+{*T3*}Cambios e incorporaciones{*ETW*}{*B*}{*B*}
+- Se han añadido nuevos objetos: esmeralda, mena de esmeralda, bloque de esmeralda, cofre de Ender, gancho de cable trampa, manzana dorada hechizada, yunque, maceta, paredes de adoquines, paredes de adoquines musgosas, pintura de Wither, patata, patata asada, patata venenosa, zanahoria, zanahoria dorada, palo y zanahoria,
+pastel de calabaza, poción de visión nocturna, poción de invisibilidad, cuarzo del mundo inferior, mena de cuarzo del mundo inferior, bloque de cuarzo, losa de cuarzo, escaleras de cuarzo, bloque de cuarzo cincelado, pilar de cuarzo, libro hechizado, alfombra.{*B*}
+- Se han añadido nuevas recetas de arenisca lisa y arenisca cincelada.{*B*}
+- Se han añadido nuevos enemigos: aldeanos zombis.{*B*}
+- Se han añadido nuevas funciones de generación de terrenos: templos del desierto, aldeas del desierto, templos de la jungla.{*B*}
+- Se ha añadido la función de comerciar con los aldeanos.{*B*}
+- Se ha añadido la interfaz del yunque.{*B*}
+- Se ha añadido la posibilidad de teñir las armaduras de cuero.{*B*}
+- Se ha añadido la posibilidad de teñir los collares de los lobos.{*B*}
+- Se puede montar sobre un cerdo y controlarlo con un palo y una zanahoria.{*B*}
+- Actualización del contenido de los cofres de bonificación con más objetos.{*B*}
+- Se ha modificado la colocación de medios bloques y otros bloques en medios bloques.{*B*}
+- Se ha modificado la colocación de las escaleras y las losas del revés.{*B*}
+- Se han añadido diferentes profesiones de aldeanos.{*B*}
+- Los aldeanos generados a partir de un huevo generador desempeñarán profesiones al azar.{*B*}
+- Se ha añadido la posibilidad de colocar troncos de lado.{*B*}
+- Los hornos pueden usar herramientas de madera como combustible.{*B*}
+- Los paneles de hielo y cristal se pueden recoger mediante herramientas hechizadas con el toque sedoso.{*B*}
+- Los botones de madera y los platos de presión de madera se pueden activar mediante flechas.{*B*}
+- Los enemigos del mundo inferior pueden acceder al mundo superior mediante portales.{*B*}
+- Los Creepers y las arañas son agresivos con el último jugador que los toque.{*B*}
+- Los enemigos en el modo Creativo vuelven a ser neutrales tras un breve periodo de tiempo.{*B*}
+- Se ha eliminado el derribo durante el ahogamiento.{*B*}
+- Las puertas muestran daños cuando los zombis las rompen.{*B*}
+- El hielo se derrite en el mundo inferior.{*B*}
+- Los calderos se llenan cuando están bajo la lluvia.{*B*}
+- Los pistones tardan el doble en actualizarse.{*B*}
+- Los cerdos dejan caer la silla de montar al morir (si llevan una).{*B*}
+- Se ha modificado el color del cielo en El Fin.{*B*}
+- Se puede colocar una cuerda (para los cables trampa).{*B*}
+- La lluvia cae entre las hojas.{*B*}
+- Se pueden colocar palancas en la parte inferior de los bloques.{*B*}
+- La dinamita provoca daños variables en función del nivel de dificultad.{*B*}
+- Se han modificado las recetas de libros.{*B*}
+- Los barcos rompen los nenúfares y no al contrario.{*B*}
+- Los cerdos dejan caer más chuletas.{*B*}
+- La generación de limos es menor en los mundos superplanos.{*B*}
+- Los Creepers causan daños variables en función del nivel de dificultad; más derribo.{*B*}
+- Se ha corregido el error que hacía que los Finalizadores no abrieran sus mandíbulas.{*B*}
+- Se ha añadido el teletransporte de jugadores (usando el menú {*BACK_BUTTON*} del juego).{*B*}
+- Se han añadido nuevas opciones de host que permiten a los jugadores remotos volar, volverse invisibles e invulnerables.{*B*}
+- Se han añadido nuevos tutoriales al mundo tutorial sobre nuevos objetos y funciones.{*B*}
+- Se han actualizado las posiciones de los cofres de discos en el mundo tutorial.{*B*}
+
+
+{*ETB*}¡Hola otra vez! Quizá no te hayas dado cuenta, pero hemos actualizado Minecraft.{*B*}{*B*}
+Hay un montón de novedades con las que lo pasarás en grande con tus amigos. A continuación te detallamos las más destacadas:{*B*}{*B*}
+{*T1*}Nuevos objetos{*ETB*}: esmeralda, mena de esmeralda, bloque de esmeralda, cofre de Ender, gancho de cable trampa, manzana dorada hechizada, yunque, maceta, paredes de adoquines, paredes de adoquines musgosas, pintura de Wither, patata, patata asada, patata venenosa, zanahoria, zanahoria dorada, palo y zanahoria,
+Pastel de calabaza, poción de visión nocturna, poción de invisibilidad, cuarzo del mundo inferior, mena de cuarzo del mundo inferior, bloque de cuarzo, losa de cuarzo, escaleras de cuarzo, bloque de cuarzo cincelado, pilar de cuarzo,, libro hechizado, alfombra.{*B*}{*B*}
+ {*T1*}Nuevos enemigos{*ETB*}: aldeanos zombis.{*B*}{*B*}
+{*T1*}Nuevas funciones{*ETB*}: ¡comercia con los aldeanos, repara o hechiza armas y herramientas con el yunque, guarda objetos en un cofre de Ender o controla a un cerdo mientras montas sobre él usando un palo y una zanahoria!{*B*}{*B*}
+{*T1*}Nuevos minitutoriales{*ETB*} – ¡Aprende a utilizar las nuevas funciones con el mundo tutorial!{*B*}{*B*}
+{*T1*}Nuevos "huevos de Pascua"{*ETB*} – Hemos cambiado de sitio todos los discos secretos del mundo tutorial. ¡Intenta encontrarlos de nuevo!{*B*}{*B*}
+
+
+Causa más daño que a mano.
+
+Se usa para excavar tierra, hierba, arena, gravilla y nieve más rápido que a mano. La pala es necesaria para excavar bolas de nieve.
+
+Necesario para perforar bloques de piedra y mineral.
+
+Se usa para picar bloques de madera más rápido que a mano.
+
+Se usa para labrar tierra y hierba y prepararla para el cultivo.
+
+Las puertas de madera se activan usándolas, golpeándolas o con piedra rojiza.
+
+Las puertas de hierro solo se pueden abrir con piedra rojiza, botones o interruptores.
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+Cuando lo lleva puesto, el usuario recibe 1 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 3 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 2 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 1 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 2 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 5 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 4 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 1 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 2 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 6 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 5 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 2 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 2 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 5 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 3 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 1 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 3 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 8 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 6 de armadura.
+
+Cuando lo lleva puesto, el usuario recibe 3 de armadura.
+
+Un lingote brillante que se usa para crear herramientas de este material. Se crea fundiendo mineral en un horno.
+
+Permite convertir lingotes, gemas o tintes en bloques utilizables. Se puede usar como bloque de construcción de precio elevado o como almacenamiento compacto del mineral.
+
+Se usa para aplicar una descarga eléctrica cuando un jugador, un animal o un monstruo lo pisa. Los platos de presión de madera también se activan soltando algo sobre ellos.
+
+Se usan en escaleras compactas.
+
+Se usan para crear escaleras largas. Si colocas dos losas, una sobre otra, crearás un bloque de losa doble de tamaño normal.
+
+Se usan para crear escaleras largas. Si colocas dos losas, una sobre otra, crearás un bloque de losa doble de tamaño normal.
+
+Se usa para crear luz. Las antorchas derriten la nieve y el hielo.
+
+Se usan como material de construcción y se pueden convertir en muchas cosas. Se crean a partir de cualquier tipo de madera.
+
+Se usa como material de construcción. No recibe la influencia de la gravedad, como la arena normal.
+
+Se usa como material de construcción.
+
+Se usa para crear antorchas, flechas, señales, escaleras, vallas y mangos para armas y herramientas.
+
+Se usa para avanzar en el tiempo, desde cualquier momento de la noche hasta la mañana, si todos los jugadores del mundo están en cama; además cambia el punto de generación del jugador.
+Los colores de la cama siempre son los mismos, independientemente del color de la lana que se use.
+
+Te permite crear una selección más variada de objetos que la creación normal.
+
+Te permite fundir mineral, crear carbón y cristal y cocinar pescado y chuletas.
+
+Almacena bloques y objetos en su interior. Coloca dos cofres uno junto a otro para crear un cofre más grande con el doble de capacidad.
+
+Se usa como barrera sobre la que no se puede saltar. Cuenta como 1,5 bloques de alto para jugadores, animales y monstruos, pero solo 1 bloque de alto para otros bloques.
+
+Se usa para escalar en vertical.
+
+Se activan mediante el uso, el golpe o la piedra rojiza. Funcionan como puertas normales, pero consisten en un bloque tras otro y se apoyan en el suelo.
+
+Muestra el texto introducido por ti o por otros jugadores.
+
+Se usa para crear luz más brillante que la de las antorchas. Derrite la nieve y el hielo y se puede usar bajo el agua.
+
+Se usa para provocar explosiones. Se activa después de su colocación golpeándola con el objeto eslabón y pedernal o con una descarga eléctrica.
+
+Se usa para contener estofado de champiñón. Te quedas el cuenco después de comer el estofado.
+
+Se usa para contener y transportar agua, lava y leche.
+
+Se usa para contener y transportar agua.
+
+Se usa para contener y transportar lava.
+
+Se usa para contener y transportar leche.
+
+Se usa para crear fuego, detonar dinamita y abrir un portal después de construirlo.
+
+Se usa para pescar peces.
+
+Muestra la posición del sol y de la luna.
+
+Indica tu punto de inicio.
+
+Cuando se porta, crea una imagen del área explorada. Se puede usar para buscar rutas.
+
+Permite ataques a distancia con flechas.
+
+Se usa como munición para arcos.
+
+Restablece 2,5{*ICON_SHANK_01*}.
+
+Restablece 1{*ICON_SHANK_01*}. Se puede usar 6 veces.
+
+Restablece 1{*ICON_SHANK_01*}.
+
+Restablece 1{*ICON_SHANK_01*}.
+
+Restablece 3{*ICON_SHANK_01*}.
+
+Restablece 1{*ICON_SHANK_01*}o se puede cocinar en el horno. Si comes esto puede que te envenene.
+
+Restablece 3{*ICON_SHANK_01*}. Se crea cocinando pollo crudo en el horno.
+
+Restablece 1.5{*ICON_SHANK_01*}, o se puede cocinar en el horno.
+
+Restablece {*ICON_SHANK_01*}. Se crea cocinando ternera cruda en el horno.
+
+Restablece 1.5{*ICON_SHANK_01*}, o se puede cocinar en el horno.
+
+Restablece 4{*ICON_SHANK_01*}. Se crea cocinando una chuleta de cerdo cruda en el horno.
+
+Restablece 1{*ICON_SHANK_01*}o se puede cocinar en el horno. Se puede dar de comer a un ocelote para domarlo.
+
+Restablece 2,5{*ICON_SHANK_01*}. Se crea cocinando pescado crudo en el horno.
+
+Restablece 2{*ICON_SHANK_01*} y se puede convertir en una manzana de oro.
+
+Restablece 2{*ICON_SHANK_01*} y regenera la salud durante 4 segundos. Creada con una manzana y pepitas de oro.
+
+Restablece 2{*ICON_SHANK_01*}. Si comes esto puede que te envenene.
+
+Se usa en la receta de pasteles como ingrediente para destilar pociones.
+
+Se activa y desactiva para aplicar una descarga eléctrica. Se mantiene en estado activado o desactivado hasta que se vuelve a pulsar.
+
+Da una descarga eléctrica
+constante o puede usarse
+de receptor/transmisor si
+se conecta al lateral de
+un bloque. También puede
+usarse de iluminación
+de nivel bajo.
+
+
+Se usa en circuitos de piedra rojiza como repetidor, retardador o diodo.
+
+Se usa para enviar una descarga eléctrica cuando se pulsa. Se mantiene activo durante un segundo aproximadamente antes de volver a cerrarse.
+
+Se usa para sujetar y arrojar objetos en orden aleatorio cuando recibe una descarga de piedra rojiza.
+
+Reproduce una nota cuando se activa. Si lo golpeas cambiarás el tono de la nota. Colócalo en la parte superior de los bloques para cambiar el tipo de instrumento.
+
+Se usa para conducir vagonetas.
+
+Cuando se activa, acelera las vagonetas que pasan por encima. Si no está activado, las vagonetas se detendrán.
+
+Funciona como un plato de presión, envía una señal de piedra rojiza cuando se activa, pero solo una vagoneta puede hacerlo.
+
+Se usa para transportarte a ti, a un animal o a un monstruo por raíles.
+
+Se usa para transportar mercancías por los raíles.
+
+Se mueve por raíles y empujará a otras vagonetas si se le añade hulla.
+
+Se usa para desplazarte por el agua más rápido que nadando.
+
+Se obtiene de las ovejas y se puede colorear con tinte.
+
+Se usa como material de construcción y se puede colorear con tinte. Esta receta no es muy recomendable porque la lana se puede obtener con facilidad de las ovejas.
+
+Se usa como tinte para crear lana negra.
+
+Se usa como tinte para crear lana verde.
+
+Se usa como tinte para crear lana marrón, como ingrediente para cocinar galletas o para cultivar granos de cacao.
+
+Se usa como tinte para crear lana plateada.
+
+Se usa como tinte para crear lana amarilla.
+
+Se usa como tinte para crear lana roja.
+
+Se usa para que las cosechas, árboles, hierba alta, champiñones gigantes y flores crezcan al instante, y se puede usar en recetas de tinte.
+
+Se usa como tinte para crear lana rosa.
+
+Se usa como tinte para crear lana naranja.
+
+Se usa como tinte para crear lana lima.
+
+Se usa como tinte para crear lana gris.
+
+Se usa como tinte para
+crear lana gris clara.
+
+(Nota: También se obtiene
+combinando tinte gris con
+carne de hueso, lo que
+permite crear 4 tintes
+gris claro de cada bolsa
+de tinta en vez de 3).
+
+Se usa como tinte para crear lana azul clara.
+
+Se usa como tinte para crear lana cian.
+
+Se usa como tinte para crear lana púrpura.
+
+Se usa como tinte para crear lana magenta.
+
+Se usa como tinte para crear lana azul.
+
+Reproduce discos.
+
+Úsalos para crear herramientas, armas o armaduras sólidas.
+
+Se usa para crear luz más brillante que la de las antorchas. Derrite la nieve y el hielo y se puede usar bajo el agua.
+
+Se usa para crear libros y mapas.
+
+Se usa para crear una estantería o para hechizar libros.
+
+Permite crear hechizos más potentes cuando se coloca alrededor de una mesa de hechizos.
+
+Se usa como elemento decorativo.
+
+Se puede perforar con un pico de hierro o un objeto mejor y después fundir en un horno para producir lingotes de oro.
+
+Se puede perforar con un pico de piedra o un objeto mejor y después fundir en un horno para producir lingotes de hierro.
+
+Se puede perforar con un pico para extraer hulla.
+
+Se puede perforar con un pico de piedra o un objeto mejor para extraer lapislázuli.
+
+Se puede perforar con un pico de hierro o un objeto mejor para extraer diamantes.
+
+Se puede perforar con un pico de hierro o un objeto mejor para extraer polvo de piedra rojiza.
+
+Se puede perforar con un pico para extraer guijarros.
+
+Se recoge con una pala. Se puede emplear en la construcción.
+
+Se puede plantar y con el tiempo se convierte en un árbol.
+
+No se puede romper.
+
+Incendia cualquier cosa que toque. Se puede recoger en un cubo.
+
+Se recoge con una pala. Se puede fundir y convertir en cristal en el horno. Recibe la influencia de la gravedad si no hay ninguna otra casilla por debajo.
+
+Se recoge con una pala. A veces produce pedernal cuando se excava. Recibe la influencia de la gravedad si no hay ninguna otra casilla por debajo.
+
+Se pica con un hacha y se puede convertir en tablones o usar como combustible.
+
+Se crea en el horno al fundir arena. Se puede usar en la construcción, pero si intentas perforarlo se romperá.
+
+Se extrae de la piedra con un pico. Se puede usar para construir un horno o herramientas de madera.
+
+Se cuecen con arcilla en un horno.
+
+Se cuece y convierte en ladrillo en un horno.
+
+Cuando se rompe suelta bolas de arcilla que se pueden cocer y convertir en ladrillos en un horno.
+
+Una forma compacta de almacenar bolas de nieve.
+
+Se puede excavar con una pala para crear bolas de nieve.
+
+A veces produce semillas de trigo cuando se rompe.
+
+Se puede convertir en tinte.
+
+Se puede convertir con un cuenco para hacer estofado.
+
+Solo se puede perforar con un pico de diamante. Se produce al combinar agua con lava inmóvil y se usa para construir portales.
+
+Genera monstruos en el mundo.
+
+Se coloca en el suelo para portar una descarga eléctrica. Cuando se destila con una poción, aumenta la duración del efecto.
+
+Cuando están completamente maduras, las cosechas se pueden recoger para obtener trigo.
+
+Terreno que se ha preparado para plantar semillas.
+
+Se pueden cocinar en un horno para crear tinte verde.
+
+Se pueden usar para crear azúcar.
+
+Se puede vestir como casco o convertir en antorcha para crear un fuego fatuo. También es el ingrediente principal del pastel de calabaza.
+
+Si se enciende, arderá para siempre.
+
+Ralentiza el movimiento de cualquier cosa que camina sobre ella.
+
+Si te colocas en el portal podrás trasladarte del mundo superior al inferior y viceversa.
+
+Se usa como combustible en un horno o se trabaja para crear una antorcha.
+
+Se consigue al matar una araña y se puede convertir en arco o caña de pescar, así como colocarlo en el suelo para crear un cable trampa.
+
+Se consigue al matar una gallina y se puede convertir en una flecha.
+
+Se consigue al matar un Creeper y se puede convertir en dinamita o utilizar como ingrediente para destilar pociones.
+
+Se puede plantar en una granja para hacer crecer los cultivos. ¡Asegúrate de que hay luz suficiente para que las semillas crezcan!
+
+Se cosecha de los cultivos y se puede usar para crear objetos de comida.
+
+Se obtiene al excavar gravilla y se puede usar para crear chisquero de pedernal.
+
+Si se usa con un cerdo te permite montarlo. Para controlarlo, usa un palo y una zanahoria.
+
+Se obtiene al excavar nieve y se puede arrojar.
+
+Se obtiene al matar una vaca y se puede convertir en armadura o utilizarlo para fabricar libros.
+
+Se obtiene al matar un limo y se usa como ingrediente para destilar pociones o para crear pistones adhesivos.
+
+Las gallinas lo sueltan al azar y se puede convertir en alimentos.
+
+Se obtiene al perforar una piedra brillante y se puede trabajar para crear bloques de piedra brillante otra vez o destilarlo en una poción para aumentar la potencia del efecto.
+
+Se obtiene al matar un esqueleto. Se puede convertir en carne de hueso. Se puede dar de comer a un lobo para domarlo.
+
+Se obtiene al hacer que un esqueleto mate un Creeper. Se puede reproducir en un tocadiscos.
+
+Extingue el fuego y ayuda a que crezcan las cosechas. Se puede recoger en un cubo.
+
+Si se rompen, a veces sueltan un arbolillo que se puede plantar para cultivar un árbol.
+
+Presente en las mazmorras, se puede emplear en la construcción y en la decoración.
+
+Se usa para obtener lana de las ovejas y cosechar bloques de hoja.
+
+Cuando se activa (por medio de un botón, una palanca, un plato de presión, una antorcha de piedra rojiza o piedra rojiza con cualquiera de ellos), se extiende un pistón y empuja los bloques.
+
+Cuando se activa (por medio de un botón, una palanca, un plato de presión, una antorcha de piedra rojiza o piedra rojiza con cualquiera de ellos), se extiende un pistón y empuja los bloques. Cuando se repliega, tira hacia atrás del bloque que está en contacto con la parte extendida del pistón.
+
+Creado con bloques de piedra y se encuentra normalmente en fortalezas.
+
+Se usa como barrera, igual que las vallas.
+
+Es como una puerta, pero se usa principalmente con vallas.
+
+Se puede crear a partir de rodajas de melón.
+
+Bloques transparentes que se pueden usar como alternativa a los bloques de cristal.
+
+Se puede plantar para cultivar calabazas.
+
+Se puede plantar para cultivar melones.
+
+Lo suelta el Finalizador cuando muere. Cuando se lanza, el jugador se teletransporta a la posición donde cae la perla finalizadora y pierde parte de la salud.
+
+Un bloque de tierra con hierba encima. Se recoge con una pala y se puede usar para construir.
+
+Se puede emplear en la construcción y en la decoración.
+
+Ralentiza el movimiento cuando pasas sobre él. Se puede destruir con unas tijeras para recoger la cuerda.
+
+Genera un pez plateado cuando se destruye. También puede generar un pez plateado si está cerca de otro al que están atacando.
+
+Una vez colocada, va creciendo con el paso del tiempo. Se puede recoger con tijeras. Puede usarse como una escalera para trepar por ella.
+
+Cuando se pasa sobre él se resbala. Se convierte en agua cuando se destruye si está sobre otro bloque. Se derrite si está cerca de una fuente de luz o si se coloca en el mundo inferior.
+
+Se puede usar como elemento decorativo.
+
+Se usa para destilar pociones y para localizar fortalezas. Lo sueltan las llamas, que se suelen encontrar en las fortalezas del mundo inferior o cerca.
+
+Se usa para destilar pociones. Lo sueltan los espectros cuando mueren.
+
+Lo sueltan los porqueros zombis cuando mueren. Los porqueros zombis se encuentran en el mundo inferior. Se usa como ingrediente para destilar pociones.
+
+Se usa para destilar pociones. Crecen de forma natural en las fortalezas del mundo inferior, donde pueden encontrarse. También se pueden plantar en arena de alma.
+
+Cuando se usa puede tener diversos efectos, dependiendo de con qué se use.
+
+Se puede llenar con agua y se usa como ingrediente inicial para crear una poción en el puesto de destilado.
+
+Es una comida venenosa y un objeto de destilado. Aparece cuando el jugador mata una araña o una araña de las cuevas.
+
+Se usa para destilar pociones, principalmente para crear pociones con efecto negativo.
+
+Se usa para destilar pociones o se combina con otros objetos para crear el ojo de Ender o crema de magma.
+
+Se usa para destilar pociones.
+
+Se usa para crear pociones y pociones de salpicadura.
+
+Se puede llenar con agua de lluvia o con un cubo y usar para llenar de agua las botellas de cristal.
+
+Cuando se lanza indica la dirección a un portal final. Si se colocan doce de ellos en estructuras de portal final, se activará el portal final.
+
+Se usa para destilar pociones.
+
+Son similares a los bloques de hierba pero fantásticos para cultivar champiñones.
+
+Flota en el agua y se puede caminar sobre él.
+
+Se usa para construir fortalezas del mundo inferior. Inmume a las bolas de fuego del espectro.
+
+Se usa en las fortalezas del mundo inferior.
+
+Se encuentra en las fortalezas del mundo inferior si suelta verrugas del mundo inferior cuando se rompe.
+
+Esto permite a los jugadores hechizar espadas, picos, hachas, palas, arcos y armaduras utilizando puntos de experiencia del jugador.
+
+Se puede activar con doce ojos de Ender y permite al jugador viajar a la dimensión El Fin.
+
+Se usa para crear un portal final.
+
+Un tipo de bloque que se encuentra en El Fin. Tiene una resistencia a la ráfaga alta, así que es útil para utilizar en la construcción.
+
+Este bloque se crea al derrotar al dragón en El Fin.
+
+Cuando se lanza, suelta orbes de experiencia que aumentan tus puntos de experiencia al recogerlos.
+
+Útil para prender fuego a las cosas o para causar incendios de forma indiscriminada cuando se arroja mediante un dispensador.
+
+Son similares a una vitrina y mostrarán el objeto o bloque situado encima.
+
+Al lanzarse, puede generar una criatura del tipo indicado.
+
+Se usan para crear escaleras largas. Si colocas dos losas, una sobre otra, crearás un bloque de losa doble de tamaño normal.
+
+Se usan para crear escaleras largas. Si colocas dos losas, una sobre otra, crearás un bloque de losa doble de tamaño normal.
+
+Creado al fundir un bloque inferior en un horno. Puedeted by smelting Netherrack in a furnace. Se puede convertir en bloques de ladrillo del mundo inferior.
+
+Al recibir energía, emiten luz.
+
+Puede plantarse en la granja para cosechar granos de cacao.
+
+Las cabezas de enemigos pueden colocarse como decoración o llevarse como una máscara en el espacio de casco.
+
+Calamar
+
+Suelta bolsas de tinta cuando muere.
+
+Vaca
+
+Suelta cuero cuando muere. Se puede ordeñar con un cubo.
+
+Oveja
+
+Suelta lana cuando se esquila (si aún no ha sido esquilada). Se puede teñir para que su lana sea de diferente color.
+
+Gallina
+
+Suelta plumas cuando muere y pone huevos al azar.
+
+Cerdo
+
+Suelta chuletas de cerdo cuando muere. Se puede montar con una silla.
+
+Lobo
+
+Es dócil hasta que lo atacan, ya que devolverá el ataque. Se puede domar con huesos, lo que ocasionará que el lobo te siga a todas partes y ataque a cualquier cosa que te ataque a ti.
+
+Creeper
+
+¡Explota si te acercas demasiado!
+
+Esqueleto
+
+Te dispara flechas. Suelta flechas cuando muere.
+
+Araña
+
+Te ataca cuando está cerca. Puede escalar muros. Suelta cuerda cuando muere.
+
+Zombi
+
+Te ataca cuando está cerca.
+
+Porquero zombi
+
+En principio es manso, pero si atacas a uno atacará en grupo.
+
+Ghast
+
+Te dispara bolas de fuego que explotan al hacer contacto.
+
+Limo
+
+Escupe limos más pequeños cuando recibe daños.
+
+Enderman
+
+Te ataca si lo miras. También puede mover bloques de sitio.
+
+Pez plateado
+
+Atrae a los peces plateados ocultos cercanos al atacarlo. Se oculta en bloques de piedra.
+
+Araña de las cuevas
+
+Tiene una picadura venenosa.
+
+Champiñaca
+
+Crea estofado de champiñón si se usa en un cuenco. Suelta champiñones y se convierte en una vaca normal cuando se esquila.
+
+Gólem de nieve
+
+Los jugadores pueden crear el gólem de nieve con bloques de nieve y una calabaza. Lanza bolas de nieve a los enemigos de su creador.
+
+Dragón de Ender
+
+Un dragón negro y grande que se encuentra en El Fin.
+
+Llama
+
+Son enemigos que se encuentran en el mundo inferior, principalmente dentro de las fortalezas del mundo inferior. Sueltan barras de llama cuando mueren.
+
+Cubo de magma
+
+Se encuentran en el mundo inferior. Son parecidos a los limos y se fragmentan en versiones más pequeñas cuando mueren.
+
+Aldeano
+
+Ocelote
+
+Se encuentran en junglas. Pueden domesticarse dándoles de comer pescado crudo. Tienes que dejar se te acerque el ocelote, aunque ten cuidado: cualquier movimiento repentino le espantará.
+
+Gólem de hierro
+
+Aparecen en aldeas para protegerlas y pueden crearse usando bloques de hierro y calabazas.
+
+Explosives Animator
+
+Concept Artist
+
+Number Crunching and Statistics
+
+Bully Coordinator
+
+Original Design and Code by
+
+Project Manager/Producer
+
+Rest of Mojang Office
+
+Lead game programmer Minecraft PC
+
+Ninja Coder
+
+CEO
+
+White Collar Worker
+
+Customer Support
+
+Office DJ
+
+Designer/Programmer Minecraft - Pocket Edition
+
+Developer
+
+Chief Architect
+
+Art Developer
+
+Game Crafter
+
+Director of Fun
+
+Music and Sounds
+
+Programming
+
+Art
+
+QA
+
+Executive Producer
+
+Lead Producer
+
+Producer
+
+Test Lead
+
+Lead Tester
+
+Design Team
+
+Development Team
+
+Release Management
+
+Director, XBLA Publishing
+
+Business Development
+
+Portfolio Director
+
+Product Manager
+
+Marketing
+
+ Community Manager
+
+Europe Localization Team
+
+Redmond Localization Team
+
+Asia Localization Team
+
+User Research Team
+
+MGS Central Teams
+
+Milestone Acceptance Tester
+
+Special Thanks
+
+Test Manager
+
+Senior Test Lead
+
+SDET
+
+Project STE
+
+Additional STE
+
+Test Associates
+
+Jon Kågström
+
+Tobias Möllstam
+
+Risë Lugo
+
+Espada de madera
+
+Espada de piedra
+
+Espada de hierro
+
+Espada de diamante
+
+Espada de oro
+
+Pala de madera
+
+Pala de piedra
+
+Pala de hierro
+
+Pala de diamante
+
+Pala de oro
+
+Pico de madera
+
+Pico de piedra
+
+Pico de hierro
+
+Pico de diamante
+
+Pico de oro
+
+Hacha de madera
+
+Hacha de piedra
+
+Hacha de hierro
+
+Hacha de diamante
+
+Hacha de oro
+
+Azada de madera
+
+Azada de piedra
+
+Azada de hierro
+
+Azada de diamante
+
+Azada de oro
+
+Puerta de madera
+
+Puerta de hierro
+
+Casco de malla
+
+Peto de malla
+
+Mallas de malla
+
+Botas de malla
+
+Gorra de cuero
+
+Casco de hierro
+
+Casco de diamante
+
+Casco de oro
+
+Túnica de cuero
+
+Coraza de hierro
+
+Coraza de diamante
+
+Coraza de oro
+
+Pantalones de cuero
+
+Mallas de hierro
+
+Mallas de diamante
+
+Mallas de oro
+
+Botas de cuero
+
+Botas de hierro
+
+Botas de diamante
+
+Botas de oro
+
+Lingote de hierro
+
+Lingote de oro
+
+Cubo
+
+Cubo de agua
+
+Cubo de lava
+
+Chisquero de pedernal
+
+Manzana
+
+Arco
+
+Flecha
+
+Hulla
+
+Carbón
+
+Diamante
+
+Palo
+
+Cuenco
+
+Estofado de champiñón
+
+Cuerda
+
+Pluma
+
+Pólvora
+
+Semillas de trigo
+
+Trigo
+
+Pan
+
+Pedernal
+
+Chuleta de cerdo cruda
+
+Chuleta de cerdo cocinada
+
+Pintura
+
+Manzana de oro
+
+Señal
+
+Vagoneta
+
+Silla
+
+Piedra rojiza
+
+Bola de nieve
+
+Barco
+
+Cuero
+
+Cubo de leche
+
+Ladrillo
+
+Arcilla
+
+Cañas de azúcar
+
+Papel
+
+Libro
+
+Repugnante
+
+Vagoneta con cofre
+
+Vagoneta con horno
+
+Huevo
+
+Brújula
+
+Caña de pescar
+
+Reloj
+
+Polvo p. brillante
+
+Pescado crudo
+
+Pescado cocinado
+
+Polvo de tinte
+
+Bolsa de tinta
+
+Rojo rosa
+
+Verde cactus
+
+Granos de cacao
+
+Lapislázuli
+
+Tinte púrpura
+
+Tinte cian
+
+Tinte gris claro
+
+Tinte gris
+
+Tinte rosa
+
+Tinte lima
+
+Amarillo amargo
+
+Tinte azul claro
+
+Tinte magenta
+
+Tinte naranja
+
+Carne de hueso
+
+Hueso
+
+Azúcar
+
+Pastel
+
+Cama
+
+Repetidor de p. rojiza
+
+Galleta
+
+Mapa
+
+Disco: "13"
+
+Disco: "gato"
+
+Disco: "bloques"
+
+Disco: "gorjeo"
+
+Disco: "lejos"
+
+Disco: "galería"
+
+Disco: "mellohi"
+
+Disco: "establo"
+
+Disco: "strad"
+
+Disco: "pabellón"
+
+Disco: "11"
+
+Disco: "estamos"
+
+Tijeras
+
+Semillas de calabaza
+
+Semillas de melón
+
+Pollo crudo
+
+Pollo cocinado
+
+Ternera cruda
+
+Filete
+
+Carne podrida
+
+Ender Pearl
+
+Rodaja de melón
+
+Barra de llama
+
+Lágrima de espectro
+
+Pepita de oro
+
+Verruga del mundo inferior
+
+{*splash*}{*prefix*}Poción {*postfix*}
+
+Botella de cristal
+
+Botella de agua
+
+Ojo de araña
+
+Ojo de araña fermentado
+
+Polvo de llama
+
+Crema de magma
+
+Puesto de destilado
+
+Caldero
+
+Ojo de Ender
+
+Melón resplandeciente
+
+Botella de hechizo
+
+Descarga de fuego
+
+Descarga de fuego (carbón)
+
+Descarga de fuego (hulla)
+
+Estructura de objeto
+
+Generar {*CREATURE*}
+
+Ladrillo del mundo inferior
+
+Calavera
+
+Calavera de esqueleto
+
+Calavera de esqueleto atrofiado
+
+Cabeza de zombi
+
+Cabeza
+
+Cabeza de %s
+
+Cabeza de Creeper
+
+Piedra
+
+Bloque de hierba
+
+Tierra
+
+Guijarro
+
+Tablones de roble
+
+Tablones de abeto
+
+Tablones de abedul
+
+Tablones de la jungla
+
+Arbolillo
+
+Arbolillo de roble
+
+Arbolillo de abeto
+
+Arbolillo de abedul
+
+Arbolillo de la jungla
+
+Lecho de roca
+
+Agua
+
+Lava
+
+Arena
+
+Arenisca
+
+Grava
+
+Mineral de oro
+
+Mineral de hierro
+
+Mineral de hulla
+
+Madera
+
+Madera de roble
+
+Madera de abeto
+
+Madera de abedul
+
+Madera de la jungla
+
+Roble
+
+Abeto
+
+Abedul
+
+Hojas
+
+Hojas de roble
+
+Hojas de abeto
+
+Hojas de abedul
+
+Hojas de la jungla
+
+Esponja
+
+Cristal
+
+Lana
+
+Lana negra
+
+Lana roja
+
+Lana verde
+
+Lana marrón
+
+Lana azul
+
+Lana púrpura
+
+Lana cian
+
+Lana gris claro
+
+Lana gris
+
+Lana rosa
+
+Lana lima
+
+Lana amarilla
+
+Lana azul claro
+
+Lana magenta
+
+Lana naranja
+
+Lana blanca
+
+Flor
+
+Rosa
+
+Champiñón
+
+Bloque de oro
+
+Una manera de almacenar oro de forma compacta.
+
+Una manera de almacenar hierro de forma compacta.
+
+Bloque de hierro
+
+Losa de piedra
+
+Losa de piedra
+
+Losa de arenisca
+
+Losa de roble
+
+Losa de guijarros
+
+Losa de ladrillos
+
+Losa ladr. piedra
+
+Losa de roble
+
+Losa de abeto
+
+Losa de abedul
+
+Losa de madera de la jungla
+
+Losa de ladrillo del mundo inferior
+
+Ladrillos
+
+Dinamita
+
+Estantería
+
+Piedra musgosa
+
+Obsidiana
+
+Antorcha
+
+Antorcha (hulla)
+
+Antorcha (carbón)
+
+Fuego
+
+Generador de monstruos
+
+Escaleras de roble
+
+Cofre
+
+Polvo de piedra rojiza
+
+Mineral de diamante
+
+Bloque de diamante
+
+Una manera de almacenar diamantes de forma compacta.
+
+Mesa de creación
+
+Cultivos
+
+Granja
+
+Horno
+
+Señal
+
+Puerta de madera
+
+Escalera
+
+Raíl
+
+Raíl propulsado
+
+Raíl detector
+
+Escaleras de piedra
+
+Palanca
+
+Plato de presión
+
+Puerta de hierro
+
+Mineral de piedra rojiza
+
+Ant. de piedra rojiza
+
+Botón
+
+Nieve
+
+Hielo
+
+Cactus
+
+Arcilla
+
+Caña de azúcar
+
+Tocadiscos
+
+Valla
+
+Calabaza
+
+Fuego fatuo
+
+Bloque inferior
+
+Arena de alma
+
+Piedra brillante
+
+Portal
+
+Mineral de lapislázuli
+
+Bloque lapislázuli
+
+Una manera de almacenar lapislázuli de forma compacta.
+
+Dispensador
+
+Bloque de nota
+
+Pastel
+
+Cama
+
+Tela
+
+Hierba alta
+
+Arbusto muerto
+
+Diodo
+
+Cofre cerrado
+
+Escotilla
+
+Lana
+
+Pistón
+
+Pistón adhesivo
+
+Bloque de pez plateado
+
+Ladrillos de piedra
+
+Ladrillos de piedra musgosa
+
+Ladrillos de piedra requebrajada
+
+Ladrillos de piedra cincelados
+
+Champiñón
+
+Champiñón
+
+Barras de hierro
+
+Panel de cristal
+
+Melón
+
+Tallo de calabaza
+
+Tallo de melón
+
+Hiedras
+
+Puerta de valla
+
+Escaleras de ladrillo
+
+Esc. ladrillo de piedra
+
+Piedra pez plateado
+
+Guijarro de pez plateado
+
+Ladrillo de piedra de pez plateado
+
+Micelio
+
+Vaina de lila
+
+Ladrillo del mundo inferior
+
+Valla del mundo inferior
+
+Escaleras del mundo inferior
+
+Verruga del mundo inferior
+
+Mesa de hechizos
+
+Puesto de destilado
+
+Caldero
+
+Portal final
+
+Estructura de portal final
+
+Piedra final
+
+Huevo de dragón
+
+Arbusto
+
+Helecho
+
+Escaleras de arenisca
+
+Escaleras de abeto
+
+Escaleras de abedul
+
+Escaleras de madera de la jungla
+
+Lámpara de piedra rojiza
+
+Cacao
+
+Calavera
+
+Controles actuales
+
+Diseño
+
+Movimiento/Correr
+
+Mirar
+
+Pausa
+
+Salto
+
+Saltar/Volar hacia arriba
+
+Inventario
+
+Cambiar objeto
+
+Acción
+
+Usar
+
+Creación
+
+Soltar
+
+Acechar
+
+Acechar/Volar hacia abajo
+
+Cambiar modo de cámara
+
+Jugadores/Invitar
+
+Movimiento (al volar)
+
+Diseño 1
+
+Diseño 2
+
+Diseño 3
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+
]]>
+
+{*B*}Pulsa{*CONTROLLER_VK_A*} para continuar.
+
+{*B*}Pulsa{*CONTROLLER_VK_A*} para comenzar el tutorial.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si crees que ya estás listo para jugar tú solo.
+
+Minecraft es un juego que consiste en colocar bloques para construir cualquier cosa que puedas imaginar.
+De noche salen los monstruos, así que procura construir un refugio antes de que eso suceda.
+
+Usa{*CONTROLLER_ACTION_LOOK*} para mirar hacia arriba, hacia abajo o a tu alrededor.
+
+Usa{*CONTROLLER_ACTION_MOVE*} para moverte.
+
+Para correr, pulsa{*CONTROLLER_ACTION_MOVE*} hacia delante dos veces con rapidez. Mientras mantienes pulsado{*CONTROLLER_ACTION_MOVE*} hacia delante, el personaje seguirá corriendo a menos que te quedes sin tiempo de carrera o sin comida.
+
+Pulsa{*CONTROLLER_ACTION_JUMP*} para saltar.
+
+Mantén pulsado{*CONTROLLER_ACTION_ACTION*} para perforar y picar a mano o con el objeto que sostengas. Quizá tengas que crear una herramienta para perforar algunos bloques...
+
+Mantén pulsado{*CONTROLLER_ACTION_ACTION*} para talar 4 bloques de madera (troncos de árbol).{*B*}Cuando un bloque se rompe, puedes colocarte junto al objeto flotante que aparece para recogerlo y así hacer que salga en tu inventario.
+
+Pulsa{*CONTROLLER_ACTION_CRAFTING*} para abrir la interfaz de creación.
+
+A medida que recojas y crees más objetos, llenarás tu inventario.{*B*}
+ Pulsa{*CONTROLLER_ACTION_INVENTORY*} para abrir el inventario.
+
+Cuando te mueves, extraes o atacas, tu barra de comida se vacía{*ICON_SHANK_01*}. Si corres y saltas en carrera consumes más comida que si caminas y saltas de forma normal.
+
+Si pierdes salud pero tienes una barra de comida con 9 o más{*ICON_SHANK_01*} en ella, la salud se repondrá automáticamente. Si comes se recargará la barra de comida.
+
+Con un objeto de comida en la mano, mantén pulsado{*CONTROLLER_ACTION_USE*} para comerlo y recargar la barra de comida. No puedes comer si la barra de comida está llena.
+
+Tu barra de comida está baja y has perdido salud. Come el filete de tu inventario para recargar tu barra de comida y empezar a curarte.{*ICON*}364{*/ICON*}
+
+La leña que recojas se puede convertir en tablones. Abre la interfaz de creación para crearlos.{*PlanksIcon*}
+
+Si creas mucho, necesitarás repetir la acción muchas veces. Ahora que tienes tablones, hay más objetos que puedes crear. Crea una mesa de creación.{*CraftingTableIcon*}
+
+Para que la recolección de bloques sea más rápida, puedes construir herramientas diseñadas a tal efecto. Algunas herramientas tienen un mando de palo. Crea algunos palos ahora.{*SticksIcon*}
+
+Usa{*CONTROLLER_ACTION_LEFT_SCROLL*} y{*CONTROLLER_ACTION_RIGHT_SCROLL*} para cambiar el objeto que llevas en ese momento.
+
+Utiliza{*CONTROLLER_ACTION_USE*} para usar objetos, interaccionar con ellos y colocarlos. Los objetos colocados se pueden volver a coger perforándolos con la herramienta adecuada.
+
+Para colocar una mesa de creación, selecciónala, apunta donde la quieras y usa{*CONTROLLER_ACTION_USE*}.
+
+Apunta hacia la mesa de creación y pulsa{*CONTROLLER_ACTION_USE*} para abrirla.
+
+Con una pala puedes excavar bloques blandos, como tierra y nieve, más rápido. A medida que recoges más materiales puedes crear herramientas para trabajar más rápido y durante más tiempo. Crea una pala de madera.{*WoodenShovelIcon*}
+
+Con un hacha puedes picar madera y casillas de madera más rápido. A medida que recoges más materiales puedes crear herramientas para trabajar más rápido y durante más tiempo. Crea un hacha de madera.{*WoodenHatchetIcon*}
+
+Con un pico puedes excavar bloques duros, como piedra y mineral, más rápido. A medida que recoges más materiales puedes crear herramientas para trabajar más rápido y durante más tiempo. Crea un pico de madera.{*WoodenPickaxeIcon*}
+
+Abre el contenedor
+
+
+ La noche cae enseguida, y es un momento peligroso para salir sin estar preparado. Puedes crear armadura y armas, pero lo más sensato es disponer de un refugio seguro.
+
+
+
+ Cerca de aquí hay un refugio de minero abandonado que puedes finalizar para mantenerte a salvo por la noche.
+
+
+
+ Para finalizar el refugio tendrás que recoger recursos. Los muros y los tejados se fabrican con cualquier tipo de casilla, pero tendrás que crear una puerta, ventanas e iluminación.
+
+
+Usa tu pico para perforar bloques de piedra. Estos bloques producirán guijarros al perforarlos. Si recoges 8 bloques de guijarro podrás construir un horno. Para llegar a la piedra quizá debas excavar algo de tierra, así que usa una pala para esta tarea.{*StoneIcon*}
+
+Ya has recogido suficientes guijarros para construir un horno. Usa la mesa de creación para construir uno.
+
+Usa{*CONTROLLER_ACTION_USE*} para colocar un horno en el mundo y después ábrelo.
+
+Usa el horno para crear carbón. Si estás esperando a que termine, ¿por qué no empleas ese tiempo en recoger más materiales para finalizar el refugio?
+
+Usa el horno para crear cristal. Si estás esperando a que termine, ¿por qué no empleas ese tiempo en recoger más materiales para finalizar el refugio?
+
+Un buen refugio debe tener una puerta para que puedas entrar y salir con facilidad sin tener que perforar y sustituir los muros. Crea ahora una puerta de madera.{*WoodenDoorIcon*}
+
+Usa{*CONTROLLER_ACTION_USE*} para colocar la puerta. Puedes usar {*CONTROLLER_ACTION_USE*}para abrir y cerrar una puerta de madera en el mundo.
+
+La noche puede ser muy oscura, así que necesitarás iluminación en el refugio si quieres ver. Crea una antorcha con palos y carbón mediante la interfaz de creación.{*TorchIcon*}
+
+
+ Has completado la primera parte del tutorial.
+
+
+
+ {*B*}
+Pulsa{*CONTROLLER_VK_A*} para continuar el tutorial.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si crees que ya estás listo para jugar tú solo.
+
+
+
+ Este es tu inventario. Muestra los objetos que llevas en la mano y los demás objetos que portas. Aquí también aparece tu armadura.
+
+
+{*B*}
+ Pulsa{*CONTROLLER_VK_A*} para continuar.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si ya sabes cómo usar el inventario.
+
+
+
+ Usa{*CONTROLLER_MENU_NAVIGATE*}para mover el foco. Usa{*CONTROLLER_VK_A*}para recoger un objeto señalado con el foco.
+ Si hay más de un objeto, los cogerás todos; también puedes usar{*CONTROLLER_VK_X*}para coger solo la mitad de ellos.
+
+
+
+ Mueve el objeto con el foco hacia otro espacio del inventario y colócalo con{*CONTROLLER_VK_A*}.
+ Si hay varios objetos en el foco, usa{*CONTROLLER_VK_A*} para colocarlos todos o{*CONTROLLER_VK_X*} para colocar solo uno.
+
+
+
+ Si desplazas el foco por fuera del borde de la interfaz con un objeto en él, podrás soltarlo.
+
+
+
+ Si quieres obtener más información sobre un objeto, mueve el foco sobre él y pulsa{*CONTROLLER_VK_RT*} .
+
+
+
+ Pulsa{*CONTROLLER_VK_B*} ahora para salir del inventario.
+
+
+
+ Este es el inventario del modo Creativo. Muestra los objetos que llevas en la mano y los demás objetos que puedes elegir.
+
+
+{*B*}
+ Pulsa{*CONTROLLER_VK_A*} para continuar.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si ya sabes cómo usar el inventario del modo Creativo.
+
+
+
+ Usa{*CONTROLLER_MENU_NAVIGATE*} para mover el foco.
+ En una lista de objetos, usa{*CONTROLLER_VK_A*} para recoger un objeto que esté bajo el foco y usa{*CONTROLLER_VK_Y*} para recoger un montón entero de ese objeto.
+
+
+
+ El foco se desplazará automáticamente sobre un espacio de la fila de uso. Usa{*CONTROLLER_VK_A*} para colocarlo. Después de colocar el objeto, el foco volverá a la lista de objetos y podrás seleccionar otro.
+
+
+
+ Si desplazas el foco por fuera del borde de la interfaz con un objeto en él, podrás soltarlo en el mundo. Para borrar todos los objetos de la barra de selección rápida, pulsa{*CONTROLLER_VK_X*}.
+
+
+
+ Desplázate por las pestañas de tipo de grupo de la parte superior con{*CONTROLLER_VK_LB*} y{*CONTROLLER_VK_RB*} para seleccionar el tipo de grupo del objeto que quieres recoger.
+
+
+
+ Si quieres obtener más información sobre un objeto, mueve el foco sobre él y pulsa{*CONTROLLER_VK_RT*} .
+
+
+
+ Pulsa{*CONTROLLER_VK_B*} ahora para salir del inventario del modo Creativo.
+
+
+
+ Esta es la interfaz de creación. En esta interfaz puedes combinar los objetos que has recogido para crear objetos nuevos.
+
+
+{*B*}
+ Pulsa{*CONTROLLER_VK_A*} para continuar.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si ya sabes cómo crear.
+
+
+{*B*}
+ Pulsa{*CONTROLLER_VK_X*} para mostrar la descripción del objeto.
+
+
+{*B*}
+ Pulsa{*CONTROLLER_VK_X*} para mostrar los ingredientes necesarios para fabricar el objeto actual.
+
+
+{*B*}
+ Pulsa{*CONTROLLER_VK_X*} para mostrar de nuevo el inventario.
+
+
+
+ Desplázate por las pestañas de tipo de grupo de la parte superior con{*CONTROLLER_VK_LB*} y{*CONTROLLER_VK_RB*} para seleccionar el tipo de grupo del objeto que quieres crear; a continuación usa{*CONTROLLER_MENU_NAVIGATE*} para seleccionar el objeto y crearlo.
+
+
+
+ La zona de creación indica los objetos que se necesitan para crear el nuevo objeto. Pulsa{*CONTROLLER_VK_A*} para crear el objeto y colocarlo en tu inventario.
+
+
+
+ Con una mesa de creación puedes crear objetos más grandes. La creación en una mesa se realiza igual que la creación normal, pero dispones de un área de creación mayor que permite una mayor combinación de ingredientes.
+
+
+
+ La parte inferior derecha de la interfaz de creación muestra tu inventario. Aquí puede aparecer también una descripción del objeto seleccionado en ese momento y los ingredientes necesarios para crearlo.
+
+
+
+ Ahora aparece la descripción del objeto seleccionado actualmente. Esta descripción puede darte una idea de la utilidad de ese objeto.
+
+
+
+ Ahora aparece la lista de ingredientes necesarios para crear el objeto actual.
+
+
+La leña que recojas se puede convertir en tablones. Selecciona el icono de tablones y pulsa{*CONTROLLER_VK_A*} para crearlos.{*PlanksIcon*}
+
+
+ Ahora que has construido una mesa de creación, deberías colocarla en el mundo para poder construir una selección mayor de objetos.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} ahora para salir de la interfaz de creación.
+
+
+
+ Pulsa{*CONTROLLER_VK_LB*} y{*CONTROLLER_VK_RB*} para cambiar el tipo de grupo de los objetos que quieres crear. Selecciona el grupo de herramientas.{*ToolsIcon*}
+
+
+
+ Pulsa{*CONTROLLER_VK_LB*} y{*CONTROLLER_VK_RB*} para cambiar el tipo de grupo de los objetos que quieres crear. Selecciona el grupo de estructuras.{*StructuresIcon*}
+
+
+
+ Usa{*CONTROLLER_MENU_NAVIGATE*}para cambiar al objeto que quieres crear. Algunos objetos tienen varias versiones, en función de los materiales utilizados. Selecciona la pala de madera.{*WoodenShovelIcon*}
+
+
+
+ Si creas mucho necesitarás repetir la acción muchas veces. Ahora que tienes tablones, hay más objetos que puedes crear. Usa{*CONTROLLER_MENU_NAVIGATE*}para desplazarte al objeto que quieres crear. Selecciona la mesa de creación.{*CraftingTableIcon*}
+
+
+
+ Con las herramientas que has creado ya estás listo para empezar y podrás recoger varios materiales de forma más eficaz.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} ahora para salir de la interfaz de creación.
+
+
+
+ Hay objetos que no se pueden crear con la mesa de creación, sino que requieren un horno. Crea un horno ahora.{*FurnaceIcon*}
+
+
+
+ Coloca el horno que has creado en el mundo. Te conviene colocarlo en el interior del refugio.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} ahora para salir de la interfaz de creación.
+
+
+
+ Esta es la interfaz del horno. En el horno puedes modificar objetos fundiéndolos. En el horno puedes, por ejemplo, convertir mineral de hierro en lingotes de hierro.
+
+
+{*B*}
+ Pulsa{*CONTROLLER_VK_A*} para continuar.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si ya sabes cómo usar el horno.
+
+
+
+ Tienes que colocar combustible en el espacio de la parte inferior del horno y el objeto que quieres modificar en el espacio superior. El horno se encenderá y empezará a funcionar, y colocará el resultado en el espacio de la parte derecha.
+
+
+
+ Muchos objetos de madera se pueden usar como combustible, pero no todos arden la misma cantidad de tiempo. También es posible descubrir otros objetos en el mundo que funcionen como combustible.
+
+
+
+ Después de fundir los objetos puedes trasladarlos de la zona de producción a tu inventario. Experimenta con distintos ingredientes para comprobar lo que puedes crear.
+
+
+
+ Si usas la madera como ingrediente podrás crear carbón. Coloca combustible en el horno y la madera en el espacio de ingredientes. Puede que el horno tarde un tiempo en crear el carbón, así que puedes aprovechar para hacer alguna otra cosa y volver más tarde a comprobar el progreso.
+
+
+
+ El carbón se puede usar como combustible y convertir en una antorcha con un palo.
+
+
+
+ Si colocas arena en el espacio de ingredientes podrás crear cristal. Crea bloques de cristal para usarlos a modo de ventana en el refugio.
+
+
+
+ Esta es la interfaz de destilado. Se puede usar para crear pociones con efectos diversos.
+
+
+{*B*}
+ Pulsa{*CONTROLLER_VK_A*} para continuar.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si ya sabes cómo usar el puesto de destilado.
+
+
+
+ Para destilar pociones, coloca un ingrediente en la parte superior y una botella de agua o una poción en los espacios inferiores (se pueden destilar hasta 3 a la vez). Cuando se introduce una combinación válida, comienza el destilado y al cabo de poco tiempo se creará una poción.
+
+
+
+ Todas las pociones se empiezan con una botella de agua. La mayoría de pociones se crean usando primero una verruga del mundo inferior para crear una poción rara y requieren como mínimo un ingrediente más para obtener la poción final.
+
+
+
+ Una vez que tengas una poción, podrás modificar sus efectos. Si añades polvo de piedra rojiza, aumentas la duración del efecto, y si añades polvo de piedra brillante su efecto será más potente.
+
+
+
+ Si añades ojo de araña fermentado dañarás la poción y puede que la conviertas en otra con el efecto contrario, y si añades pólvora quizá la conviertas en una poción de salpicadura que se puede lanzar para aplicar su efecto sobre un área cercana.
+
+
+
+ Para crear una poción de resistencia al fuego, primero añade una verruga del mundo inferior a una botella de agua y luego añade crema de magma.
+
+
+
+ Pulsa{*CONTROLLER_VK_B*} ahora para salir de la interfaz de destilación.
+
+
+
+ En esta zona hay un puesto de destilado, un caldero y un cofre lleno de objetos para destilar.
+
+
+{*B*}
+ Pulsa{*CONTROLLER_VK_A*} para obtener más información sobre el destilado y las pociones.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si ya sabes cómo destilar y crear pociones.
+
+
+
+ El primer paso para destilar una poción es crear una botella de agua. Toma una botella de agua del cofre.
+
+
+
+ Puedes llenar una botella de agua con un caldero que tenga agua o con un bloque de agua. Ahora, para llenar la botella de agua, apunta a una fuente de agua y pulsa{*CONTROLLER_ACTION_USE*}.
+
+
+
+ Si un caldero se vacía, puedes rellenarlo con un cubo de agua.
+
+
+
+ Usa el puesto de destilado para crear una poción de resistencia al fuego. Necesitarás una botella de agua, verruga del mundo inferior y crema de magma.
+
+
+
+ Toma una poción en la mano y mantén pulsado{*CONTROLLER_ACTION_USE*} para usarla. Si es una poción normal, bébela y te aplicarás el efecto a ti mismo; si es una poción de salpicadura, la lanzarás y aplicarás el efecto a las criaturas que estén cerca en el momento del impacto.
+ Las pociones de salpicadura se crean añadiendo pólvora a las pociones normales.
+
+
+
+ Usa una poción de resistencia al fuego contigo mismo.
+
+
+ Ahora eres resistente al fuego y a la lava, así que comprueba si puedes acceder a lugares a los que antes no podías.
+
+
+
+ Esta es la interfaz de hechizo, que puedes usar para añadir hechizos a armas, armadura y a algunas herramientas.
+
+
+{*B*}
+ Pulsa{*CONTROLLER_VK_A*} para obtener más información sobre la interfaz de hechizos.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si ya sabes cómo utilizar la interfaz de hechizos.
+
+
+
+ Para hechizar un objeto, primero colócalo en el espacio de hechizado. Las armas, las armaduras y algunas herramientas se pueden hechizar para añadirles efectos especiales, como resistencia mejorada al daño o aumentar el número de objetos que se generan al extraer un bloque.
+
+
+
+ Cuando se coloca un objeto en el espacio de hechizado, los botones de la parte derecha cambian y muestran una selección de hechizos aleatorios.
+
+
+
+ El número que está sobre el botón representa el coste en niveles de experiencia que tiene que aplicar ese hechizo al objeto. Si no tienes un nivel suficiente, el botón no estará activo.
+
+
+
+ Selecciona un hechizo y pulsa{*CONTROLLER_VK_A*} para hechizar el objeto. Con ello se reducirá el nivel de experiencia en función del coste del hechizo.
+
+
+
+ Aunque los hechizos son aleatorios, algunos de los mejores hechizos solo están disponibles cuando tienes el nivel de experiencia adecuado y muchas estanterías alrededor de la mesa de hechizos para aumentar su poder.
+
+
+
+ En esta zona hay una mesa de hechizos y otros objetos que te ayudarán a entender y aprender los hechizos.
+
+
+{*B*}
+ Pulsa {*CONTROLLER_VK_A*} para obtener más información sobre los hechizos.{*B*}
+ Pulsa {*CONTROLLER_VK_B*} si ya sabes cómo utilizar los hechizos.
+
+
+
+ Con una mesa de hechizos podrás añadir efectos especiales, como aumentar el número de objetos que se obtienen al extraer un bloque o mejorar la resistencia al daño de armas, armaduras y algunas herramientas.
+
+
+
+ Coloca estanterías alrededor de la mesa de hechizos para aumentar su poder y acceder a hechizos de nivel superior.
+
+
+
+ Hechizar objetos cuesta niveles de experiencia, que se aumentan al acumular orbes de experiencia. Estos orbes se generan al matar monstruos y animales, extraer mineral, criar nuevos animales, pescar y fundir o cocinar algunos objetos en un horno.
+
+
+
+ También puedes aumentar niveles de experiencia con una botella de hechizo que, una vez arrojada, crea orbes de experiencia donde cae. Después podrás recoger esos orbes.
+
+
+
+ En los cofres de esta zona encontrarás objetos hechizados, botellas de hechizos y objetos que aún están sin hechizar para que experimentes con ellos en la mesa de hechizos.
+
+
+
+ Ahora vas subido en una vagoneta. Para salir de ella, apunta el cursor hacia ella y pulsa{*CONTROLLER_ACTION_USE*}.{*MinecartIcon*}
+
+
+{*B*}
+ Pulsa{*CONTROLLER_VK_A*} para obtener más información sobre las vagonetas.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si ya sabes cómo funcionan las vagonetas.
+
+
+
+ Las vagonetas van sobre raíles. También puedes crear una vagoneta propulsada con un horno y una vagoneta con un cofre en ella.
+ {*RailIcon*}
+
+
+
+ También puedes crear raíles propulsados, que absorben energía de las antorchas y circuitos de piedra rojiza para acelerar las vagonetas. Se pueden conectar a interruptores, palancas y platos de presión para crear sistemas complejos.
+ {*PoweredRailIcon*}
+
+
+
+ Ahora navegas en un barco. Para salir de él, apunta el cursor hacia él y pulsa{*CONTROLLER_ACTION_USE*}.{*BoatIcon*}
+
+
+
+ {*B*}
+ Pulsa{*CONTROLLER_VK_A*} para obtener más información sobre los barcos.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si ya sabes cómo funcionan los barcos.
+
+
+
+ Los barcos te permiten viajar más deprisa por el agua. Usa{*CONTROLLER_ACTION_MOVE*} y{*CONTROLLER_ACTION_LOOK*} para pilotarlo.
+ {*BoatIcon*}
+
+
+
+ Ahora usas una caña de pescar. Pulsa{*CONTROLLER_ACTION_USE*} para usarla.{*FishingRodIcon*}
+
+
+
+ {*B*}
+ Pulsa{*CONTROLLER_VK_A*} para obtener más información sobre la pesca.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si ya sabes cómo pescar.
+
+
+
+ Pulsa{*CONTROLLER_ACTION_USE*} para lanzar la caña y empezar a pescar. Pulsa{*CONTROLLER_ACTION_USE*} de nuevo para recoger sedal.
+ {*FishingRodIcon*}
+
+
+
+ Si esperas a que el corcho se hunda por debajo de la superficie del agua antes de recoger, podrás pescar un pez. Los peces se pueden comer crudos o cocinados en un horno para recuperar salud.
+ {*FishIcon*}
+
+
+
+ Al igual que muchas otras herramientas, la caña tiene muchos usos distintos. Sus usos no se limitan a pescar peces. Puedes experimentar con ella e investigar qué se puede pescar o activar...
+ {*FishingRodIcon*}
+
+
+
+ Esto es una cama. Pulsa{*CONTROLLER_ACTION_USE*} y apunta hacia ella de noche para dormir y despertar por la mañana.{*ICON*}355{*/ICON*}
+
+
+
+ {*B*}
+ Pulsa{*CONTROLLER_VK_A*} para obtener más información sobre las camas.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si ya sabes cómo funcionan las camas.
+
+
+
+ Las camas deben colocarse en un lugar seguro y bien iluminado para que los monstruos no te despierten en mitad de la noche. Después de usar una cama, si mueres te regenerarás en ella.
+ {*ICON*}355{*/ICON*}
+
+
+
+ Si hay más jugadores en tu juego, todos deben estar en una cama al mismo tiempo para poder dormir.
+ {*ICON*}355{*/ICON*}
+
+
+
+ En esta área hallarás circuitos sencillos de pistones y piedra rojiza, así como un cofre con más objetos para ampliar estos circuitos.
+
+
+
+ {*B*}
+ Pulsa{*CONTROLLER_VK_A*} para obtener más información sobre los circuitos de piedra rojiza y los pistones.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si ya tienes información sobre los circuitos de piedra rojiza y los pistones.
+
+
+
+ Las palancas, botones, platos de presión y antorchas de piedra rojiza proporcionan energía a los circuitos, bien acoplándolos directamente al objeto que quieres activar o conectándolos con polvo de piedra rojiza.
+
+
+
+ La posición y dirección en que colocas la fuente de energía puede cambiar la forma en que afecta a los bloques que la rodean. Por ejemplo, una antorcha de piedra rojiza en un lado de un bloque se puede desactivar si el bloque recibe energía de otra fuente.
+
+
+
+ El polvo de piedra rojiza se consigue al extraer mineral de piedra rojiza con un pico hecho de hierro, diamante u oro. Puedes usarlo para proporcionar energía a un máximo de 15 bloques, y se puede desplazar hacia arriba o hacia abajo un bloque de altura.
+ {*ICON*}331{*/ICON*}
+
+
+
+ Los repetidores de piedra rojiza se usan para ampliar la distancia a la que se puede transportar la energía o para colocar un retardo en un circuito.
+ {*ICON*}356{*/ICON*}
+
+
+
+ Al recibir energía, los pistones se extienden y empujan hasta 12 bloques. Cuando se repliegan, los pistones adhesivos pueden tirar de bloques de casi cualquier tipo.
+ {*ICON*}33{*/ICON*}
+
+
+
+ En el cofre de esta área encontrarás componentes para fabricar circuitos con pistones. Prueba a usar o completar los circuitos de esta área o coloca los tuyos propios. Fuera del área de tutorial encontrarás más ejemplos.
+
+
+
+ ¡En esta área hay un portal al mundo inferior!
+
+
+
+ {*B*}
+ Pulsa{*CONTROLLER_VK_A*} para obtener más información sobre los portales y el mundo inferior.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si ya conoces los portales y el mundo inferior.
+
+
+
+ Los portales se crean colocando obsidiana en una estructura de cuatro bloques de ancho y cinco de alto. No se necesitan bloques de esquina.
+
+
+
+ Para activar el portal inferior, prende fuego a los bloques de obsidiana del interior de la estructura con eslabón y pedernal. Los portales se pueden desactivar si se rompe la estructura, si se produce una explosión cerca y si fluye un líquido a través de ellos.
+
+
+
+ Para usar un portal inferior, colócate en su interior. La pantalla se pondrá púrpura y se reproducirá un sonido. Al cabo de unos segundos, te transportarás a otra dimensión.
+
+
+
+ El mundo inferior es un lugar peligroso, repleto de lava, pero puede recoger un bloque inferior, que arde para siempre una vez que se enciende, y piedra brillante que genera luz.
+
+
+
+ El mundo inferior sirve para desplazarte con rapidez por el mundo superior. Una distancia de un bloque en el mundo inferior equivale a desplazarte 3 bloques en el mundo superior.
+
+
+
+ Ahora estás en el modo Creativo.
+
+
+
+ {*B*}
+ Pulsa{*CONTROLLER_VK_A*} para obtener más información sobre el modo Creativo.{*B*}
+ Pulsa{*CONTROLLER_VK_B*}si ya sabes cómo funciona el modo Creativo.
+
+
+En el modo Creativo posees un número infinito de los objetos y bloques disponibles, puedes destruir bloques con un clic y sin herramientas, eres invulnerable y puedes volar.
+
+Pulsa{*CONTROLLER_ACTION_JUMP*} dos veces con rapidez para volar. Para dejar de volar, repite la acción. Para volar más rápido, pulsa{*CONTROLLER_ACTION_MOVE*} dos veces en una sucesión rápida mientras vuelas.
+En el modo de vuelo, mantén pulsado{*CONTROLLER_ACTION_JUMP*} para moverte hacia arriba y{*CONTROLLER_ACTION_SNEAK*} para moverte hacia abajo, o usa el mando D para moverte hacia arriba, hacia abajo, hacia la izquierda o hacia la derecha.
+
+Pulsa{*CONTROLLER_ACTION_CRAFTING*} para abrir la interfaz del inventario creativo.
+
+Para continuar, cruza al otro lado de este agujero.
+
+Has completado el tutorial del modo creativo.
+
+
+ En esta área se ha colocado una granja. Cultivar en la granja te permite crear una fuente renovable de comida y otros objetos.
+
+
+
+ {*B*}
+ Pulsa{*CONTROLLER_VK_A*} para obtener más información sobre los cultivos.{*B*}
+ Pulsa{*CONTROLLER_VK_B*}si ya sabes cómo funcionan los cultivos.
+
+
+El trigo, las calabazas y los melones se cultivan a partir de semillas. Las semillas de trigo se obtienen al romper hierba alta o al cosechar trigo, y las semillas de calabaza y melón se consiguen a partir de calabazas y melones respectivamente.
+
+Antes de plantar semillas, debes convertir los bloques de tierra en tierra de cultivo por medio de una azada. Una fuente cercana de agua te ayudará a mantener la tierra de cultivo hidratada y hará que los cultivos crezcan más rápido, además de mantener la zona iluminada.
+
+El trigo pasa por distintas fases durante su crecimiento. Cuando aparece más oscuro es que está listo para la cosecha.{*ICON*}59:7{*/ICON*}
+
+Las calabazas y los melones también necesitan un bloque cerca de donde hayas plantado la semilla para que el fruto crezca cuando el tallo se haya desarrollado por completo.
+
+La caña de azúcar debe plantarse en un bloque de hierba, tierra o arena que esté junto a un bloque de agua. Cortar un bloque de caña de azúcar provocará que todos los bloques que estén sobre él caigan.{*ICON*}83{*/ICON*}
+
+Los cactus deben plantarse en arena y crecerán hasta tres bloques de alto. Al igual que con la caña de azúcar, si se destruye el bloque más bajo podrás recoger los bloques que estén sobre él.{*ICON*}81{*/ICON*}
+
+Los champiñones deben plantarse en una zona con luz tenue y se extenderán a los bloques de luz tenue cercanos.{*ICON*}39{*/ICON*}
+
+La carne de hueso se puede usar para germinar cultivos hasta su estado de mayor crecimiento o cultivar champiñones hasta que se hagan gigantes.{*ICON*}351:15{*/ICON*}
+
+Has completado el tutorial de los cultivos.
+
+
+ En esta área se han guardado animales en corrales. Puedes hacer que los animales se reproduzcan para crear crías de sí mismos.
+
+
+
+ {*B*}
+ Pulsa {*CONTROLLER_VK_A*} para obtener más información sobre la reproducción de animales.{*B*}
+ Pulsa {*CONTROLLER_VK_B*} si ya sabes cómo funciona la reproducción de animales.
+
+
+Para que los animales se reproduzcan, tendrás que alimentarlos con la comida adecuada para que entren en el "modo Amor".
+
+Si alimentas con trigo a las vacas, champiñacas u ovejas, con zanahorias a los cerdos, con semillas de trigo o verrugas del mundo inferior a los pollos, o con cualquier tipo de carne a los lobos, estos animales empezarán a buscar a otros animales de la misma especie que también estén en el modo Amor.
+
+Cuando dos animales de la misma especie se encuentran, y ambos están en el modo Amor, se besarán durante unos segundos y luego aparecerá una cría. La cría seguirá a sus padres durante un tiempo antes de convertirse en un animal adulto.
+
+Después de estar en el modo Amor los animales no podrán volver a él durante cinco minutos como mínimo.
+
+Algunos animales te seguirán si tienes su comida en la mano. Así te será más fácil agrupar animales para hacer que se reproduzcan.{*ICON*}296{*/ICON*}
+
+
+ Los lobos salvajes se pueden domesticar dándoles huesos. Una vez domesticados, aparecerán corazones de amor a su alrededor. Los lobos mansos seguirán al jugador y lo defenderán si no reciben la orden de quedarse sentados.
+
+
+Has completado el tutorial de reproducción de animales.
+
+
+ En esta zona hay algunas calabazas y bloques para crear un gólem de nieve y otro de hierro.
+
+
+
+ {*B*}
+ Pulsa{*CONTROLLER_VK_A*} para obtener más información sobre los gólems.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si ya sabes cómo funcionan los gólems.
+
+
+Los gólems se crean colocando una calabaza encima de un montón de bloques.
+
+Los gólems de nieve se crean con dos bloques de nieve, uno sobre el otro, y encima una calabaza. Estos gólems lanzan bolas de nieve a tus enemigos.
+
+Los gólems de hierro se crean con cuatro bloques de hierro colocados como muestra el modelo y con una calabaza encima del bloque central. Estos gólems atacan a tus enemigos.
+
+Los gólems de hierro aparecen en las aldeas para protegerlas, y te atacarán si atacas a los aldeanos.
+
+No puedes salir de esta área hasta que completes el tutorial.
+
+Cada herramienta funciona mejor con distintos materiales. Deberías usar una pala para perforar materiales blandos como tierra y arena.
+
+Cada herramienta funciona mejor con distintos materiales. Deberías usar un hacha para cortar troncos de árboles.
+
+Cada herramienta funciona mejor con distintos materiales. Deberías usar un pico para perforar piedra y mineral. Quizá debas fabricar tu pico con mejores materiales para obtener recursos de algunos bloques.
+
+Hay herramientas que son mejores para atacar enemigos. Plantéate usar una espada para atacar.
+
+Consejo: mantén pulsado {*CONTROLLER_ACTION_ACTION*}para perforar y picar a mano o con el objeto que sostengas. Quizá tengas que crear una herramienta para perforar algunos bloques...
+
+La herramienta que usas está dañada. Cada vez que usas una herramienta le causarás daños y con el tiempo se romperá. La barra de colores que está debajo del objeto en el inventario muestra el estado de daños actual.
+
+Mantén pulsado{*CONTROLLER_ACTION_JUMP*} para nadar.
+
+En esta área hay una vagoneta en una pista. Para subir a una vagoneta, apunta el cursor hacia ella y puls{*CONTROLLER_ACTION_USE*}. Usa{*CONTROLLER_ACTION_USE*} sobre el botón para que la vagoneta se mueva.
+
+En el cofre que está junto al río hay un barco. Para usar el barco, apunta el cursor al agua y pulsa{*CONTROLLER_ACTION_USE*}. Usa{*CONTROLLER_ACTION_USE*} mientras apuntas al barco para subir a él.
+
+En el cofre que está junto al estanque hay una caña de pescar. Coge la caña del cofre y selecciónala para que sea el objeto que quieres llevar en la mano para usarla.
+
+¡Este mecanismo de pistones más avanzado crea un puente autorreparable! Pulsa el botón para activarlo e investiga la forma en que los componentes interaccionan para averiguar su funcionamiento.
+
+Si desplazas el foco por fuera del borde de la interfaz con un objeto en él, podrás soltarlo.
+
+No tienes todos los ingredientes necesarios para crear este objeto. El cuadro de la parte inferior izquierda muestra los ingredientes necesarios para crearlo.
+
+
+ ¡Enhorabuena! Has completado el tutorial. El tiempo del juego transcurre ahora a velocidad normal, ¡y no falta mucho para la noche y para que salgan los monstruos! ¡Acaba el refugio!
+
+
+{*EXIT_PICTURE*} Cuando estés dispuesto a seguir explorando, hay una escalera en esta zona, cerca del refugio del minero, que conduce a un pequeño castillo.
+
+Recordatorio:
+
+
]]>
+
+Se han añadido nuevas características en la última versión del juego, como áreas nuevas en el tutorial.
+
+{*B*}Pulsa{*CONTROLLER_VK_A*} para jugar el tutorial de forma normal.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} para omitir el tutorial principal.
+
+En esta área encontrarás otras áreas configuradas para que aprendas el funcionamiento de la pesca, los barcos y la piedra rojiza.
+
+Fuera de esta área encontrarás ejemplos de edificios, cultivos, vagonetas y pistas, hechizos, destilación, intercambios comerciales, herrería y mucho más.
+
+
+ La barra de comida se ha agotado hasta un nivel a partir del cual ya no te puedes curar.
+
+
+
+ {*B*}
+ Pulsa{*CONTROLLER_VK_A*} para obtener más información sobre la barra de comida y cómo comer.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si ya tienes información sobre la barra de comida y cómo comer.
+
+
+Seleccionar
+
+Usar
+
+Atrás
+
+Salir
+
+Cancelar
+
+Cancelar unión
+
+Seleccionar disp. de alm.
+
+Cambiar disp. de alm.
+
+Actualizar juegos en línea
+
+Juegos en grupo
+
+Todos los juegos
+
+Cambiar grupo
+
+Mostrar inventario
+
+Mostrar descripción
+
+Mostrar ingredientes
+
+Creación
+
+Crear
+
+Coger/colocar
+
+Coger
+
+Coger todo
+
+Coger la mitad
+
+Colocar
+
+Colocar todo
+
+Colocar uno
+
+Soltar
+
+Soltar todo
+
+Soltar uno
+
+Cambiar
+
+Movimiento rápido
+
+Borrar selección rápida
+
+?
+
+Compartir en Facebook
+
+Cambiar filtro
+
+Ver tarjeta de jugador
+
+Ver perfil de jugador
+
+Enviar solicitud de amigo
+
+Avanzar página
+
+Retroceder página
+
+Siguiente
+
+Anterior
+
+Expulsar jugador
+
+Teñir
+
+Recoger
+
+Alimentar
+
+Domesticar
+
+Curar
+
+Sentarse
+
+Sígueme
+
+Expulsar
+
+Vacío
+
+Silla
+
+Colocar
+
+Golpear
+
+Leche
+
+Recoger
+
+Comer
+
+Dormir
+
+Despertar
+
+Jugar
+
+Montar
+
+Navegar
+
+Crecer
+
+Nadar
+
+Abrir
+
+Cambiar tono
+
+Detonar
+
+Leer
+
+Colgar
+
+Arrojar
+
+Plantar
+
+Labrar
+
+Cosechar
+
+Continuar
+
+Desbloquear juego completo
+
+Borrar juego guardado
+
+Borrar
+
+Opciones
+
+Invitar a Xbox Live Party
+
+Invitar a amigos
+
+Aceptar
+
+Tijera
+
+Bloquear nivel
+
+Seleccionar aspecto
+
+Poner en marcha
+
+Desplazar
+
+Instalar versión completa
+
+Instalar versión de prueba
+
+Instalar
+
+Resinstalar
+
+Opc. de guardado
+
+Ejecutar comando
+
+Creativo
+
+Mover ingrediente
+
+Mover combustible
+
+Herramienta Mover
+
+Mover armadura
+
+Mover arma
+
+Equipar
+
+Retirar
+
+Soltar
+
+Privilegios
+
+Bloque
+
+Retroceder página
+
+Avanzar página
+
+Modo Amor
+
+Beber
+
+Rotar
+
+Ocultar
+
+Cargar part. para Xbox One
+
+Eliminar todos los espacios
+
+Subir partida guardada para Xbox One
+
+Aceptar
+
+Cancelar
+
+Tienda de Minecraft
+
+¿Seguro que quieres salir del juego actual y unirte al nuevo? Se perderán todos los progresos no guardados.
+
+Salir del juego
+
+Guardar juego
+
+Salir sin guardar
+
+¿Seguro que quieres sobrescribir los archivos de guardado anteriores de este mundo con su versión actual?
+
+¿Seguro que quieres salir sin guardar? ¡Perderás todos los progresos en este mundo!
+
+Iniciar juego
+
+Si creas, cargas o guardas un mundo en el modo Creativo, ese mundo tendrá deshabilitado los logros y las actualizaciones de marcador, aunque después lo cargues en el modo Supervivencia. ¿Seguro que quieres continuar?
+
+Este mundo se ha guardado en el modo Creativo y tiene deshabilitados los logros y las actualizaciones de marcador. ¿Seguro que quieres continuar?
+
+Este mundo se ha guardado en el modo Creativo y tiene deshabilitados los logros y las actualizaciones de marcador.
+
+Si creas, cargas o guardas un mundo con los privilegios de host habilitados, ese mundo tendrá deshabilitado los logros y las actualizaciones de marcador, aunque después lo cargues con esas opciones deshabilitadas. ¿Seguro que quieres continuar?
+
+Archivo dañado
+
+El archivo de guardado está dañado. ¿Quieres borrarlo?
+
+¿Seguro que quieres salir al menú principal y desconectar a todos los jugadores del juego? Se perderán todos los progresos no guardados.
+
+Salir y guardar
+
+Salir sin guardar
+
+¿Seguro que quieres salir al menú principal? Se perderán todos los progresos no guardados.
+
+¿Seguro que quieres salir al menú principal? ¡Se perderán tus progresos!
+
+Crear nuevo mundo
+
+Jugar tutorial
+
+Tutorial
+
+Dar nombre al mundo
+
+Escribe un nombre para tu mundo.
+
+Introduce la semilla para la generación del mundo.
+
+Cargar mundo guardado
+
+Pulsa START para unirte al juego.
+
+Saliendo del juego
+
+Se ha producido un error. Saliendo al menú principal.
+
+Error de conexión
+
+Se ha perdido la conexión
+
+Se ha perdido la conexión con el servidor. Saliendo al menú principal.
+
+Se ha perdido la conexión con Xbox Live. Saliendo al menú principal.
+
+Se ha perdido la conexión con Xbox Live.
+
+Desconectado por el servidor.
+
+Has sido expulsado del juego.
+
+Has sido expulsado del juego por volar.
+
+El intento de conexión ha tardado demasiado.
+
+El servidor está lleno.
+
+El host ha salido del juego.
+
+No puedes unirte a este juego porque no tienes ningún amigo en él.
+
+No puedes unirte a este juego porque el host te ha expulsado anteriormente.
+
+No puedes unirte a este juego porque el jugador al que quieres unirte usa una versión más antigua.
+
+No puedes unirte a este juego porque el jugador al que quieres unirte usa una versión más antigua.
+
+Nuevo mundo
+
+¡Premio desbloqueado!
+
+¡Hurra! ¡Has obtenido una imagen de jugador de Steve, de Minecraft!
+
+¡Hurra! ¡Has obtenido una imagen de jugador de un Creeper!
+
+¡Hurra! ¡Has obtenido un objeto de avatar: una camiseta de Minecraft: Xbox 360 Edition!
+Ve a la Interfaz para ponerle la camiseta a tu avatar.
+
+¡Hurra! ¡Has obtenido un objeto de avatar: un reloj de Minecraft: Xbox 360 Edition!
+Ve a la Interfaz para ponerle el reloj a tu avatar.
+
+¡Hurra! ¡Has obtenido un objeto de avatar: una gorra de béisbol de Creeper!
+Ve a la Interfaz para ponerle la gorra a tu avatar.
+
+¡Hurra! ¡Has obtenido el tema de Minecraft: Xbox 360 Edition!
+Ve a la Interfaz para seleccionar este tema.
+
+Desbloquear juego completo
+
+Estás jugando la versión de prueba, pero necesitarás el juego completo para guardar tu juego.
+¿Quieres desbloquear el juego completo?
+
+Esta es la versión de prueba de Minecraft: Xbox 360 Edition. Si tuvieras el juego completo, ¡habrías conseguido un logro!
+¿Te gustaría desbloquear el juego completo?
+
+Esta es la versión de prueba de Minecraft: Xbox 360 Edition. Si tuvieras el juego completo, ¡habrías conseguido un premio de avatar!
+¿Te gustaría desbloquear el juego completo?
+
+Esta es la versión de prueba de Minecraft: Xbox 360 Edition. Si tuvieras el juego completo, ¡habrías conseguido una imagen de jugador!
+¿Te gustaría desbloquear el juego completo?
+
+Esta es la versión de prueba de Minecraft: Xbox 360 Edition. Si tuvieras el juego completo, ¡habrías conseguido un tema!
+¿Te gustaría desbloquear el juego completo?
+
+Esta es la versión de prueba de Minecraft: Xbox 360 Edition. Necesitas la versión completa para aceptar esta invitación.
+¿Quieres desbloquear la versión completa del juego?
+
+Los jugadores invitados no pueden desbloquear el juego completo. Inicia sesión con un ID de usuario de Xbox Live.
+
+Espera
+
+No hay resultados
+
+Filtro:
+
+Amigos
+
+Mi puntuación
+
+Total
+
+Entradas:
+
+Clasif.
+
+Gamertag
+
+Preparando para guardar nivel
+
+Preparando fragmento...
+
+Finalizando...
+
+Construyendo terreno
+
+Simulando mundo durante un instante
+
+Inicializando servidor
+
+Generando zona de generación
+
+Cargando zona de generación
+
+Entrando en el mundo inferior
+
+Saliendo del mundo inferior
+
+Regenerando
+
+Generando nivel
+
+Cargando nivel
+
+Guardando jugadores
+
+Conectando al host
+
+Descargando terreno
+
+Cambiando a juego sin conexión
+
+Espera mientras el host guarda el juego.
+
+Entrando en El FIN
+
+Saliendo de El FIN
+
+Buscando semilla para el generador de mundos
+
+Esta cama está ocupada.
+
+Solo puedes dormir por la noche.
+
+%s está en cama durmiendo. Para avanzar al amanecer, todos los jugadores deben dormir en camas a la vez.
+
+¡Tu casa original ha desaparecido o está obstruida!
+
+Ahora no puedes descansar, hay monstruos cerca.
+
+Estás en cama durmiendo. Para avanzar al amanecer, todos los jugadores deben dormir en camas a la vez.
+
+Herramientas y armas
+
+Armas
+
+Comida
+
+Estructuras
+
+Armadura
+
+Mecanismos
+
+Transporte
+
+Decoraciones
+
+Construir bloques
+
+Piedra rojiza y transporte
+
+Varios
+
+Destilación
+
+Destilado
+
+Herramientas, armas y armadura
+
+Materiales
+
+Sesión cerrada
+
+Has vuelto a la pantalla de título porque tu perfil de jugador ha cerrado la sesión.
+
+Dificultad
+
+Música
+
+Sonido
+
+Gamma
+
+Sensibilidad del juego
+
+Sensibilidad de la interfaz
+
+Pacífico
+
+Fácil
+
+Normal
+
+Difícil
+
+En este modo, el jugador recupera la salud con el paso del tiempo y no hay enemigos en el entorno.
+
+En este modo, el entorno genera enemigos, pero causarán menos daño al jugador que en el modo normal.
+
+En este modo, el entorno genera enemigos que infligirán al jugador una cantidad de daño normal.
+
+En este modo, el entorno genera enemigos que infligirán al jugador una cantidad de daño elevada. ¡Ten cuidado también con los Creepers, ya que no es probable que cancelen su ataque explosivo cuando te alejes de ellos!
+
+Límite de tiempo alcanzado
+
+Has jugado a la versión de prueba de Minecraft: Xbox 360 Edition durante la cantidad máxima de tiempo permitida. Para continuar divirtiéndote, ¿quieres desbloquear el juego completo?
+
+Juego completo
+
+No te has podido unir al juego y no quedan más espacios.
+
+Introducir texto de señal
+
+Introduce una línea de texto para tu señal.
+
+Introducir título
+
+Introduce un título para tu publicación.
+
+Introducir subtítulo
+
+Introduce un subtítulo para tu publicación.
+
+Introducir descripción
+
+Introduce una descripción para tu publicación.
+
+Inventario
+
+Ingredientes
+
+Puesto de destilado
+
+Cofre
+
+Hechizar
+
+Horno
+
+Ingrediente
+
+Combustible
+
+Dispensador
+
+No existen ofertas de descarga de contenido de este tipo disponibles para este título en este momento.
+
+%s se ha unido al juego.
+
+%s ha abandonado el juego.
+
+Han expulsado a %s del juego.
+
+¿Seguro que quieres borrar este juego guardado?
+
+Aprobando...
+
+Censurado
+
+Ahora jugando:
+
+Restablecer configuración
+
+¿Seguro que quieres restablecer la configuración a los valores predeterminados?
+
+Error al cargar
+
+Minecraft: Xbox 360 Edition ha experimentado un error al cargar y no puede continuar.
+
+Juego de %s
+
+Juego de host desconocido
+
+Un invitado ha cerrado la sesión
+
+Un jugador invitado ha cerrado la sesión, lo que ha provocado que todos los invitados queden excluidos del juego.
+
+Iniciar sesión
+
+No has iniciado sesión. Para jugar tienes que iniciar sesión. ¿Quieres hacerlo ahora?
+
+Multijugador no admitido
+
+No te has podido unir al juego porque uno o más jugadores no tienen autorización para participar en juegos multijugador en Xbox Live.
+
+No has podido crear un juego en línea porque uno o más jugadores no tienen autorización para participar en juegos multijugador en Xbox Live. Desmarca la casilla "Juego en línea" para jugar sin conexión.
+
+No te puedes unir a esta sesión de juego porque la configuración de privilegios de Contenido de miembro es demasiado restrictiva. Cambia esta configuración en la sección Privacidad, Privacidad y conexión de la Interfaz Xbox si quieres unirte a la sesión.
+
+No te puedes unir a esta sesión de juego porque uno de los jugadores locales tiene una configuración de privilegios de Contenido de miembro demasiado restrictiva.
+
+No te puedes unir a esta sesión de juego porque uno de los jugadores de la sesión tiene una configuración de privilegios de Contenido de miembro de Solo amigos y no estás en su lista de amigos.
+
+No se ha podido crear el juego.
+
+No puedes crear esta sesión de juego porque uno de los jugadores locales tiene una configuración de privilegios de Contenido de miembro demasiado restrictiva. Desmarca la casilla "Juego en línea" para iniciar un juego sin conexión o cambia este ajuste en la sección Privacidad, Privacidad y conexión de la Interfaz Xbox
+
+Seleccionado automáticamente
+
+Sin pack: aspectos pred.
+
+Aspectos favoritos
+
+Nivel bloqueado
+
+El juego al que te estás uniendo está en la lista de niveles bloqueados.
+Si decides unirte a este juego, se eliminará el nivel de la lista de niveles bloqueados.
+
+¿Bloquear este nivel?
+
+¿Seguro que quieres añadir este nivel a la lista de niveles bloqueados?
+Selecciona ACEPTAR para salir del juego.
+
+Eliminar de la lista de bloqueados
+
+Intervalo de autoguardado
+
+Intervalo de autoguardado: NO
+
+Minutos
+
+¡No se puede colocar aquí!
+
+No se puede colocar lava cerca del punto de generación del nivel porque se puede producir la muerte instantánea de los jugadores que se regeneran.
+
+Este juego utiliza la función de autoguardado. Si ves este icono, el juego está guardando los datos.
+No apagues la Consola Xbox 360 cuando aparezca este icono en pantalla.
+
+Opacidad de la interfaz
+
+Preparación de autoguardado del nivel
+
+Tamaño de HUD
+
+Tamaño de HUD (pantalla dividida)
+
+Semilla
+
+Desbloquear pack de aspecto
+
+Para usar el aspecto que has seleccionado tienes que desbloquear este pack de aspecto.
+¿Quieres desbloquear este pack de aspecto ahora?
+
+Desbloquear pack de textura
+
+Desbloquea este pack de textura para usarlo en tu mundo.
+¿Te gustaría desbloquearlo ahora?
+
+Pack de textura de prueba
+
+Estás usando una versión de prueba del pack de textura. No podrás guardar este mundo a menos que desbloquees la versión completa.
+¿Te gustaría desbloquear la versión completa de este pack de textura?
+
+Pack de textura no disponible
+
+Desbloquear versión completa
+
+Descargar versión de prueba
+
+Descargar versión completa
+
+¡Este mundo usa un pack de textura o de popurrí que no tienes!
+¿Quieres instalar el pack de textura o de popurrí ahora?
+
+Conseguir versión de prueba
+
+Conseguir versión completa
+
+Expulsar jugador
+
+¿Seguro que quieres expulsar a este jugador del juego? No podrá volver a unirse hasta que reinicies el mundo.
+
+Packs de imágenes de jugador
+
+Temas
+
+Packs de aspectos
+
+Permitir amigos de amigos
+
+No puedes unirte a este juego porque está limitado a jugadores que son amigos del host.
+
+No te puedes unir al juego
+
+Seleccionado
+
+Aspecto seleccionado:
+
+Descarga de contenido dañada
+
+La descarga de contenido está dañada y no se puede utilizar. Debes eliminarla y volver a instalarla en el menú de Tienda de Minecraft.
+
+Alguna descarga de contenido está dañada y no se puede utilizar. Debes eliminarla y volver a instalarla en el menú de Tienda de Minecraft.
+
+Se ha cambiado el modo de juego.
+
+Cambiar nombre al mundo
+
+Escribe un nuevo nombre para tu mundo.
+
+Modo juego: Supervivencia
+
+Modo juego: Creativo
+
+Supervivencia
+
+Creativo
+
+En modo Supervivencia
+
+En modo Creativo
+
+Generar nubes
+
+¿Qué quieres hacer con este juego guardado?
+
+Cambiar nombre a juego guardado
+
+Autoguardando en %d...
+
+Sí
+
+No
+
+Normal
+
+Superplano
+
+Si está habilitado, el juego será un juego en línea.
+
+Si está habilitado, solo los jugadores invitados pueden unirse.
+
+Si está habilitado, los amigos de la gente en tu lista de amigos pueden unirse.
+
+Si está habilitado, los jugadores pueden causar daño a otros jugadores. Solo afecta al modo Supervivencia.
+
+Si está deshabilitado, los jugadores que se unan al juego no pueden construir ni extraer sin autorización.
+
+Si está habilitado, el fuego se puede propagar a los bloques inflamables cercanos.
+
+Si está habilitado, la dinamita explota cuando se activa.
+
+Si está habilitado, el host puede volar, deshabilitar la extenuación y hacerse invisible. Deshabilita los logros y actualizaciones del marcador.
+
+Si se activa, el mundo inferior se regenerará. Esto es útil si tienes una partida guardada antigua donde no está presente la fortaleza del mundo inferior.
+
+Si está habilitado, se generarán estructuras como aldeas y fortalezas en el mundo.
+
+Si está habilitado, se generará un mundo completamente plano en el mundo superior y en el inferior.
+
+Si está habilitado, se creará un cofre con objetos útiles cerca del punto de generación del jugador.
+
+Packs de aspecto
+
+Temas
+
+Imágenes de jugador
+
+Objetos de avatar
+
+Packs de textura
+
+Packs de popurrí
+
+{*PLAYER*} ha entrado en combustión
+
+{*PLAYER*} se quemó hasta morir
+
+{*PLAYER*} intentó nadar en la lava
+
+{*PLAYER*} se asfixió en un muro
+
+{*PLAYER*} se ahogó
+
+{*PLAYER*} se murió de hambre
+
+{*PLAYER*} se pinchó hasta morir
+
+{*PLAYER*} se golpeó demasiado fuerte contra el suelo
+
+{*PLAYER*} se cayó del mundo
+
+{*PLAYER*} murió
+
+{*PLAYER*} explotó
+
+{*PLAYER*} murió a causa de la magia
+
+{*PLAYER*} murió a causa del aliento del dragón de Ender.
+
+{*SOURCE*} asesinó a {*PLAYER*}
+
+{*SOURCE*} asesinó a {*PLAYER*}
+
+{*SOURCE*} disparó a {*PLAYER*}
+
+{*SOURCE*} quemó con bolas de fuego a {*PLAYER*}
+
+{*SOURCE*} apaleó a {*PLAYER*}
+
+{*PLAYER*} ha muerto a manos de {*SOURCE*}
+
+Niebla de lecho de roca
+
+Mostrar HUD
+
+Mostrar mano
+
+Gamertags en pantalla dividida
+
+Mensajes de muerte
+
+Personaje animado
+
+Animación de aspecto personalizada
+
+Ya no puedes perforar ni usar objetos.
+
+Ahora puedes perforar y usar objetos.
+
+Ya no puedes colocar bloques.
+
+Ahora puedes colocar bloques.
+
+Ahora puedes usar puertas e interruptores.
+
+Ya no puedes usar puertas ni interruptores.
+
+Ahora puedes usar contenedores (p. ej. cofres).
+
+Ya no puedes usar contenedores (p. ej. cofres).
+
+Ya no puedes atacar a enemigos.
+
+Ahora puedes atacar a enemigos.
+
+Ya no puedes atacar a jugadores.
+
+Ahora puedes atacar a jugadores.
+
+Ya no puedes atacar a animales.
+
+Ahora puedes atacar a animales.
+
+Ahora eres un moderador.
+
+Ya no eres un moderador.
+
+Ahora puedes volar.
+
+Ya no puedes volar.
+
+Ya no te fatigarás.
+
+Ahora te fatigarás.
+
+Ahora eres invisible.
+
+Ya no eres invisible.
+
+Ahora eres invulnerable.
+
+Ya no eres invulnerable.
+
+%d MSP
+
+Dragón de Ender
+
+%s ha entrado en El Fin.
+
+%s ha salido de El Fin.
+
+
+{*C3*}Veo a ese jugador al que te referías.{*EF*}{*B*}{*B*}
+{*C2*}¿{*PLAYER*}?{*EF*}{*B*}{*B*}
+{*C3*}Sí. Cuidado. Ha alcanzado un nivel superior. Puede leer nuestros pensamientos.{*EF*}{*B*}{*B*}
+{*C2*}No importa. Cree que somos parte del juego.{*EF*}{*B*}{*B*}
+{*C3*}Me gusta. Ha jugado bien. No se ha rendido.{*EF*}{*B*}{*B*}
+{*C2*}Lee nuestros pensamientos como si fueran textos en una pantalla.{*EF*}{*B*}{*B*}
+{*C3*}Así le gusta imaginar muchas cosas, cuando está en lo más profundo del sueño del juego.{*EF*}{*B*}{*B*}
+{*C2*}Las palabras son una interfaz maravillosa. Muy flexibles. Y asustan menos que contemplar la realidad que se oculta detrás de la pantalla.{*EF*}{*B*}{*B*}
+{*C3*}Antes oían voces. Antes de que los jugadores pudieran leer. En aquellos tiempos en los que los que no jugaban llamaban a los jugadores hechiceros y brujas. Y en los que los jugadores soñaban que volaban sobre palos impulsados por demonios.{*EF*}{*B*}{*B*}
+{*C2*}¿Qué soñaba este jugador?{*EF*}{*B*}{*B*}
+{*C3*}Soñaba la luz del sol y los árboles. Fuego y agua. Soñaba que creaba. Y soñaba que destruía. Soñaba que cazaba y que le daban caza. Soñaba un refugio.{*EF*}{*B*}{*B*}
+{*C2*}Ja, la interfaz original. Tiene un millón de años y sigue funcionando. Pero ¿qué estructura verdadera ha creado en la realidad tras la pantalla?{*EF*}{*B*}{*B*}
+{*C3*}Colaboró con muchos más para esculpir un mundo real en un pliego de {*EF*}{*NOISE*}{*C3*} y creó un {*EF*}{*NOISE*}{*C3*} para {*EF*}{*NOISE*}{*C3*} en {*EF*}{*NOISE*}{*C3*}.{*EF*}{*B*}{*B*}
+{*C2*}Pero eso no lo puede leer.{*EF*}{*B*}{*B*}
+{*C3*}No. Todavía no ha alcanzado el nivel superior. Debe conseguirlo en el largo sueño de la vida, no el corto sueño de un juego.{*EF*}{*B*}{*B*}
+{*C2*}¿Sabe que lo queremos? ¿Que el universo es amable?{*EF*}{*B*}{*B*}
+{*C3*}A veces, entre el ruido de sus pensamientos, escucha al universo, sí.{*EF*}{*B*}{*B*}
+{*C2*}Pero, a veces, está triste en el sueño largo. Crea mundos que no tienen verano y tiembla bajo un sol negro, y confunde su creación triste con la realidad.{*EF*}{*B*}{*B*}
+{*C3*}Quitarle la pena lo destruiría. La pena es parte de su propia misión. No podemos interferir.{*EF*}{*B*}{*B*}
+{*C2*}A veces, cuando están en un sueño muy profundo, quiero decírselo, decirles que están construyendo mundos de verdad en la realidad. A veces, quiero decirles que son importantes para el universo. A veces, cuando no han creado una conexión real en mucho tiempo, quiero ayudarles a decir la palabra que temen.{*EF*}{*B*}{*B*}
+{*C3*}Lee nuestros pensamientos.{*EF*}{*B*}{*B*}
+{*C2*}A veces, no me importa. A veces, quiero decirles que este mundo que toman por real tan solo es {*EF*}{*NOISE*}{*C2*} y {*EF*}{*NOISE*}{*C2*}, quiero decirles que son {*EF*}{*NOISE*}{*C2*} en {*EF*}{*NOISE*}{*C2*}. Ven tan poco de la realidad en su sueño largo.{*EF*}{*B*}{*B*}
+{*C3*}Pero siguen jugando.{*EF*}{*B*}{*B*}
+{*C2*}Y sería tan fácil decirles que...{*EF*}{*B*}{*B*}
+{*C3*}Demasiado fuerte para este sueño. Decirles que vivir es impedir que vivan.{*EF*}{*B*}{*B*}
+{*C2*}Nunca diré a un jugador cómo vivir.{*EF*}{*B*}{*B*}
+{*C3*}Se está inquietando.{*EF*}{*B*}{*B*}
+{*C2*}Le contaré una historia.{*EF*}{*B*}{*B*}
+{*C3*}Pero no la verdad.{*EF*}{*B*}{*B*}
+{*C2*}No. Una historia que contenga la verdad de forma segura, en una jaula de palabras. No la verdad desnuda que puede quemar a cualquier distancia.{*EF*}{*B*}{*B*}
+{*C3*}Dale un cuerpo, otra vez.{*EF*}{*B*}{*B*}
+{*C2*}Sí. Jugador...{*EF*}{*B*}{*B*}
+{*C3*}Utiliza su nombre.{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}. Jugador de juegos.{*EF*}{*B*}{*B*}
+{*C3*}Bien.{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}Ahora, respira. Vuelve a respirar. Siente el aire en los pulmones. Permite que tus extremidades regresen. Sí, mueve los dedos. Vuelve a tener un cuerpo sometido a la gravedad, en el aire. Vuelve a generarte en el sueño largo. Ahí estás. Todo tu cuerpo vuelve a tocar el universo, como si fuerais cosas distintas. Como si fuerais cosas distintas.{*EF*}{*B*}{*B*}
+{*C3*}¿Quiénes somos? Otrora nos llamaron espíritu de la montaña. Padre sol, madre luna. Espíritus ancestrales, espíritus animales. Genios. Fantasmas. Los hombrecillos verdes. Después, dioses, demonios. Ángeles. Fenómenos paranormales. Alienígenas, extraterrestres. Leptones, quarks. Las palabras cambian. Nosotros no.{*EF*}{*B*}{*B*}
+{*C2*}Somos el universo. Somos todo lo que piensas que no eres tú. Nos estás mirando a través de tu piel y tus ojos. ¿Y por qué toca el universo tu piel y te ilumina? Para verte, jugador. Para conocerte. Y para que nos conozcas. Te contaré una historia.{*EF*}{*B*}{*B*}
+{*C2*}Érase una vez un jugador.{*EF*}{*B*}{*B*}
+{*C3*}El jugador eras tú, {*PLAYER*}.{*EF*}{*B*}{*B*}
+{*C2*}A veces, el jugador se consideraba un ser humano, en la fina corteza de una esfera de roca derretida. La esfera de roca derretida giraba alrededor de una esfera de gas ardiente que era trescientas treinta mil veces mayor que ella. Estaban tan separadas que la luz tardaba ocho minutos en llegar de una a otra. La luz era información de una estrella y podía quemar la piel a cincuenta millones de kilómetros de distancia.{*EF*}{*B*}{*B*}
+{*C2*}A veces, el jugador soñaba que era un minero, sobre la superficie de un mundo plano e infinito. El sol era un cuadrado blanco. Los días eran cortos; había mucho que hacer y la muerte no era más que un inconveniente temporal.{*EF*}{*B*}{*B*}
+{*C3*}A veces, el jugador soñaba que estaba perdido en una historia.{*EF*}{*B*}{*B*}
+{*C2*}A veces, el jugador soñaba que era otras cosas, en otros lugares. A veces, esos sueños eran perturbadores. A veces, realmente bellos. A veces, el jugador se despertaba de un sueño en otro, y después de ese en un tercero.{*EF*}{*B*}{*B*}
+{*C3*}A veces, el jugador soñaba que veía palabras en una pantalla.{*EF*}{*B*}{*B*}
+{*C2*}Retrocedamos.{*EF*}{*B*}{*B*}
+{*C2*}Los átomos del jugador estaban esparcidos en la hierba, en los ríos, en el aire, en la tierra. Una mujer recogió los átomos, bebió y comió y respiró; y la mujer ensamblo al jugador en su cuerpo.{*EF*}{*B*}{*B*}
+{*C2*}Y el jugador despertó del mundo oscuro y cálido del cuerpo de su madre en el sueño largo.{*EF*}{*B*}{*B*}
+{*C2*}Y el jugador fue una nueva historia, nunca antes contada, escrita con ADN. Y el jugador era un nuevo programa, que nunca se había ejecutado, generado por un código fuente con un billón de años. Y el jugador era un nuevo ser humano, que nunca había vivido antes, hecho tan solo de leche y amor.{*EF*}{*B*}{*B*}
+{*C3*}Tú eres el jugador. La historia. El programa. El humano. Hecho tan solo de leche y amor.{*EF*}{*B*}{*B*}
+{*C2*}Retrocedamos más.{*EF*}{*B*}{*B*}
+{*C2*}Los siete trillones de trillones de trillones de átomos del jugador se crearon, mucho antes de este juego, en el corazón de una estrella. Así que el jugador también es información de una estrella. Y el jugador se mueve a través de una historia que es un bosque de información colocada por un tipo llamado Julian, en un mundo infinito y plano creado por un hombre llamado Markus que existe en un mundo pequeño y privado creado por el jugador que habita un universo creado por...{*EF*}{*B*}{*B*}
+{*C3*}Sssh. A veces, el jugador creaba un mundo pequeño y privado que era suave, cálido y sencillo. A veces, frío, duro y complicado. A veces, creaba un modelo del universo en su cabeza; motas de energía moviéndose a través de vastos espacios vacíos. A veces llamaba a esas motas "electrones" y "protones".{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}A veces, las llamaba "planetas" y "estrellas".{*EF*}{*B*}{*B*}
+{*C2*}A veces, creía que estaba en un universo hecho de energía que estaba compuesto de encendidos y apagados, de ceros y unos, de líneas de código. A veces, creía que jugaba a un juego. A veces, creía que leía palabras en una pantalla.{*EF*}{*B*}{*B*}
+{*C3*}Tú eres el jugador, que lee palabras...{*EF*}{*B*}{*B*}
+{*C2*}Sssh... A veces, el jugador leía líneas de código en una pantalla. Las decodificaba en palabras, decodificaba las palabras en significados; decodificaba los significados en sentimientos, teorías, ideas... y el jugador comenzó a respirar cada vez más deprisa y más profundamente cuando se dio cuenta de que estaba vivo, estaba vivo, esas miles de muertes no habían sido reales, el jugador estaba vivo.{*EF*}{*B*}{*B*}
+{*C3*}Tú. Tú. Tú estás vivo.{*EF*}{*B*}{*B*}
+{*C2*}Y, a veces, el jugador creía que el universo le había hablado a través de la luz del sol del verano que se colaba entre las hojas al viento.{*EF*}{*B*}{*B*}
+{*C3*}Y, a veces, el jugador creía que el universo le había hablado a través de la luz que llegaba del frío cielo nocturno del invierno, donde una mota de luz en el rabillo del ojo del jugador podría ser una estrella un millón de veces más grande que el sol, quemando sus planetas, convirtiéndolos en plasma, para que el jugador pudiera verla un instante desde el otro extremo del universo mientras volvía a casa, mientras olía comida de pronto, casi en su puerta, a punto de volver a soñar.{*EF*}{*B*}{*B*}
+{*C2*}Y, a veces, el jugador creía que el universo le había hablado a través de los ceros y los unos, a través de la electricidad del mundo, a través de las palabras deslizándose por una pantalla al final de un sueño.{*EF*}{*B*}{*B*}
+{*C3*}Y el universo le decía te quiero.{*EF*}{*B*}{*B*}
+{*C2*}Y el universo le decía has jugado bien.{*EF*}{*B*}{*B*}
+{*C3*}Y el universo le decía cuanto necesitas está en tu interior.{*EF*}{*B*}{*B*}
+{*C2*}Y el universo le decía eres más fuerte de lo que crees.{*EF*}{*B*}{*B*}
+{*C3*}Y el universo le decía eres la luz del día.{*EF*}{*B*}{*B*}
+{*C2*}Y el universo le decía eres la noche.{*EF*}{*B*}{*B*}
+{*C3*}Y el universo le decía tu lucha está en tu interior.{*EF*}{*B*}{*B*}
+{*C2*}Y el universo le decía la luz que buscas está en tu interior.{*EF*}{*B*}{*B*}
+{*C3*}Y el universo le decía no estás solo.{*EF*}{*B*}{*B*}
+{*C2*}Y el universo le decía no estás separado del resto de las cosas.{*EF*}{*B*}{*B*}
+{*C3*}Y el universo le decía eres el universo probándose a sí mismo, hablando consigo mismo, leyendo su propio código.{*EF*}{*B*}{*B*}
+{*C2*}Y el universo le decía te quiero porque eres amor.{*EF*}{*B*}{*B*}
+{*C3*}Y el juego había acabado y el jugador se despertó del sueño. Y el jugador comenzó un nuevo sueño. Y el jugador volvió a soñar, soñó mejor. Y el jugador era el universo. Y el jugador era amor.{*EF*}{*B*}{*B*}
+{*C3*}Tú eres el jugador.{*EF*}{*B*}{*B*}
+{*C2*}Despierta.{*EF*}
+
+
+Restablecer mundo inferior
+
+¿Seguro que quieres restablecer el mundo inferior de este archivo de guardado a sus valores predeterminados? Perderás todo lo que has construido en el mundo inferior.
+
+Restablecer mundo inferior
+
+No restablecer mundo inferior
+
+No se puede trasquilar esta champiñaca en este momento. Límite de cerdos, ovejas, vacas y gatos alcanzado.
+
+El huevo generador no está disponible en estos momentos. Se ha alcanzado la cantidad máxima de cerdos, ovejas, vacas y gatos.
+
+No se pueden usar huevos generadores ahora. Límite de champiñacas en un mundo alcanzado.
+
+No se pueden usar huevos generadores en este momento. Se ha alcanzado el límite de lobos en un mundo.
+
+No se pueden usar huevos generadores en este momento. Se ha alcanzado el límite de gallinas en un mundo.
+
+No se pueden usar huevos generadores en este momento. Se ha alcanzado el límite de calamares en un mundo.
+
+No se pueden usar huevos generadores en este momento. Se ha alcanzado el límite de enemigos en un mundo.
+
+No se pueden usar huevos generadores en este momento. Se ha alcanzado el límite de aldeanos en un mundo.
+
+Se ha alcanzado el límite de pinturas y estructuras de objeto en un mundo.
+
+No puedes generar enemigos en el modo pacífico.
+
+Este animal no puede entrar en el modo Amor. Se ha alcanzado la cantidad máxima de cerdos, ovejas, vacas y gatos reproductores.
+
+Este animal no puede estar en modo Amor. Se ha alcanzado el límite de cría de lobos.
+
+Este animal no puede estar en modo Amor. Se ha alcanzado el límite de cría de gallinas.
+
+Este animal no puede estar en modo Amor. Se ha alcanzado el límite de cría de champiñacas.
+
+Se ha alcanzado la cantidad máxima de barcos en un mundo.
+
+Se ha alcanzado el límite de cabezas de enemigos en un mundo.
+
+Invertir vista
+
+Zurdo
+
+¡Has muerto!
+
+Regenerarse
+
+Descarga de contenido
+
+Cambiar aspecto
+
+Cómo se juega
+
+Controles
+
+Configuración
+
+Créditos
+
+Volver a instalar contenido
+
+Configuración de depuración
+
+El fuego se propaga
+
+La dinamita explota
+
+Jugador contra jugador
+
+Confiar en jugadores
+
+Privilegios de host
+
+Genera estructuras
+
+Mundo superplano
+
+Cofre de bonificación
+
+Opciones del mundo
+
+Puede construir y extraer
+
+Puedes usar puertas e interruptores.
+
+Puedes abrir contenedores.
+
+Puede atacar a los jugadores
+
+Puedes atacar a animales.
+
+Moderador
+
+Expulsar
+
+Puede volar
+
+Desactiva la extenuación
+
+Invisible
+
+Opciones de host
+
+Jugadores/Invitar
+
+Juego en línea
+
+Solo por invitación
+
+Más opciones
+
+Carga
+
+Nuevo mundo
+
+Nombre del mundo
+
+Semilla para el generador de mundos
+
+Dejar vacío para semilla aleatoria
+
+Jugadores
+
+Unirse al juego
+
+Iniciar juego
+
+No se encontraron juegos
+
+Jugar al juego
+
+Marcadores
+
+Logros
+
+Ayuda y opciones
+
+Desbloquear juego completo
+
+Reanudar juego
+
+Guardar juego
+
+Dificultad:
+
+Tipo de juego:
+
+Gamertags:
+
+Estructuras:
+
+Tipo de nivel:
+
+JcJ:
+
+Confiar en jugadores:
+
+Dinamita:
+
+El fuego se propaga:
+
+Volver a instalar tema
+
+Volver a instalar imagen de jugador 1
+
+Volver a instalar imagen de jugador 2
+
+Volver a instalar objeto de avatar 1
+
+Volver a instalar objeto de avatar 2
+
+Volver a instalar objeto de avatar 3
+
+Opciones
+
+Sonido
+
+Control
+
+Gráficos
+
+Interfaz de usuario
+
+Valores predeterminados
+
+Ver oscilación
+
+Consejos
+
+Información sobre herramientas del juego
+
+Gamertags del juego
+
+Pantalla dividida vertical para 2 jugadores
+
+Listo
+
+Editar mensaje de señal:
+
+Completa la información que irá junto a tu captura.
+
+Subtítulo
+
+Captura de pantalla del juego
+
+Editar mensaje de señal:
+
+¡Mira lo que he hecho en Minecraft: Xbox 360 Edition!
+
+¡Con la interfaz de usuario, los iconos y la textura clásica de Minecraft!
+
+Mostrar todos los mundos de popurrí
+
+Seleccionar espacio de transferencia
+
+Vaciar espacio
+
+Subiendo metadatos guardados
+
+Subiendo datos guardados
+
+Subiendo partida guardada para Xbox One
+
+Carga cancelada
+
+Has cancelado la carga de este archivo de guardado al área de transferencia.
+
+Sin efectos
+
+Velocidad
+
+Lentitud
+
+Rapidez
+
+Fatiga de extracción
+
+Fuerza
+
+Debilidad
+
+Salud instantánea
+
+Daño instantáneo
+
+Impulso en salto
+
+Náusea
+
+Regeneración
+
+Resistencia
+
+Resistente al fuego
+
+Respiración en agua
+
+Invisibilidad
+
+Ceguera
+
+Visión nocturna
+
+Hambre
+
+Veneno
+
+de rapidez
+
+de lentitud
+
+de rapidez
+
+de torpeza
+
+de fortaleza
+
+de debilidad
+
+de curación
+
+de daño
+
+de salto
+
+de náusea
+
+de regeneración
+
+de resistencia
+
+de resistencia al fuego
+
+de respiración en agua
+
+de invisibilidad
+
+de ceguera
+
+de visión nocturna
+
+de hambre
+
+de veneno
+
+
+
+II
+
+III
+
+IV
+
+Salpicadura
+
+Mundano
+
+Aburrido
+
+Blando
+
+Nítido
+
+Lechoso
+
+Difuso
+
+Natural
+
+Fino
+
+Raro
+
+Plano
+
+Voluminoso
+
+Chapucero
+
+Untado
+
+Liso
+
+Suave
+
+Cortés
+
+Grueso
+
+Elegante
+
+Sofisticado
+
+Encantador
+
+Enérgico
+
+Refinado
+
+Cordial
+
+Resplandeciente
+
+Potente
+
+Repugnante
+
+Inodoro
+
+Rancio
+
+Áspero
+
+Acre
+
+Asqueroso
+
+Hediondo
+
+Se usa como base para todas las pociones. Úsala en un puesto de destilado para crear pociones.
+
+No tiene efectos. Se puede usar en un puesto de destilado para crear pociones añadiendo más ingredientes.
+
+Aumenta la velocidad de movimiento de los jugadores, animales y monstruos afectados y la velocidad de carrera, longitud de salto y campo de visión de los jugadores.
+
+Disminuye la velocidad de movimiento de los jugadores, animales y monstruos afectados y la velocidad de carrera, longitud de salto y campo de visión de los jugadores.
+
+Aumenta el daño causado por los jugadores y monstruos afectados cuanto atacan.
+
+Disminuye el daño causado por los jugadores y monstruos afectados cuanto atacan.
+
+Aumenta al instante la salud de los jugadores y monstruos afectados.
+
+Disminuye al instante la salud de los jugadores y monstruos afectados.
+
+Restablece la salud de los jugadores, animales y monstruos afectados con el tiempo.
+
+Hace que los jugadores, animales y monstruos afectados sean inmunes al daño causado por fuego, lava y ataques de llama a distancia.
+
+Disminuye la salud de los jugadores, animales y monstruos afectados con el tiempo.
+
+Afilado
+
+Aporrear
+
+Maldición de los artrópodos
+
+Derribar
+
+Aspecto del fuego
+
+Protección
+
+Protección del fuego
+
+Caída de hojas
+
+Protección de ráfagas
+
+Protección de proyectiles
+
+Respiración
+
+Afinidad al agua
+
+Eficiencia
+
+Toque sedoso
+
+Irrompible
+
+Saqueo
+
+Fortuna
+
+Poder
+
+Llama
+
+Puñetazo
+
+Infinidad
+
+I
+
+II
+
+III
+
+IV
+
+V
+
+VI
+
+VII
+
+VIII
+
+IX
+
+X
+
+Se puede perforar con un pico de hierro o un objeto mejor para extraer esmeraldas.
+
+Similar a los cofres, pero los objetos colocados en un cofre de Ender estarán disponibles en los cofres del mismo tipo del resto de jugadores, incluso en dimensiones distintas.
+
+Se activa cuando una entidad tropieza con un cable trampa conectado.
+
+Activa un gancho de cable trampa conectado cuando una entidad choca con él.
+
+Una manera de almacenar esmeraldas de forma compacta.
+
+Una pared hecha de adoquines.
+
+Se puede usar para reparar armas, herramientas y armaduras.
+
+Se funde en un horno para producir cuarzo del mundo inferior.
+
+Se usa como decoración.
+
+Se puede intercambiar con los aldeanos.
+
+Se usa como decoración. En ella se pueden plantar flores, arbolillos, cactus y champiñones.
+
+Restablece 2{*ICON_SHANK_01*} y se puede convertir en una zanahoria dorada. Se puede plantar en tierras de cultivo.
+
+Restablece 0.5{*ICON_SHANK_01*}o se puede cocinar en el horno. Se puede plantar en tierras de cultivo.
+
+Restablece 3{*ICON_SHANK_01*}. Se crea cocinando una patata en el horno.
+
+Restablece 1{*ICON_SHANK_01*}o se puede cocinar en el horno. Se puede plantar en tierras de cultivo. Si comes esto puede que te envenene.
+
+Restablece 3{*ICON_SHANK_01*}. Se produce a partir de una zanahoria y pepitas de oro. Restablece 3.
+
+Se usa para controlar los cerdos ensillados mientras montas sobre ellos.
+
+Restablece 4{*ICON_SHANK_01*}.
+
+Se usa junto con un yunque para hechizar armas, herramientas o armaduras.
+
+Se crea fundiendo menas de cuarzo del mundo inferior. Se le puede dar forma de bloque de cuarzo.
+
+Se fabrica con lana. Se usa como decoración.
+
+Esmeralda
+
+Maceta
+
+Zanahoria
+
+Patata
+
+Patata asada
+
+Patata venenosa
+
+Zanahoria dorada
+
+Palo y zanahoria
+
+Pastel de zanahoria
+
+Libro hechizado
+
+Cuarzo del mundo inferior
+
+Mena de esmeralda
+
+Cofre de Ender
+
+Gancho de cable trampa
+
+Cable trampa
+
+Bloque de esmeralda
+
+Pared de adoquines
+
+Pared de adoquines musgosa
+
+Maceta
+
+Zanahorias
+
+Patatas
+
+Yunque
+
+Yunque
+
+Yunque ligeramente dañado
+
+Yunque muy dañado
+
+Mena de cuarzo del mundo inferior
+
+Bloque de cuarzo
+
+Bloque de cuarzo cincelado
+
+Pilar de cuarzo
+
+Escaleras de cuarzo
+
+Alfombra
+
+Alfombra negra
+
+Alfombra roja
+
+Alfombra verde
+
+Alfombra marrón
+
+Alfombra azul
+
+Alfombra púrpura
+
+Alfombra cian
+
+Alfombra gris claro
+
+Alfombra gris
+
+Alfombra rosa
+
+Alfombra lima
+
+Alfombra amarilla
+
+Alfombra azul claro
+
+Alfombra magenta
+
+Alfombra naranja
+
+Alfombra blanca
+
+Arenisca cincelada
+
+Arenisca lisa
+
+{*PLAYER*} murió intentando herir a {*SOURCE*}
+
+{*PLAYER*} fue aplastado por un yunque caído.
+
+{*PLAYER*} fue aplastado por un bloque caído.
+
+Se ha teleetransportado a {*PLAYER*} a {*DESTINATION*}.
+
+{*PLAYER*} te ha teletransportado a su posición.
+
+{*PLAYER*} se ha teletransportado a tu posición.
+
+Espinas
+
+Losa de cuarzo
+
+Ilumina las zonas oscuras como si fuera de día, incluso bajo el agua.
+
+Vuelve invisibles a los jugadores, animales y monstruos afectados.
+
+Reparar y nombrar
+
+Coste del hechizo: %d
+
+¡Demasiado caro!
+
+Renombrar
+
+Tienes:
+
+Objetos necesarios
+
+{*VILLAGER_TYPE*} ofrece %s
+
+Reparar
+
+Intercambiar
+
+Teñir collar
+
+
+ Esta es la interfaz del yunque, en la que podrás renombrar, reparar y aplicar hechizos a armas, armaduras o herramientas a cambio de niveles de experiencia.
+
+
+
+ {*B*}
+ Pulsa {*CONTROLLER_VK_A*} para obtener más información sobre la interfaz del yunque.{*B*}
+ Pulsa {*CONTROLLER_VK_B*} si ya sabes cómo funciona la interfaz del yunque.
+
+
+
+ Para empezar a trabajar sobre un objeto, colócalo en el primer espacio.
+
+
+
+ Cuando coloques la materia prima correcta en el segundo espacio (p. ej., lingotes de hierro para una espada de hierro dañada), la reparación sugerida aparecerá en el espacio de salida.
+
+
+
+ También puedes colocar un segundo objeto idéntico en el segundo espacio para combinar ambos objetos.
+
+
+
+ Para hechizar los objetos sobre el yunque, coloca un libro hechizado en el segundo espacio.
+
+
+
+ El número de niveles de experiencia que costará el trabajo se muestra bajo el espacio de salida. Si no tienes suficientes niveles de experiencia, no podrás completar la reparación.
+
+
+
+ Puedes renombrar un objeto editando el nombre que aparece en el cuadro de texto.
+
+
+
+ Recoger el objeto reparado consumirá los dos objetos utilizados por el yunque y reducirá tu nivel de experiencia en la cantidad establecida.
+
+
+
+ Esta zona contiene un yunque y un cofre con las herramientas y armas necesarias para trabajar.
+
+
+
+ {*B*}
+ Pulsa{*CONTROLLER_VK_A*} para obtener más información sobre el yunque.{*B*}
+ Pulsa{*CONTROLLER_VK_B*} si ya sabes cómo utilizar el yunque.
+
+
+
+ El yunque te permite reparar armas y herramientas para hacerlas más duraderas, así como renombrarlas o hechizarlas mediante libros hechizados.
+
+
+
+ Los libros hechizados se encuentran dentro de los cofres en las mazmorras y también en forma de libros normales que han sido hechizados en la mesa de hechizos.
+
+
+
+ El uso del yunque consume niveles de experiencia y puede provocar daños al mismo.
+
+
+
+ El tipo de trabajo, el valor del objeto, el número de hechizos y la cantidad de trabajo realizado previamente afectan al coste de la reparación.
+
+
+
+ Renombrar un objeto modifica su nombre para todos los jugadores y reduce de forma permanente el coste del trabajo previo.
+
+
+
+ En el cofre de esta zona encontrarás picos dañados, materias primas, botellas de hechizos y libros hechizados con los que experimentar.
+
+
+
+ Esta es la interfaz de comercio, que muestra los intercambios comerciales que puedes realizar con un aldeano.
+
+
+
+ {*B*}
+ Pulsa {*CONTROLLER_VK_A*} para obtener más información sobre la interfaz de comercio.{*B*}
+ Pulsa {*CONTROLLER_VK_B*} si ya sabes cómo funciona la interfaz de comercio.
+
+
+
+ En la parte superior se muestran los intercambios comerciales que el aldeano está dispuesto a hacer en este momento.
+
+
+
+ Los intercambios comerciales aparecerán en rojo y no estarán disponibles si no tienes los objetos requeridos.
+
+
+
+ La cantidad y la clase de objetos que le das al aldeano se muestran en dos cuadros a la izquierda.
+
+
+
+ La cantidad total de objetos necesarios para el intercambio se muestra en los dos cuadros de la izquierda.
+
+
+
+ Pulsa {*CONTROLLER_VK_A*} para intercambiar los objetos que demanda el aldeano por el objeto que ofrece.
+
+
+
+ En esta zona hay un aldeano y un cofre que contiene papel para comprar objetos.
+
+
+
+ {*B*}
+ Pulsa {*CONTROLLER_VK_A*} para obtener más información sobre el comercio.{*B*}
+ Pulsa {*CONTROLLER_VK_B*} si ya sabes cómo se comercia.
+
+
+
+ Los jugadores pueden intercambiar objetos de su inventario con los aldeanos.
+
+
+
+ Los objetos que los aldeanos pueden ofrecer dependen de su profesión.
+
+
+
+ La realización de diferentes intercambios hará que los objetos disponibles del aldeano aumenten o se actualicen al azar.
+
+
+
+ Los intercambios realizados con más frecuencia pueden deshabilitarse de forma temporal, aunque los aldeanos siempre ofrecerán como mínimo un objeto.
+
+
+
+ Coge un papel del cofre e intenta comerciar con este aldeano.
+
+
+
+ Esta zona contiene dos cofres de Ender.
+
+
+
+ {*B*}
+ Pulsa {*CONTROLLER_VK_A*} para obtener más información sobre los cofres de Ender.{*B*}
+ Pulsa {*CONTROLLER_VK_B*} si ya sabes cómo utilizar los cofres de Ender.
+
+
+
+ Todos los cofres de Ender están vinculados, incluso los de dimensiones diferentes. Los objetos colocados en un cofre de Ender estarán disponibles en cualquier otro cofre del mismo tipo.
+
+
+
+ No obstante, el contenido de los cofres de Ender es diferente para cada jugador.
+
+
+
+ Esto permite a los jugadores almacenar objetos en cualquier cofre de Ender y recuperarlos en otros cofres repartidos por el mundo. Para comprobarlo, coloca objetos en cualquiera de los cofres de Ender.
+
+
+Restablece 2{*ICON_SHANK_01*}, regenera la salud durante 30 segundos y concede resistencia al fuego y al daño durante 5 minutos. Creada con una manzana y bloques de oro.
+
+Puede teletransportarse.
+
+Teletransportarse
+
+Teletransportar hacia el jugador
+
+Teletransportar hacia mí
+
+Puede desactivar la extenuación.
+
+Puede volverse invisible.
+
+Ahora puedes activar la invisibilidad.
+
+Ya no puedes activar la invisibilidad.
+
+Ahora puedes volar.
+
+Ya no puedes volar.
+
+Ahora puedes desactivar la extenuación.
+
+Ya no puedes desactivar la extenuación.
+
+Ahora puedes teletransportarte.
+
+Ya no puedes teletransportarte.
+
+{*T3*}CÓMO SE JUEGA: YUNQUE{*ETW*}{*B*}{*B*}
+Los niveles de experiencia se pueden usar para reparar, hechizar o renombrar objetos mediante el yunque.{*B*}
+Todos los objetos pueden ser renombrados, aunque solo los duraderos pueden ser reparados o hechizados mediante libros de hechizos.{*B*}
+Para reparar un objeto, colócalo en uno de los espacios a la izquierda junto con algunas materias primas del mismo, como por ejemplo lingotes de hierro para la espada de hierro, o combinados con otro objeto del mismo tipo.{*B*}
+La combinación de objetos resulta más eficaz cuando se lleva a cabo con un yunque. Además, si alguno de los objetos estaba bajo un hechizo, el producto resultante incluirá hechizos pertenecientes a cualquiera de los espacios.{*B*}
+Para aplicar hechizos de los libros a los objetos, combina los libros en un yunque si el hechizo del libro es el adecuado. Los libros hechizados se encuentran en los cofres dentro de las mazmorras y también en forma de libros normales que han sido hechizados en la mesa de hechizos.{*B*}
+Los yunques pueden sufrir daños después de cada uso. También pueden destruirse si se abusa de ellos.{*B*}
+
+
+{*T3*}CÓMO SE JUEGA: COMERCIAR{*ETW*}{*B*}{*B*}
+Es posible intercambiar objetos con los aldeanos. Cada aldeano tiene una profesión (granjero, carnicero, herrero, bibliotecario o sacerdote) y esta afecta al tipo de objetos con los que comercian.{*B*}
+El menú de comercio contiene una lista de todos los objetos que cada aldeano ofrece. Los aldeanos pueden modificar o ampliar sus intercambios comerciales cada vez que comercian con un jugador, aunque los intercambios comerciales se pueden deshabilitar de forma temporal si se abusa de ellos.{*B*}
+Los intercambios suelen consistir en la compra o venta de una serie de objetos a cambio de esmeraldas.{*B*}
+Si no posees los objetos necesarios para realizar el intercambio, los objetos aparecerán en rojo.{*B*}
+
+
+{*T3*}CÓMO SE JUEGA: COFRE DE ENDER {*ETW*}{*B*}{*B*}
+Todos los cofres de Ender de un mundo están vinculados, y los objetos que contiene cada uno están disponibles en el resto de cofres. No obstante, el contenido de cada cofre de Ender varía para cada jugador, lo que permite almacenar objetos en cualquiera de ellos y recuperarlos en otro cofre de Ender situado en una parte distinta del mundo.
+
+
+Granjero
+
+Bibliotecario
+
+Sacerdote
+
+Herrero
+
+Carnicero
+
+Los objetos que los habitantes de las aldeas venden al jugador varían en función de sus profesiones.
+
+Cofre grande
+
+
+ La mesa de hechizos también te permite crear libros hechizados, que podrás usar más adelante en un yunque para aplicar sus hechizos a un objeto.
+
+
+
+ Los ganchos de cables trampa también proporcionarán energía constantemente a un circuito mientras algo active la cuerda que los une.
+
+
+
+ Una vez domesticados, los lobos siempre llevarán un collar. Tíñelo para cambiarlo de color.
+
+
+Planta zanahorias o patatas y coséchalas cuando empiecen a brotar del suelo.
+
+
+ Además, los jugadores pueden ensillar a los cerdos y montar sobre ellos. Para controlarlos, utiliza un palo y una zanahoria.
+
+
+
+ En caso de necesidad, puedes mover tu vagoneta usando {*CONTROLLER_ACTION_MOVE*}. Esta acción hará que la vagoneta empiece a moverse por un raíl propulsado.
+
+
+No puedes unirte a esta partida porque la pantalla dividida solo se admite en el modo de alta definición. Cierra la sesión del resto de jugadores para unirte.
+
+Curar
+
+Xbox 360
+
+Atrás
+
+Esta opción deshabilita los logros y las actualizaciones del marcador de este mundo cuando se juega y si se vuelve a cargar después de guardarlo con esta opción activada.
+
+Subir partida guardada para Xbox One
+
+Subir datos guardados
+
+En el área de transferencia de datos solo se pueden almacenar los datos guardados de una Consola Xbox 360. Asegúrate de haber descargado los datos guardados de tu Consola Xbox One antes de cargar los de la Consola Xbox 360.
+
+Cargando...
+
+¡Carga completada!
+
+Error al cargar. Inténtalo más tarde.
+
+¡Has encontrado {*progress*} de {*goal*} discos!
+
+
+
diff --git a/Minecraft.Client/Xbox/loc/lcl/fr-FR/Minecraft_all.resx b/Minecraft.Client/Xbox/loc/lcl/fr-FR/Minecraft_all.resx
new file mode 100644
index 00000000..535d3d91
--- /dev/null
+++ b/Minecraft.Client/Xbox/loc/lcl/fr-FR/Minecraft_all.resx
@@ -0,0 +1,4575 @@
+
+Inutilisé
+
+O.K.
+
+Retour
+
+Annuler
+
+Oui
+
+Non
+
+Sauvegarde endommagée
+
+Vos données de sauvegarde semblent endommagées. Créer une nouvelle sauvegarde et écraser le fichier endommagé ?
+
+Espace libre insuffisant
+
+Le périphérique de stockage sélectionné ne dispose pas de suffisamment d'espace libre pour créer une sauvegarde.
+
+Resélectionner
+
+Jouer sans sauvegarder
+
+Créer une sauvegarde
+
+Écraser la sauvegarde ?
+
+Le périphérique de stockage sélectionné contient déjà une sauvegarde. L'écraser ?
+
+Non, ne pas écraser
+
+Écraser et sauvegarder
+
+Échec de la sauvegarde
+
+Problème de périph. de stockage
+
+Votre périphérique de stockage n'est pas disponible ou présente une erreur.
+
+Votre périphérique de stockage est inaccessible ou présente une erreur. Veuillez sélectionner un autre périphérique de stockage.
+
+Sélectionner autre périphérique
+
+Aucun périph. sélectionné
+
+Si vous ne sélectionnez pas de périphérique de stockage, la fonction de sauvegarde sera désactivée.
+
+Sélectionner un périphérique
+
+Continuer sans sauvegarder
+
+Votre périphérique de stockage a été retiré. Sélectionnez-en un autre.
+
+Échec du chargement
+
+Nommer la sauvegarde
+
+Saisir un nom pour la sauvegarde
+
+Retour à l'Interface Xbox
+
+Voulez-vous vraiment quitter le jeu ?
+
+Déconnexion
+
+Votre profil de joueur a été déconnecté : retour à l'écran titre
+
+Un profil de joueur s'est déconnecté : partie interrompue
+
+Continuer à jouer
+
+Profil de joueur hors ligne
+
+Ce jeu intègre des fonctionnalités qui nécessitent un profil de joueur autorisé sur Xbox Live, mais vous êtes actuellement hors ligne.
+
+Cette fonctionnalité nécessite un profil de joueur connecté à Xbox Live.
+
+Connexion à Xbox Live
+
+Continuer à jouer hors ligne
+
+Problème d'attribution de succès
+
+ Un problème est survenu lors de l'accès à votre profil du joueur. Votre succès n'a pas pu être attribué.
+
+Problème de profil du joueur
+
+La sauvegarde des paramètres sur le profil du joueur a échoué.
+
+Profil du joueur invité
+
+Le profil du joueur invité ne peut pas accéder à cette fonctionnalité. Veuillez utiliser un autre profil de joueur.
+
+Sauvegarde...
+
+Enregistrement en cours. N'éteignez pas votre console.
+
+Déverrouiller le jeu complet
+
+Vous jouez à la version d'évaluation de Minecraft. Si vous possédiez le jeu complet, vous auriez déjà remporté un succès !
+Déverrouillez le jeu complet pour profiter au mieux de Minecraft et jouer avec vos amis partout dans le monde via Xbox Live.
+Voulez-vous déverrouiller le jeu complet ?
+
+Un problème s'est produit lors de la lecture de votre profil : retour au menu principal.
+
+Un nouveau contenu téléchargeable est disponible ! Pour y accéder, utilisez le bouton Magasin Minecraft dans le menu principal.
+
+Changez l'apparence de votre personnage avec un pack de skins depuis le Magasin Minecraft. Sélectionnez-le dans le menu principal pour voir ce qui est disponible.
+
+Si vous jouez en mode Haute définition, votre partie peut accueillir jusqu'à quatre joueurs sur écran partagé, le tout sur une seule console !
+
+Connectez des manettes supplémentaires à votre console et appuyez sur START pour rejoindre une partie à tout moment.
+
+Modifie les paramètres de gamma pour augmenter/réduire la luminosité de l'écran.
+
+Si vous avez réglé la difficulté du jeu sur Pacifique, votre santé se régénérera automatiquement, et aucun monstre ne sera de sortie à la nuit tombée !
+
+Donnez un os à un loup pour l'amadouer. Ensuite, donnez-lui l'ordre de s'asseoir ou de vous suivre.
+
+Depuis l'inventaire, déplacez le curseur à l'extérieur de la fenêtre d'inventaire et appuyez sur{*CONTROLLER_VK_A*} pour vous séparer d'un objet.
+
+À la nuit tombée, dormir dans un lit accélère le défilement du temps jusqu'au matin suivant. En mode multijoueur, tous les joueurs doivent dormir dans leur lit en même temps.
+
+Prélevez de la viande de porc sur les cochons puis cuisinez-la. Mangez-la pour récupérer de la santé.
+
+Prélevez du cuir sur les vaches et utilisez-le pour confectionner des armures.
+
+Si vous avez un seau vide, remplissez-le de lait, d'eau ou de lave !
+
+Utilisez une houe pour préparer des terres arables à la culture.
+
+Les araignées ne vous attaqueront pas de jour, sauf pour se défendre.
+
+Creuser le sol ou le sable avec une pelle, c'est plus rapide qu'à mains nues !
+
+Préférez la viande de porc cuite à la viande crue ; vous récupérerez plus de santé.
+
+Fabriquez des torches pour vous éclairer la nuit. Les monstres se tiendront à l'écart des zones éclairées.
+
+Rendez-vous plus rapidement à bon port dans un chariot de mine propulsé sur des rails !
+
+Plantez de jeunes pousses et elles produiront des arbres.
+
+Les hommes-cochons ne s'en prendront pas à vous, sauf si vous les attaquez.
+
+Dormez dans un lit pour changer votre point d'apparition dans le jeu et accélérer le temps jusqu'à l'aube.
+
+Retournez ces boules de feu à l'envoyeur !
+
+Construire un portail vous permettra de voyager jusqu'à une autre dimension : le Nether.
+
+Appuyez sur{*CONTROLLER_VK_B*} pour lâcher l'objet que vous tenez en main !
+
+Utilisez un outil adapté à la tâche !
+
+Si vous ne trouvez pas de charbon pour embraser vos torches, vous pouvez toujours placer du bois dans le four pour obtenir du charbon de bois.
+
+Creuser juste sous vos pieds, ou au-dessus de vous, c'est rarement très judicieux.
+
+La poudre d'os (obtenue depuis un os de squelette) peut servir d'engrais : vos cultures arrivent instantanément à maturité !
+
+Les creepers explosent au contact !
+
+Au contact de l'eau, une source de lave produit de l'obsidienne.
+
+La lave peut mettre plusieurs minutes à disparaître TOTALEMENT lorsque le bloc source est détruit.
+
+La pierre taillée résiste aux boules de feu des ghasts et convient donc très bien à la protection des portails.
+
+Les blocs susceptibles d'émettre de la lumière (torches, glowstone et citrouilles-lanternes, entre autres) peuvent fondre la neige et la glace.
+
+Si vous bâtissez des structures de laine à l'air libre, méfiez-vous : les éclairs peuvent y mettre le feu.
+
+Un seul seau de lave suffit à fondre 100 blocs dans un four.
+
+L'instrument joué par un bloc musical dépend du matériau sur lequel il est posé.
+
+Les zombies et squelettes peuvent survivre à la lumière du jour s'ils sont dans l'eau.
+
+Si vous attaquez un loup, tous les loups à proximité immédiate deviendront aussitôt agressifs ; une propriété qu'ils partagent avec les cochons zombies.
+
+Les loups ne peuvent pas entrer dans le Nether.
+
+Les loups n'attaquent pas les creepers.
+
+Les poules pondent un œuf toutes les 5 à 10 minutes.
+
+L'obsidienne ne peut se miner qu'à l'aide d'une pioche en diamant.
+
+Les creepers sont la source de poudre à canon la plus facilement exploitable.
+
+Deux coffres placés côte à côte formeront un grand coffre.
+
+La santé des loups apprivoisés est illustrée par la position de leur queue. Donnez-leur de la viande pour les soigner.
+
+Passez du cactus au four pour obtenir du colorant vert.
+
+Suivez 4J Studios et Kappische sur Twitter pour rester au courant des dernières actus du jeu !
+
+Depuis le menu Pause, publiez les captures d'écran de vos créations Minecraft sur Facebook et impressionnez vos amis !
+
+Reportez-vous à la rubrique Nouveautés des menus Comment jouer pour consulter les dernières notes de mise à jour du jeu.
+
+Les barrières superposables sont désormais disponibles dans le jeu !
+
+minecraftforum consacre toute une section à l'édition Xbox 360.
+
+Certains animaux vous suivrons si vous tenez du blé dans votre main.
+
+Si un animal ne peut se déplacer de plus de 20 blocs dans chaque direction, il ne disparaîtra pas.
+
+Musique par C418 !
+
+Notch a plus d'un million d'abonnés sur Twitter !
+
+Les Suédois ne sont pas tous blonds. Certains sont même roux, comme Jens de Mojang !
+
+Il paraîtrait que 4J Studios a supprimé Herobrine du jeu sur console Xbox 360, mais rien n'est moins sûr.
+
+Une mise à jour du jeu sera déployée un jour ou l'autre !
+
+Qui c'est, Notch ?
+
+Mojang a reçu plus de récompenses qu'il n'a d'employés !
+
+De vraies célébrités jouent à Minecraft !
+
+deadmau5 aime Minecraft !
+
+Ne regardez pas les bugs dans les yeux.
+
+Les creepers sont nés d'un bug d'encodage.
+
+C'est une poule ou un canard ?
+
+Vous étiez à la Minecon ?
+
+Personne de chez Mojang n'a jamais vu le visage de junkboy.
+
+Vous saviez qu'il existait un Wiki Minecraft ?
+
+Le nouveau bureau de Mojang, il déchire !
+
+Minecraft: Xbox 360 Edition a battu (presque) tous les records !
+
+La Minecon 2013 s'est déroulée à Orlando, Floride, États-Unis !
+
+La .party() était réussie !
+
+N'oubliez pas : les rumeurs tiennent plus de l'invention que de la réalité !
+
+{*T3*}COMMENT JOUER : PRINCIPES{*ETW*}{*B*}{*B*}
+Le principe de Minecraft consiste à placer des blocs pour construire tout ce qu'on peut imaginer. La nuit, les monstres sont de sortie ; tâchez donc d'aménager un abri avant le coucher du soleil.{*B*}{*B*}
+Utilisez{*CONTROLLER_ACTION_LOOK*} pour regarder autour de vous.{*B*}{*B*}
+Utilisez{*CONTROLLER_ACTION_MOVE*} pour vous déplacer.{*B*}{*B*}
+Appuyez sur{*CONTROLLER_ACTION_JUMP*} pour sauter.{*B*}{*B*}
+Orientez{*CONTROLLER_ACTION_MOVE*} deux fois vers l'avant pour sprinter. Tant que vous maintenez {*CONTROLLER_ACTION_MOVE*} vers l'avant, le personnage continuera de sprinter jusqu'à ce que sa durée de sprint soit écoulée ou que sa jauge de nourriture compte moins de{*ICON_SHANK_03*}.{*B*}{*B*}
+Maintenez{*CONTROLLER_ACTION_ACTION*} pour miner ou frapper à mains nues ou à l'aide d'un ustensile. Vous devrez parfois façonner des outils pour miner certains blocs.{*B*}{*B*}
+Si vous tenez un objet à la main, utilisez{*CONTROLLER_ACTION_USE*} pour vous en servir, ou appuyez sur{*CONTROLLER_ACTION_DROP*} pour vous en débarrasser.
+
+{*T3*}COMMENT JOUER : INTERFACE PRINCIPALE{*ETW*}{*B*}{*B*}
+L'interface principale affiche diverses informations, comme votre état, votre santé, l'oxygène qu'il vous reste quand vous nagez sous l'eau, votre niveau de satiété (vous devez manger pour remplir cette jauge) et votre armure, si vous en portez une. Si vous perdez de la santé, mais que votre jauge de nourriture comporte au moins 9{*ICON_SHANK_01*}, votre santé se reconstituera automatiquement. Manger de la nourriture reconstituera votre jauge de nourriture.{*B*}
+L'interface principale affiche également la barre d'expérience, assortie d'une valeur numérique qui représente votre niveau d'expérience, ainsi qu'une jauge indiquant combien de points d'expérience sont nécessaires pour passer au niveau supérieur. Pour obtenir de l'expérience, ramassez les orbes d'expérience abandonnés par les monstres à leur mort, minez certains types de blocs, élevez des animaux, pêchez et fondez du minerai dans le four.{*B*}{*B*}
+Les objets utilisables sont également répertoriés ici. Utilisez{*CONTROLLER_ACTION_LEFT_SCROLL*} et{*CONTROLLER_ACTION_RIGHT_SCROLL*} pour sélectionner un autre objet à tenir en main.
+
+{*T3*}COMMENT JOUER : INVENTAIRE{*ETW*}{*B*}{*B*}
+Utilisez{*CONTROLLER_ACTION_INVENTORY*} pour consulter votre inventaire.{*B*}{*B*}
+Cet écran affiche les objets susceptibles d'être tenus en main ainsi que tous les autres objets que vous portez, armure comprise.{*B*}{*B*}
+Utilisez{*CONTROLLER_MENU_NAVIGATE*} pour déplacer le curseur. Utilisez{*CONTROLLER_VK_A*} pour saisir l'objet placé sous le curseur. S'il s'agit de plusieurs objets, vous sélectionnerez toute la pile. Vous pouvez aussi utiliser{*CONTROLLER_VK_X*} pour n'en sélectionner que la moitié.{*B*}{*B*}
+Déplacez l'objet annexé au curseur jusqu'à un autre emplacement de l'inventaire et déposez-le avec{*CONTROLLER_VK_A*}. Si plusieurs objets sont annexés au curseur, utilisez{*CONTROLLER_VK_A*} pour tous les déposer, ou{*CONTROLLER_VK_X*} pour n'en déposer qu'un seul.{*B*}{*B*}
+Si l'objet pointé est une armure, une infobulle s'affichera pour l'affecter rapidement à l'emplacement d'armure correspondant de votre inventaire.
+{*B*}{*B*}
+Vous pouvez modifier la couleur de votre armure en cuir en utilisant un colorant. Pour cela, sélectionnez le colorant dans votre inventaire et maintenez le curseur puis appuyez sur{*CONTROLLER_VK_X*} lorsque le curseur est sur la pièce à teindre.
+
+
+{*T3*}COMMENT JOUER : COFFRE{*ETW*}{*B*}{*B*}
+Dès que vous aurez fabriqué un coffre, vous pourrez le placer dans votre environnement puis l'utiliser avec{*CONTROLLER_ACTION_USE*} pour entreposer des objets de votre inventaire.{*B*}{*B*}
+Utilisez le pointeur pour déplacer des objets entre votre coffre et votre inventaire.{*B*}{*B*}
+Les objets remisés dans le coffre peuvent ensuite être réintégrés à l'inventaire.
+
+
+{*T3*}COMMENT JOUER : GRAND COFFRE{*ETW*}{*B*}{*B*}
+Deux coffres placés côte à côte se combineront pour former un grand coffre où vous pourrez entreposer toujours plus d'objets.{*B*}{*B*}
+Son mode d'utilisation est identique à celui du coffre de base.
+
+
+{*T3*}COMMENT JOUER : ARTISANAT{*ETW*}{*B*}{*B*}
+Depuis l'interface d'artisanat, vous pouvez combiner divers objets de votre inventaire pour en créer de nouveaux. Utilisez{*CONTROLLER_ACTION_CRAFTING*} pour afficher l'interface d'artisanat.{*B*}{*B*}
+Parcourez les onglets, en haut, à l'aide de{*CONTROLLER_VK_LB*} et{*CONTROLLER_VK_RB*} pour sélectionner la catégorie d'objets que vous souhaitez confectionner, puis utilisez{*CONTROLLER_MENU_NAVIGATE*} pour choisir l'article à créer.{*B*}{*B*}
+La grille d'artisanat indique quels objets sont nécessaires à la production du nouvel article. Appuyez sur{*CONTROLLER_VK_A*} pour confectionner l'objet et le placer dans votre inventaire.
+
+
+{*T3*}COMMENT JOUER : ATELIER{*ETW*}{*B*}{*B*}
+Vous pouvez utiliser un atelier pour confectionner des objets plus grands.{*B*}{*B*}
+Placez l'atelier dans votre environnement et appuyez sur{*CONTROLLER_ACTION_USE*} pour l'utiliser.{*B*}{*B*}
+L'artisanat sur atelier fonctionne de la même manière que l'artisanat classique, mais vous disposez d'une grille d'artisanat plus étendue et d'un éventail plus riche d'objets à créer.
+
+
+{*T3*}COMMENT JOUER : FOUR{*ETW*}{*B*}{*B*}
+Un four vous permet de fondre des objets pour les modifier. Par exemple, vous pouvez y déposer du minerai de fer pour fondre des lingots de fer.{*B*}{*B*}
+Placez le four dans votre environnement et appuyez sur{*CONTROLLER_ACTION_USE*} pour l'utiliser.{*B*}{*B*}
+Vous devrez alimenter le four avec du combustible, en bas, et déposer l'objet à fondre en haut. Le four s'actionnera alors.{*B*}{*B*}
+Une fois les objets fondus, vous pouvez les déplacer depuis la zone de production jusqu'à votre inventaire.{*B*}{*B*}
+Si l'objet pointé est un ingrédient ou du combustible pour le four, une infobulle s'affichera pour transférer l'objet dans le four.
+
+
+{*T3*}COMMENT JOUER : DISTRIBUTEUR{*ETW*}{*B*}{*B*}
+Un distributeur sert à... distribuer des objets. Pour l'actionner, vous devrez placer un interrupteur ou levier à proximité.{*B*}{*B*}
+Pour remplir d'objets le distributeur, appuyez sur{*CONTROLLER_ACTION_USE*}, puis placez-y les articles de votre inventaire que vous souhaitez distribuer.{*B*}{*B*}
+Le distributeur crachera un objet dès que vous actionnerez l'interrupteur dédié.
+
+
+{*T3*}COMMENT JOUER : ALCHIMIE{*ETW*}{*B*}{*B*}
+La concoction de potions nécessite un alambic, à construire dans un atelier. Toutes les potions ont pour base une fiole d'eau, qu'on obtient en remplissant une fiole avec de l'eau tirée d'un chaudron ou d'une source d'eau.{*B*}
+Un alambic peut accueillir jusqu'à trois fioles ; vous pouvez donc distiller jusqu'à trois potions à la fois. Un même ingrédient peut servir aux trois fioles. Pensez à toujours distiller trois potions à la fois pour optimiser vos ressources.{*B*}
+Placer un ingrédient de potion dans l'emplacement du haut de l'alambic produira une potion de base au bout de quelques instants. Celle-ci n'a aucun effet, mais si vous distillez un autre ingrédient avec cette fiole de base, vous produirez une potion avec un principe actif.{*B*}
+Ajoutez alors un troisième ingrédient pour allonger la durée d'effet de la potion (à l'aide de poudre de redstone), renforcer son intensité (à l'aide de poudre de glowstone) ou bien en faire une potion offensive (à l'aide d'un œil d'araignée fermenté).{*B*}
+Vous pouvez aussi y incorporer de la poudre à canon pour en faire une potion volatile que vous pouvez lancer. Une fois lancées, les potions volatiles appliquent leurs effets à la zone d'impact.{*B*}
+
+Les matières premières pour les potions sont :{*B*}{*B*}
+* {*T2*}Verrue du Nether{*ETW*}{*B*}
+* {*T2*}Œil d'araignée{*ETW*}{*B*}
+* {*T2*}Sucre{*ETW*}{*B*}
+* {*T2*}Larme de Ghast{*ETW*}{*B*}
+* {*T2*}Poudre de feu{*ETW*}{*B*}
+* {*T2*}Crème de magma{*ETW*}{*B*}
+* {*T2*}Pastèque scintillante{*ETW*}{*B*}
+* {*T2*}Poudre de redstone{*ETW*}{*B*}
+* {*T2*}Poudre de glowstone{*ETW*}{*B*}
+* {*T2*}Œil d'araignée fermenté{*ETW*}{*B*}{*B*}
+
+Vous devrez essayer diverses combinaisons d'ingrédients pour découvrir toutes les recettes de potions à concocter.
+
+
+{*T3*}COMMENT JOUER : ENCHANTEMENT{*ETW*}{*B*}{*B*}
+Les points d'expérience obtenus à la mort d'un monstre, ou lorsque certains blocs sont minés ou fondus dans un four, peuvent servir à enchanter les outils, armes, armures et livres.{*B*}
+Lorsqu'une épée, une hache, une pioche, une pelle, une armure ou un livre est placé dans l'emplacement situé sous le livre de la table d'enchantement, les trois boutons à sa droite afficheront certains enchantements ainsi que leur coût en niveaux d'expérience.{*B*}
+Si vous n'avez pas assez de niveaux d'expérience pour utiliser certains d'entre eux, le coût apparaîtra en rouge ; sinon, en vert.{*B*}{*B*}
+L'enchantement appliqué par défaut est choisi aléatoirement d'après le coût affiché.{*B*}{*B*}
+Si la table d'enchantement est entourée de bibliothèques (jusqu'à 15) avec un intervalle d'un bloc entre la table et la bibliothèque, la puissance des enchantements sera renforcée et des glyphes arcaniques apparaîtront, projetés par le livre sur la table d'enchantement.{*B*}{*B*}
+Tous les ingrédients nécessaires à une table d'enchantement peuvent se trouver dans les villages, ou bien en minant et cultivant.{*B*}
+Utilisez les livres d'enchantement à l'enclume pour enchanter des objets. Ainsi, vous contrôlez mieux quels enchantements vous désirez utiliser sur vos objets.{*B*}
+
+
+{*T3*}COMMENT JOUER : ANIMAUX DE LA FERME{*ETW*}{*B*}{*B*}
+Si vous souhaitez garder vos animaux au même endroit, construisez une zone clôturée de moins de 20x20 blocs pour y parquer vos animaux. Avec la clôture, vous serez sûr de retrouver vos animaux quand vous viendrez les voir.
+
+
+{*T3*}COMMENT JOUER : ÉLEVER DES ANIMAUX{*ETW*}{*B*}{*B*}
+Les animaux de Minecraft peuvent se reproduirent et donner naissance à des petits !{*B*}
+Pour faire en sorte que les animaux se reproduisent, vous devez leur donner à manger la nourriture appropriée ; ils basculeront alors en mode « Romance ».{*B*}
+Donnez du blé aux vaches, Champimeuh et moutons, des carottes aux cochons, des graines de blé ou des verrues du Nether aux poulets et n'importe quelle variété de viande aux loups : ils se mettront alors en chasse d'un autre animal de leur espèce, lui aussi disposé à se reproduire.{*B*}
+Lorsque deux animaux d'une même espèce se rencontrent, et pourvu qu'ils soient tous les deux en mode Romance, ils s'embrassent quelques secondes, et un bébé apparaît. Le jeune animal suivra ses parents quelque temps avant de devenir adulte.{*B*}
+Une fois qu'un animal est passé en mode Romance, il faut patienter cinq minutes environ pour qu'il soit à nouveau apte.{*B*}
+Le nombre d'animaux dans un monde est limité ; il est donc possible que vos animaux ne se reproduisent pas s'ils sont déjà nombreux.
+
+{*T3*}COMMENT JOUER : PORTAIL DU NETHER{*ETW*}{*B*}{*B*}
+Un portail du Nether permet au joueur de circuler entre la Surface et le Nether. Vous pouvez emprunter le Nether pour voyager rapidement à la Surface : parcourir un bloc de distance dans le Nether équivaut à voyager sur trois blocs de la Surface. Lorsque vous empruntez un portail pour quitter le Nether, vous aurez voyagé sur une distance 3 fois supérieure à celle réellement parcourue.{*B*}{*B*}
+Vous devrez disposer d'au moins 10 blocs d'obsidienne pour construire le portail : celui-ci doit être haut de 5 blocs et large de 4, pour une épaisseur d'1 bloc. Une fois le contour achevé, l'espace contenu à l'intérieur doit être enflammé pour activer le portail. Pour ce faire, vous pouvez utiliser un briquet à silex ou une boule de feu.{*B*}{*B*}
+Des exemples de construction de portail sont illustrés à droite.
+
+
+{*T3*}COMMENT JOUER : MULTIJOUEUR{*ETW*}{*B*}{*B*}
+Par défaut, Minecraft sur console Xbox 360 est un jeu multijoueur. Si vous jouez en mode haute définition, vous pouvez raccorder des manettes supplémentaires et appuyer sur START à n'importe quel moment pour que d'autres joueurs rejoignent la partie.{*B*}{*B*}
+Lorsque vous démarrez ou rejoignez une partie en ligne, elle apparaîtra à tous les joueurs de votre liste d'amis (à moins que vous n'ayez sélectionné l'option Sur invitation lors de la création de la partie) ; s'ils rejoignent la partie, elle apparaîtra également aux membres de leur propre liste d'amis (si vous avez sélectionné l'option Autoriser les amis d'amis).{*B*}
+En cours de partie, vous pouvez appuyer sur la touche BACK pour afficher la liste des joueurs qui figurent dans la partie, consulter leurs cartes du joueur, exclure des joueurs et en inviter d'autres à rejoindre la partie.
+
+
+{*T3*}COMMENT JOUER : PARTAGE DE CAPTURES D'ÉCRAN{*ETW*}{*B*}{*B*}
+Pour saisir une capture d'écran de votre partie, affichez le menu Pause et appuyez sur{*CONTROLLER_VK_Y*} pour partager sur Facebook. Vous verrez apparaître une version miniature de votre capture d'écran ; vous pourrez alors modifier le texte associé à votre publication sur Facebook.{*B*}{*B*}
+Un mode Caméra est tout spécialement conçu pour saisir ces captures d'écran. Appuyez sur{*CONTROLLER_ACTION_CAMERA*} jusqu'à ce que s'affiche la vue de devant du personnage. Ensuite, appuyez sur{*CONTROLLER_VK_Y*} pour partager.{*B*}{*B*}
+Les gamertags ne seront pas affichés sur la capture d'écran.
+
+
+{*T3*}COMMENT JOUER : EXCLUSION DE NIVEAUX{*ETW*}{*B*}{*B*}
+Si vous découvrez du contenu inapproprié dans un niveau auquel vous jouez, vous pouvez choisir de l'ajouter à votre liste de niveaux exclus.
+Pour ce faire, affichez le menu Pause puis appuyez sur{*CONTROLLER_VK_RB*} pour sélectionner l'option d'exclusion de niveaux.
+Si vous tentez de rejoindre ce niveau à l'avenir, un message vous indiquera qu'il figure dans votre liste de niveaux exclus. Vous pourrez alors décider de le supprimer de la liste et d'y accéder, ou bien d'annuler.
+
+{*T3*}COMMENT JOUER : MODE CRÉATIF{*ETW*}{*B*}{*B*}
+L'interface du mode Créatif permet de déplacer dans l'inventaire du joueur n'importe quel objet du jeu sans qu'il soit besoin de le miner ou de le fabriquer. {*B*}
+Les objets figurant dans l'inventaire du joueur ne sont pas supprimés lorsqu'ils sont placés ou utilisés dans l'environnement du jeu, ce qui permet au joueur de tout miser sur la construction sans se soucier de collecter des ressources.{*B*}
+Si vous créez, chargez ou sauvegardez un monde en mode Créatif, les mises à jour des succès et des classements seront désactivées pour ce monde, même s'il est chargé en mode Survie.{*B*}
+Pour voler en mode Créatif, appuyez deux fois rapidement sur {*CONTROLLER_ACTION_JUMP*}. Pour ne plus voler, répétez l'opération. Pour voler plus vite, orientez rapidement{*CONTROLLER_ACTION_MOVE*} deux fois vers l'avant en cours de vol.{*B*}
+En mode Vol, maintenez{*CONTROLLER_ACTION_JUMP*} pour monter et{*CONTROLLER_ACTION_SNEAK*} pour descendre, ou bien utilisez{*CONTROLLER_ACTION_DPAD_UP*} pour monter, {*CONTROLLER_ACTION_DPAD_DOWN*} pour descendre, {*B*}
+{*CONTROLLER_ACTION_DPAD_LEFT*} pour virer à gauche et {*CONTROLLER_ACTION_DPAD_RIGHT*} pour virer à droite.
+
+{*T3*}COMMENT JOUER : OPTIONS DU JOUEUR ET DE L'HÔTE{*ETW*}{*B*}{*B*}
+
+{*T1*}Options du joueur{*ETW*}{*B*}
+Lorsque vous chargez ou créez un monde, appuyez sur le bouton Plus d'options pour accéder à un menu où figurent d'autres paramètres de configuration de la partie.{*B*}{*B*}
+
+ {*T2*}Joueur contre joueur{*ETW*}{*B*}
+ Lorsque cette option est activée, les joueurs peuvent infliger des dégâts aux autres joueurs. Cette option ne s'applique qu'au mode Survie.{*B*}{*B*}
+
+ {*T2*}Joueurs de confiance{*ETW*}{*B*}
+ Lorsque cette option est désactivée, les joueurs sont limités dans leurs activités. Ils ne peuvent pas miner ou utiliser des objets, placer des blocs ou des interrupteurs, utiliser des conteneurs, attaquer des joueurs ou des animaux. Vous pouvez modifier les options applicables à un joueur donné depuis le menu de jeu.{*B*}{*B*}
+
+ {*T2*}Propagation du feu{*ETW*}{*B*}
+ Lorsque cette option est activée, le feu peut se propager aux blocs voisins inflammables. Vous pouvez aussi modifier cette option depuis le menu de jeu.{*B*}{*B*}
+
+ {*T2*}Explosion de TNT{*ETW*}{*B*}
+ Lorsque cette option est activée, le TNT peut exploser lorsqu'il est activé. Vous pouvez aussi modifier cette option depuis le menu de jeu.{*B*}{*B*}
+
+ {*T2*}Privilèges d'hôte{*ETW*}{*B*}
+ Lorsque cette option est activée, l'hôte peut activer/désactiver sa capacité à voler, désactiver la fatigue et se rendre invisible depuis le menu de jeu. {*DISABLES ACHIEVEMENTS}{*.{*B*}{*B*}
+
+{*T1*}Options de création de monde{*ETW*}{*B*}
+Lorsque vous créez un monde, vous disposez d'options supplémentaires.{*B*}{*B*}
+
+ {*T2*}Génération de structures{*ETW*}{*B*}
+ Lorsque cette option est activée, les structures comme les villages et les forts apparaîtront dans le monde.{*B*}{*B*}
+
+ {*T2*}Monde superplat{*ETW*}{*B*}
+ Lorsque cette option est activée, un monde complètement plat apparaîtra à la Surface et dans le Nether.{*B*}{*B*}
+
+ {*T2*}Coffre bonus{*ETW*}{*B*}
+ Lorsque cette option est activée, un coffre renfermant des objets utiles sera créé à proximité du point d'apparition du joueur.{*B*}{*B*}
+
+ {*T2*}Réinitialiser le Nether{*ETW*}{*B*}
+ Quand activé, le Nether sera généré de nouveau. Ceci est utile si vous avez une sauvegarde plus ancienne sans forteresse du Nether.{*B*}{*B*}
+
+ {*T1*}Options de jeu{*ETW*}{*B*}
+ Appuyez sur la touche BACK pour afficher le menu de jeu et accéder à diverses options.{*B*}{*B*}
+
+ {*T2*}Options de l'hôte{*ETW*}{*B*}
+ Le joueur hôte et les joueurs au statut de modérateur peuvent accéder au menu Options de l'hôte. Depuis ce menu, ils peuvent activer/désactiver la propagation du feu et l'explosion de TNT.{*B*}{*B*}
+
+{*T1*}Options du joueur{*ETW*}{*B*}
+Pour modifier les privilèges d'un joueur, sélectionnez son nom et appuyez sur{*CONTROLLER_VK_A*} pour afficher le menu des privilèges et paramétrer les options suivantes.{*B*}{*B*}
+
+ {*T2*}Peut construire et miner{*ETW*}{*B*}
+ Uniquement disponible si l'option Joueurs de confiance est désactivée. Lorsque cette option est activée, le joueur peut interagir normalement avec le monde. Sinon, il ne pourra ni placer ni détruire des blocs, ni même interagir avec de nombreux objets et blocs.{*B*}{*B*}
+
+ {*T2*}Peut utiliser les portes et les interrupteurs{*ETW*}{*B*}
+ Uniquement disponible quand l'option Joueurs de confiance est désactivée. Quand cette option est désactivée, le joueur ne pourra pas utiliser les portes ou les interrupteurs.{*B*}{*B*}
+
+ {*T2*}Peut ouvrir les conteneurs{*ETW*}{*B*}
+ Uniquement disponible quand l'option Joueurs de confiance est désactivée. Quand cette option est désactivée, le joueur ne pourra pas ouvrir les conteneurs, tels que les coffres.{*B*}{*B*}
+
+ {*T2*}Peut attaquer les joueurs{*ETW*}{*B*}
+ Uniquement disponible si l'option Joueurs de confiance est désactivée. Cette option désactivée, le joueur ne pourra pas infliger de dégâts aux autres joueurs.{*B*}{*B*}
+
+ {*T2*}Peut attaquer des animaux{*ETW*}{*B*}
+ Uniquement disponible quand l'option Joueurs de confiance est désactivée. Quand cette option est désactivée, le joueur ne pourra pas infliger des dégâts aux animaux.{*B*}{*B*}
+
+ {*T2*}Modérateur{*ETW*}{*B*}
+ Lorsque cette option est activée, le joueur peut modifier les privilèges des autres joueurs (à l'exception de l'hôte) si l'option Joueurs de confiance est désactivée, il peut exclure des joueurs et activer ou désactiver la propagation du feu et l'explosion de TNT.{*B*}{*B*}
+
+ {*T2*}Exclure joueur{*ETW*}{*B*}
+ Pour les joueurs qui ne jouent pas sur la même console {*PLATFORM_NAME*} que le joueur hôte, sélectionner cette option exclura le joueur de la partie, ainsi que tout autre joueur sur sa console {*PLATFORM_NAME*}. Ce joueur ne pourra plus rejoindre la partie jusqu'à son redémarrage.{*B*}{*B*}
+
+{*T1*}Options du joueur hôte{*ETW*}{*B*}
+Si l'option Privilèges d'hôte est activée, le joueur hôte peut modifier certains de ses propres privilèges. Pour modifier les privilèges d'un joueur, sélectionnez son nom et appuyez sur{*CONTROLLER_VK_A*} pour afficher le menu des privilèges et paramétrer les options suivantes.{*B*}{*B*}
+
+ {*T2*}Peut voler{*ETW*}{*B*}
+ Lorsque cette option est activée, le joueur peut voler. Cette option ne sert qu'en mode Survie, puisque tous les joueurs peuvent voler en mode Créatif.{*B*}{*B*}
+
+ {*T2*}Fatigue désactivée{*ETW*}{*B*}
+ Cette option ne s'applique qu'au mode Survie. Lorsque cette option est activée, les activités physiques (marcher, courir, sauter, etc.) n'épuisent pas la jauge de nourriture. En revanche, si le joueur est blessé, sa jauge de nourriture se videra progressivement tandis qu'il se remet de ses blessures.{*B*}{*B*}
+
+ {*T2*}Invisible{*ETW*}{*B*}
+ Lorsque cette option est activée, le joueur est dissimulé au regard des autres joueurs et est invulnérable.{*B*}{*B*}
+
+ {*T2*}Peut se téléporter{*ETW*}{*B*}
+ Cette option permet au joueur de se déplacer ou déplacer d'autres joueurs instantanément dans le monde.
+
+
+Page suivante
+
+Page précédente
+
+Principes
+
+Interface principale
+
+Inventaire
+
+Coffres
+
+Artisanat
+
+Four
+
+Distributeur
+
+Animaux de la ferme
+
+Élever des animaux
+
+Alchimie
+
+Enchantement
+
+Portail du Nether
+
+Multijoueur
+
+Partage des captures d'écran
+
+Exclusion de niveaux
+
+Mode Créatif
+
+Options de l'hôte et du joueur
+
+Transactions
+
+Enclume
+
+La Fin
+
+{*T3*}COMMENT JOUER : L'ENDER{*ETW*}{*B*}{*B*}
+L'Ender est une autre dimension du jeu, atteinte par un portail de l'Ender actif. Le portail de l'Ender se trouve dans un fort, profondément enfoui sous la Surface.{*B*}
+Pour activer le portail de l'Ender, vous devrez placer un œil d'Ender dans n'importe quel cadre de portail de l'Ender qui n'en contient pas.{*B*}
+Quand le portail est actif, sautez dedans pour vous rendre dans l'Ender.{*B*}{*B*}
+Dans l'Ender, vous rencontrerez le dragon de l'Ender, un ennemi féroce et puissant, et de nombreux Enderman. Vous devrez donc être préparé au combat avant de vous y rendre !{*B*}{*B*}
+Vous découvrirez qu'il existe des cristaux d'Ender à l'extrémité de huit pics d'obsidienne que le dragon utilise pour se soigner.
+La première étape est donc de détruire chacun d'entre eux.{*B*}
+Les premiers peuvent être atteints par des flèches, mais les derniers sont protégés par une cage d'acier, et vous devrez les atteindre par étapes.{*B*}{*B*}
+Ce faisant, le dragon de l'Ender vous attaquera en volant vers vous et en crachant des boules d'acide de l'Ender !{*B*}
+Si vous vous approchez du podium aux œufs au centre des pics, le dragon volera vers vous pour vous attaquer, ce qui vous donnera une bonne occasion de le blesser !{*B*}
+Évitez son souffle acide et visez ses yeux pour de meilleurs résultats. Si possible, demandez à des amis de vous suivre dans l'Ender pour vous aider dans votre combat !{*B*}{*B*}
+Une fois que vous serez dans l'Ender, vos amis pourront voir l'emplacement du portail de l'Ender dans le fort sur leurs cartes,
+et ils pourront facilement vous rejoindre.
+
+
+Sprint
+
+Nouveautés
+
+
+{*T3*}Modifications et ajouts {*ETW*}{*B*}{*B*}
+- Ajout de nouveaux objets : émeraude, minerai d'émeraude, bloc d'émeraude, coffre du Néant, crochet, pomme dorée enchantée, enclume, pot de fleurs, murets, murets moussus, peinture de Wither, pomme de terre, pomme de terre cuite, pomme de terre empoisonnée, carotte, carotte dorée, carotte sur un bâton,
+tarte à la citrouille, potion de vision nocturne, potion d'invisibilité, quartz du Nether, minerai de quartz du Nether, bloc de quartz du Nether, dalle de quartz, escalier en quartz, bloc de quartz taillé, pilier de blocs de quartz, livre enchanté, tapis.{*B*}
+- Ajout de nouvelles recettes pour le grès lisse et le grès taillé.{*B*}
+- Ajout de nouveaux monstres : villageois zombies.{*B*}
+- Ajout de nouvelles fonctions de génération de terrain : pyramides, villages du désert, temples de la jungle.{*B*}
+- Ajout de transactions avec les villageois.{*B*}
+- Ajout d'une interface d'enclume.{*B*}
+- Possibilité de teindre les armures en cuir.{*B*}
+- Possibilité de teindre les colliers des loups.{*B*}
+- Possibilité de contrôler un cochon comme monture à l'aide d'une carotte sur un bâton.{*B*}
+- Mise à jour du contenu des coffres bonus, qui contiennent maintenant plus d'objets.{*B*}
+- Modification du placement des demi-blocs et autres blocs sur demi-blocs.{*B*}
+- Modification du placement des escaliers et dalles à l'envers.{*B*}
+- Ajout de différentes professions pour les villageois.{*B*}
+- Les villageois générés par un œuf d'apparition ont une profession aléatoire.{*B*}
+- Ajout d'un placement de tronc oblique.{*B*}
+- Les fours peuvent utiliser les outils en bois comme combustible.{*B*}
+- Vous pouvez récupérer les vitres en glace et en verre à l'aide d'outils disposant de l'enchantement Délicatesse.{*B*}
+- Vous pouvez déclencher les boutons en bois et les plaques de détection en bois à l'aide de flèches.{*B*}
+- Les portails à la Surface peuvent générer des monstres du Nether.{*B*}
+- Les creepers et les araignées attaquent le dernier joueur qui les a touchés.{*B*}
+- En mode Créatif, les monstres redeviennent neutres après un bref laps de temps.{*B*}
+- Suppression du recul en cas de noyade.{*B*}
+- Les dégâts des portes abîmées par les zombies sont visibles.{*B*}
+- La glace fond dans le Nether.{*B*}
+- Les chaudrons se remplissent d'eau de pluie.{*B*}
+- Les pistons sont deux fois plus longs à mettre à jour.{*B*}
+- Le cochon laisse une selle à sa mort (s'il en possède une).{*B*}
+- La couleur du ciel de La Fin a changé.{*B*}
+- Il est possible de placer un fil de déclenchement relié à un crochet.{*B*}
+- La pluie goutte à travers les feuilles.{*B*}
+- Il est possible de placer des leviers sur le bas des blocs.{*B*}
+- La TNT inflige des dégâts variables selon la difficulté choisie.{*B*}
+- La recette des livres a changé.{*B*}
+- Ce sont les bateaux qui cassent les nénuphars et non l'inverse.{*B*}
+- Les cochons lâchent plus de viande de porc.{*B*}
+- Les slimes se reproduisent moins dans les mondes superplats.{*B*}
+- Les dégâts des creepers sont variables selon la difficulté choisie. Recul accru.{*B*}
+- Correction du bug qui empêchait l'Enderman d'ouvrir les mâchoires.{*B*}
+- Ajout d'une téléportation des joueurs (à l'aide du menu {*BACK_BUTTON*} dans le jeu).{*B*}
+- Ajout de nouvelles options de l'hôte gérant la lévitation, l'invisibilité et l'invulnérabilité des joueurs distants.{*B*}
+- Ajout de nouveaux didacticiels dans le monde didacticiel, correspondant aux nouveaux objets et fonctionnalités.{*B*}
+- Mise à jour de l'emplacement des coffres à disques vinyles dans le monde didacticiel.{*B*}
+
+
+{*ETB*}Bienvenue ! Comme vous l'avez peut-être déjà remarqué, votre Minecraft vient de bénéficier d'une nouvelle mise à jour.{*B*}{*B*}
+Vous et vos amis pouvez découvrir de nombreuses nouvelles fonctionnalités. Jetez un œil à l'aperçu qui suit et allez jouer !{*B*}{*B*}
+{*T1*}Nouveaux objets{*ETB*} - Émeraude, minerai d'émeraude, bloc d'émeraude, coffre du Néant, crochet, pomme dorée enchantée, enclume, pot de fleurs, murets, murets moussus, peinture de Wither, pomme de terre, pomme de terre cuite, pomme de terre empoisonnée, carotte, carotte dorée, carotte sur un bâton,
+tarte à la citrouille, potion de vision nocturne, potion d'invisibilité, quartz du Nether, minerai de quartz du Nether, bloc de quartz, dalle de quartz, escalier en quartz, bloc de quartz taillé, pilier de blocs de quartz, livre enchanté, tapis.{*B*}{*B*}
+{*T1*}Nouveaux monstres{*ETB*} - Villageois zombies.{*B*}{*B*}
+{*T1*}Nouvelles fonctionnalités{*ETB*} - Commercez avec les villageois, réparez ou enchantez vos armes et outils à l'aide d'une enclume, stockez des objets dans le coffre du Néant, faites du rodéo sur un cochon avec une carotte sur un bâton !{*B*}{*B*}
+{*T1*}Nouveaux mini-didacticiels{*ETB*} – Apprenez à utiliser ces nouvelles fonctionnalités dans le monde didacticiel !{*B*}{*B*}
+{*T1*}Nouveaux 'Easter Eggs'{*ETB*} – Nous avons modifié l'emplacement de tous les disques vinyles secrets dans le monde didacticiel. Essayez de les retrouver !{*B*}{*B*}
+
+
+Inflige plus de dégâts qu'à mains nues.
+
+Sert à pelleter la terre, l'herbe, le sable, le gravier et la neige plus vite qu'à mains nues. Vous devrez posséder une pelle pour creuser les boules de neige.
+
+Nécessaire pour miner les blocs de pierre et le minerai.
+
+Sert à travailler les blocs de bois plus vite qu'à mains nues.
+
+Sert à faucher les blocs de terre et d'herbe pour les préparer à la culture.
+
+Pour activer les portes en bois, vous devez les actionner, les frapper ou utiliser une redstone.
+
+Les portes en fer ne peuvent s'ouvrir qu'au moyen d'une redstone, de boutons ou d'interrupteurs.
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+Confère au porteur une armure de 1.
+
+Confère au porteur une armure de 3.
+
+Confère au porteur une armure de 2.
+
+Confère au porteur une armure de 1.
+
+Confère au porteur une armure de 2.
+
+Confère au porteur une armure de 5.
+
+Confère au porteur une armure de 4.
+
+Confère au porteur une armure de 1.
+
+Confère au porteur une armure de 2.
+
+Confère au porteur une armure de 6.
+
+Confère au porteur une armure de 5.
+
+Confère au porteur une armure de 2.
+
+Confère au porteur une armure de 2.
+
+Confère au porteur une armure de 5.
+
+Confère au porteur une armure de 3.
+
+Confère au porteur une armure de 1.
+
+Confère au porteur une armure de 3.
+
+Confère au porteur une armure de 8.
+
+Confère au porteur une armure de 6.
+
+Confère au porteur une armure de 3.
+
+Un lingot étincelant qui sert à la confection d'outils. Créé en fondant du minerai dans le four.
+
+Permet de transformer les lingots, gemmes ou colorants en blocs aménageables. Peut servir de bloc de construction précieux ou d'entrepôt compact pour le minerai.
+
+Sert à infliger une décharge électrique au joueur, animal ou monstre qui marche dessus. Les plaques de détection en bois se déclenchent également si vous laissez tomber un objet dessus.
+
+Sert à la création d'escaliers compacts.
+
+Sert à la création d'escaliers longs. Deux dalles placées l'une sur l'autre formeront une dalle double de taille normale.
+
+Sert à la création d'escaliers longs. Deux blocs placés l'un sur l'autre créent un bloc double de taille normale.
+
+Sert à produire de la lumière. Les torches permettent aussi de fondre la neige et la glace.
+
+Sert de matériau de construction ; transformable en de nombreux objets. Se taille dans n'importe quel type de bois.
+
+Sert de matériau de
+construction. La gravité n'a pas d'effet sur lui, contrairement au sable normal.
+
+Sert de matériau de construction.
+
+Sert à la confection des torches, flèches, panneaux, échelles, barrières, ainsi que
+des poignées d'armes et manches d'outils.
+
+Permet d'accélérer le cycle nuit/jour jusqu'à l'aube suivante pourvu que tous les joueurs soient couchés ; modifie également le point d'apparition du joueur.
+La couleur des lits est toujours la même.
+
+Permet de créer un éventail d'objets plus riche que l'artisanat classique.
+
+Permet de fondre le minerai, de créer du charbon et du verre, de cuisiner le poisson et la viande de porc.
+
+Permet d'entreposer des blocs et objets. Placez deux coffres côte à côte pour former un grand coffre à la capacité doublée.
+
+Sert de rempart impossible à franchir. Compte pour 1,5 bloc de hauteur pour les joueurs, animaux et monstres, mais pour un seul bloc de hauteur pour les autres blocs.
+
+Permet de grimper et de descendre.
+
+Actionnez, frappez la trappe ou utilisez une redstone pour l'activer. La trappe fonctionne à la manière d'une porte classique, sauf qu'elle occupe un espace d'1x1 bloc et repose à même le sol.
+
+Affiche les messages que les autres joueurs et vous saisissez.
+
+Sert à produire une lumière plus vive que celle des torches. Permet de fondre la neige et la glace ; peut s'utiliser sous l'eau.
+
+Sert à déclencher des explosions. Une fois placé, appliquez une décharge électrique ou utilisez un briquet à silex pour l'activer.
+
+Sert à contenir du ragoût de champignons. Vous conservez le bol une fois le ragoût avalé.
+
+Sert à contenir et transporter eau, lave et lait.
+
+Sert à contenir et transporter de l'eau.
+
+Sert à contenir et transporter de la lave.
+
+Sert à contenir et transporter du lait.
+
+Sert à faire du feu et à allumer la mèche du TNT ; ouvre un portail sitôt fabriqué.
+
+Sert à pêcher le poisson.
+
+Affiche la position du soleil et de la lune.
+
+Indique la position de votre point de départ.
+
+Tenue en main, la carte crée l'image d'une zone explorée. Peut servir à la détermination d'un trajet.
+
+Permet d'attaquer à distance à l'aide de flèches.
+
+Sert de munitions pour les arcs.
+
+Restitue 2,5{*ICON_SHANK_01*}.
+
+Restitue 1{*ICON_SHANK_01*}.. Peut s'utiliser jusqu'à 6 fois.
+
+Restitue 1{*ICON_SHANK_01*}.
+
+Restitue 1{*ICON_SHANK_01*}.
+
+Restitue 3{*ICON_SHANK_01*}.
+
+Restitue 1{*ICON_SHANK_01*} mais peut vous empoisonner. Se cuisine dans un four.
+
+Restitue 3{*ICON_SHANK_01*}. Obtenu en cuisinant de la viande de poulet cru dans un four.
+
+Restitue 1,5{*ICON_SHANK_01*}. Se cuisine dans un four.
+
+Restitue 4{*ICON_SHANK_01*}. Obtenu en cuisinant de la viande de bœuf cru dans un four.
+
+Restitue 1,5{*ICON_SHANK_01*} ou se cuisine dans un four.
+
+Restitue 4{*ICON_SHANK_01*}. Obtenue en cuisinant de la viande de porc cru dans un four.
+
+Restitue 1{*ICON_SHANK_01*} ou se cuisine dans un four. Sert également à nourrir un ocelot pour l'apprivoiser.
+
+Restitue 2,5{*ICON_SHANK_01*}. Résulte de la cuisson de poisson cru dans un four.
+
+Restitue 2{*ICON_SHANK_01*} ; transformable en pomme dorée.
+
+Restitue 2{*ICON_SHANK_01*} et régénère la santé pendant 4 secondes. Se fabrique avec une carotte et des pépites d'or.
+
+Restitue 2{*ICON_SHANK_01*} mais peut vous empoisonner.
+
+Sert d'ingrédient dans la recette du gâteau et à la préparation de potions.
+
+Si activé, permet de produire une décharge électrique. Reste activé/désactivé jusqu'à nouvelle utilisation.
+
+Produit une décharge électrique constante ; peut aussi servir de récepteur/
+transmetteur si connectée à la façade d'un bloc.
+Génère également une faible luminosité.
+
+Sert dans les circuits de redstone comme répéteur, retardateur et/ou diode.
+
+Sert à produire une décharge électrique une fois actionné. Reste activé pendant environ une seconde avant de se désactiver.
+
+Sert à entreposer et distribuer aléatoirement des objets lorsqu'on lui applique une charge de redstone.
+
+Joue une note une fois actionné. Frappez-le pour changer la hauteur de note. Déposez-le sur des blocs différents pour changer le type d'instrument.
+
+Sert à diriger les chariots de mine.
+
+Une fois alimenté en énergie, accélère les chariots de mine qui l'empruntent. Si le rail n'est pas alimenté, les chariots interrompent aussitôt leur trajet.
+
+Fonctionne comme une plaque de détection (diffuse un signal de redstone si alimenté), mais ne peut être activé que par un chariot de mine.
+
+Sert à véhiculer sur les rails joueurs, animaux et monstres.
+
+Sert à acheminer des marchandises sur les rails.
+
+Se déplace sur les rails et propulse les autres chariots de mine lorsqu'on l'alimente au charbon.
+
+Sert à circuler dans l'eau plus rapidement qu'à la nage.
+
+Prélevée sur les moutons ; se teint avec les colorants.
+
+Sert de matériau de construction et se teint avec les colorants. Cette recette n'est pas recommandée, puisque la laine s'obtient facilement sur les moutons.
+
+Sert de colorant pour la confection de laine noire.
+
+Sert de colorant pour la confection de laine verte.
+
+Utilisé comme colorant pour la confection de laine marron, d'ingrédient pour la préparation de cookies et pour faire pousser des fèves de chocolat.
+
+Sert de colorant pour la confection de laine argentée.
+
+Sert de colorant pour la confection de laine jaune.
+
+Sert de colorant pour la confection de laine rouge.
+
+Fait instantanément arriver à maturité les cultures, arbres, herbes hautes, champignons géants et fleurs ; peut aussi servir dans les recettes de colorant.
+
+Sert de colorant pour la confection de laine rose.
+
+Sert de colorant pour la confection de laine orange.
+
+Sert de colorant pour la confection de laine vert lime.
+
+Sert de colorant pour la confection de laine grise.
+
+Sert de colorant pour créer de la laine gris clair.
+Remarque : vous pouvez aussi combiner colorant gris et poudre d'os pour en produire. Vous pouvez ainsi en confectionner quatre par poche d'encre au lieu de trois.
+
+Sert de colorant pour la confection de laine bleu ciel.
+
+Sert de colorant pour la confection de laine bleu cyan.
+
+Sert de colorant pour la confection de laine violette.
+
+Sert de colorant pour la confection de laine magenta.
+
+Sert de colorant pour la confection de laine bleue.
+
+Permet d'écouter des disques.
+
+Utiles pour confectionner des outils, armes et armures très robustes.
+
+Sert à produire une lumière plus vive que celle des torches. Permet de fondre la neige et la glace ; peut s'utiliser sous l'eau.
+
+Sert à créer des livres et cartes.
+
+Sert à créer des bibliothèques ou est utilisé enchanté pour fabriquer des livres enchantés.
+
+Placée dans la table d'enchantement, permet de créer des enchantements encore plus puissants.
+
+Sert de décoration.
+
+Se mine à l'aide d'une pioche en fer (ou mieux) ; transformé en lingots d'or dans le four.
+
+Se mine à l'aide d'une pioche en pierre (ou mieux) ; transformé en lingots de fer dans le four.
+
+Se mine avec une pioche pour prélever du charbon.
+
+Se mine avec une pioche en pierre pour prélever du lapis-lazuli.
+
+Se mine avec une pioche en fer pour prélever des diamants.
+
+Se mine avec une pioche en fer pour prélever de la poudre de redstone.
+
+Se mine avec une pioche pour prélever de la pierre taillée.
+
+Prélevée à l'aide d'une pelle. Sert de matériau de construction.
+
+Une fois plantée, peut prospérer et devenir un arbre.
+
+Impossible à briser.
+
+Enflamme n'importe quoi à son contact. Peut être prélevée dans un seau.
+
+Prélevé à l'aide d'une pelle. Peut être fondu en verre dans le four. Soumis à la gravité s'il ne repose sur aucun autre bloc.
+
+Prélevé à l'aide d'une pelle. Donne parfois du silex lorsqu'il est travaillé. Soumis à la gravité s'il ne repose sur aucun autre bloc.
+
+Travaillé à la hache. Transformé en planches ou utilisé comme combustible.
+
+Créé par la fusion du sable dans un four. Peut servir de matériau de construction, mais sera détruit si vous tentez de le miner.
+
+Obtenue en travaillant la pierre à l'aide d'une pioche. Peut servir à la construction d'un four ou à la fabrication d'outils en pierre.
+
+Obtenue par la cuisson d'argile dans un four.
+
+Peut être transformée en briques à la chaleur d'un four.
+
+Une fois brisé, produit des boules d'argile qui peuvent être transformées en briques dans le four.
+
+Un moyen peu encombrant d'entreposer des boules de neige.
+
+Se creuse à l'aide d'une pelle pour créer des boules de neige.
+
+Produit parfois des graines de blé si détruite.
+
+Transformable en colorant.
+
+Combiné à un bol, sert à la préparation de ragoûts.
+
+Ne peut être travaillée qu'à l'aide d'une pioche en diamant. Résulte d'un mélange d'eau et de lave inerte. Sert à la construction des portails.
+
+Libère des monstres dans l'environnement.
+
+Se place au sol pour créer un câble conducteur d'électricité. Utilisé dans une potion, permet d'augmenter la durée de l'effet.
+
+Une fois arrivées à maturité, les cultures peuvent être récoltées pour produire du blé.
+
+Un sol fertile préparé pour la culture des graines.
+
+Passé au four, sert à la confection d'un colorant vert.
+
+Sert à la confection de sucre.
+
+Peut servir de casque ou se combiner avec une torche pour produire une citrouille-lanterne. C'est également l'ingrédient principal de la tarte à la citrouille.
+
+Brûle indéfiniment si embrasé.
+
+Ralentit le mouvement de toute créature qui circule dessus.
+
+Emprunter un portail permet de circuler entre la Surface et le Nether.
+
+Alimente le four en combustible ; sert à la confection des torches.
+
+Prélevé sur les cadavres d'araignées. Sert à la confection d'arcs ou de cannes à pêche ou se dépose au sol pour fabriquer un crochet.
+
+Prélevé sur les cadavres de poulets ; sert à la confection des flèches.
+
+Prélevée sur les cadavres de creepers. Sert à la confection de TNT ou comme ingrédient dans la confection de potions.
+
+Plantées dans une terre labourée, produisent des cultures. Assurez-vous que les graines soient assez exposées au soleil !
+
+Obtenu par la récolte des cultures ; sert à la préparation d'aliments.
+
+Obtenu en creusant le gravier ; sert à la confection d'un briquet à silex.
+
+Utilisée sur un cochon, vous permet de le chevaucher. Vous pouvez ensuite diriger votre monture à l'aide d'une carotte sur un bâton.
+
+Obtenue en creusant la neige ; peut servir de projectile.
+
+Prélevé sur les cadavres de vaches. Sert à la confection d'armures ou de livres.
+
+Prélevé sur les cadavres de slimes. Sert comme ingrédient dans la confection de potions ou pour fabriquer des pistons collants.
+
+Produit aléatoirement par les poules ; sert à la préparation d'aliments.
+
+Obtenue en minant un bloc de glowstone. Sert à la reconstitution de blocs de glowstone ou comme ingrédient dans la confection de potions pour accroître leur effet.
+
+Prélevé sur les cadavres de squelettes ; sert à la confection de poudre d'os. Donnez-en à manger à un loup pour le domestiquer.
+
+Obtenu sur les creepers tués par un squelette ; à lire dans un juke-box.
+
+Éteint les flammes et contribue à la prospérité des cultures ; à prélever dans un seau.
+
+Une fois détruit, produit une pousse d'arbre à replanter pour créer un nouvel arbre.
+
+Se trouve dans les donjons et sert à la construction et à la décoration.
+
+Sert à tondre la laine des moutons et à exploiter les blocs de feuillage.
+
+Une fois alimenté (moyennant un bouton, un levier, une plaque de détection, une torche de redstone ou une redstone avec l'un ou l'autre de ces éléments), le piston s'allonge si possible pour pousser des blocs.
+
+Une fois alimenté (moyennant un bouton, un levier, une plaque de détection, une torche de redstone ou une redstone avec l'un ou l'autre de ces éléments), le piston s'allonge si possible pour pousser des blocs. Lorsque le piston se rétracte, le bloc en contact avec la tête du piston retrouve son emplacement initial.
+
+À tailler dans les blocs de pierre ; on en trouve généralement dans les forts.
+
+Sert de clôture, comparable aux barrières.
+
+Comparable à une porte, mais s'utilise principalement avec une barrière.
+
+Se fabrique avec des tranches de pastèque.
+
+Des blocs transparents qui peuvent servir d'alternative aux blocs de verre.
+
+À planter pour faire pousser des citrouilles.
+
+À planter pour faire pousser des pastèques.
+
+Produite par les Enderman à leur mort. Lorsqu'elle est lancée, le joueur est téléporté jusqu'à la zone d'impact de la perle du néant et perdra un peu de santé.
+
+Un bloc de terre couronnée de gazon. Se prélève à l'aide d'une pelle. Sert de matériau de construction.
+
+Sert à la construction et à la décoration.
+
+Ralentit vos mouvements lorsque vous passez à travers. Utilisez des cisailles pour la détruire et prélever du fil.
+
+Produit un poisson d'argent lorsqu'elle est détruite. Peut également produire un poisson d'argent si à proximité d'un autre poisson d'argent en train d'être attaqué.
+
+Lorsqu'il est placé, pousse sans interruption. Se prélève avec des cisailles. Peut-être utilisé comme une échelle.
+
+Glissante lorsque vous marchez dessus. Se transforme en eau si elle est placée au-dessus d'un autre bloc lorsqu'elle est détruite. Fond si elle est trop voisine d'une source de lumière ou si elle est placée dans le Nether.
+
+Peut servir de décoration.
+
+Sert en alchimie ; sert aussi à localiser les forts. Produit par les Blazes qu'on trouve à proximité ou à l'intérieur des forteresses du Nether.
+
+Sert en alchimie. Produite par les Ghasts à leur mort.
+
+Produite par les Cochons zombies à leur mort. Les Cochons zombies se rencontrent dans le Nether. Sert d'ingrédient dans la préparation de potions.
+
+Sert en alchimie. Pousse dans les forteresses du Nether. Peut aussi être plantée dans du sable des âmes.
+
+Peut avoir divers effets selon ce sur quoi elle est utilisée.
+
+Peut être remplie d'eau et servir d'ingrédient de base d'une potion distillée dans l'alambic.
+
+Aliment vénéneux et ingrédient alchimique. Se trouve sur les cadavres d'araignées ou d'araignées bleues.
+
+Sert en alchimie ; intervient principalement dans la création de potions néfastes.
+
+Sert en alchimie et intervient dans la fabrication d'objets comme l'œil d'Ender ou la crème de magma.
+
+Sert en alchimie.
+
+Sert à la création de potions simples et volatiles.
+
+Rempli d'eau par la pluie ou à l'aide d'un seau d'eau. Sert aussi à remplir des fioles.
+
+Lancé, indique la direction d'un portail de l'Ender. Quand douze de ces yeux sont placés dans des cadres de portail de l'Ender, le portail de l'Ender s'ouvrira.
+
+Sert en alchimie.
+
+Comparable aux blocs d'herbe, mais très efficace pour faire pousser des champignons.
+
+Flotte sur l'eau et permet de marcher dessus.
+
+Sert à construire des forteresses du Nether. Invulnérable aux boules de feu des Ghasts.
+
+Sert dans les forteresses du Nether.
+
+Se trouve dans les forteresses du Nether et produit des verrues du Nether lorsqu'elle est brisée.
+
+Permet au joueur, moyennant ses points d'expérience, d'enchanter épées, pioches, haches, pelles, arcs et armures.
+
+S'active à l'aide de l'œil d'Ender et permet au joueur de voyager jusqu'à la dimension de l'Ender.
+
+Sert à créer un portail de l'Ender.
+
+Un type de bloc rencontré dans l'Ender. Elle est dotée d'une résistance très élevée aux explosions et constitue donc un matériau de construction très utile.
+
+Ce bloc est créé lorsque le Dragon de l'Ender est terrassé.
+
+Lancé, il produit des orbes d'expérience qui augmentent vos points d'expérience une fois ramassés.
+
+Utile pour enflammer des choses ou pour démarrer des incendies sans faire de distinction depuis un distributeur.
+
+Similaires à une vitrine, affichent les objets et blocs qui y sont placés.
+
+Lancez-le pour faire apparaître une créature du type indiqué.
+
+Sert à la création d'escaliers longs. Deux dalles placées l'une sur l'autre formeront une dalle double de taille normale.
+
+Sert à la création d'escaliers longs. Deux dalles placées l'une sur l'autre formeront une dalle double de taille normale.
+
+Créé en fusionnant du netherrack dans un fourneau. Peut être transformés en blocs de briques du Nether.
+
+Émettent de la lumière lors de leur activation.
+
+Leur récolte permet d'obtenir des fèves de cacao.
+
+Les crânes peuvent servir de décoration ou être portés comme masques dans l'emplacement pour le casque.
+
+Pieuvre
+
+Produit une poche d'encre une fois tuée.
+
+Vache
+
+Produit du cuir une fois tuée. Utilisez un seau pour la traire.
+
+Mouton
+
+Produit de la laine dès qu'il est tondu (s'il ne l'a pas déjà été). Utilisez un colorant pour changer la couleur de sa laine.
+
+Poulet
+
+Produit des plumes une fois tué ; pond aussi des œufs, à l'occasion.
+
+Cochon
+
+Produit de la viande de porc une fois tué. Utilisez une selle pour le chevaucher.
+
+Loup
+
+Inoffensif à moins d'être attaqué : il n'hésitera pas à riposter. Utilisez des os pour le domestiquer : le loup vous suivra et s'en prendra à tous vos assaillants.
+
+Creeper
+
+Explose si vous l'approchez de trop près !
+
+Squelette
+
+Vous décoche des flèches. Produit des flèches une fois tué.
+
+Araignée
+
+Attaque dès que vous approchez. Peut escalader les murs. Produit du fil une fois tuée.
+
+Zombie
+
+Attaque dès que vous approchez.
+
+Cochon zombie
+
+Inoffensifs de nature, ils vous attaqueront en groupe si vous vous en prenez à l'un d'entre eux.
+
+Ghast
+
+Décoche des boules de feu qui explosent à l'impact.
+
+Slime
+
+Se divise en plusieurs slimes plus petits dès qu'il est touché.
+
+Enderman
+
+Vous attaquera si vous le regardez. Peut aussi déplacer des blocs.
+
+Poisson d'argent
+
+Attire les poissons d'argent tapis à proximité si vous l'attaquez. Se cache dans les blocs de pierre.
+
+Araignée bleue
+
+Sa morsure est empoisonnée.
+
+Champimeuh
+
+Combiné à un bol, sert à la préparation de ragoûts de champignons. Produit des champignons et devient une vache normale une fois tondue.
+
+Golem de neige
+
+Le Golem de neige se crée en combinant des blocs de neige et une citrouille. Ils lancent des boules de neige sur les ennemis de leur créateur.
+
+Dragon de l'Ender
+
+Un colossal dragon noir qu'on rencontre dans l'Ender.
+
+Blaze
+
+Des ennemis qu'on croise dans le Nether, surtout dans les forteresses du Nether. Ils produisent des bâtons de feu une fois tués.
+
+Cube de magma
+
+On les rencontre dans le Nether. De même que les Slimes, ils se scindent en plusieurs cubes plus petits dès qu'ils sont tués.
+
+Villageois
+
+Ocelot
+
+Se trouve dans la jungle. Peut être dompté en le nourrissant de poisson cru. Vous devrez cependant laisser l'ocelot vous approcher, tout mouvement brusque le fera fuir.
+
+Golem de fer
+
+Apparaît dans les villages pour les protéger et peut être créé à partir de blocs de fer et de citrouilles.
+
+Explosives Animator
+
+Concept Artist
+
+Number Crunching and Statistics
+
+Bully Coordinator
+
+Original Design and Code by
+
+Project Manager/Producer
+
+Rest of Mojang Office
+
+Lead game programmer Minecraft PC
+
+Ninja Coder
+
+CEO
+
+White Collar Worker
+
+Customer Support
+
+Office DJ
+
+Designer/Programmer Minecraft - Pocket Edition
+
+Developer
+
+Chief Architect
+
+Art Developer
+
+Game Crafter
+
+Director of Fun
+
+Music and Sounds
+
+Programming
+
+Art
+
+QA
+
+Executive Producer
+
+Lead Producer
+
+Producer
+
+Test Lead
+
+Lead Tester
+
+Design Team
+
+Development Team
+
+Release Management
+
+Director, XBLA Publishing
+
+Business Development
+
+Portfolio Director
+
+Product Manager
+
+Marketing
+
+ Community Manager
+
+Europe Localization Team
+
+Redmond Localization Team
+
+Asia Localization Team
+
+User Research Team
+
+MGS Central Teams
+
+Milestone Acceptance Tester
+
+Special Thanks
+
+Test Manager
+
+Senior Test Lead
+
+SDET
+
+Project STE
+
+Additional STE
+
+Test Associates
+
+Jon Kågström
+
+Tobias Möllstam
+
+Risë Lugo
+
+Épée en bois
+
+Épée en pierre
+
+Épée en fer
+
+Épée en diamant
+
+Épée en or
+
+Pelle en bois
+
+Pelle en pierre
+
+Pelle en fer
+
+Pelle en diamant
+
+Pelle en or
+
+Pioche en bois
+
+Pioche en pierre
+
+Pioche en fer
+
+Pioche en diamant
+
+Pioche en or
+
+Hache en bois
+
+Hache en pierre
+
+Hache en fer
+
+Hache en diamant
+
+Hache en or
+
+Houe en bois
+
+Houe en pierre
+
+Houe en fer
+
+Houe en diamant
+
+Houe en or
+
+Porte en bois
+
+Porte en fer
+
+Casque en mailles
+
+Plastron en mailles
+
+Jambières en mailles
+
+Bottes en mailles
+
+Coiffe en cuir
+
+Casque en fer
+
+Casque en diamant
+
+Casque en or
+
+Tunique de cuir
+
+Plastron en fer
+
+Plastron en diamant
+
+Plastron en or
+
+Pantalon en cuir
+
+Jambières en fer
+
+Jambières en diamant
+
+Jambières en or
+
+Bottes en cuir
+
+Bottes en fer
+
+Bottes en diamant
+
+Bottes en or
+
+Lingot de fer
+
+Lingot d'or
+
+Seau
+
+Seau d'eau
+
+Seau de lave
+
+Briquet à silex
+
+Pomme
+
+Arc
+
+Flèche
+
+Charbon
+
+Charbon de bois
+
+Diamant
+
+Bâton
+
+Bol
+
+Ragoût de champignons
+
+Fil
+
+Plume
+
+Poudre à canon
+
+Graines de blé
+
+Blé
+
+Pain
+
+Silex
+
+Viande de porc crue
+
+Viande de porc cuite
+
+Peinture
+
+Pomme dorée
+
+Panneau
+
+Chariot de mine
+
+Selle
+
+Redstone
+
+Boule de neige
+
+Bateau
+
+Cuir
+
+Seau de lait
+
+Brique
+
+Argile
+
+Canne à sucre
+
+Papier
+
+Livre
+
+Boule de slime
+
+Chariot de mine avec coffre
+
+Chariot de mine avec four
+
+Œuf
+
+Boussole
+
+Canne à pêche
+
+Montre
+
+Poudre glowstone
+
+Poisson cru
+
+Poisson cuit
+
+Poudre de colorant
+
+Poche d'encre
+
+Pétale de rose
+
+Vert de cactus
+
+Fèves de cacao
+
+Lapis-lazuli
+
+Colorant violet
+
+Colorant bleu cyan
+
+Colorant gris clair
+
+Colorant gris
+
+Colorant rose
+
+Colorant vert lime
+
+Pétale de pissenlit
+
+Colorant bleu ciel
+
+Colorant magenta
+
+Colorant orange
+
+Poudre d'os
+
+Os
+
+Sucre
+
+Gâteau
+
+Lit
+
+Répéteur de redstone
+
+Cookie
+
+Carte
+
+Disque vinyle "13"
+
+Disque vinyle "cat"
+
+Disque vinyle "blocks"
+
+Disque vinyle "chirp"
+
+Disque vinyle "far"
+
+Disque vinyle "mall"
+
+Disque vinyle "mellohi"
+
+Disque vinyle "stal"
+
+Disque vinyle "strad"
+
+Disque vinyle "ward"
+
+Disque vinyle "11"
+
+Disque vinyle "where are we now"
+
+Cisailles
+
+Graines de citrouille
+
+Graines de pastèque
+
+Poulet cru
+
+Poulet cuit
+
+Bœuf cru
+
+Steak
+
+Chair putréfiée
+
+Ender Pearl
+
+Tranche de pastèque
+
+Bâton de feu
+
+Larme de Ghast
+
+Pépite d'or
+
+Verrue du Nether
+
+Potion{*splash*}{*prefix*} {*postfix*}
+
+Fiole
+
+Fiole d'eau
+
+Œil d'araignée
+
+Œil d'araignée fermenté
+
+Poudre de feu
+
+Crème de magma
+
+Alambic
+
+Chaudron
+
+Œil d'Ender
+
+Pastèque scintillante
+
+Fiole d'expérience
+
+Boule de feu
+
+Boule de feu (charbon de bois)
+
+Boule de feu (charbon)
+
+Cadre
+
+Fait apparaître {*CREATURE*}
+
+Brique du Nether
+
+Crâne
+
+Crâne de squelette
+
+Crâne de wither squelette
+
+Tête de zombie
+
+Crâne
+
+Crâne de %s
+
+Crâne de creeper
+
+Pierre
+
+Bloc d'herbe
+
+Terre
+
+Pierre taillée
+
+Planches en chêne
+
+Planches en sapin
+
+Planches en bouleau
+
+Planches de bois tropical
+
+Pousse d'arbre
+
+Pousse de chêne
+
+Pousse d'épicéa
+
+Pousse de bouleau
+
+Pousse d'arbre tropical
+
+Adminium
+
+Eau
+
+Lave
+
+Sable
+
+Grès
+
+Gravier
+
+Minerai d'or
+
+Minerai de fer
+
+Minerai de charbon
+
+Bois
+
+Bois de chêne
+
+Bois d'épicéa
+
+Bois de bouleau
+
+Bois tropical
+
+Chêne
+
+Sapin
+
+Bouleau
+
+Feuillage
+
+Feuilles de chêne
+
+Feuilles d'épicéa
+
+Feuilles de bouleau
+
+Feuilles tropicales
+
+Éponge
+
+Verre
+
+Laine
+
+Laine noire
+
+Laine rouge
+
+Laine verte
+
+Laine marron
+
+Laine bleue
+
+Laine violette
+
+Laine bleu cyan
+
+Laine gris clair
+
+Laine grise
+
+Laine rose
+
+Laine vert lime
+
+Laine jaune
+
+Laine bleu ciel
+
+Laine magenta
+
+Laine orange
+
+Laine blanche
+
+Fleur
+
+Rose
+
+Champignon
+
+Bloc d'or
+
+Un moyen peu encombrant d'entreposer de l'or.
+
+Un moyen peu encombrant d'entreposer du fer.
+
+Bloc de fer
+
+Dalle de pierre
+
+Dalle de pierre
+
+Dalle de grès
+
+Dalle de chêne
+
+Dalle de pierre taillée
+
+Dalle en briques
+
+Dalle en briques de pierre
+
+Dalle de chêne
+
+Dalle de sapin
+
+Dalle de bouleau
+
+Dalle de bois tropical
+
+Dalles du Nether
+
+Briques
+
+TNT
+
+Bibliothèque
+
+Pierre moussue
+
+Obsidienne
+
+Torche
+
+Torche (charbon)
+
+Torche (charbon de bois)
+
+Feu
+
+Générateur de monstres
+
+Escalier en chêne
+
+Coffre
+
+Poudre de redstone
+
+Minerai de diamant
+
+Bloc de diamant
+
+Un moyen peu encombrant d'entreposer des diamants.
+
+Atelier
+
+Cultures
+
+Terre labourée
+
+Four
+
+Panneau
+
+Porte en bois
+
+Échelle
+
+Rail
+
+Rail de propulsion
+
+Rail de détection
+
+Escalier en pierre
+
+Levier
+
+Plaque de détection
+
+Porte en fer
+
+Minerai de redstone
+
+Torche de redstone
+
+Bouton
+
+Neige
+
+Glace
+
+Cactus
+
+Argile
+
+Canne à sucre
+
+Juke-box
+
+Barrière
+
+Citrouille
+
+Citrouille-lanterne
+
+Netherrack
+
+Sable des âmes
+
+Glowstone
+
+Portail
+
+Minerai de lapis-lazuli
+
+Bloc de lapis-lazuli
+
+Un moyen peu encombrant d'entreposer du Lapis-lazuli.
+
+Distributeur
+
+Bloc musical
+
+Gâteau
+
+Lit
+
+Toile
+
+Herbes hautes
+
+Arbuste mort
+
+Diode
+
+Coffre verrouillé
+
+Trappe
+
+Laine (toutes couleurs)
+
+Piston
+
+Piston collant
+
+Bloc de poisson d'argent
+
+Briques de pierre
+
+Pierres taillées moussues
+
+Pierres craquelées
+
+Blocs de pierre taillée
+
+Champignon
+
+Champignon
+
+Barreaux de fer
+
+Vitre
+
+Pastèque
+
+Queue de citrouille
+
+Queue de pastèque
+
+Lierre
+
+Portillon
+
+Escalier en briques
+
+Escalier en briques de pierre
+
+Pierre de poisson d'argent
+
+Pierre taillée de poisson d'argent
+
+Brique en pierre de poisson d'argent
+
+Mycélium
+
+Nénuphar
+
+Brique du Nether
+
+Barrière en brique du Nether
+
+Escaliers en brique du Nether
+
+Verrue du Nether
+
+Table d'enchantement
+
+Alambic
+
+Chaudron
+
+Portail de l'Ender
+
+Cadre de portail de l'Ender
+
+Pierre blanche
+
+Œuf de Dragon
+
+Arbuste
+
+Fougère
+
+Escaliers en grès
+
+Escaliers en sapin
+
+Escaliers en bouleau
+
+Escalier en bois tropical
+
+Lampe de redstone
+
+Cacao
+
+Crâne
+
+Commandes actuelles
+
+Config.
+
+Se déplacer/Sprinter
+
+Regarder
+
+Pause
+
+Sauter
+
+Sauter/Voler Haut
+
+Inventaire
+
+Changer d'objet
+
+Action
+
+Utiliser
+
+Artisanat
+
+Lâcher
+
+Se faufiler
+
+Se faufiler/Voler Bas
+
+Changer mode caméra
+
+Joueurs/Invitation
+
+Déplacement (en vol)
+
+Config. 1
+
+Config. 2
+
+Config. 3
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+
]]>
+
+{*B*}Appuyez sur{*CONTROLLER_VK_A*} pour continuer.
+
+{*B*}Appuyez sur{*CONTROLLER_VK_A*} pour commencer le didacticiel.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si vous pensez pouvoir vous en passer.
+
+Le principe de Minecraft consiste à placer des blocs pour construire tout ce qu'on peut imaginer.
+La nuit, les monstres sont de sortie ; tâchez donc d'aménager un abri avant le coucher du soleil.
+
+Utilisez{*CONTROLLER_ACTION_LOOK*} pour regarder vers le haut, vers le bas et autour de vous.
+
+Utilisez{*CONTROLLER_ACTION_MOVE*} pour vous déplacer.
+
+Pour sprinter, orientez rapidement{*CONTROLLER_ACTION_MOVE*} deux fois vers l'avant. Tant que vous maintenez{*CONTROLLER_ACTION_MOVE*} vers l'avant, le personnage continuera de sprinter jusqu'à ce que sa durée de sprint soit écoulée ou que sa jauge de nourriture se vide.
+
+Appuyez sur{*CONTROLLER_ACTION_JUMP*} pour sauter.
+
+Maintenez{*CONTROLLER_ACTION_ACTION*} pour miner ou frapper à mains nues ou à l'aide d'un ustensile. Vous devrez parfois façonner des outils pour miner certains blocs.
+
+Maintenez{*CONTROLLER_ACTION_ACTION*} pour détruire 4 blocs de bois (troncs d'arbre).{*B*}Lorsqu'un bloc est détruit, tenez-vous à proximité de l'objet flottant apparu pour le ramasser : l'objet est alors déposé dans votre inventaire.
+
+Appuyez sur{*CONTROLLER_ACTION_CRAFTING*} pour ouvrir l'interface d'artisanat.
+
+Votre inventaire se remplira à mesure que vous prélèverez des ressources et confectionnerez des objets.{*B*}
+ Appuyez sur{*CONTROLLER_ACTION_INVENTORY*} pour ouvrir l'inventaire.
+
+À force de vous déplacer, de miner et d'attaquer, la barre de nourriture{*ICON_SHANK_01*} se vide progressivement. Sprinter et sauter après un sprint épuisent bien plus rapidement la barre de nourriture que la marche et les sauts classiques.
+
+Si vous perdez de la santé, mais que votre jauge de nourriture comporte au moins 9{*ICON_SHANK_01*}, votre santé se reconstituera automatiquement. Manger des aliments remplira votre barre de nourriture.
+
+Un aliment à la main, maintenez{*CONTROLLER_ACTION_USE*} pour le manger et remplir votre barre de nourriture. Vous ne pouvez pas manger si votre barre de nourriture est pleine.
+
+Votre barre de nourriture est presque vide et vous avez perdu de la santé. Mangez le steak qui apparaît dans votre inventaire pour remplir votre barre de nourriture et vous soigner.{*ICON*}364{*/ICON*}
+
+Le bois que vous avez recueilli peut être taillé en planches. Ouvrez l'interface d'artisanat pour en fabriquer.{*PlanksIcon*}
+
+La confection d'un certain nombre d'objets implique plusieurs étapes. Maintenant que vous avez des planches à disposition, l'éventail d'objets à fabriquer s'est enrichi. Créez un atelier.{*CraftingTableIcon*}
+
+Pour accélérer la collecte de ressources, vous pouvez fabriquer des outils dédiés à cette tâche. Certains outils possèdent un manche taillé dans un bâton. Fabriquez maintenant des bâtons.{*SticksIcon*}
+
+Utilisez{*CONTROLLER_ACTION_LEFT_SCROLL*} et{*CONTROLLER_ACTION_RIGHT_SCROLL*} pour sélectionner un autre objet à manier.
+
+Utilisez{*CONTROLLER_ACTION_USE*} pour vous servir d'objets, interagir avec les éléments du décor et placer vos créations. Travaillez les objets déjà placés avec un outil adapté pour les ramasser.
+
+L'atelier sélectionné, placez le réticule à l'emplacement voulu et utilisez{*CONTROLLER_ACTION_USE*} pour placer un atelier.
+
+Pointez le réticule sur l'atelier et appuyez sur{*CONTROLLER_ACTION_USE*} pour l'ouvrir.
+
+La pelle vous permet de creuser plus rapidement les matériaux meubles, comme la terre et la neige. À mesure que vous accumulerez des ressources, vous pourrez créer des outils plus efficaces et robustes. Créez une pelle en bois.{*WoodenShovelIcon*}
+
+La hache accélère le travail du bois et des blocs en bois. À mesure que vous accumulerez des ressources, vous pourrez créer des outils plus efficaces et robustes. Créez une hache en bois.{*WoodenHatchetIcon*}
+
+La pioche accélère le travail des matériaux solides, comme la pierre et le minerai. À mesure que vous accumulerez des ressources, vous pourrez créer des outils plus efficaces et robustes pour miner les matériaux les plus coriaces. Créez une pioche en bois.{*WoodenPickaxeIcon*}
+
+Ouvrir le conteneur
+
+
+ Évitez de vous laisser surprendre par la nuit. Vous pouvez confectionner des armes et armures, mais le plus sûr reste de vous aménager un abri.
+
+
+
+ Un refuge de mineur se trouve à proximité : finissez de l'aménager pour passer la nuit à l'abri.
+
+
+
+ Vous aurez besoin de ressources pour achever la construction du refuge. Vous pouvez utiliser n'importe quel type de bloc pour les murs et le toit, mais vous voudrez sans doute aménager une porte et des fenêtres, sans compter qu'il vous faudra un peu d'éclairage.
+
+
+Utilisez votre pioche pour miner des blocs de pierre. Une fois minés, les blocs de pierre produiront de la pierre taillée. Récupérez 8 blocs de pierre taillée et vous pourrez construire un four. Vous risquez d'avoir à déblayer la terre avant de pouvoir attaquer la pierre. Justement, la pelle est faite pour ça !{*StoneIcon*}
+
+Vous avez désormais une quantité suffisante de pierres taillées pour fabriquer un four. Utilisez votre atelier pour le créer.
+
+Utilisez{*CONTROLLER_ACTION_USE*} pour placer le four dans l'environnement, puis ouvrez-le.
+
+Utilisez le four pour produire du charbon de bois. Le temps que la production aboutisse, profitez-en pour vous procurer les ressources nécessaires à vos travaux sur le refuge.
+
+Utilisez le four pour produire du verre. Le temps que la production aboutisse, profitez-en pour vous procurer les ressources nécessaires à vos travaux sur le refuge.
+
+Un refuge digne de ce nom sera pourvu d'une porte pour faciliter vos allées et venues. Faute de quoi, vous devrez percer à travers les murs pour entrer et sortir. Fabriquez une porte en bois.{*WoodenDoorIcon*}
+
+Utilisez{*CONTROLLER_ACTION_USE*} pour placer la porte et{*CONTROLLER_ACTION_USE*} pour l'ouvrir et la fermer.
+
+La nuit, l'obscurité est quasi totale. Pour y voir clair dans votre refuge, vous aurez besoin de lumière. Utilisez des bâtons et du charbon de bois pour créer une torche. Pour ce faire, commencez par ouvrir l'interface d'artisanat et fabriquez une torche.{*TorchIcon*}
+
+
+ Vous avez terminé la première partie du didacticiel.
+
+
+
+ {*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour continuer le didacticiel.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si vous pensez pouvoir vous en passer.
+
+
+
+ Voici votre inventaire. Il affiche les objets susceptibles d'être tenus en main ainsi que tous les autres objets que vous portez, armure comprise.
+
+
+{*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour continuer.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si vous savez déjà utiliser l'inventaire.
+
+
+
+ Utilisez{*CONTROLLER_MENU_NAVIGATE*} pour déplacer le pointeur. Utilisez{*CONTROLLER_VK_A*} pour saisir l'objet placé sous le pointeur.
+ S'il s'agit de plusieurs objets, vous sélectionnerez toute la pile. Vous pouvez aussi utiliser{*CONTROLLER_VK_X*} pour n'en sélectionner que la moitié.
+
+
+
+ Déplacez l'objet annexé au pointeur jusqu'à un autre emplacement de l'inventaire et déposez-le avec{*CONTROLLER_VK_A*}.
+ Si plusieurs objets sont annexés au pointeur, utilisez{*CONTROLLER_VK_A*} pour tous les déposer, ou{*CONTROLLER_VK_X*} pour n'en déposer qu'un seul.
+
+
+
+ Si vous déplacez le pointeur à l'extérieur de l'interface alors qu'un objet lui est annexé, vous jetterez l'objet.
+
+
+
+ Si vous voulez en savoir plus sur un objet, déplacez le pointeur sur l'objet en question et appuyez sur{*CONTROLLER_VK_RT*}.
+
+
+
+ Appuyez sur{*CONTROLLER_VK_B*} pour quitter l'inventaire.
+
+
+
+ L'inventaire du mode Créatif, où figurent les objets utilisables, ainsi que tous les objets à sélectionner.
+
+
+{*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour continuer.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si vous savez déjà utiliser l'inventaire du mode Créatif.
+
+
+
+ Utilisez{*CONTROLLER_MENU_NAVIGATE*} pour déplacer le pointeur.
+ Lorsque la liste des objets est affichée, utilisez{*CONTROLLER_VK_A*} pour saisir un objet sous le pointeur. Utilisez {*CONTROLLER_VK_Y*} pour en saisir toute une pile.
+
+
+
+ Le pointeur se déplacera automatiquement sur un espace de la colonne d'utilisation. Vous pouvez le déplacer vers le bas avec{*CONTROLLER_VK_A*}. Une fois l'objet déplacé, le pointeur retournera à la liste d'objets, où vous pourrez sélectionner un autre article.
+
+
+
+ Si vous déplacez le curseur à l'extérieur de l'interface alors qu'un objet lui est annexé, vous jetterez l'objet. Pour supprimer tous les objets de la barre de sélection rapide, appuyez sur{*CONTROLLER_VK_X*}.
+
+
+
+ Parcourez les onglets de catégorie, en haut, à l'aide de{*CONTROLLER_VK_LB*} et{*CONTROLLER_VK_RB*} pour sélectionner la catégorie de l'objet que vous souhaitez saisir.
+
+
+
+ Si vous voulez en savoir plus sur un objet, déplacez le pointeur sur l'objet en question et appuyez sur{*CONTROLLER_VK_RT*}.
+
+
+
+ Appuyez sur{*CONTROLLER_VK_B*} pour quitter l'inventaire du mode Créatif.
+
+
+
+ Vous êtes dans l'interface d'artisanat. Cette interface vous permet de combiner les ressources récoltées pour confectionner de nouveaux objets.
+
+
+{*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour continuer.{*B*}
+ Appuyez sur {*CONTROLLER_VK_B*}si vous savez déjà utiliser l'interface d'artisanat.
+
+
+{*B*}
+ Appuyez sur{*CONTROLLER_VK_X*} pour afficher la description de l'objet.
+
+
+{*B*}
+ Appuyez sur{*CONTROLLER_VK_X*} pour afficher les ingrédients nécessaires à la confection de l'objet sélectionné.
+
+
+{*B*}
+ Appuyez sur{*CONTROLLER_VK_X*} pour à nouveau afficher l'inventaire.
+
+
+
+ Parcourez les onglets de catégorie, en haut, à l'aide de{*CONTROLLER_VK_LB*} et{*CONTROLLER_VK_RB*} pour sélectionner la catégorie d'objets que vous souhaitez confectionner puis utilisez{*CONTROLLER_MENU_NAVIGATE*} pour choisir l'article à créer.
+
+
+
+ La grille d'artisanat indique quels objets sont nécessaires à la production du nouvel article. Appuyez sur{*CONTROLLER_VK_A*} pour confectionner l'objet et le placer dans votre inventaire.
+
+
+
+ Vous pouvez utiliser un atelier pour confectionner des objets plus grands. L'artisanat sur atelier fonctionne de la même manière que l'artisanat classique, mais vous disposez d'une grille d'artisanat plus étendue pour combiner un plus vaste éventail d'ingrédients.
+
+
+
+ Votre inventaire apparaît en bas à droite de l'interface d'artisanat. Cette zone peut également afficher la description de l'objet sélectionné ainsi que les ingrédients nécessaires à sa fabrication.
+
+
+
+ La description de l'objet sélectionné est maintenant affichée. Elle vous indique pour quels usages l'objet est conçu.
+
+
+
+ La liste des ingrédients nécessaires à la fabrication de l'objet sélectionné est maintenant affichée.
+
+
+Le bois que vous avez coupé peut être transformé en planches. Sélectionnez l'icône en forme de planches et appuyez sur{*CONTROLLER_VK_A*} pour les produire.{*PlanksIcon*}
+
+
+ Maintenant que votre atelier est fabriqué, il vous reste à le placer dans l'environnement. Vous pourrez ensuite accéder à une gamme plus vaste d'objets à créer.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} pour quitter l'interface d'artisanat.
+
+
+
+ Appuyez sur{*CONTROLLER_VK_LB*} et{*CONTROLLER_VK_RB*} pour accéder à la catégorie d'objets que vous souhaitez créer. Sélectionnez la catégorie Outils.{*ToolsIcon*}
+
+
+
+ Appuyez sur{*CONTROLLER_VK_LB*} et{*CONTROLLER_VK_RB*} pour accéder à la catégorie d'objets que vous souhaitez créer. Sélectionnez la catégorie Structures.{*StructuresIcon*}
+
+
+
+ Utilisez{*CONTROLLER_MENU_NAVIGATE*} pour sélectionner l'objet à créer. Certains objets présentent plusieurs variantes selon le type de matériau utilisé. Sélectionnez la pelle en bois.{*WoodenShovelIcon*}
+
+
+
+ La confection d'un certain nombre d'objets implique plusieurs étapes. Maintenant que vous avez des planches à disposition, l'éventail d'objets à fabriquer s'est enrichi. Utilisez{*CONTROLLER_MENU_NAVIGATE*} pour sélectionner l'objet à créer. Sélectionnez l'atelier.{*CraftingTableIcon*}
+
+
+
+ Vous êtes sur la bonne voie. Grâce aux outils que vous avez fabriqués, vous pourrez prélever diverses ressources plus efficacement.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} pour quitter l'interface d'artisanat.
+
+
+
+ La fabrication de certains objets nécessite un four plutôt qu'un atelier. Fabriquez un four.{*FurnaceIcon*}
+
+
+
+ Placez le four que vous avez créé dans l'environnement, à l'intérieur de votre refuge, de préférence.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} pour quitter l'interface d'artisanat.
+
+
+
+ Vous êtes dans l'interface du four. Un four vous permet de fondre des objets pour les modifier. Par exemple, vous pouvez y déposer du minerai de fer pour fondre des lingots de fer.
+
+
+{*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour continuer.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si vous savez déjà utiliser le four.
+
+
+
+ Vous devrez alimenter le four en combustible (partie inférieure du four), et déposer l'objet à transformer dans la partie supérieure. Le four s'actionnera alors : l'objet produit apparaîtra dans l'emplacement de droite.
+
+
+
+ La plupart des objets en bois peuvent servir de combustible. Au fil de vos aventures, vous découvrirez d'autres variétés de matériaux qui feront d'excellents combustibles.
+
+
+
+ Une fois les objets fondus, vous pouvez les déplacer depuis la zone de production jusqu'à votre inventaire. Essayez divers ingrédients et observez les résultats.
+
+
+
+ Si vous utilisez du bois en guise d'ingrédient, vous pouvez produire du charbon de bois. Alimentez le four en combustible et déposez le bois dans l'emplacement dédié. L'opération peut durer quelque temps ; profitez de ce délai pour vaquer à d'autres tâches et repassez régulièrement pour vérifier l'état d'avancement de la production.
+
+
+
+ Le charbon de bois peut servir de combustible et se combiner à un bâton pour créer une torche.
+
+
+
+ Placer du sable à l'emplacement dévolu aux ingrédients vous permet de fabriquer du verre. Créez des blocs de verre qui serviront de fenêtres dans votre refuge.
+
+
+
+ Vous êtes dans l'interface d'alchimie. Cette interface vous permet de créer des potions aux effets variés.
+
+
+{*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour continuer.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si vous savez déjà utiliser l'alambic.
+
+
+
+ Pour distiller une potion, placez un ingrédient dans l'emplacement du haut, ainsi qu'une potion ou une fiole d'eau dans les emplacements du bas (vous pouvez créer jusqu'à 3 potions à la fois). Une fois qu'une combinaison correcte est choisie, le processus de distillation commence et la potion est créée au bout de quelques instants.
+
+
+
+ La création d'une potion commence toujours avec une fiole d'eau. Pour créer la plupart des potions, il s'agit d'abord de confectionner une potion étrange à l'aide d'une verrue du Nether. Ensuite, il s'y ajoute au moins un autre ingrédient pour créer la potion finale.
+
+
+
+ Une fois la potion créée, vous pouvez modifier ses effets. Ajoutez de la poudre de redstone pour allonger la durée d'effet ou de la poudre de glowstone pour en renforcer la puissance.
+
+
+
+ Ajouter un œil d'araignée fermenté corrompt la potion et inverse l'effet initial. Ajouter de la poudre à canon transforme la potion en potion volatile qu'on peut lancer pour appliquer l'effet à toute la zone d'impact.
+
+
+
+ Pour créer une potion de résistance au feu, commencez par ajouter une verrue du Nether à une fiole d'eau, puis incorporez de la crème de magma.
+
+
+
+ Appuyez sur{*CONTROLLER_VK_B*} pour quitter l'interface d'alchimie.
+
+
+
+ Dans cette zone se trouvent un alambic, un chaudron et un coffre rempli d'articles d'alchimie.
+
+
+{*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur l'alchimie et les potions.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si l'alchimie et les potions n'ont déjà plus de secrets pour vous.
+
+
+
+ Pour distiller une potion, il faut d'abord créer une fiole d'eau. Prenez une fiole dans le coffre.
+
+
+
+ Vous pouvez remplir une fiole d'eau depuis un chaudron qui en contient, ou bien en prélever sur les blocs d'eau. Pointez le curseur sur une source d'eau et appuyez sur{*CONTROLLER_ACTION_USE*} pour remplir votre fiole.
+
+
+
+ Si un chaudron se vide, vous pouvez le remplir à l'aide d'un seau d'eau.
+
+
+
+ Utilisez l'alambic pour créer une potion de résistance au feu. Vous aurez besoin d'une fiole d'eau, d'une verrue du Nether et de crème de magma.
+
+
+
+ Une potion à la main, maintenez{*CONTROLLER_ACTION_USE*} pour l'utiliser. Dans le cas d'une potion normale, il suffit de la boire pour bénéficier de ses effets. Quant aux potions volatiles, lancez-les pour appliquer leurs effets aux créatures proches de la zone d'impact.
+ Mélangez de la poudre à canon aux potions normales pour créer des potions volatiles.
+
+
+
+ Utilisez votre potion de résistance au feu sur vous-même.
+
+
+
+ Maintenant que vous résistez au feu et à la lave, peut-être pourrez-vous rejoindre des lieux jusque-là inaccessibles.
+
+
+
+ Vous êtes dans l'interface d'enchantement qui vous permet d'appliquer des enchantements aux armes et armures, ainsi qu'à certains outils.
+
+
+{*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur l'interface d'enchantement.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si l'interface d'enchantement n'a déjà plus de secrets pour vous.
+
+
+
+ Pour enchanter un objet, commencez par le placer dans l'emplacement d'enchantement. Les armes et armures, ainsi que certains outils, peuvent être enchantés pour leur appliquer certains effets spéciaux, comme renforcer la résistance aux dégâts ou augmenter le nombre de ressources produites lorsque vous minez un bloc.
+
+
+
+ Lorsqu'un objet est disposé dans l'emplacement d'enchantement, les boutons sur la droite afficheront un éventail d'enchantements aléatoires.
+
+
+
+ Le chiffre qui figure sur le bouton indique le coût d'enchantement de l'objet, exprimé en niveaux d'expérience. Si votre niveau est insuffisant, le bouton sera désactivé.
+
+
+
+ Sélectionnez un enchantement et appuyez sur{*CONTROLLER_VK_A*} pour enchanter l'objet. Le coût de l'enchantement sera déduit de votre niveau d'expérience.
+
+
+
+ Les enchantements sont tous aléatoires, mais les meilleurs d'entre eux ne seront disponibles qu'à haut niveau d'expérience et nécessiteront de très nombreuses bibliothèques disposées autour de la table d'enchantement pour en augmenter la puissance.
+
+
+
+ Dans cette zone, vous trouverez une table d'enchantement ainsi que plusieurs objets qui vous aideront à vous familiariser avec l'enchantement.
+
+
+{*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur l'enchantement.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si vous savez déjà tout ce qu'il y a à savoir sur l'enchantement.
+
+
+
+ L'utilisation d'une table d'enchantement vous permet d'appliquer aux objets certains effets spéciaux, comme renforcer la résistance aux dégâts ou augmenter le nombre de ressources produites lorsque vous minez un bloc.
+
+
+
+ Placer des bibliothèques autour de la table d'enchantement augmente sa puissance et permet d'accéder aux niveaux d'enchantement supérieurs.
+
+
+
+ L'enchantement d'objets coûte des niveaux d'expérience qu'on obtient au moyen d'orbes d'expérience. Pour obtenir ces orbes, tuez des monstres et animaux, prélevez du minerai, élevez des animaux, pêchez ou fondez/cuisinez certains objets dans un four.
+
+
+
+ Vous pouvez aussi engranger de l'expérience à l'aide d'une fiole d'expérience. Lorsque vous la lancez, elle crée un orbe d'expérience à l'endroit où elle tombe, que vous n'avez plus qu'à ramasser.
+
+
+
+ Dans les coffres de cette zone, vous trouverez certains objets enchantés, des fioles d'expérience ainsi que certains objets qui restent à enchanter sur la table d'enchantement.
+
+
+
+ Vous êtes à bord d'un chariot de mine. Pour descendre, pointez le curseur sur le chariot et appuyez sur{*CONTROLLER_ACTION_USE*}.{*MinecartIcon*}
+
+
+{*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur les chariots de mine.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si les chariots de mine n'ont déjà plus de secrets pour vous.
+
+
+
+ Le chariot de mine circule sur des rails. Vous pouvez fabriquer des chariots motorisés et des chariots de transport.
+ {*RailIcon*}
+
+
+
+ Vous pouvez aussi aménager des rails de propulsion ; alimentés par les torches et circuits de redstone, ils augmentent la vitesse du chariot. Ces rails peuvent être associés à des interrupteurs, leviers et plaques de détection pour mettre en œuvre des systèmes complexes.
+ {*PoweredRailIcon*}
+
+
+
+ Vous naviguez à bord d'un bateau. Pour descendre, pointez le curseur sur le bateau et appuyez sur{*CONTROLLER_ACTION_USE*}.{*BoatIcon*}
+
+
+
+ {*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur les bateaux.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si vous savez déjà tout ce qu'il faut savoir sur les bateaux.
+
+
+
+ Le bateau vous permet de circuler plus rapidement sur l'eau. Vous pouvez le diriger à l'aide de{*CONTROLLER_ACTION_MOVE*} et{*CONTROLLER_ACTION_LOOK*}.
+ {*BoatIcon*}
+
+
+
+ Vous maniez une canne à pêche. Appuyez{*CONTROLLER_ACTION_USE*} pour l'utiliser.{*FishingRodIcon*}
+
+
+
+ {*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur la pêche.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si vous savez déjà tout ce qu'il faut savoir sur la pêche.
+
+
+
+ Appuyez sur{*CONTROLLER_ACTION_USE*} pour lancer la ligne et commencer à pêcher. Appuyez à nouveau sur{*CONTROLLER_ACTION_USE*} pour relever la ligne.
+ {*FishingRodIcon*}
+
+
+
+ Si vous attendez que le flotteur plonge sous l'eau avant de relever la ligne, vous pourrez attraper un poisson. Mangé cru ou cuit au four, le poisson restitue de la santé.
+ {*FishIcon*}
+
+
+
+ Comme de nombreux outils, la canne à pêche a un nombre d'utilisations limité, mais elle n'a pas pour seule vocation d'attraper du poisson. Testez par vous-même et observez quels autres objets ou créatures elle est capable d'actionner ou de capturer...
+ {*FishingRodIcon*}
+
+
+
+ C'est un lit. La nuit, pointez le curseur sur le lit et appuyez sur{*CONTROLLER_ACTION_USE*} pour dormir jusqu'au matin.{*ICON*}355{*/ICON*}
+
+
+
+ {*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur les lits.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si vous savez déjà tout ce qu'il faut savoir sur les lits.
+
+
+
+ Placez votre lit dans un lieu sûr et bien éclairé pour éviter que les monstres ne vous tirent du sommeil au beau milieu de la nuit. Si vous avez déjà utilisé un lit, vous réapparaîtrez à son emplacement si vous mourez.
+ {*ICON*}355{*/ICON*}
+
+
+
+ Si votre partie compte d'autres joueurs, tous devront être au lit au même moment avant de pouvoir dormir.
+ {*ICON*}355{*/ICON*}
+
+
+
+ Dans cette zone, vous trouverez des circuits de redstone avec piston, ainsi qu'un coffre qui renferme les objets nécessaires pour développer ces circuits.
+
+
+
+ {*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur les circuits de redstone et les pistons.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si vous savez déjà tout ce qu'il y a à savoir sur les circuits de redstone et les pistons.
+
+
+
+ Les leviers, boutons, plaques de détection et torches de redstone permettent d'alimenter les circuits. Pour ce faire, reliez-les directement à l'objet que vous souhaitez activer, ou bien connectez-les moyennant de la poudre de redstone.
+
+
+
+ La position et l'orientation d'une source d'alimentation peuvent modifier l'effet qu'elle exerce sur les blocs voisins. Par exemple, une torche de redstone placée sur le côté d'un bloc peut être désactivée si le bloc en question est raccordé à une autre source d'alimentation.
+
+
+
+ Pour obtenir de la poudre de redstone, creusez du minerai de redstone avec une pioche en fer, en diamant ou en or. Elle permet de conduire le courant sur une longueur maximale de 15 blocs et sur une hauteur d'1 bloc.
+ {*ICON*}331{*/ICON*}
+
+
+
+ Les répéteurs de redstone permettent de prolonger la distance de conduction du courant, ou de retarder les signaux de redstone.
+ {*ICON*}356{*/ICON*}
+
+
+
+ Une fois alimenté, le piston s'allonge et pousse jusqu'à 12 blocs. Lorsqu'il se rétracte, le piston collant rabat sur lui un bloc (tous types de blocs confondus, ou presque).
+ {*ICON*}33{*/ICON*}
+
+
+
+ Le coffre de cette zone renferme les composants nécessaires à la fabrication de circuits avec pistons. Essayez d'utiliser ou de développer les circuits de cette zone, ou bien d'assembler votre propre circuit. Vous trouverez d'autres exemples de ces circuits en dehors de la zone didacticielle.
+
+
+
+ Un portail vers le Nether se trouve dans cette zone !
+
+
+
+ {*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur les portails et le Nether.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si vous savez déjà tout ce qu'il y a à savoir sur les portails et le Nether.
+
+
+
+ Pour créer un portail, placez des blocs d'obsidienne dans un cadre large de quatre blocs et haut de cinq. Les blocs d'angle n'ont qu'une fonction esthétique.
+
+
+
+ Pour activer un portail du Nether, embrasez les blocs contenus dans le cadre à l'aide d'un briquet à silex. Les portails se désactivent si leur cadre est brisé, si une explosion se produit à proximité ou si un liquide les franchit.
+
+
+
+ Pour emprunter un portail du Nether, tenez-vous à l'intérieur du cadre. L'écran deviendra violet et un son sera déclenché. Au bout de quelques secondes, vous serez propulsé dans une autre dimension.
+
+
+
+ Le Nether est un lieu de tous les dangers, inondé de lave, mais c'est le seul endroit où prélever du Netherrack, un matériau qui brûle indéfiniment une fois qu'il est enflammé, et de la glowstone, qui produit de la lumière.
+
+
+
+ Vous pouvez emprunter le Nether pour voyager rapidement à la Surface : parcourir un bloc de distance dans le Nether équivaut à voyager sur trois blocs de la Surface.
+
+
+
+ Vous êtes désormais en mode Créatif.
+
+
+
+ {*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur le mode Créatif.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si vous n'avez plus rien à apprendre sur ce mode.
+
+
+En mode Créatif, vous disposez d'un nombre infini d'objets et de blocs, vous pouvez détruire des blocs d'un seul clic sans utiliser d'outil, vous êtes invulnérable et vous pouvez voler.
+
+Appuyez deux fois rapidement sur{*CONTROLLER_ACTION_JUMP*} pour voler. Pour ne plus voler, répétez l'opération. Pour voler plus vite, orientez rapidement{*CONTROLLER_ACTION_MOVE*} deux fois vers l'avant en cours de vol.
+En mode Vol, maintenez{*CONTROLLER_ACTION_JUMP*} pour monter et{*CONTROLLER_ACTION_SNEAK*} pour descendre, ou bien utilisez le BMD pour monter/descendre et virer à gauche et à droite.
+
+Appuyez sur{*CONTROLLER_ACTION_CRAFTING*} pour ouvrir l'interface d'inventaire du mode Créatif.
+
+Rejoignez l'autre extrémité de ce trou pour continuer.
+
+Vous êtes arrivé à la fin du didacticiel du mode Créatif.
+
+
+ Une ferme a été aménagée dans cette zone. La culture vous permet de créer une source renouvelable de nourriture et d'autres objets.
+
+
+
+ {*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur la culture.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si vous n'avez plus rien à apprendre sur la question.
+
+
+Le blé, les citrouilles et les pastèques sont créés à partir de graines. Exploitez des herbes hautes ou moissonnez du blé pour recueillir des graines de blé. Les graines de citrouille et de pastèque s'obtiennent respectivement sur les citrouilles et les pastèques.
+
+Avant de planter les graines, les blocs de terre doivent être transformés en terre labourée à l'aide d'une houe. Une source d'eau voisine permettra d'irriguer la terre labourée. Les cultures pousseront d'autant plus vite si elles sont abondamment irriguées et exposées à la lumière.
+
+Le blé passe par plusieurs stades de croissance. Il est prêt à la moisson lorsque son aspect s'assombrit.{*ICON*}59:7{*/ICON*}
+
+Les citrouilles et les pastèques nécessitent de laisser vacant un bloc adjacent pour accueillir le fruit une fois le plant arrivé à maturité.
+
+La canne à sucre doit être plantée dans un bloc d'herbe, de terre ou de sable adjacent à un bloc d'eau. Détruire un bloc de canne à sucre vous permet de récolter tous les blocs qui lui sont superposés.{*ICON*}83{*/ICON*}
+
+Les cactus doivent être plantés dans le sable et pousseront jusqu'à atteindre trois blocs de hauteur. Tout comme pour le sucre de canne, détruire le bloc inférieur vous permettra de récolter les blocs qui lui sont superposés.{*ICON*}81{*/ICON*}
+
+Les champignons doivent être plantés dans des zones faiblement éclairées et se propageront aux blocs adjacents peu exposés à la lumière.{*ICON*}39{*/ICON*}
+
+Vous pouvez utiliser de la poudre d'os pour accélérer l'arrivée à maturité de vos cultures, ou pour transformer vos champignons en champignons géants.{*ICON*}351:15{*/ICON*}
+
+Le didacticiel consacré aux cultures est maintenant terminé.
+
+
+ Des animaux ont été placés en enclos dans cette zone. Vous pouvez élever des animaux pour en faire apparaître des versions miniatures.
+
+
+
+ {*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur les animaux et l'élevage.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si les animaux et l'élevage n'ont déjà plus de secrets pour vous.
+
+
+Pour faire en sorte que les animaux se reproduisent, vous devez leur donner à manger la nourriture appropriée ; ils basculeront alors en mode « Romance ».
+
+Donnez du blé aux vaches, Champimeuh et moutons, des carottes aux cochons, des graines de blé ou des verrues du Nether aux poulets et n'importe quelle variété de viande aux loups : ils chercheront alors un autre animal de leur espèce, lui aussi disposé à se reproduire.
+
+Lorsque deux animaux d'une même espèce se rencontrent, et pourvu qu'ils soient tous les deux en mode Romance, ils s'embrassent quelques secondes, et un bébé apparaît. Le jeune animal suivra ses parents quelque temps avant de devenir adulte.
+
+Une fois qu'un animal est passé en mode Romance, il faut patienter cinq minutes environ pour qu'il soit à nouveau apte.
+
+Certains animaux vous suivront si vous tenez leur nourriture dans la main. Il vous sera alors plus facile de réunir des animaux pour qu'ils se reproduisent.{*ICON*}296{*/ICON*}
+
+
+ Il est possible d'apprivoiser les loups sauvages en leur donnant des os. Des cœurs apparaissent alors autour d'eux pour symboliser leur état. Les loups apprivoisés suivent le joueur et le défendent s'ils n'ont pas reçu l'ordre de s'asseoir.
+
+
+Le didacticiel consacré aux animaux et à l'élevage est maintenant terminé.
+
+
+ Cette zone comporte des citrouilles et des blocs pour créer un golem de neige et un golem de fer.
+
+
+
+ {*B*}
+ Appuyez sur {*CONTROLLER_VK_A*} pour en savoir plus sur les golems.{*B*}
+ Appuyez sur {*CONTROLLER_VK_B*} si vous savez déjà ce que sont les golems.
+
+
+Les golems sont créés en plaçant une citrouille sur une pile de blocs.
+
+Les golems de neige sont créés en empilant de blocs de neige puis une citrouille. Les golems de neige lancent des boules de neige à vos ennemis.
+
+Les golems de fer sont créés à partir de quatre blocs de fer selon un certain modèle, avec une citrouille au-dessus du bloc central. Les golems de fer attaquent vos ennemis.
+
+Les golems de fer apparaissent naturellement pour protéger les villages. Ils vous attaqueront si vous attaquez les villageois.
+
+Vous devez poursuivre jusqu'à la fin de ce didacticiel avant de quitter cette zone.
+
+Certains outils conviennent mieux que d'autres au travail de ressources spécifiques. Par exemple, utilisez plutôt une pelle pour creuser les matériaux meubles comme la terre et le sable.
+
+Certains outils conviennent mieux que d'autres au travail de ressources spécifiques. Utilisez une hache pour couper les troncs d'arbre.
+
+Certains outils conviennent mieux que d'autres au travail de ressources spécifiques. Utilisez une pioche pour creuser le minerai et la pierre. Vous devrez sûrement confectionner une pioche dans des matériaux de meilleure qualité pour exploiter certains blocs.
+
+Certains outils sont plus efficaces que d'autres pour attaquer des ennemis. Pour attaquer, songez à vous équiper d'une épée.
+
+Maintenez {*CONTROLLER_ACTION_ACTION*}pour miner ou frapper à mains nues ou à l'aide d'un ustensile. Vous devrez parfois façonner des outils pour miner certains blocs.
+
+L'outil que vous maniez est endommagé. Chaque fois que vous utilisez un outil, son état se dégrade, jusqu'à se briser. Dans l'inventaire, la jauge colorée située sous l'objet illustre son niveau d'intégrité.
+
+Maintenez{*CONTROLLER_ACTION_JUMP*} pour nager vers le haut.
+
+Dans cette zone, un chariot de mine est placé sur des rails. Pour monter à bord, pointez le curseur sur le chariot et appuyez sur{*CONTROLLER_ACTION_USE*}. Utilisez{*CONTROLLER_ACTION_USE*} sur le bouton pour déplacer le chariot.
+
+Le coffre sur la rive contient un bateau. Pour l'utiliser, pointez le curseur sur l'eau et appuyez sur{*CONTROLLER_ACTION_USE*}. Pour embarquer, pointez le curseur sur le bateau et appuyez sur{*CONTROLLER_ACTION_USE*}.
+
+Vous trouverez une canne à pêche dans le coffre situé près de l'étang. Prenez-la et sélectionnez-la pour la tenir en main.
+
+Ce mécanisme à piston, plus complexe, crée un pont capable de s'auto-réparer ! Appuyez sur le bouton pour l'activer puis tâchez de comprendre comment les composants interagissent.
+
+Si vous déplacez le pointeur hors des limites de l'interface alors qu'un objet lui est annexé, vous pouvez jeter cet objet.
+
+Vous ne disposez pas des ingrédients nécessaires pour confectionner cet objet. Le champ situé en bas à gauche de l'écran répertorie les ingrédients requis pour cette tâche d'artisanat.
+
+
+ Félicitations, vous êtes arrivé à la fin de ce didacticiel. Désormais, le temps s'écoule normalement dans le jeu et la nuit ne va pas tarder à tomber avec son cortège de monstres ! Terminez votre refuge !
+
+
+{*EXIT_PICTURE*} Dès que vous serez prêt à explorer plus avant, un escalier, près du refuge de mineur, donne sur un petit château.
+
+Rappel :
+
+
]]>
+
+De nouvelles fonctionnalités ont été ajoutées à la dernière version du jeu, dont de nouvelles zones dans le monde didacticiel.
+
+{*B*}Appuyez sur{*CONTROLLER_VK_A*} pour parcourir normalement le didacticiel.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} pour passer le didacticiel principal.
+
+Ici, vous trouverez des zones déjà configurées qui vous en apprendront davantage sur la pêche, les bateaux, les pistons et la redstone.
+
+À l'extérieur de cette zone, vous trouverez des exemples de bâtiments, de terres labourées, de chariots de mine et de rails, ainsi que des tables d'enchantement, des alambics, des partenaires commerciaux, des enclumes... et bien plus encore !
+
+
+ Votre barre de nourriture est à un niveau où votre santé ne se régénère plus.
+
+
+
+ {*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur la barre de nourriture et les aliments.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si vous savez déjà tout ce qu'il y a à savoir sur la barre de nourriture et les aliments.
+
+
+Sélectionner
+
+Utiliser
+
+Retour
+
+Quitter
+
+Annuler
+
+Annuler connexion
+
+Sélectionner un périphérique
+
+Changer périph.
+
+Actualiser jeux
+
+Party Games
+
+Tous les jeux
+
+Changer catégorie
+
+Inventaire
+
+Description
+
+Ingrédients
+
+Artisanat
+
+Créer
+
+Prendre/Placer
+
+Prendre
+
+Prendre tout
+
+Prendre la moitié
+
+Placer
+
+Placer tout
+
+Placer un
+
+Lâcher
+
+Jeter tout
+
+Jeter un
+
+Permuter
+
+Dépl. rapide
+
+Vider la barre de sélection rapide
+
+?
+
+Partager sur Facebook
+
+Changer de filtre
+
+Carte du joueur
+
+Voir profil du joueur
+
+Envoyer requête d'ami
+
+Page Bas
+
+Page Haut
+
+Suivant
+
+Précédent
+
+Exclure joueur
+
+Teindre
+
+Miner
+
+Nourrir
+
+Apprivoiser
+
+Soigner
+
+Assis
+
+Suis-moi
+
+Éjecter
+
+Vider
+
+Seller
+
+Placer
+
+Frapper
+
+Traire
+
+Prélever
+
+Manger
+
+Dormir
+
+Se réveiller
+
+Jouer
+
+Monter
+
+Naviguer
+
+Faire pousser
+
+Nager (haut)
+
+Ouvrir
+
+Changer hauteur
+
+Exploser
+
+Lire
+
+Suspendre
+
+Lancer
+
+Planter
+
+Faucher
+
+Récolter
+
+Continuer
+
+Déverrouiller le jeu complet
+
+Supp. sauvegarde
+
+Supprimer
+
+Options
+
+Inviter Groupe d'amis Xbox Live
+
+Inviter des amis
+
+Accepter
+
+Tondre
+
+Exclure le niveau
+
+Sélectionner skin
+
+Allumer
+
+Naviguer
+
+Installer la version complète
+
+Installer la version d'évaluation
+
+Installer
+
+Réinstaller
+
+Enregistrer options
+
+Exécuter ordre
+
+Créatif
+
+Déplacer ingrédient
+
+Déplacer combustible
+
+Outil Déplacement
+
+Déplacer l'armure
+
+Déplacer l'arme
+
+Équiper
+
+Bander
+
+Lâcher
+
+Privilèges
+
+Bloc
+
+Page Haut
+
+Page Bas
+
+Mode Romance
+
+Boire
+
+Faire pivoter
+
+Masquer
+
+Charger la sauvegarde pour Xbox One
+
+Libérer tous les emplacements
+
+Charger la sauvegarde pour Xbox One
+
+O.K.
+
+Annuler
+
+Magasin Minecraft
+
+Voulez-vous vraiment quitter la partie en cours et rejoindre la nouvelle ? Toute progression non sauvegardée sera perdue.
+
+Quitter le jeu
+
+Sauvegarder la partie
+
+Quitter sans sauvegarder
+
+Voulez-vous vraiment supprimer toute sauvegarde préalable pour ce monde et la remplacer par la version actuelle de ce monde ?
+
+Voulez-vous vraiment quitter sans sauvegarder ? Vous perdrez toute progression dans ce monde !
+
+Commencer la partie
+
+Si vous créez, chargez ou sauvegardez un monde en mode Créatif, les mises à jour des succès et des classements seront désactivées pour ce monde, même s'il est ensuite chargé en mode Survie. Voulez-vous vraiment continuer ?
+
+Ce monde a déjà été sauvegardé en mode Créatif : les mises à jour des succès et des classements seront désactivées. Voulez-vous vraiment continuer ?
+
+Ce monde a déjà été sauvegardé en mode Créatif : les mises à jour des succès et du classement seront désactivées.
+
+Si vous créez, chargez ou sauvegardez un monde avec des privilèges d'hôte, les mises à jour des succès et des classements seront désactivées pour ce monde, même s'il est ensuite chargé avec ces options désactivées. Voulez-vous vraiment continuer ?
+
+Sauv. endommagée
+
+Cette sauvegarde semble corrompue ou endommagée. La supprimer ?
+
+Voulez-vous vraiment retourner au menu principal et déconnecter tous les joueurs de la partie ? Toute progression non sauvegardée sera perdue.
+
+Quitter et sauvegarder
+
+Quitter sans sauvegarder
+
+Voulez-vous vraiment retourner au menu principal ? Toute progression non sauvegardée sera perdue.
+
+Voulez-vous vraiment retourner au menu principal ? Votre progression sera perdue !
+
+Créer un monde
+
+Lancer le didacticiel
+
+Didacticiel
+
+Nommer votre monde
+
+Saisir le nom de votre monde
+
+Saisir une graine pour la génération de votre monde
+
+Charger monde sauvegardé
+
+Appuyez sur START pour rejoindre la partie
+
+Sortie du jeu
+
+Une erreur s'est produite. Retour au menu principal.
+
+Échec de la connexion
+
+Connexion perdue
+
+La connexion au serveur a été interrompue. Retour au menu principal.
+
+La connexion à Xbox Live a été interrompue. Retour au menu principal.
+
+La connexion à Xbox Live a été interrompue.
+
+Déconnexion par le serveur
+
+Vous avez été exclu de la partie
+
+Vous avez été exclu de la partie. Motif : vol.
+
+Expiration du délai de connexion
+
+Le serveur est au complet.
+
+L'hôte a quitté la partie.
+
+Vous ne pouvez pas rejoindre cette partie, car vous n'êtes l'ami d'aucun des joueurs présents.
+
+Vous ne pouvez pas rejoindre cette partie car l'hôte vous en a déjà exclu.
+
+Vous ne pouvez pas rejoindre cette partie car le joueur avec qui vous essayez de jouer utilise une version antérieure du jeu.
+
+Vous ne pouvez pas rejoindre cette partie car le joueur avec qui vous essayez de jouer utilise une version supérieure du jeu.
+
+Nouveau monde
+
+Récompense déverrouillée !
+
+Hourra, vous avez reçu une image de joueur représentant Steve de Minecraft !
+
+Hourra, vous avez reçu une image de joueur représentant un creeper !
+
+Hourra, vous avez reçu une récompense pour avatar : un T-shirt Minecraft: Xbox 360 Edition !
+Accédez à l'Interface pour en habiller votre avatar.
+
+Hourra, vous avez reçu une récompense pour avatar : une montre Minecraft: Xbox 360 Edition !
+Accédez à l'Interface pour la mettre au poignet de votre avatar.
+
+Hourra, vous avez reçu une récompense pour avatar : une casquette de base-ball Creeper !
+Accédez à l'Interface pour en coiffer votre avatar.
+
+Hourra, vous avez reçu le thème Minecraft: Xbox 360 Edition !
+Accédez à l'Interface pour sélectionner ce thème.
+
+Déverrouiller le jeu complet
+
+Vous jouez à la version d'évaluation. Vous devrez vous procurer le jeu complet pour sauvegarder votre partie.
+Déverrouiller le jeu complet ?
+
+Vous jouez à la version d'évaluation de Minecraft: Xbox 360 Edition. Si vous possédiez le jeu complet, vous auriez déjà remporté un succès !
+Voulez-vous déverrouiller le jeu complet ?
+
+Vous jouez à la version d'évaluation de Minecraft: Xbox 360 Edition. Si vous possédiez le jeu complet, vous auriez déjà remporté une récompense pour avatar !
+Voulez-vous déverrouiller le jeu complet ?
+
+Vous jouez à la version d'évaluation de Minecraft: Xbox 360 Edition. Si vous possédiez le jeu complet, vous auriez déjà remporté une image de joueur !
+Voulez-vous déverrouiller le jeu complet ?
+
+Vous jouez à la version d'évaluation de Minecraft: Xbox 360 Edition. Si vous possédiez le jeu complet, vous auriez déjà remporté un thème !
+Voulez-vous déverrouiller le jeu complet ?
+
+Vous jouez à la version d'évaluation de Minecraft: Xbox 360 Edition. Vous devez disposer du jeu complet pour accepter cette invitation.
+Voulez-vous déverrouiller le jeu complet ?
+
+Les joueurs invités ne peuvent pas déverrouiller le jeu complet. Veuillez vous connecter à un profil de joueur Xbox Live.
+
+Veuillez patienter
+
+Aucun résultat
+
+Filtre :
+
+Amis
+
+Mon score
+
+Général
+
+Entrées :
+
+Rang
+
+Gamertag
+
+Sauvegarde du niveau en préparation
+
+Préparation des tronçons...
+
+Finalisation...
+
+Aménagement du terrain
+
+Brève simulation du monde
+
+Initialisation du serveur
+
+Génération de la zone d'apparition
+
+Chargement de la zone d'apparition
+
+Entrée dans le Nether
+
+Sortie du Nether
+
+Réapparition
+
+Génération du niveau
+
+Chargement du niveau
+
+Sauvegarde des joueurs
+
+Connexion à l'hôte
+
+Téléchargement du terrain
+
+Passage en mode hors ligne
+
+Veuillez patienter pendant que l'hôte sauvegarde la partie
+
+Entrée dans l'ENDER
+
+Sortie de l'ENDER
+
+Recherche de graines pour le générateur de monde
+
+Ce lit est occupé
+
+Vous ne pouvez dormir que la nuit
+
+%s dort dans un lit. Pour vous réveiller directement à l'aube, tous les joueurs doivent dormir dans leur lit au même moment.
+
+Le lit de votre refuge est absent ou inaccessible
+
+Vous ne pouvez pas vous reposer : des monstres rôdent dans les parages
+
+Vous dormez dans un lit. Pour vous réveiller directement à l'aube, tous les joueurs doivent dormir dans leur lit au même moment.
+
+Outils et armes
+
+Armes
+
+Nourriture
+
+Structures
+
+Armures
+
+Mécanismes
+
+Transports
+
+Décorations
+
+Construction de blocs
+
+Redstone et transport
+
+Divers
+
+Alchimie
+
+Alchimie
+
+Outils, armes et armures
+
+Matériaux
+
+Déconnexion
+
+Votre profil de joueur a été déconnecté : retour à l'écran titre
+
+Difficulté
+
+Musique
+
+Son
+
+Gamma
+
+Sensibilité jeu
+
+Sensibilité interface
+
+Pacifique
+
+Facile
+
+Normal
+
+Difficile
+
+Dans ce mode, la santé du joueur se régénère au fil du temps et aucun ennemi ne rôde dans les parages.
+
+Dans ce mode, des ennemis apparaissent dans l'environnement mais infligent moins de dégâts qu'en mode Normal.
+
+Dans ce mode, des ennemis apparaissent dans l'environnement et infligent des dégâts normaux.
+
+Dans ce mode, des ennemis apparaissent dans l'environnement et infligent des dégâts considérables. Méfiez-vous des creepers : même si vous prenez vos distances, ils ne renonceront pas à vous attaquer !
+
+Expiration de la version d'évaluation
+
+La durée impartie de la version d'évaluation de Minecraft: Xbox 360 Edition est écoulée ! Pour continuer à en profiter, voulez-vous déverrouiller le jeu complet ?
+
+Partie au complet
+
+Impossible de rejoindre la partie : aucune place vacante
+
+Saisir un message sur le panneau
+
+Saisir une ligne de texte à inscrire sur votre panneau
+
+Saisir un titre
+
+Saisir le titre de votre message
+
+Saisir un sous-titre
+
+Saisir le sous-titre de votre message
+
+Saisir une description
+
+Saisir la description de votre message
+
+Inventaire
+
+Ingrédients
+
+Alambic
+
+Coffre
+
+Enchantement
+
+Four
+
+Ingrédient
+
+Combustible
+
+Distributeur
+
+Aucun contenu téléchargeable de ce type n'est actuellement disponible pour ce jeu.
+
+%s a rejoint la partie.
+
+%s a quitté la partie.
+
+%s s'est fait exclure de la partie.
+
+Voulez-vous vraiment supprimer cette sauvegarde ?
+
+Attente d'accord
+
+Censuré
+
+En jeu :
+
+Réinitialiser paramètres
+
+Voulez-vous vraiment rétablir les paramètres par défaut ?
+
+Échec du chargement
+
+Le chargement de Minecraft: Xbox 360 Edition a échoué : impossible de continuer.
+
+Jeu de %s
+
+Partie d'un hôte inconnu
+
+Invité déconnecté
+
+Un joueur invité s'est déconnecté : tous les joueurs invités ont été exclus de la partie.
+
+Se connecter
+
+Vous n'êtes pas connecté. Pour jouer, vous devez d'abord vous connecter. Vous connecter ?
+
+Multijoueur non autorisé
+
+Impossible de rejoindre la partie : l'un des joueurs au moins n'est pas autorisé à jouer en multijoueur sur Xbox Live.
+
+Impossible de créer une partie en ligne : l'un des joueurs au moins n'est pas autorisé à jouer en multijoueur sur Xbox Live. Décochez la case Jeu en ligne pour commencer une partie hors ligne.
+
+Vous n'êtes pas autorisé à rejoindre cette session de jeu : vos privilèges d'accès au contenu sont trop restrictifs. Si vous souhaitez rejoindre cette session, modifiez ces paramètres dans la section Confidentialité et connexion Xbox 360 de l'Interface Xbox.
+
+Vous n'êtes pas autorisé à rejoindre cette session de jeu : les privilèges d'accès au contenu d'un de vos joueurs locaux sont trop restrictifs.
+
+Vous n'êtes pas autorisé à rejoindre cette session de jeu : les privilèges d'accès au contenu d'un des joueurs de la session sont réglés sur Amis uniquement et vous ne figurez pas sur sa liste d'amis.
+
+Impossible de créer la partie
+
+Vous n'êtes pas autorisé à créer cette session de jeu : les privilèges d'accès au contenu d'un des joueurs locaux sont trop restrictifs. Décochez la case Jeu en ligne pour commencer une partie hors ligne. Vous pouvez aussi modifier ces paramètres dans la section Confidentialité et connexion Xbox 360 de l'Interface Xbox.
+
+Sélection auto
+
+Non pack : skins stand.
+
+Skins préférées
+
+Niveau exclu
+
+La partie que vous tentez de rejoindre figure dans votre liste de niveaux exclus.
+Si vous choisissez de rejoindre cette partie, le niveau sera retiré de votre liste de niveaux exclus.
+
+Exclure ce niveau ?
+
+Voulez-vous vraiment ajouter ce niveau à votre liste de niveaux exclus ?
+Si vous sélectionnez O.K., vous quitterez cette partie.
+
+Retirer de la liste d'exclusion
+
+Intervalle de sauvegarde auto
+
+Intervalle de sauvegarde auto : NON
+
+min
+
+Placement impossible à cet endroit !
+
+Pour éviter la mort instantanée dès l'apparition des joueurs, il n'est pas autorisé de placer de la lave aussi près du point d'apparition du niveau.
+
+Le jeu comporte une fonction de sauvegarde automatique du niveau. Quand l'icône ci-dessus apparaît, le jeu sauvegarde vos données.
+Ne pas éteindre la console Xbox 360 quand cette icône apparaît.
+
+Opacité interface
+
+Préparation de sauvegarde auto du niveau
+
+Taille de l'interface
+
+Taille de l'interface (écran partagé)
+
+Graine
+
+Déverrouiller pack de skins
+
+Pour utiliser la skin que vous avez sélectionnée, vous devez d'abord déverrouiller le pack correspondant.
+Déverrouiller ce pack de skins ?
+
+Débloquer le pack de textures
+
+Pour utiliser ce pack de textures dans votre monde, vous devez le débloquer.
+Le débloquer maintenant ?
+
+Pack de textures d'essai
+
+Vous utilisez une version d'essai du pack de textures. Vous ne pourrez pas sauvegarder ce monde si vous ne déverrouillez pas la version complète.
+Déverrouiller la version complète du pack de textures ?
+
+Pack de textures introuvable
+
+Déverrouiller la version complète
+
+Télécharger la version d'essai
+
+Télécharger la version complète
+
+Ce monde utilise un pack mash-up ou de textures que vous ne possédez pas.
+Voulez-vous installer le pack mash-up ou le pack de textures maintenant ?
+
+Obtenir la version d'essai
+
+Obtenir la version complète
+
+Exclure joueur
+
+Voulez-vous vraiment exclure ce joueur de la partie ? Il ne pourra plus rejoindre la partie jusqu'au redémarrage du monde.
+
+Packs d'images de joueur
+
+Thèmes
+
+Packs de skins
+
+Autoriser les amis d'amis
+
+Vous ne pouvez pas rejoindre cette partie : elle est réservée aux seuls amis de l'hôte.
+
+Impossible de rejoindre la partie
+
+Sélectionnée
+
+Skin sélectionnée :
+
+Contenu téléchargeable corrompu
+
+Ce contenu téléchargeable est endommagé et inutilisable. Supprimez-le puis réinstallez-le depuis le menu Magasin Minecraft.
+
+Votre contenu téléchargeable est partiellement endommagé et inutilisable. Supprimez-le puis réinstallez-le depuis le menu Magasin Minecraft.
+
+Votre mode de jeu a été modifié
+
+Renommer votre monde
+
+Saisir le nouveau nom de votre monde
+
+Mode de jeu : Survie
+
+Mode de jeu : Créatif
+
+Survie
+
+Créatif
+
+Créé en mode Survie
+
+Créé en mode Créatif
+
+Afficher les nuages
+
+Que voulez-vous faire de cette sauvegarde ?
+
+Renommer sauvegarde
+
+Sauvegarde auto. dans %d...
+
+Oui
+
+Non
+
+Normal
+
+Superplat
+
+Une fois activé, le jeu sera un jeu en ligne.
+
+Une fois activé, seuls les joueurs invités peuvent participer.
+
+Une fois activé, les amis des personnes présentes sur votre liste d'amis peuvent rejoindre la partie.
+
+Lorsque cette option est activée, les joueurs peuvent infliger des dégâts aux autres joueurs. Ne s'applique qu'au mode Survie.
+
+Lorsque cette option est désactivée, les joueurs qui rejoignent la partie ne peuvent ni construire ni miner sans autorisation.
+
+Lorsque cette option est activée, le feu peut se propager aux blocs voisins inflammables.
+
+Lorsque cette option est activée, le TNT peut exploser lorsqu'il est activé.
+
+Cette option permet à l'hôte d'activer sa capacité à voler et à se rendre un invisible, et de désactiver la fatigue. Elle désactive la mise à jour des succès et classements.
+
+Si vous l'activez, le Nether sera régénéré. Très utile si vous avez une ancienne sauvegarde où les forteresses du Nether ne sont pas présentes.
+
+Lorsque cette option est activée, les structures comme les villages et les forts apparaîtront dans le monde.
+
+Lorsque cette option est activée, un monde complètement plat apparaîtra à la Surface et dans le Nether.
+
+Lorsque cette option est activée, un coffre renfermant des objets utiles sera créé à proximité du point d'apparition du joueur.
+
+Packs de skins
+
+Thèmes
+
+Images du joueur
+
+Objets pour avatar
+
+Packs de textures
+
+Packs mash-up
+
+{*PLAYER*} s'est fait descendre en flammes
+
+{*PLAYER*} a joué les allumettes
+
+{*PLAYER*} a piqué une tête dans la lave
+
+{*PLAYER*} a suffoqué dans un mur
+
+{*PLAYER*} a péri par noyade
+
+{*PLAYER*} a crevé de faim
+
+{*PLAYER*} a reçu une piqûre mortelle
+
+{*PLAYER*} a percuté le sol
+
+{*PLAYER*} a chuté du bout du monde
+
+{*PLAYER*} a péri
+
+{*PLAYER*} a explosé
+
+{*PLAYER*} a trépassé par magie
+
+{*PLAYER*} a été tué(e) par le souffle du Dragon de l'Ender.
+
+{*PLAYER*} s'est fait tuer par {*SOURCE*}
+
+{*PLAYER*} s'est fait tuer par {*SOURCE*}
+
+{*PLAYER*} s'est fait tirer dessus par {*SOURCE*}
+
+{*PLAYER*} a encaissé une boule de feu décochée par {*SOURCE*}
+
+{*PLAYER*} s'est fait rouer de coups par {*SOURCE*}
+
+{*PLAYER*} s'est fait tuer par {*SOURCE*}
+
+Brouillard d'adminium
+
+Afficher interface
+
+Afficher main
+
+Gamertags écran partagé
+
+Messages mortuaires
+
+Personnage animé
+
+Animations personnalisée pour skin
+
+Vous ne pouvez plus miner ou utiliser d'objet
+
+Vous pouvez maintenant miner et utiliser des objets
+
+Vous ne pouvez plus placer de blocs
+
+Vous pouvez maintenant placer des blocs
+
+Vous pouvez maintenant utiliser portes et leviers
+
+Vous ne pouvez plus utiliser portes et leviers
+
+Vous pouvez maintenant utiliser des conteneurs (coffres, par exemple)
+
+Vous ne pouvez plus utiliser de conteneurs (coffres, par exemple)
+
+Vous ne pouvez plus attaquer des monstres
+
+Vous pouvez maintenant attaquer des monstres
+
+Vous ne pouvez plus attaquer des joueurs
+
+Vous pouvez maintenant attaquer des joueurs
+
+Vous ne pouvez plus attaquer les animaux
+
+Vous pouvez maintenant attaquer les animaux
+
+Vous êtes désormais modérateur
+
+Vous n'êtes plus modérateur
+
+Vous pouvez maintenant voler
+
+Vous ne pouvez plus voler
+
+Vous ne vous fatiguerez plus
+
+Vous allez maintenant vous fatiguer
+
+Vous êtes maintenant invisible
+
+Vous n'êtes plus invisible
+
+Vous êtes maintenant invulnérable
+
+Vous n'êtes plus invulnérable
+
+%d MSP
+
+Dragon de l'Ender
+
+%s est entré(e) dans l'Ender
+
+%s a quitté l'Ender
+
+
+{*C3*}Je vois le joueur dont tu parles.{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*} ?{*EF*}{*B*}{*B*}
+{*C3*}Oui. Fais attention. Son niveau est plus élevé maintenant. Il peut lire nos pensées.{*EF*}{*B*}{*B*}
+{*C2*}Ça ne fait rien. Il pense qu'on fait partie du jeu.{*EF*}{*B*}{*B*}
+{*C3*}Je l'aime bien, ce joueur. Il a bien joué. Il n'a jamais baissé les bras.{*EF*}{*B*}{*B*}
+{*C2*}Il lit nos pensées comme des mots sur un écran.{*EF*}{*B*}{*B*}
+{*C3*}C'est sa façon d'imaginer bien des choses quand il est plongé dans le rêve d'un jeu.{*EF*}{*B*}{*B*}
+{*C2*}Les mots font une interface remarquable. Très flexible. Et bien moins terrifiante que d'observer la réalité qui se trouve derrière l'écran.{*EF*}{*B*}{*B*}
+{*C3*}Ils entendaient des voix, avant que les joueurs ne sachent lire. C'était l'époque où ceux qui ne jouaient pas appelaient les joueurs sorcières et sorciers. Et eux, rêvaient de voler dans les airs, sur des bâtons envoûtés par des démons. {*EF*}{*B*}{*B*}
+{*C2*}De quoi rêvait ce joueur ?{*EF*}{*B*}{*B*}
+{*C3*}De la lumière du soleil et des arbres. Du feu et de l'eau. Il l'a rêvé et l'a créé. Puis il a rêvé de destruction. Il a rêvé de chasser et d'être chassé. Il a rêvé d'un refuge.{*EF*}{*B*}{*B*}
+{*C2*}Ah, l'interface originale. Vieille d'un million d'années et elle fonctionne encore. Mais quelle structure ce joueur a-t-il créée, dans la réalité qui se trouve derrière l'écran ?{*EF*}{*B*}{*B*}
+{*C3*}Il a travaillé aux côtés de milliers d'autres, pour créer un véritable monde d'un pli de {*EF*}{*NOISE*}{*C3*}, et créé {*EF*}{*NOISE*}{*C3*} pour {*EF*}{*NOISE*}{*C3*}, dans {*EF*}{*NOISE*}{*C3*}.{*EF*}{*B*}{*B*}
+{*C2*}Il n'arrive pas à lire ces pensées.{*EF*}{*B*}{*B*}
+{*C3*}Non. Il n'a pas encore atteint le niveau le plus élevé. Pour cela, il doit accomplir le long rêve de la vie, pas le court rêve d'un jeu.{*EF*}{*B*}{*B*}
+{*C2*}Sait-il que nous l'aimons ? Que l'univers est bon ?{*EF*}{*B*}{*B*}
+{*C3*}Parfois, à travers les sons de sa pensée, il entend l'univers, oui.{*EF*}{*B*}{*B*}
+{*C2*}Mais il est des moments où il est en peine, dans le long rêve. Il crée des mondes sans étés et frissonne sous un soleil noir, il prend ses tristes créations pour la réalité.{*EF*}{*B*}{*B*}
+{*C3*}Soigner sa tristesse causerait sa perte. Le chagrin est une tâche personnelle. Nous ne pouvons interférer.{*EF*}{*B*}{*B*}
+{*C2*}Parfois, quand les joueurs sont plongés dans leurs rêves, je veux leur dire qu'en réalité, ils construisent de véritables mondes. Parfois, je veux leur dire à quel point ils sont importants pour l'univers. Parfois, lorsqu'ils ne se sont pas vraiment connectés pendant un long moment, je veux les aider à exprimer leur peur.{*EF*}{*B*}{*B*}
+{*C3*}Il lit nos pensées.{*EF*}{*B*}{*B*}
+{*C2*}Parfois, cela m'indiffère. Parfois, j'aimerais leur dire que ce monde qu'ils croient véritable n'est que {*EF*}{*NOISE*}{*C2*} et {*EF*}{*NOISE*}{*C2*}, j'aimerais leur dire qu'ils sont {*EF*}{*NOISE*}{*C2*} dans {*EF*}{*NOISE*}{*C2*}. Leur vision de la réalité est tellement limitée dans leur long rêve.{*EF*}{*B*}{*B*}
+{*C3*}Et pourtant, ils jouent le jeu.{*EF*}{*B*}{*B*}
+{*C2*}Mais il serait tellement facile de leur dire...{*EF*}{*B*}{*B*}
+{*C3*}Ce serait trop puissant pour ce rêve. Leur dire comment vivre revient à les empêcher de vivre.{*EF*}{*B*}{*B*}
+{*C2*}Je ne dirai pas au joueur comment vivre.{*EF*}{*B*}{*B*}
+{*C3*}Le joueur commence à s'agiter.{*EF*}{*B*}{*B*}
+{*C2*}Je vais lui conter une histoire.{*EF*}{*B*}{*B*}
+{*C3*}Mais pas la vérité.{*EF*}{*B*}{*B*}
+{*C2*}Non. Une histoire qui protège la vérité dans une cage de mots. Pas la vérité à nue qui peut brûler sur une infinie distance.{*EF*}{*B*}{*B*}
+{*C3*}Donne-lui à nouveau un corps.{*EF*}{*B*}{*B*}
+{*C2*}Oui. Joueur...{*EF*}{*B*}{*B*}
+{*C3*}Utilise son nom.{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}. Joueur de jeux.{*EF*}{*B*}{*B*}
+{*C3*}Bien.{*EF*}{*B*}{*B*}
+
+
+
+
+
+{*C2*}Prenez une inspiration, maintenant. Prenez-en une autre. Sentez l'air dans vos poumons. Laissez vos membres se ranimer. Oui, bougez vos doigts. Ressentez à nouveau votre corps, la gravité, l'air. Réapparaissez dans le long rêve. Vous y êtes. Votre corps touche à présent l'univers de toute part, comme si vous étiez deux choses séparées. Comme si nous étions deux choses séparées.{*EF*}{*B*}{*B*}
+{*C3*}Qui sommes-nous ? Nous étions jadis appelés esprits de la montagne. Père soleil et mère lune. Esprits ancestraux, esprits animaux. Génies. Fantômes. Homme vert. Puis dieux, démons. Anges. Poltergeists. Aliens, extraterrestres. Leptons, quarks. Les mots changent mais nous restons les mêmes.{*EF*}{*B*}{*B*}
+{*C2*}Nous sommes l'univers. Nous sommes tout ce que vous considérez ne pas être vous. Vous nous regardez à présent, à travers votre peau et vos yeux. Et pourquoi l'univers touche-t-il votre peau et vous éclaire de sa lumière ? Pour vous voir, joueur. Pour vous connaître. Et pour être connu. Je vais vous raconter une histoire.{*EF*}{*B*}{*B*}
+{*C2*}Il était une fois un joueur.{*EF*}{*B*}{*B*}
+{*C3*}Ce joueur, c'était vous, {*PLAYER*}.{*EF*}{*B*}{*B*}
+{*C2*}Parfois il se croyait humain, sur la fine croûte d'un globe tournant fait de roche en fusion. La boule de roche en fusion tournait autour d'une autre boule de gaz embrasé qui était trois cent trente trois millions de fois plus massive qu'elle. Elles étaient si éloignées l'une de l'autre que la lumière mettait huit minutes à traverser l'intervalle. La lumière était les données d'une étoile et pouvait brûler la peau à plus de cent cinquante millions de kilomètres de distance.{*EF*}{*B*}{*B*}
+{*C2*}Parfois, le joueur rêvait qu'il était un mineur, à la surface d'un monde plat et infini. Le soleil était un carré blanc. Les jours étaient courts, il y avait beaucoup à faire et la mort n'était qu'un inconvénient temporaire.{*EF*}{*B*}{*B*}
+{*C3*}Parfois le joueur rêvait qu'il était perdu dans une histoire.{*EF*}{*B*}{*B*}
+{*C2*}Parfois, le joueur rêvait qu'il était d'autres choses, en d'autres lieux. Parfois ces rêves étaient perturbants. Parfois vraiment beaux. Parfois le joueur se réveillait dans un rêve pour se retrouver dans un autre et se réveiller dans un troisième.{*EF*}{*B*}{*B*}
+{*C3*}Parfois, le joueur rêvait qu'il lisait des mots sur un écran.{*EF*}{*B*}{*B*}
+{*C2*}Revenons en arrière.{*EF*}{*B*}{*B*}
+{*C2*}Les atomes du joueur étaient éparpillés dans l'herbe, les rivières, l'air, le sol. Une femme a rassemblé les atomes, elle a bu et respiré, et a assemblé le joueur dans son corps.{*EF*}{*B*}{*B*}
+{*C2*}Et le joueur s'est réveillé, passant du monde maternel chaud et sombre à celui du long rêve.{*EF*}{*B*}{*B*}
+{*C2*}Et le joueur était une nouvelle histoire, jamais racontée avant, écrite en lettres ADN. Et le joueur était un nouveau programme, jamais utilisé auparavant, généré par un code source d'un milliard d'années. Et le joueur était un nouvel humain n'ayant encore jamais vécu, uniquement fait d'amour et de lait.{*EF*}{*B*}{*B*}
+{*C3*}Vous êtes le joueur. L'histoire. Le programme. L'humain. Uniquement fait d'amour et de lait.{*EF*}{*B*}{*B*}
+{*C2*}Allons un peu plus loin.{*EF*}{*B*}{*B*}
+{*C2*}Les sept quadrilliards d'atomes qui forment le corps du joueur ont été créés, bien longtemps avant ce jeu, au cœur d'une étoile. Le joueur est donc, lui aussi, les données d'une étoile. Et le joueur évolue dans une histoire, faite d'une forêt de données plantées par un homme nommé Julian, dans un monde plat et infini, créé par un homme nommé Markus, qui existe dans un petit monde privé créé par le joueur qui habite lui-même un univers créé par...{*EF*}{*B*}{*B*}
+{*C3*}Chut. Parfois, le joueur créait un petit monde privé doux, simple et chaleureux. Parfois difficile, froid et compliqué. Parfois, il construisait le modèle d'un univers dans sa tête ; éclats d'énergie se déplaçant dans de vastes espaces vides. Parfois, il appelait ces éclats « électrons » et « protons ».{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}Parfois, il les appelait « planètes » et « étoiles ».{*EF*}{*B*}{*B*}
+{*C2*}Parfois, il se croyait dans un univers fait d'énergie, elle-même faite de zéros et de uns ; d'allumages et de mises en veille ; de lignes de codes. Parfois, il se croyait en train de jouer. Parfois il se croyait en train de lire des mots sur un écran.{*EF*}{*B*}{*B*}
+{*C3*}Vous êtes le joueur lisant des mots...{*EF*}{*B*}{*B*}
+{*C2*}Chut... Parfois, le joueur lisait les lignes de code d'un écran, les décodait pour en faire des mots, puis décodait les mots pour en tirer un sens, lui-même décodé en sentiments, émotions, théories, idées, et le joueur se mettait à respirer plus vite et plus profondément alors qu'il réalisait qu'il était vivant, il était vivant. Ces milliers de morts n'étaient pas réelles, le joueur était en vie.{*EF*}{*B*}{*B*}
+{*C3*}Vous. Vous êtes en vie.{*EF*}{*B*}{*B*}
+{*C2*}Et parfois, le joueur pensait que l'univers lui avait parlé par la lumière qui passait à travers les feuilles mouvantes des arbres en été.{*EF*}{*B*}{*B*}
+{*C3*}Et parfois, le joueur pensait que l'univers lui avait parlé par la lumière qui tombait de la fraîcheur du ciel nocturne de l'hiver, où un éclat de lumière dans l'angle de l'œil du joueur pouvait être une étoile un million de fois plus massive que le soleil, fusionnant ses planètes en plasma pour les rendre visibles un instant au joueur rentrant chez lui de l'autre côté de l'univers, une odeur de nourriture lui chatouillant les narines, presque arrivé au pas de la porte familière, sur le point de se mettre à rêver à nouveau.{*EF*}{*B*}{*B*}
+{*C2*}Et parfois, le joueur pensait que l'univers lui avait parlé par les zéros et les uns, par l'électricité du monde, par les mots défilant sur un écran à la fin d'un rêve.{*EF*}{*B*}{*B*}
+{*C3*}Et l'univers disait : je vous aime ;{*EF*}{*B*}{*B*}
+{*C2*}Et l'univers disait : vous avez bien joué ;{*EF*}{*B*}{*B*}
+{*C3*}Et l'univers disait : tout ce dont vous avez besoin est en vous ;{*EF*}{*B*}{*B*}
+{*C2*}Et l'univers disait : votre force est plus grande que vous ne le pensez ;{*EF*}{*B*}{*B*}
+{*C3*}Et l'univers disait : vous êtes la lumière du jour ;{*EF*}{*B*}{*B*}
+{*C2*}Et l'univers disait : vous êtes la nuit ;{*EF*}{*B*}{*B*}
+{*C3*}Et l'univers disait : les ténèbres que vous combattez sont en vous ;{*EF*}{*B*}{*B*}
+{*C2*}Et l'univers disait : la lumière que vous cherchez est en vous ;{*EF*}{*B*}{*B*}
+{*C3*}Et l'univers disait : vous n'êtes pas seul ;{*EF*}{*B*}{*B*}
+{*C2*}Et l'univers disait : vous êtes lié à tout ce qui vous entoure ;{*EF*}{*B*}{*B*}
+{*C3*}Et l'univers disait : vous êtes l'univers se goûtant lui-même, se parlant à lui-même, listant son propre code ;{*EF*}{*B*}{*B*}
+{*C2*}Et l'univers disait : je vous aime, car vous êtes amour.{*EF*}{*B*}{*B*}
+{*C3*}Et la partie se termina et le joueur sortit du rêve. Et le joueur en commença un nouveau. Et le joueur rêva à nouveau, et rêva mieux. Et le joueur était l'univers. Et le joueur était amour.{*EF*}{*B*}{*B*}
+{*C3*}Vous êtes le joueur.{*EF*}{*B*}{*B*}
+{*C2*}Réveillez-vous.{*EF*}
+
+
+Réinitialiser le Nether
+
+Voulez-vous vraiment réinitialiser le Nether de cette sauvegarde à ses paramètres par défaut ? Vous perdrez tout ce que vous avez construit dans le Nether !
+
+Réinitialiser le Nether
+
+Ne pas réinitialiser le Nether
+
+Pas de tonte de champimeuh pour le moment. Le nombre max de cochons, moutons, vaches et chats a été atteint.
+
+Impossible d'utiliser l'œuf d'apparition pour le moment. Vous avez atteint le nombre maximum de cochons, moutons, vaches et chats.
+
+Impossible d'utiliser l'œuf d'apparition pour le moment. Vous avez atteint le nombre maximum de champimeuh.
+
+Impossible d'utiliser l'œuf d'apparition pour le moment. Vous avez atteint le nombre maximum de loups dans un monde.
+
+Impossible d'utiliser l'œuf d'apparition pour le moment. Vous avez atteint le nombre maximum de poulets dans un monde.
+
+Impossible d'utiliser l'œuf d'apparition pour le moment. Vous avez atteint le nombre maximum de pieuvres dans un monde.
+
+Impossible d'utiliser un œuf d'apparition pour le moment. Le nombre maximum d'ennemis dans un monde a été atteint.
+
+Impossible d'utiliser un œuf d'apparition pour le moment. Le nombre maximum de villageois dans un monde a été atteint.
+
+Le nombre maximum de tableaux/objets encadrés dans un monde a été atteint.
+
+Vous ne pouvez pas faire apparaître des ennemis en mode Paisible.
+
+Cet animal ne peut pas entrer en mode amour. Le nombre maximum de cochons, moutons, vaches et chats en cours d'élevage a été atteint.
+
+Cet animal ne peut pas entrer en mode amour. Le nombre maximum de loups en cours d'élevage a été atteint.
+
+Cet animal ne peut pas entrer en mode amour. Le nombre maximum de poulets en cours d'élevage a été atteint.
+
+Cet animal ne peut pas entrer en mode amour. Nbre max de champimeuh élevés atteint.
+
+Le nombre maximum de bateaux dans un monde a été atteint.
+
+Le nombre maximum de crânes dans un monde a été atteint.
+
+Inverser
+
+Gaucher
+
+Vous êtes mort !
+
+Réapparaître
+
+Contenu téléchargeable
+
+Changer de skin
+
+Comment jouer
+
+Commandes
+
+Paramètres
+
+Crédits
+
+Réinstaller le contenu
+
+Debug Settings
+
+Propagation du feu
+
+Explosion de TNT
+
+PvP
+
+Joueurs de confiance
+
+Privilèges d'hôte
+
+Génération de structures
+
+Monde superplat
+
+Coffre bonus
+
+Options mondiales
+
+Peut construire et miner
+
+Utilisation de portes et leviers possible
+
+Ouverture de conteneurs possible
+
+Peut attaquer les joueurs
+
+Attaque d'animaux possible
+
+Modérateur
+
+Exclure joueur
+
+Peut voler
+
+Fatigue désactivée
+
+Invisible
+
+Options de l'hôte
+
+Joueurs/Invitation
+
+Jeu en ligne
+
+Sur invitation
+
+Plus d'options
+
+Charger
+
+Nouveau monde
+
+Nom du monde
+
+Graine pour le générateur de monde
+
+Champ vide pour une graine aléatoire
+
+Joueurs
+
+Rejoindre la partie
+
+Commencer la partie
+
+Aucune partie trouvée
+
+Jouer
+
+Classements
+
+Succès
+
+Aide et options
+
+Déverrouiller le jeu complet
+
+Reprendre le jeu
+
+Sauvegarder la partie
+
+Difficulté :
+
+Type de partie :
+
+Gamertags :
+
+Structures :
+
+Type de niveau :
+
+PvP :
+
+Joueurs de confiance :
+
+TNT :
+
+Propagation du feu :
+
+Réinstaller le thème
+
+Réinstaller l'image du joueur 1
+
+Réinstaller l'image du joueur 2
+
+Réinstaller l'article pour avatar 1
+
+Réinstaller l'article pour avatar 2
+
+Réinstaller l'article pour avatar 3
+
+Options
+
+Audio
+
+Contrôle
+
+Vidéo
+
+Interface utilisateur
+
+Paramètres par défaut
+
+Afficher flottement
+
+Conseils
+
+Infobulles en jeu
+
+Gamertags en jeu
+
+Écran partagé vertical (2 joueurs)
+
+Terminé
+
+Modifier le message :
+
+Renseigner la légende de votre capture d'écran
+
+Sous-titre
+
+Capture d'écran du jeu
+
+Modifier le message :
+
+Regardez où j'en suis dans Minecraft: Xbox 360 Edition !
+
+Les textures, icônes et interface utilisateur classiques de Minecraft !
+
+Afficher tous les mondes Mash-up
+
+Sélectionner Transférer l'emplacement de sauvegarde
+
+Emplacement vide
+
+Chargement des métadonnées sauvegardées
+
+Chargement des données sauvegardées
+
+Chargement de la sauvegarde pour Xbox One
+
+Chargement annulé
+
+Vous avez annulé le chargement de cette sauvegarde vers la zone de transfert de sauvegarde.
+
+Pas d'effet
+
+Vitesse
+
+Lenteur
+
+Hâte
+
+Fatigue de mineur
+
+Force
+
+Faiblesse
+
+Santé
+
+Dégâts
+
+Saut
+
+Nausée
+
+Régénération
+
+Résistance
+
+Résistance au feu
+
+Respiration aquatique
+
+Invisibilité
+
+Cécité
+
+Vision nocturne
+
+Faim
+
+Poison
+
+de rapidité
+
+de lenteur
+
+de hâte
+
+de lassitude
+
+de force
+
+de faiblesse
+
+de santé
+
+de dégâts
+
+de saut
+
+de nausée
+
+de régénération
+
+de résistance
+
+de résistance au feu
+
+de respiration aquatique
+
+d'invisibilité
+
+de cécité
+
+de vision nocturne
+
+de faim
+
+de poison
+
+
+
+II
+
+III
+
+IV
+
+ vol.
+
+banale
+
+triviale
+
+insipide
+
+claire
+
+laiteuse
+
+diffuse
+
+naïve
+
+mince
+
+étrange
+
+plate
+
+volumineuse
+
+maladroite
+
+beurrée
+
+lisse
+
+suave
+
+débonnaire
+
+épaisse
+
+élégante
+
+fantasque
+
+de charme
+
+fringante
+
+raffinée
+
+cordiale
+
+mousseuse
+
+puissante
+
+viciée
+
+inodore
+
+rang
+
+rude
+
+âcre
+
+brute
+
+puante
+
+Sert de base à toutes les potions. À utiliser dans un alambic pour distiller des potions.
+
+N'a pas d'effet. Combinée à d'autres ingrédients, peut servir à distiller des potions dans un alambic.
+
+Augmente la vitesse de déplacement des joueurs, animaux et monstres affectés ; augmente la vitesse de sprint, la longueur des sauts et le champ de vision des joueurs.
+
+Réduit la vitesse de déplacement des joueurs, animaux et monstres affectés ; réduit la vitesse de sprint, la longueur des sauts et le champ de vision des joueurs.
+
+Augmente les dégâts infligés par les attaques des joueurs et des monstres affectés.
+
+Réduit les dégâts infligés par les attaques des joueurs et des monstres affectés.
+
+Augmente instantanément la santé des joueurs, animaux et monstres affectés.
+
+Réduit instantanément la santé des joueurs, animaux et monstres affectés.
+
+Rend progressivement de la santé aux joueurs, animaux et monstres affectés.
+
+Rend les joueurs, animaux et monstres affectés résistants au feu, à la lave et aux attaques à distance des Blazes.
+
+Réduit progressivement la santé des joueurs, animaux et monstres affectés.
+
+Tranchant
+
+Châtiment
+
+Fléau des arthropodes
+
+Recul
+
+Aura de Feu
+
+Protection
+
+Protection contre le feu
+
+Chute amortie
+
+Protection contre les explosions
+
+Protection contre les projectiles
+
+Respiration
+
+Aisance aquatique
+
+Efficacité
+
+Délicatesse
+
+Solidité
+
+Butin
+
+Fortune
+
+Puissance
+
+Flamme
+
+Repoussoir
+
+Infinité
+
+I
+
+II
+
+III
+
+IV
+
+V
+
+VI
+
+VII
+
+VIII
+
+IX
+
+X
+
+Se mine à l'aide d'une pioche en fer (ou mieux) pour prélever des émeraudes.
+
+Semblable à un coffre normal, hormis que les objets placés dans un coffre du Néant sont récupérables dans tous les coffres du Néant du joueur, même dans une autre dimension.
+
+S'active quand une entité traverse un fil de déclenchement connecté.
+
+Active un crochet connecté quand une entité le traverse.
+
+Un moyen peu encombrant d'entreposer des émeraudes.
+
+Un muret en pierre taillée.
+
+Peut servir à réparer les armes, outils et armures.
+
+À fondre dans un four pour produire du quartz du Nether.
+
+Sert de décoration.
+
+À échanger avec les villageois.
+
+Sert de décoration. Vous pouvez y planter des fleurs, des pousses d'arbre, des cactus et des champignons.
+
+Restitue 2{*ICON_SHANK_01*}; transformable en carotte dorée. À planter dans une terre labourée.
+
+Restitue 0,5{*ICON_SHANK_01*}. À cuire dans un four. À planter dans une terre labourée.
+
+Restitue 3{*ICON_SHANK_01*}. Obtenu en cuisinant une pomme de terre dans un four.
+
+Restitue 1{*ICON_SHANK_01*} mais peut vous empoisonner. À cuire dans un four ou planter dans une terre labourée.
+
+Restitue 3{*ICON_SHANK_01*}. Se fabrique avec une carotte et des pépites d'or.
+
+Sert à contrôler un cochon sellé quand vous le montez.
+
+Restitue 4{*ICON_SHANK_01*}.
+
+À utiliser en conjonction avec une enclume pour enchanter des armes, outils ou armures.
+
+Se crée en minant du minerai de quartz du Nether dans un four. Peut produire un bloc de quartz.
+
+Se fabrique avec de la laine. Sert de décoration.
+
+Émeraude
+
+Pot de fleurs
+
+Carotte
+
+Pomme de terre
+
+Pomme de terre cuite
+
+Pomme de terre empoisonnée
+
+Carotte dorée
+
+Carotte sur un bâton
+
+Tarte à la citrouille
+
+Livre enchanté
+
+Quartz du Nether
+
+Minerai d'émeraude
+
+Coffre du Néant
+
+Crochet
+
+Fil de déclenchement
+
+Bloc d'émeraude
+
+Muret
+
+Muret moussu
+
+Pot de fleurs
+
+Carottes
+
+Pommes de terre
+
+Enclume
+
+Enclume
+
+Enclume légèrement abîmée
+
+Enclume très abîmée
+
+Minerai de quartz du Nether
+
+Bloc de quartz
+
+Bloc de quartz taillé
+
+Pilier de blocs de quartz
+
+Escalier en quartz
+
+Tapis
+
+Tapis noir
+
+Tapis rouge
+
+Tapis vert
+
+Tapis marron
+
+Tapis bleu
+
+Tapis violet
+
+Tapis cyan
+
+Tapis gris clair
+
+Tapis gris
+
+Tapis rose
+
+Tapis vert clair
+
+Tapis jaune
+
+Tapis bleu ciel
+
+Tapis magenta
+
+Tapis orange
+
+Tapis blanc
+
+Grès taillé
+
+Grès lisse
+
+{*PLAYER*} s'est fait tuer en tentant de frapper {*SOURCE*}
+
+{*PLAYER*} s'est fait écraser par la chute d'une enclume.
+
+{*PLAYER*} s'est fait écraser par la chute d'un bloc
+
+{*PLAYER*} s'est fait téléporter vers : {*DESTINATION*}
+
+{*PLAYER*} vient de vous téléporter jusqu'à son emplacement
+
+{*PLAYER*} vient de se téléporter jusqu'à vous
+
+Épines
+
+Dalle de quartz
+
+Les zones sombres apparaissent comme en plein jour, même sous l'eau.
+
+Les joueurs, animaux et monstres affectés deviennent invisibles.
+
+Réparer et nommer
+
+Coût : %d
+
+Trop cher !
+
+Renommer
+
+Vous avez :
+
+Objets nécessaires à la transaction
+
+{*VILLAGER_TYPE*} propose %s
+
+Réparer
+
+Commercer
+
+Teindre le collier
+
+
+ Voici l'interface de l'enclume qui vous permet de renommer, réparer et appliquer des enchantements aux armes, armures ou outils, moyennant des niveaux d'expérience.
+
+
+
+ {*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur l'interface de l'enclume.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si l'interface de l'enclume n'a déjà plus de secrets pour vous.
+
+
+
+ Pour commencer à travailler sur un objet, placez-le dans la première case.
+
+
+
+ Placez la bonne matière première dans la deuxième case (par exemple des lingots de fer pour une épée en fer endommagée) et une proposition de réparation apparaîtra dans la case de résultat.
+
+
+
+ Vous pouvez aussi placer un deuxième objet identique dans la deuxième case pour combiner les deux.
+
+
+
+ Pour enchanter des objets sur l'enclume, placez un livre enchanté dans la deuxième case.
+
+
+
+ Le nombre de niveaux d'expérience que coûte l'opération s'affiche sous le résultat. Si vous n'avez pas assez de niveaux d'expérience, l'opération ne peut pas aboutir.
+
+
+
+ Il est possible de renommer l'objet en modifiant le nom qui s'affiche dans la case de texte.
+
+
+
+ Quand vous ramassez l'objet réparé, les deux objets placés sur l'enclume sont consommés et vous perdez le nombre de niveaux d'expérience indiqué.
+
+
+
+ Cette zone contient une enclume et un coffre renfermant des outils et armes à modifier.
+
+
+
+ {*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur l'enclume.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si l'enclume n'a déjà plus de secrets pour vous.
+
+
+
+ Une enclume permet de réparer vos armes et outils afin de reconstituer leur durabilité, de les renommer ou de les enchanter à l'aide de livres enchantés.
+
+
+
+ Vous pouvez trouver des livres enchantés dans les coffres des donjons, ou enchanter un livre normal sur la table d'enchantement.
+
+
+
+ L'utilisation de l'enclume coûte des niveaux d'expérience et chaque utilisation est susceptible d'abîmer l'enclume.
+
+
+
+ Le type d'opération, la valeur de l'objet, le nombre d'enchantements et la quantité de travail déjà effectué ont tous une incidence sur le coût des réparations.
+
+
+
+ Quand vous renommez un objet, le nom qui s'affiche pour tous les joueurs est modifié et le coût du travail déjà effectué est réduit de façon définitive.
+
+
+
+ Le coffre de cette zone contient des pioches abîmées, des matières premières, des fioles d'expérience ainsi que des livres enchantés pour vous permettre de faire des tests.
+
+
+
+ Voici l'interface de commerce, qui affiche les transactions disponibles auprès d'un villageois.
+
+
+
+ {*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur l'interface de commerce.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si l'interface de commerce n'a déjà plus de secrets pour vous.
+
+
+
+ Toutes les transactions que le villageois est disposé à effectuer en ce moment s'affichent en haut de l'écran.
+
+
+
+ Les transactions apparaissent en rouge et sont indisponibles si vous n'avez pas les objets nécessaires.
+
+
+
+ La quantité et le type d'objets que vous donnez au villageois s'affichent dans les deux cases à gauche.
+
+
+
+ Vous pouvez voir le total des objets nécessaires à la transaction dans les deux cases à gauche.
+
+
+
+ Appuyez sur{*CONTROLLER_VK_A*} pour échanger les objets que demande le villageois contre ce qu'il offre.
+
+
+
+ Cette zone contient un villageois et un coffre renfermant du papier pour acheter des objets.
+
+
+
+ {*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur le commerce.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si le commerce n'a déjà plus de secrets pour vous.
+
+
+
+ Les joueurs peuvent échanger des objets de leur inventaire avec les villageois.
+
+
+
+ Les transactions qu'un villageois est susceptible de vous proposer dépendent de sa profession.
+
+
+
+ Au fur et à mesure des transactions, l'éventail d'échanges proposés par le villageois est complété ou mis à jour aléatoirement.
+
+
+
+ Les transactions effectuées fréquemment sont susceptibles d'être temporairement désactivées, mais le villageois en propose toujours au moins une.
+
+
+
+ Prenez du papier dans le coffre et essayez de commercer avec le villageois.
+
+
+
+ Cette zone contient deux coffres du Néant.
+
+
+
+ {*B*}
+ Appuyez sur{*CONTROLLER_VK_A*} pour en savoir plus sur les coffres du Néant.{*B*}
+ Appuyez sur{*CONTROLLER_VK_B*} si les coffres du Néant n'ont déjà plus de secrets pour vous.
+
+
+
+ Tous les coffres du Néant d'un monde sont liés, y compris d'une dimension à l'autre. Les objets placés dans un coffre du Néant sont accessibles depuis n'importe quel autre coffre du Néant.
+
+
+
+ Cependant, le contenu des coffres du Néant diffère pour chaque joueur.
+
+
+
+ Il est ainsi possible de stocker des objets dans n'importe quel coffre du Néant pour ensuite les récupérer dans un autre situé ailleurs dans le monde. Testez ce principe en plaçant des objets dans l'un des deux coffres du Néant.
+
+
+Restitue 2{*ICON_SHANK_01*}, régénère la santé pendant 30 secondes et octroie une résistance au feu ainsi qu'aux dégâts pendant 5 minutes. Fabriqué avec une pomme et des blocs d'or.
+
+Peut se téléporter
+
+Se téléporter
+
+Téléporter vers le joueur
+
+Téléporter vers moi
+
+Peut désactiver la fatigue
+
+Peut devenir invisible
+
+Vous pouvez maintenant activer l'invisibilité
+
+Vous ne pouvez plus activer l'invisibilité
+
+Vous pouvez maintenant activer la lévitation
+
+Vous ne pouvez plus activer la lévitation
+
+Vous pouvez maintenant désactiver la fatigue
+
+Vous ne pouvez plus désactiver la fatigue
+
+Vous pouvez maintenant vous téléporter
+
+Vous ne pouvez plus vous téléporter
+
+{*T3*}COMMENT JOUER : ENCLUME{*ETW*}{*B*}{*B*}
+Vous pouvez également utiliser vos niveaux pour réparer, enchanter ou renommer un objet à l'aide de l'enclume.{*B*}
+Il est possible de renommer tous les objets, mais seuls ceux disposant d'une durabilité peuvent être réparés ou enchantés à l'aide d'un livre enchanté.{*B*}
+Pour réparer un objet, placez-le dans l'une des cases à gauche, accompagné de sa matière première (par exemple un lingot de fer pour une épée en fer) ou combiné à un autre objet de même type.{*B*}
+Les combinaisons d'objets sont plus efficaces quand vous utilisez une enclume. En outre, si l'un des objets était déjà enchanté, le produit fini est susceptible de conserver les enchantements de l'un ou l'autre des objets d'origine.{*B*}
+Les livres enchantés peuvent appliquer des enchantements aux objets en les combinant sur une enclume, tant que l'enchantement en question convient à l'objet. Vous pouvez trouver des livres enchantés dans les donjons, ou enchanter des livres normaux sur une table d'enchantement.{*B*}
+Chaque utilisation de l'enclume est susceptible de l'abîmer. Après une certaine quantité de dégâts, elle devient inutilisable.{*B*}
+
+
+{*T3*}COMMENT JOUER : COMMERCE{*ETW*}{*B*}{*B*}
+Il est possible de faire du commerce avec les villageois. À chaque villageois correspond une profession : fermier, boucher, forgeron, bibliothécaire ou prêtre. Cette profession influe sur le type d'objets dont ils font le commerce.{*B*}
+Vous trouverez une liste de toutes les transactions que propose un villageois dans le menu de commerce. Un villageois peut modifier ou compléter son panel d'objets quand un joueur commerce avec lui. Si une transaction spécifique est utilisée trop fréquemment, elle est susceptible d'être temporairement désactivée.{*B*}
+Les transactions impliquent généralement d'acheter ou de vendre un certain nombre d'objets contre des émeraudes.{*B*}
+Si vous ne possédez pas les objets nécessaires à une transaction, ces cases apparaissent en rouge.{*B*}
+
+
+{*T3*}COMMENT JOUER : COFFRE DU NÉANT{*ETW*}{*B*}{*B*}
+Tous les coffres du Néant d'un monde sont liés. Les objets placés dans un coffre du Néant sont accessibles dans n'importe quel autre. Cependant, le contenu des coffres du Néant diffère pour chaque joueur. Ainsi, les joueurs peuvent y stocker des objets et les récupérer dans d'autres coffres du Néant disséminés à travers le monde.
+
+
+Fermier
+
+Bibliothécaire
+
+Prêtre
+
+Forgeron
+
+Boucher
+
+Présents dans les villages, les villageois vendent des objets au joueur selon leur profession.
+
+Grand coffre
+
+
+ Vous pouvez aussi créer des livres enchantés sur la table d'enchantement, livres dont vous pouvez ensuite appliquer l'enchantement à un objet sur l'enclume.
+
+
+
+ Les crochets alimentent également en continu un circuit tant que quelque chose déclenche le fil connecté.
+
+
+
+ Une fois apprivoisé, un loup porte toujours son collier, que vous pouvez teindre pour en changer la couleur.
+
+
+Pour récolter des carottes et des pommes de terre, vous devez d'abord les planter. Elles sont prêtes à la récolte quand le légume pointe à la surface.
+
+
+ Vous pouvez aussi seller les cochons pour ensuite les chevaucher. Utilisez alors une carotte sur un bâton pour les diriger.
+
+
+
+ Si nécessaire, vous pouvez déplacer lentement votre chariot de mine en utilisant {*CONTROLLER_ACTION_MOVE*}. Ceci vous aidera à lancer le chariot de mine en le mettant sur un rail alimenté.
+
+
+Vous ne pouvez pas rejoindre cette partie car l'écran partagé n'est pris en charge qu'en mode Haute définition. Déconnectez tous les autres joueurs si vous désirez la rejoindre.
+
+Guérison
+
+Xbox 360
+
+BACK
+
+Cette option désactive les mises à jour des succès et des classements pour le monde en cours ; ces mises à jour resteront désactivées si vous chargez ce monde après l'avoir sauvegardé avec cette option activée.
+
+Charger la sauvegarde pour Xbox One
+
+Charger la sauvegarde
+
+La zone de transfert de sauvegarde ne peut stocker qu'une seule sauvegarde Xbox 360 à la fois. Assurez-vous d'avoir téléchargé la sauvegarde sur votre console Xbox One avant de charger une autre sauvegarde Xbox 360.
+
+Chargement en cours...
+
+Chargement terminé !
+
+Échec du chargement. Veuillez réessayer ultérieurement.
+
+Vous avez trouvé {*progress*} / {*goal*} disques !
+
+
diff --git a/Minecraft.Client/Xbox/loc/lcl/it-IT/Minecraft_all.resx b/Minecraft.Client/Xbox/loc/lcl/it-IT/Minecraft_all.resx
new file mode 100644
index 00000000..798fd557
--- /dev/null
+++ b/Minecraft.Client/Xbox/loc/lcl/it-IT/Minecraft_all.resx
@@ -0,0 +1,4569 @@
+
+Non utilizzato
+
+OK
+
+Indietro
+
+Annulla
+
+Sì
+
+No
+
+Salvataggio danneggiato
+
+I dati salvati sono danneggiati. Vuoi creare un nuovo salvataggio, sovrascrivendo quello danneggiato?
+
+Spazio libero insufficiente
+
+La periferica di memorizzazione selezionata non dispone di spazio libero sufficiente per creare un salvataggio.
+
+Seleziona di nuovo
+
+Gioca senza salvare
+
+Crea un nuovo salvataggio
+
+Sovrascrivere?
+
+La periferica di memorizzazione selezionata contiene già questo salvataggio. Vuoi sovrascriverlo?
+
+No, non sovrascrivere
+
+Sovrascrivi e salva
+
+Salvataggio non riuscito
+
+Problema periferica
+
+La periferica di memorizzazione non è disponibile o si è verificato un errore.
+
+La periferica di memorizzazione non è disponibile o si è verificato un errore. Seleziona una nuova periferica di memorizzazione.
+
+Seleziona un'altra periferica
+
+Nessuna periferica selezionata
+
+Se non selezioni una periferica di memorizzazione, il salvataggio sarà disattivato.
+
+Seleziona una periferica
+
+Continua senza salvare
+
+La periferica di memorizzazione è stata rimossa. Selezionane un'altra.
+
+Caricamento non riuscito
+
+Nomina il salvataggio
+
+Inserisci un nome per il salvataggio
+
+Torna a Xbox Dashboard
+
+Vuoi davvero uscire dal gioco?
+
+Disconnesso
+
+Sei tornato alla schermata iniziale perché il tuo profilo giocatore si è disconnesso.
+
+La partita è terminata perché un profilo giocatore si è disconnesso.
+
+Continua a giocare
+
+Profilo giocatore non online
+
+Alcune funzionalità di questo gioco richiedono un profilo giocatore abilitato per Xbox Live, ma tu sei offline.
+
+Questa funzionalità richiede un profilo giocatore connesso a Xbox Live.
+
+Connettiti a Xbox Live
+
+Continua a giocare offline
+
+Problema assegnazione obiettivo
+
+Si è verificato un problema durante l'accesso al tuo profilo giocatore. Per il momento non è stato possibile sbloccare l'obiettivo.
+
+Problema profilo giocatore
+
+Salvataggio delle impostazioni sul profilo giocatore non riuscito.
+
+Profilo giocatore ospite
+
+Il profilo giocatore ospite non può accedere a questa funzionalità. Usa un altro profilo giocatore.
+
+Salvataggio...
+
+Salvataggio del contenuto. Non spegnere la console.
+
+Sblocca gioco completo
+
+Questa è una versione di prova di Minecraft. Se avessi il gioco completo, avresti sbloccato un obiettivo!
+Sblocca il gioco completo per provare le gioie di Minecraft e per giocare con amici di tutto il mondo su Xbox Live.
+Vuoi sbloccare il gioco completo?
+
+Verrai riportato al menu principale per un problema di lettura del tuo profilo.
+
+Sono disponibili nuovi contenuti scaricabili! Per accedervi, seleziona il pulsante Negozio di Minecraft nel menu principale.
+
+Puoi cambiare l'aspetto del tuo personaggio con il pacchetto Skin disponibile nel Negozio. Seleziona "Negozio di Minecraft" per sapere che cosa è disponibile.
+
+Se giochi in modalità Alta definizione, fino a quattro giocatori possono divertirsi a schermo diviso sulla stessa console!
+
+Collega i controller extra alla tua console e premi START su ciascuno per entrare in una partita in qualsiasi momento.
+
+Modifica le impostazioni gamma per aumentare o diminuire la luminosità del gioco.
+
+Impostando la difficoltà del gioco su Relax, la salute verrà reintegrata automaticamente e di notte non usciranno mostri!
+
+Dai un osso a un lupo per ammansirlo. Potrai chiedergli di sedersi o di seguirti.
+
+Per mettere degli oggetti nel menu Inventario, sposta il cursore dal menu e premi{*CONTROLLER_VK_A*}
+
+Se di notte dormi in un letto, il gioco scorrerà velocemente fino all'alba, ma tutti i giocatori in modalità multiplayer devono dormire in un letto contemporaneamente.
+
+Ottieni costolette di maiale dai maiali, cucinale e mangiale per reintegrare la salute.
+
+Ottieni della pelle dalle mucche e usala per costruire un'armatura.
+
+Se hai un secchio vuoto, puoi riempirlo di latte di mucca, acqua o lava!
+
+Usa una zappa per preparare un appezzamento di terreno pronto per la coltura.
+
+I ragni non attaccano durante il giorno, a meno che non vengano attaccati per primi.
+
+Se per scavare nella terra o nella sabbia usi una vanga invece delle mani farai più in fretta!
+
+Le costolette di maiale arrostite reintegrano più salute di quelle crude.
+
+Costruisci delle torce per fare luce durante la notte. I mostri staranno alla larga dalle aree illuminate.
+
+Arriva prima a destinazione con un carrello da miniera e un binario!
+
+Pianta degli arbusti e cresceranno fino a diventare alberi.
+
+Gli uomini-maiale non attaccano, a meno che non vengano attaccati per primi.
+
+Puoi modificare il punto di generazione del gioco e saltare all'alba dormendo in un letto.
+
+Rispondi all'attacco del ghast con queste palle di fuoco!
+
+Costruendo un portale potrai accedere a un'altra dimensione, il Sottomondo.
+
+Premi{*CONTROLLER_VK_B*} per far cadere l'oggetto che stai tenendo in mano!
+
+Usa l'attrezzo giusto per il lavoro giusto!
+
+Se non trovi il carbone per le torce, puoi sempre crearne un po' utilizzando gli alberi e la fornace.
+
+Scavare in linea retta verso l'alto o verso il basso non è una grande idea.
+
+La farina d'ossa (creata da un osso di scheletro) può essere utilizzata come fertilizzante e tutto crescerà in un istante!
+
+I creeper esplodono man mano che ti si avvicinano!
+
+L'ossidiana si crea quando l'acqua entra in contatto con un blocco di lava.
+
+Una volta rimosso il blocco di lava, servono alcuni minuti prima che quest'ultima scompaia COMPLETAMENTE.
+
+I ciottoli non subiscono danni dalle sfere di fuoco dei ghast, quindi sono utili per proteggere i portali.
+
+I blocchi utilizzabili come fonti di luce sciolgono neve e ghiaccio. Tra questi vi sono torce, pietre brillanti e zucche di Halloween.
+
+Fai attenzione quando costruisci strutture di lana all'aria aperta: i fulmini dei temporali possono incendiarle.
+
+Usa un secchio di lava in una fornace per fondere 100 blocchi.
+
+Lo strumento suonato dal blocco nota dipende dal materiale sottostante.
+
+Zombie e scheletri possono sopravvivere alla luce del giorno, se si trovano nell'acqua.
+
+Se attacchi un lupo, gli altri membri del suo branco si rivolteranno contro di te e ti assaliranno. Questo vale anche per gli uomini-maiali zombie.
+
+I lupi non possono accedere al Sottomondo.
+
+I lupi non attaccano i creeper.
+
+Le galline depongono uova a intervalli di 5-10 minuti.
+
+L'ossidiana si scava solo con una piccozza di diamante.
+
+I creeper sono la fonte di polvere da sparo più facile da ottenere.
+
+Colloca due casse vicine per creare una cassa grande.
+
+Lo stato di salute dei lupi addomesticati è riconoscibile dalla posizione della coda. Dagli della carne per curarli.
+
+Cuoci un cactus in una fornace per ottenere tintura verde.
+
+Segui 4J Studios e Kappische su twitter per le ultime notizie sul gioco!
+
+Fai bella figura con gli amici: pubblica su Facebook screenshot delle tue creazioni Minecraft dal menu di pausa nel gioco!
+
+Per le ultime informazioni sugli aggiornamenti del gioco, leggi la sezione Novità nei menu Come giocare.
+
+Il gioco ora contiene recinzioni impilabili!
+
+minecraftforum contiene una sezione dedicata alla Xbox 360 Edition.
+
+Alcuni animali ti seguiranno se hai del grano in mano.
+
+Se un animale non può spostarsi per più di 20 blocchi in qualsiasi direzione non sparirà.
+
+Musica di C418!
+
+Oltre un milione di persone seguono Notch su Twitter!
+
+Non tutti gli svedesi sono biondi. Alcuni, come Jens della Mojang, hanno addirittura i capelli rossi!
+
+Riteniamo che 4J Studios abbia rimosso Herobrine dal gioco per Xbox 360, ma non ne siamo sicuri.
+
+Presto verrà rilasciato un aggiornamento per questo gioco!
+
+Chi è Notch?
+
+La Mojang ha più premi che dipendenti!
+
+Alcune celebrità giocano a Minecraft!
+
+A deadmau5 piace Minecraft!
+
+Non guardare direttamente i bug.
+
+I creeper sono il risultato di un bug di codifica.
+
+È una gallina o un'anatra?
+
+Hai partecipato alla Minecon?
+
+Nessuno a Mojang ha mai visto una faccia del genere.
+
+Sapevi che c'è anche una Wiki di Minecraft?
+
+Il nuovo ufficio di Mojang è fico!
+
+Minecraft: Xbox 360 Edition ha battuto diversi record!
+
+La Minecon 2013 si è svolta a Orlando, Florida, negli Stati Uniti d'America!
+
+.party() è stato fantastico!
+
+Invece di dare credito ai pettegolezzi, dai sempre per scontato che siano falsi!
+
+{*T3*}COME GIOCARE: BASI{*ETW*}{*B*}{*B*}
+In Minecraft si posizionano blocchi per costruire tutto ciò che vuoi. Di notte i mostri vagano in libertà, quindi costruisci un riparo per tempo.{*B*}{*B*}
+Usa{*CONTROLLER_ACTION_LOOK*} per guardarti intorno.{*B*}{*B*}
+Usa{*CONTROLLER_ACTION_MOVE*} per muoverti.{*B*}{*B*}
+Premi{*CONTROLLER_ACTION_JUMP*} per saltare.{*B*}{*B*}
+Sposta in avanti{*CONTROLLER_ACTION_MOVE*} due volte in rapida successione per scattare. Finché tieni premuto {*CONTROLLER_ACTION_MOVE*}, il personaggio continuerà a scattare, a meno che il tempo per lo scatto non si esaurisca o nella barra del cibo restino meno di{*ICON_SHANK_03*}.{*B*}{*B*}
+Tieni premuto{*CONTROLLER_ACTION_ACTION*} per scavare e abbattere alberi usando la mano o un oggetto. Potresti dover creare un attrezzo per scavare i blocchi.{*B*}{*B*}
+Se tieni un oggetto in mano, usa{*CONTROLLER_ACTION_USE*} per utilizzarlo, oppure premi{*CONTROLLER_ACTION_DROP*} per posarlo.
+
+{*T3*}COME GIOCARE: INTERFACCIA{*ETW*}{*B*}{*B*}
+L'interfaccia mostra informazioni sul tuo stato: salute, ossigeno rimasto (quando sei sott'acqua), livello di fame (devi mangiare per reintegrare la barra) e armatura (se la indossi). Se subisci dei danni, ma nella tua barra del cibo ci sono 9 o più{*ICON_SHANK_01*}, la tua salute si ripristinerà automaticamente. Mangiare reintegrerà la barra del cibo.{*B*}
+Qui è visualizzata anche la barra dell'esperienza, che mostra il tuo livello di Esperienza corrente e quanti punti Esperienza ti mancano per raggiungere il livello successivo. Guadagni punti Esperienza raccogliendo le sfere Esperienza abbandonate dai nemici uccisi, scavando certi tipi di blocchi, facendo riprodurre animali, pescando e fondendo minerali in una fornace.{*B*}{*B*}
+L'interfaccia mostra anche gli oggetti disponibili. Usa{*CONTROLLER_ACTION_LEFT_SCROLL*} e{*CONTROLLER_ACTION_RIGHT_SCROLL*} per cambiare l'oggetto che tieni in mano.
+
+{*T3*}COME GIOCARE: INVENTARIO{*ETW*}{*B*}{*B*}
+Usa{*CONTROLLER_ACTION_INVENTORY*} per visualizzare l'inventario.{*B*}{*B*}
+Questa schermata mostra gli oggetti che puoi tenere in mano e quelli che trasporti, nonché la tua eventuale armatura.{*B*}{*B*}
+Usa{*CONTROLLER_MENU_NAVIGATE*} per muovere il puntatore. Usa{*CONTROLLER_VK_A*} per prendere l'oggetto sotto il puntatore. Se c'è più di un oggetto, verranno raccolti tutti; per raccoglierne solo la metà, premi{*CONTROLLER_VK_X*}.{*B*}{*B*}
+Sposta l'oggetto in un'altra casella dell'inventario usando il puntatore e collocalo con{*CONTROLLER_VK_A*}. Se il puntatore ha selezionato più oggetti, usa{*CONTROLLER_VK_A*} per collocarli tutti oppure{*CONTROLLER_VK_X*} per collocarne uno solo.{*B*}{*B*}
+Se il puntatore è posizionato su un'armatura, un aiuto contestuale ti consentirà di spostarla rapidamente nello slot appropriato dell'inventario.{*B*}{*B*}
+Puoi cambiare il colore dell'armatura di pelle usando una tintura. Per farlo, prendi la tintura nell'inventario usando il puntatore, poi premi{*CONTROLLER_VK_X*} mentre il puntatore è sull'oggetto il cui colore desideri cambiare.
+
+
+{*T3*}COME GIOCARE: CASSA{*ETW*}{*B*}{*B*}
+Una volta creata una cassa, puoi collocarla nel mondo e usarla con{*CONTROLLER_ACTION_USE*} per conservare gli oggetti dell'inventario.{*B*}{*B*}
+Usa il puntatore per spostare oggetti dall'inventario alla cassa e viceversa.{*B*}{*B*}
+Gli oggetti nella cassa resteranno a tua disposizione e potrai riportarli nell'inventario in seguito.
+
+
+{*T3*}COME GIOCARE: CASSA GRANDE{*ETW*}{*B*}{*B*}
+Due casse collocate una accanto all'altra si combinano per formare una cassa grande in grado di contenere più oggetti.{*B*}{*B*}
+Puoi usarla come la cassa normale.
+
+
+{*T3*}COME GIOCARE: CRAFTING{*ETW*}{*B*}{*B*}
+Nell'interfaccia Crafting, puoi combinare oggetti dell'inventario per creare nuovi tipi di oggetti. Usa{*CONTROLLER_ACTION_CRAFTING*} per aprire l'interfaccia Crafting.{*B*}{*B*}
+Scorri le schede in alto usando{*CONTROLLER_VK_LB*} e{*CONTROLLER_VK_RB*} per selezionare il tipo di oggetto, poi usa{*CONTROLLER_MENU_NAVIGATE*} per selezionare l'oggetto da creare.{*B*}{*B*}
+L'area crafting mostra gli ingredienti richiesti per creare il nuovo oggetto. Premi{*CONTROLLER_VK_A*} per creare l'oggetto e inserirlo nell'inventario.
+
+
+{*T3*}COME GIOCARE: TAVOLO DA LAVORO{*ETW*}{*B*}{*B*}
+Puoi creare oggetti più grandi usando il tavolo da lavoro.{*B*}{*B*}
+Colloca il tavolo nel mondo e premi{*CONTROLLER_ACTION_USE*} per usarlo.{*B*}{*B*}
+La creazione al tavolo funziona come il crafting di base, ma hai a disposizione un'area più ampia e una più vasta selezione di oggetti da creare.
+
+
+{*T3*}COME GIOCARE: FORNACE{*ETW*}{*B*}{*B*}
+La fornace ti consente di modificare oggetti cuocendoli. Per esempio, nella fornace puoi trasformare il minerale di ferro in lingotti di ferro.{*B*}{*B*}
+Colloca la fornace nel mondo e premi{*CONTROLLER_ACTION_USE*} per usarla.{*B*}{*B*}
+Dovrai inserire del combustibile nella parte inferiore della fornace e l'oggetto da modificare nella parte superiore. A quel punto, la fornace si attiverà.{*B*}{*B*}
+Una volta fusi i tuoi oggetti, puoi spostarli dall'area di produzione all'inventario.{*B*}{*B*}
+Se il puntatore è posizionato su ingredienti o combustibili per la fornace, degli aiuti contestuali ti consentiranno di spostarli rapidamente nella fornace.
+
+
+{*T3*}COME GIOCARE: DISPENSER{*ETW*}{*B*}{*B*}
+Il dispenser serve per far uscire gli oggetti. Per attivare il dispenser, dovrai collocarvi accanto un interruttore, per esempio una leva.{*B*}{*B*}
+Per riempire il dispenser di oggetti, premi{*CONTROLLER_ACTION_USE*}, quindi sposta gli oggetti desiderati dall'inventario al dispenser.{*B*}{*B*}
+Ora, quando userai l'interruttore, il dispenser farà uscire un oggetto.
+
+
+{*T3*}COME GIOCARE: DISTILLAZIONE{*ETW*}{*B*}{*B*}
+Per distillare pozioni occorre munirsi di un Banco di distillazione, costruendolo presso un tavolo da lavoro. L'ingrediente principale di tutte le pozioni è una bottiglia d'acqua, che si ottiene riempiendo una Bottiglia di vetro con acqua attinta da un Calderone o da un'altra fonte.{*B*}
+Il Banco di distillazione ha tre slot e permette di realizzare tre pozioni contemporaneamente. Dal momento che uno stesso ingrediente può essere usato in tutte e tre le bottiglie, è consigliabile produrre sempre tre pozioni insieme, in modo da ottimizzare l'uso delle risorse.{*B*}
+Inserendo un ingrediente nella posizione più alta del Banco di distillazione si otterrà, dopo un breve periodo di tempo, una pozione di base. La pozione così ottenuta non ha alcun effetto; per renderla efficace, bisognerà distillare un secondo ingrediente.{*B*}
+L'aggiunta di un terzo ingrediente può rendere l'effetto della pozione più durevole (se si usa Polvere di pietra rossa) o più intenso (se si usa Polvere di pietra brillante), o rendere nociva la pozione (se si usa un Occhio di ragno fermentato).{*B*}
+Aggiungendo della polvere da sparo, si può trasformare una qualsiasi pozione in una Bomba pozione che, una volta lanciata, diffonderà il suo effetto nell'area colpita.{*B*}
+
+Gli ingredienti utilizzabili nelle pozioni sono :{*B*}{*B*}
+* {*T2*}Verruca del Sottomondo{*ETW*}{*B*}
+* {*T2*}Occhio di ragno{*ETW*}{*B*}
+* {*T2*}Zucchero{*ETW*}{*B*}
+* {*T2*}Lacrima di Ghast{*ETW*}{*B*}
+* {*T2*}Polvere di Vampe{*ETW*}{*B*}
+* {*T2*}Crema di magma{*ETW*}{*B*}
+* {*T2*}Melone scintillante{*ETW*}{*B*}
+* {*T2*}Polvere di pietra rossa{*ETW*}{*B*}
+* {*T2*}Polvere di pietra brillante{*ETW*}{*B*}
+* {*T2*}Occhio di ragno fermentato{*ETW*}{*B*}{*B*}
+
+Le combinazioni possibili sono numerose, e ognuna produce una pozione con un effetto diverso.
+
+
+{*T3*}COME GIOCARE: INCANTESIMI{*ETW*}{*B*}{*B*}
+I punti Esperienza guadagnati uccidendo i nemici, oppure scavando o fondendo in una fornace determinati tipi di blocchi, possono essere usati per incantare attrezzi, armi, armature e libri.{*B*}
+Quando posizioni una Spada, un Arco, un'Ascia, una Piccozza, una Pala, un'Armatura o un Libro nello slot sotto il libro nel Tavolo per incantesimi, sui tre pulsanti a destra saranno visualizzati alcuni incantesimi e il livello di Esperienza che richiedono.{*B*}
+Se hai abbastanza Esperienza per applicare un incantesimo all'oggetto, la cifra apparirà in verde; in caso contrario, apparirà in rosso.{*B*}{*B*}
+L'incantesimo sarà selezionato casualmente in base al costo indicato.{*B*}{*B*}
+Se il Tavolo per incantesimi è circondato da Scaffali (fino a un massimo di 15), con uno spazio pari a un blocco tra lo Scaffale e il Tavolo, la potenza degli incantesimi aumenterà e dal libro posto sul Tavolo scaturiranno dei simboli arcani.{*B*}{*B*}
+Tutti gli ingredienti per un Tavolo per incantesimi possono essere trovati nei villaggi oppure ottenuti scavando e coltivando.{*B*}{*B*}
+I Libri incantati si usano con l'incudine per lanciare incantesimi sugli oggetti. In questo modo avrai maggiori possibilità di scegliere gli incantesimi di cui vuoi che i tuoi oggetti siano dotati.{*B*}
+
+
+{*T3*}COME GIOCARE: ALLEVARE GLI ANIMALI{*ETW*}{*B*}{*B*}
+Se vuoi che gli animali rimangano nel solito posto, crea una zona recintata di 20x20 blocchi e sistema gli animali là dentro. In questo modo sarai sicuro di ritrovarli dove li hai lasciati.
+
+
+{*T3*}COME GIOCARE: RIPRODUZIONE{*ETW*}{*B*}{*B*}
+Gli animali di Minecraft possono riprodursi e dar vita a versioni in miniatura di se stessi!{*B*}
+Per far riprodurre un animale, devi prima farlo entrare in "modalità Amore" nutrendolo con l'alimento adatto.{*B*}
+Dai Grano a una mucca, muccafungo o pecora, Carote ai maiali, Semi di grano o Verruche del Sottomondo a una gallina, o qualsiasi tipo di carne a un lupo, e cominceranno a cercare nei dintorni un altro animale della stessa specie che sia a sua volta in modalità Amore.{*B*}
+Quando l'avrà trovato, i due si scambieranno effusioni per qualche secondo e poi apparirà un cucciolo. Il piccolo seguirà i genitori per un certo periodo di tempo prima di diventare adulto.{*B*}
+Devono passare circa cinque minuti prima che un animale possa entrare nuovamente in modalità Amore.{*B*}
+C'è un limite al numero di animali che si può avere in un mondo, e questo potrebbe essere il motivo per cui non si riproducono.
+
+{*T3*}COME GIOCARE: SOTTOPORTALE{*ETW*}{*B*}{*B*}
+Il sottoportale consente al giocatore di spostarsi tra il Sopramondo e il Sottomondo. Il Sottomondo serve per viaggiare velocemente nel Sopramondo: una distanza di un blocco nel Sottomondo equivale a 3 blocchi nel Sopramondo, quindi quando costruisci un portale nel Sottomondo e lo usi per uscire, ti troverai a una distanza triplicata rispetto al punto di entrata.{*B*}{*B*}
+La costruzione del portale richiede un minimo di 10 blocchi di ossidiana. Il portale deve essere alto 5 blocchi, largo 4 e profondo 1. Una volta costruita la struttura del portale, lo spazio interno dev'essere incendiato per attivarlo. Per farlo, usa pietra focaia e acciarino oppure l'oggetto Scarica di fuoco.{*B*}{*B*}
+L'immagine a destra mostra alcuni esempi di costruzione di un portale.
+
+
+{*T3*}COME GIOCARE: MULTIPLAYER{*ETW*}{*B*}{*B*}
+Minecraft per Xbox 360 è un gioco multiplayer per impostazione predefinita. Se giochi in alta definizione, puoi aggiungere giocatori locali alla partita collegando altri controller e premendo START in qualsiasi momento.{*B*}{*B*}
+Quando avvii o accedi a una partita online, essa sarà visibile alle persone incluse nella tua lista amici (a meno che, come host, tu non abbia selezionato l'opzione "Solo invito") e, se entreranno nella partita, essa sarà visibile alle persone incluse nella loro lista amici (se hai selezionato l'opzione "Accetta amici di amici"){*B*}
+Durante una partita, premi il pulsante BACK per richiamare un elenco di tutti i giocatori e visualizzarne la scheda giocatore, e per espellere o invitare altri utenti.
+
+
+{*T3*}COME GIOCARE: CONDIVISIONE DI SCREENSHOT{*ETW*}{*B*}{*B*}
+Puoi salvare uno screenshot del gioco visualizzando il menu di pausa e premendo{*CONTROLLER_VK_Y*} per condividerlo su Facebook. Apparirà un'anteprima in miniatura dello screenshot e potrai modificare il testo associato al post di Facebook.{*B*}{*B*}
+Esiste una modalità fotografica appositamente progettata per il salvataggio di screenshot, che ti consente di vedere il tuo personaggio frontalmente: premi{*CONTROLLER_ACTION_CAMERA*} finché non vedi la parte frontale del personaggio, poi premi{*CONTROLLER_VK_Y*} per condividere.{*B*}{*B*}
+I gamertag non vengono visualizzati nello screenshot.
+
+
+{*T3*}COME GIOCARE: ESCLUSIONE DI LIVELLI{*ETW*}{*B*}{*B*}
+Se trovi dei contenuti offensivi all'interno di un livello che stai giocando, puoi scegliere di aggiungere questo livello all'elenco dei livelli esclusi.
+Per farlo, visualizza il menu di pausa, quindi premi{*CONTROLLER_VK_RB*} per selezionare lo strumento Escludi livello.
+Quando tenterai di accedere a questo livello in futuro, verrà visualizzata una notifica per segnalarti che quel livello fa parte dell'elenco dei livelli esclusi e potrai scegliere se annullare l'operazione o rimuovere il livello dall'elenco e accedervi.
+
+{*T3*}COME GIOCARE: MODALITÀ CREATIVA{*ETW*}{*B*}{*B*}
+L'interfaccia della modalità Creativa consente al giocatore di spostare nel proprio inventario qualsiasi oggetto senza doverlo scavare o creare.
+Gli oggetti presenti nell'inventario non saranno rimossi quando vengono posizionati o usati nel mondo; in questo modo, il giocatore non dovrà preoccuparsi di raccogliere risorse e potrà concentrarsi sulla costruzione.{*B*}
+Se crei, carichi o salvi un mondo in modalità Creativa, gli obiettivi e gli aggiornamenti di classifica saranno disabilitati e lo resteranno anche se quel mondo verrà successivamente caricato in modalità Sopravvivenza.{*B*}
+Per volare mentre sei in modalità Creativa, premi rapidamente {*CONTROLLER_ACTION_JUMP*} due volte. Ripeti l'azione per interrompere il volo. Per volare più rapidamente, sposta in avanti{*CONTROLLER_ACTION_MOVE*} due volte in rapida successione mentre stai volando.
+Durante il volo, puoi tenere premuto{*CONTROLLER_ACTION_JUMP*} per salire e{*CONTROLLER_ACTION_SNEAK*} per scendere, oppure usare{*CONTROLLER_ACTION_DPAD_UP*} per salire e {*CONTROLLER_ACTION_DPAD_DOWN*} per scendere,
+{*CONTROLLER_ACTION_DPAD_LEFT*} per andare a sinistra e {*CONTROLLER_ACTION_DPAD_RIGHT*} per andare a destra.
+
+{*T3*}COME GIOCARE: OPZIONI DELL'HOST E DEL GIOCATORE{*ETW*}{*B*}{*B*}
+
+{*T1*}Opzioni di gioco{*ETW*}{*B*}
+Quando carichi o crei un mondo, se premi il pulsante "Altre opzioni" accederai a un menu che ti consente di avere maggior controllo sul gioco.{*B*}{*B*}
+
+ {*T2*}Giocatore vs Giocatore{*ETW*}{*B*}
+ Se l'opzione è attivata, è possibile infliggere danni agli altri giocatori. Quest'opzione ha effetto esclusivamente nella modalità Sopravvivenza.{*B*}{*B*}
+
+ {*T2*}Autorizza giocatori{*ETW*}{*B*}
+ Se l'opzione non è attivata, i giocatori che si uniscono alla partita non potranno svolgere determinate azioni, come scavare, usare oggetti, posizionare blocchi, utilizzare porte, interruttori e contenitori, attaccare gli altri giocatori o gli animali. È possibile modificare le opzioni dei singoli giocatori accedendo al menu di gioco.{*B*}{*B*}
+
+ {*T2*}Diffusione incendio{*ETW*}{*B*}
+ Se l'opzione è attivata, il fuoco può propagarsi ai blocchi infiammabili vicini. Quest'opzione può essere modificata anche durante il gioco.{*B*}{*B*}
+
+ {*T2*}Esplosione TNT{*ETW*}{*B*}
+ Se l'opzione è attivata, il TNT esplode quando viene fatto detonare. Quest'opzione può essere modificata anche durante il gioco.{*B*}{*B*}
+
+ {*T2*}Privilegi dell'host{*ETW*}{*B*}
+ Se l'opzione è abilitata, l'host, tramite il menu di gioco, può attivare o disattivare la possibilità di volare, disabilitare la stanchezza e rendersi invisibile. {*DISABLES_ACHIEVEMENTS*}{*B*}{*B*}
+
+{*T1*}Opzioni di generazione del mondo{*ETW*}{*B*}
+Quando crei un nuovo mondo, sono disponibili alcune opzioni aggiuntive.{*B*}{*B*}
+
+ {*T2*}Genera strutture{*ETW*}{*B*}
+ Se l'opzione è abilitata, nel mondo saranno generate strutture come Villaggi e Fortezze.{*B*}{*B*}
+
+ {*T2*}Mondo superpiatto{*ETW*}{*B*}
+ Se l'opzione è attivata, sarà generato un mondo completamente piatto, sia nel Sopramondo sia nel Sottomondo.{*B*}{*B*}
+
+ {*T2*}Cassa bonus{*ETW*}{*B*}
+ Se l'opzione è attivata, vicino al punto di generazione del giocatore apparirà una cassa contenente alcuni oggetti utili.{*B*}{*B*}
+
+ {*T1*}Resetta Sottomondo{*ETW*}{*B*}
+ Quando è attivato, il Sottomondo sarà rigenerato. Questa funzionalità può essere molto utile se hai dei vecchi salvataggi in cui le Fortezze del Sottomondo non erano presenti.{*B*}{*B*}
+
+ {*T1*}Opzioni di gioco{*ETW*}{*B*}
+ Durante la partita, premi BACK per aprire il menu di gioco, dove potrai accedere a diverse opzioni.{*B*}{*B*}
+
+ {*T2*}Opzioni host{*ETW*}{*B*}
+ L'host e tutti i giocatori identificati come moderatori possono accedere al menu "Opzioni host", nel quale avranno la possibilità di abilitare o disabilitare le opzioni "Diffusione incendio" ed "Esplosione TNT".{*B*}{*B*}
+
+{*T1*}Opzioni del giocatore{*ETW*}{*B*}
+Per modificare i privilegi di un giocatore, seleziona il suo nome e premi{*CONTROLLER_VK_A*} per accedere al menu dei privilegi del giocatore, dove potrai agire sulle seguenti opzioni.{*B*}{*B*}
+
+ {*T2*}Può costruire e scavare{*ETW*}{*B*}
+ Quando quest'opzione è abilitata, il giocatore può interagire con il mondo normalmente. Se, invece, l'opzione è disattivata, il giocatore non può posizionare né distruggere blocchi e non potrà interagire con oggetti e blocchi di vario tipo. Quest'opzione è disponibile solo se "Autorizza giocatori" è disattivata.{*B*}{*B*}
+
+ {*T2*}Può usare porte e interruttori{*ETW*}{*B*}
+ Se disattivata, il giocatore non sarà in grado di usare né le porte né gli interruttori. Quest'opzione è disponibile solo se "Autorizza giocatori" è disattivata.{*B*}{*B*}
+
+ {*T2*}Può aprire contenitori{*ETW*}{*B*}
+ Se disattivata, il giocatore non sarà in grado di aprire i contenitori, come le casse. Quest'opzione è disponibile solo se "Autorizza giocatori" è disattivata.{*B*}{*B*}
+
+ {*T2*}Può attaccare i giocatori{*ETW*}{*B*}
+ Se disattivata, impedisce al giocatore di causare danni agli altri utenti. Quest'opzione è disponibile solo se "Autorizza giocatori" è disattivata.{*B*}{*B*}
+
+ {*T2*}Può attaccare animali{*ETW*}{*B*}
+ Se disattivata, il giocatore non sarà in grado di infliggere danni agli animali. Quest'opzione è disponibile solo se "Autorizza giocatori" è disattivata.{*B*}{*B*}
+
+ {*T2*}Moderatore{*ETW*}{*B*}
+ Se quest'opzione è attivata, il giocatore potrà modificare i privilegi degli altri utenti, fatta eccezione per l'host, a patto che "Autorizza giocatori" sia disabilitata. Inoltre, il giocatore potrà espellere gli altri utenti e modificare le opzioni relative alla diffusione degli incendi e all'esplosione del TNT.{*B*}{*B*}
+
+ {*T2*}Espelli giocatore{*ETW*}{*B*}
+ Selezionando quest'opzione, è possibile espellere qualsiasi giocatore che non si trova sulla console {*PLATFORM_NAME*} dell'host e tutti gli altri utenti eventualmente collegati tramite la console {*PLATFORM_NAME*} del giocatore espulso. I giocatori espulsi non potranno rientrare prima che la partita sia riavviata.{*B*}{*B*}
+
+{*T1*}Opzioni del giocatore host{*ETW*}{*B*}
+Se l'opzione "Privilegi dell'host" è attivata, l'host può modificare da solo alcuni privilegi. Per modificare i privilegi di un giocatore, seleziona il suo nome e premi {*CONTROLLER_VK_A*} per aprire il menu dei privilegi del giocatore e accedere alle seguenti opzioni.{*B*}{*B*}
+
+ {*T2*}Può volare{*ETW*}{*B*}
+ Se l'opzione è attivata, il giocatore è in grado di volare. L'opzione ha effetto esclusivamente sulla modalità Sopravvivenza, perché in modalità Creativa, tutti i giocatori possono volare.{*B*}{*B*}
+
+ {*T2*}Disabilita stanchezza{*ETW*}{*B*}
+ L'opzione ha effetto esclusivamente sulla modalità Sopravvivenza. Se attivata, le attività fisiche (camminare, correre, saltare e altre ancora) non fanno diminuire la barra del cibo. Tuttavia, se il giocatore viene ferito, la barra del cibo diminuirà lentamente man mano che il giocatore guarisce.{*B*}{*B*}
+
+ {*T2*}Invisibile{*ETW*}{*B*}
+ Se l'opzione è abilitata, il giocatore è invulnerabile e gli altri utenti non possono vederlo.{*B*}{*B*}
+
+ {*T2*}Può usare il teletrasporto{*ETW*}{*B*}
+ Permette al giocatore di spostare sé stesso o gli altri utenti, raggiungendo altri giocatori presenti nel mondo.
+
+
+Pagina successiva
+
+Pagina precedente
+
+Basi
+
+Interfaccia
+
+Inventario
+
+Casse
+
+Crafting
+
+Fornace
+
+Dispenser
+
+Allevare gli animali
+
+Riproduzione animali
+
+Distillazione
+
+Incantesimi
+
+Sottoportale
+
+Multiplayer
+
+Condivisione di screenshot
+
+Esclusione di livelli
+
+Modalità Creativa
+
+Opzioni dell'host e del giocatore
+
+Commercio
+
+Incudine
+
+Limite
+
+{*T3*}COME GIOCARE : IL LIMITE{*ETW*}{*B*}{*B*}
+Il Limite è un'altra dimensione del gioco, che può essere raggiunta tramite un Portale del Limite attivo. Il Portale del Limite si trova in una fortezza posta nelle profondità sotterranee del Sopramondo.{*B*}
+Per attivare il portale è necessario inserire un Occhio di Ender nei Telai del Portale del Limite che non ne hanno uno.{*B*}
+Una volta che il Portale del Limite è attivo, ti basterà attraversarlo per raggiungere il Limite.{*B*}{*B*}
+Nel Limite incontrerai il Drago di Ender, nemico forte e fiero, oltre agli Enderman, quindi dovrai prepararti a dovere prima di intraprendere il viaggio!{*B*}{*B*}
+Scoprirai che, per rigenerarsi, il Drago di Ender usa i Cristalli di Ender che si trovano su otto punte di ossidiana,
+quindi la prima cosa che dovrai fare è distruggere tutti i cristalli.{*B*}
+Puoi colpire i primi con le frecce, ma i successivi sono protetti da una gabbia di metallo, e quindi dovrai trovare il modo di avvicinarti.{*B*}{*B*}
+Nel frattempo, il Drago di Ender ti attaccherà dall'alto e ti lancerà contro delle sfere di acido!{*B*}
+Se ti avvicini al piedistallo dell'uovo posto al centro delle punte, il Drago di Ender scenderà in picchiata per affrontarti: quello sarà il momento giusto per attaccarlo e infliggergli pesanti danni!{*B*}
+Evita l'acido e mira agli occhi del Drago di Ender per ottenere i risultati migliori. Se puoi, porta degli amici con te nel Limite, così ti aiuteranno a trionfare in questa difficile battaglia!{*B*}{*B*}
+Una volta che sarai nel Limite, i tuoi amici potranno vedere sulla loro mappa l'ubicazione del Portale del Limite nella Fortezza,
+così saranno in grado di raggiungerti facilmente.
+
+
+Scatto
+
+Novità
+
+
+{*T3*}Modifiche e aggiunte{*ETW*}{*B*}{*B*}
+- Nuovi oggetti: smeraldi, minerale di smeraldo, blocco di smeraldo, forziere di Ender, gancio a filo, mela d'oro incantata, incudine, vaso di fiori, muro di ciottoli, muro di ciottoli coperto di muschio, quadro sbiadito, patata, patata arrostita, patata velenosa, carota, carota d'oro, carota e bastone,
+torta di zucca, pozione della visione notturna, pozione dell'invisibilità, quarzo del Sottomondo, minerale di quarzo del Sottomondo, blocco di quarzo, lastra di quarzo, scala di quarzo, blocco cesellato di quarzo, blocco portante di quarzo, libro incantato, tappeto.{*B*}
+- Nuove ricette per arenaria liscia e arenaria cesellata.{*B*}
+- Nuovi nemici: abitanti del villaggio zombie.{*B*}
+- Nuove caratteristiche per la generazione del mondo: templi nel deserto, villaggi nel deserto, templi nella giungla.{*B*}
+- Aggiunta la possibilità di commerciare con gli abitanti dei villaggi.{*B*}
+- Aggiunta l'interfaccia incudine.{*B*}
+- Il colore delle armature di pelle può essere cambiato usando le tinture.{*B*}
+- Il colore dei collari dei lupi può essere cambiato usando le tinture.{*B*}
+- I maiali possono essere controllati usando bastone e carota quando li si cavalca.{*B*}
+- Il contenuto dei forzieri bonus è stato aggiornato con altri oggetti.{*B*}
+- La posizione dei mezzi blocchi e degli altri blocchi sui mezzi blocchi è stata modificata.{*B*}
+- La posizione delle scale e delle lastre al contrario è stata modificata.{*B*}
+- Sono stati aggiunti mestieri diversi per gli abitanti dei villaggi.{*B*}
+- Gli abitanti dei villaggi nati da un uovo generazione svolgono mestieri scelti in modo casuale.{*B*}
+- È stata aggiunta la possibilità di posizionare i tronchi di legno in orizzontale.{*B*}
+- Gli attrezzi di legno possono essere usati come combustibile nelle fornaci.{*B*}
+- Le lastre di vetro e quelle di ghiaccio possono essere raccolte con attrezzi dotati dell'incantesimo "Tocco di seta".{*B*}
+- Le piastre a pressione di legno e i pulsanti di legno possono essere attivati con le frecce.{*B*}
+- I nemici del Sottomondo possono essere generati nel Sopramondo tramite i portali.{*B*}
+- I creeper e i ragni sono aggressivi nei confronti del giocatore che li ha colpiti per ultimo.{*B*}
+- I nemici in modalità Creativa tornano a essere neutrali dopo un breve periodo.{*B*}
+- È stato rimosso l'atterramento in caso di annegamento.{*B*}
+- Le porte rotte dagli zombie mostrano i segni dei danni subiti.{*B*}
+- Il ghiaccio si scioglie nel Sottomondo.{*B*}
+- I calderoni si riempiono d'acqua sotto la pioggia.{*B*}
+- I pistoni impiegano il doppio del tempo per tornare al punto di partenza.{*B*}
+- In caso siano sellati, i maiali lasciano cadere la sella quando sono uccisi.{*B*}
+- Il colore del cielo nel Limite è stato cambiato.{*B*}
+- È possibile posizionare corde (per i ganci a filo).{*B*}
+- Le gocce di pioggia filtrano tra le foglie.{*B*}
+- Le leve possono essere posizionate sulla parte inferiore dei blocchi.{*B*}
+- Il TNT infligge danni che variano in base al livello di difficoltà.{*B*}
+- La ricetta del libro è stata cambiata.{*B*}
+- Le barche rompono le ninfee (le ninfee non rompono più le barche).{*B*}
+- I maiali fanno guadagnare un maggior numero di costolette di maiale.{*B*}
+- Sono generati meno slime nei mondi superpiatti.{*B*}
+- I creeper infliggono una quantità di danni variabile in base al livello di difficoltà, ma l'atterramento è aumentato.{*B*}
+- È stato risolto il problema degli Enderman che non aprono le mascelle.{*B*}
+- È stato aggiunto il teletrasporto per i giocatori (usando il menu BACK durante il gioco).{*B*}
+- Sono state aggiunte opzioni host per il volo, l'invisibilità e l'invulnerabilità per i giocatori in remoto.{*B*}
+- Nel mondo tutorial sono stati aggiunti altri tutorial che spiegano nuovi oggetti e caratteristiche del gioco.{*B*}
+- Le posizioni dei forzieri dei dischi nel mondo tutorial sono state aggiornate.{*B*}
+
+
+{*ETB*}Bentornato! Forse non lo sai, ma Minecraft è appena stato aggiornato.{*B*}{*B*}
+Abbiamo aggiunto tante nuove funzionalità per te e i tuoi amici: di seguito troverai elencate quelle principali. Dai un'occhiata e corri a divertirti!{*B*}{*B*}
+{*T1*}Nuovi oggetti{*ETB*} - Smeraldi, minerale di smeraldo, blocco di smeraldo, forziere di Ender, gancio a filo, mela d'oro incantata, incudine, vaso di fiori, muro di ciottoli, muro di ciottoli coperto di muschio, quadro sbiadito, patata, patata arrostita, patata velenosa, carota, carota d'oro, carota e bastone,
+torta di zucca, pozione della visione notturna, pozione dell'invisibilità, quarzo del Sottomondo, minerale di quarzo del Sottomondo, blocco di quarzo, lastra di quarzo, scala di quarzo, blocco cesellato di quarzo, blocco portante di quarzo, libro incantato, tappeto.{*B*}{*B*}
+ {*T1*}Nuovi nemici{*ETB*} - Abitanti del villaggio zombie.{*B*}{*B*}
+{*T1*}Nuove funzioni di gioco{*ETB*} - Commercia con gli abitanti dei villaggi, ripara e incanta armi e attrezzi con l'incudine, custodisci oggetti nei forzieri di Ender, controlla il maiale che cavalchi usando bastone e carota!{*B*}{*B*}
+{*T1*}Nuovi mini tutorial{*ETB*} – Impara a usare le nuove funzioni di gioco nel mondo tutorial!{*B*}{*B*}
+{*T1*}Nuove "sorprese nascoste"{*ETB*} – Abbiamo cambiato la posizione di tutti i dischi segreti nel mondo tutorial. Vediamo se riesci a trovarli di nuovo!{*B*}{*B*}
+
+
+Infligge un danno maggiore della mano.
+
+Serve per scavare terra, erba, sabbia, ghiaia e neve più in fretta che a mano. Le pale servono per scavare palle di neve.
+
+Serve per scavare blocchi di pietra e minerali.
+
+Si usa per abbattere blocchi di legno più in fretta che a mano.
+
+Si usa per arare blocchi di terra ed erba e prepararli per il raccolto.
+
+Le porte di legno si attivano usandole, colpendole o con una pietra rossa.
+
+Le porte di ferro si aprono solo con pietra rossa, pulsanti o interruttori.
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+Si indossa per ottenere 1 punto armatura.
+
+Si indossano per ottenere 3 punti armatura.
+
+Si indossa per ottenere 2 punti armatura.
+
+Si indossa per ottenere 1 punto armatura.
+
+Si indossa per ottenere 2 punti armatura.
+
+Si indossa per ottenere 5 punti armatura.
+
+Si indossa per ottenere 4 punti armatura.
+
+Si indossa per ottenere 1 punto armatura.
+
+Si indossa per ottenere 2 punti armatura.
+
+Si indossa per ottenere 6 punti armatura.
+
+Si indossa per ottenere 5 punti armatura.
+
+Si indossa per ottenere 2 punti armatura.
+
+Si indossa per ottenere 2 punti armatura.
+
+Si indossa per ottenere 5 punti armatura.
+
+Si indossano per ottenere 3 punti armatura.
+
+Si indossa per ottenere 1 punto armatura.
+
+Si indossano per ottenere 3 punti armatura.
+
+Si indossa per ottenere 8 punti armatura.
+
+Si indossa per ottenere 6 punti armatura.
+
+Si indossano per ottenere 3 punti armatura.
+
+Lingotto lucente utilizzabile per creare oggetti di questo materiale. Si crea fondendo minerali nella fornace.
+
+Consente di trasformare lingotti, gemme o tinture in blocchi collocabili. Si può usare come blocco da costruzione costoso o come magazzino compatto per minerali.
+
+Quando un giocatore, un animale o un mostro ci passa sopra, prende la scossa. La piastra a pressione di legno si attiva anche facendoci cadere sopra qualcosa.
+
+Si usa per le scale compatte.
+
+Si usa per creare scale lunghe. Due lastre una sopra l'altra creano un blocco doppio di dimensioni normali.
+
+Si usa per costruire scale lunghe. Due lastre poste l'una sull'altra creano un blocco da due lastre di dimensioni normali.
+
+La torcia si usa per fare luce, nonché per sciogliere neve e ghiaccio.
+
+Si usano come materiali da costruzione e per creare diversi oggetti. Si possono creare da qualsiasi forma di legno.
+
+Si usa come materiale da costruzione. Non subisce la gravità come la sabbia normale.
+
+Si usa come materiale da costruzione.
+
+Si usa per creare torce, frecce, cartelli, scale a pioli, recinzioni e come maniglia per attrezzi e armi.
+
+Si usa per far avanzare il tempo dalla notte al mattino, se tutti i giocatori nel mondo sono a letto. Cambia il punto di generazione del giocatore.
+I colori sono sempre gli stessi, qualunque sia la lana usata.
+
+Consente di creare una selezione di oggetti più vasta rispetto alla normale schermata crafting.
+
+Consente di fondere minerali, creare antracite e vetro e cuocere pesce e costolette di maiale.
+
+Vi si possono conservare blocchi e oggetti. Colloca due casse una accanto all'altra per creare una cassa grande dalla capacità doppia.
+
+Si usa come barriera impenetrabile. Vale come 1,5 blocchi di altezza per giocatori, animali e mostri, ma come 1 solo blocco di altezza per gli altri blocchi.
+
+Si usa per salire in verticale.
+
+Si attiva usandola, colpendola o con una pietra rossa. Funziona come una porta normale, ma è un blocco di 1x1 appiattito sul terreno.
+
+Mostra il testo scritto da te o da altri giocatori.
+
+Fa più luce della torcia. Scioglie ghiaccio e neve e si può usare anche sott'acqua.
+
+Si usa per provocare esplosioni. Una volta collocato, si attiva accendendolo con un oggetto acciarino e pietra focaia, o con una scarica elettrica.
+
+Serve per conservare la zuppa di funghi. Una volta mangiata, la ciotola rimane.
+
+Si usa per contenere e trasportare acqua, lava e latte.
+
+Si usa per contenere e trasportare acqua.
+
+Si usa per contenere e trasportare lava.
+
+Si usa per contenere e trasportare latte.
+
+Si usa per creare il fuoco, accendere TNT e aprire un portale dopo averlo costruito.
+
+Si usa per pescare.
+
+Mostra la posizione del sole e della luna.
+
+Indica il punto iniziale.
+
+Mentre la tieni in mano, crea un'immagine di un'area esplorata. Può essere utile per orientarti.
+
+Consente attacchi a distanza con le frecce.
+
+Si usa come munizione per l'arco.
+
+Reintegra 2,5{*ICON_SHANK_01*}.
+
+Reintegra 1{*ICON_SHANK_01*}. Utilizzabile 6 volte.
+
+Reintegra 1{*ICON_SHANK_01*}.
+
+Reintegra 1{*ICON_SHANK_01*}.
+
+Fa recuperare 3 {*ICON_SHANK_01*}.
+
+Reintegra 1{*ICON_SHANK_01*}, o può essere cucinato nella fornace. Può farti star male.
+
+Reintegra 3{*ICON_SHANK_01*}. Si crea cucinando il pollo crudo nella fornace.
+
+Reintegra 1,5{*ICON_SHANK_01*}, o può essere cucinato in una fornace.
+
+Reintegra 4{*ICON_SHANK_01*}. Si crea cucinando il manzo crudo nella fornace.
+
+Reintegra 1,5{*ICON_SHANK_01*} o si può cucinare nella fornace.
+
+Reintegra 4{*ICON_SHANK_01*}. Si crea cucinando una costoletta di maiale in una fornace.
+
+Reintegra 1{*ICON_SHANK_01*} o si può cucinare in una fornace. Può essere dato a un ocelot per ammansirlo.
+
+Reintegra 2,5{*ICON_SHANK_01*}. Si crea cucinando pesce crudo in una fornace.
+
+Reintegra 2{*ICON_SHANK_01*} e si può usare per creare una mela d'oro.
+
+Reintegra 2{*ICON_SHANK_01*} e rigenera la salute per 4 secondi. Si crea usando una mela e dalle pepite d'oro.
+
+Reintegra 2{*ICON_SHANK_01*}, ma può avvelenarti.
+
+Si usa nella ricetta per la torta come ingrediente per preparare pozioni.
+
+Accendila o spegnila per generare una scarica elettrica. Rimane accesa o spenta finché non la premi di nuovo.
+
+Invia costantemente una scarica elettrica e si può usare anche come ricevitore/trasmettitore se collegata a un lato del blocco.
+È anche una debole fonte di illuminazione.
+
+Si usa nei circuiti a pietre rosse come ripetitore, ritardante e/o diodo.
+
+Premilo per generare una scarica elettrica. Rimane attivo per circa un secondo prima di spegnersi di nuovo.
+
+Si usa per conservare e distribuire oggetti in ordine casuale quando riceve una carica di pietra rossa.
+
+Quando si attiva, suona una nota. Colpiscilo per cambiare tonalità. Mettilo sopra blocchi diversi per cambiare il tipo di strumento.
+
+Si usano per guidare i carrelli da miniera.
+
+Accesi, fanno accelerare i carrelli da miniera che ci passano sopra. Spenti, fanno fermare i carrelli da miniera.
+
+Funzionano come la piastra a pressione (inviano un segnale pietra rossa mentre sono in funzione) ma sono attivabili solo dal carrello da miniera.
+
+Trasporta te, un animale o un mostro sui binari.
+
+Si usa per trasportare merci sui binari.
+
+Si muove sui binari e spinge altri carrelli da miniera se ci metti del carbone.
+
+Si usa per spostarsi nell'acqua più velocemente che a nuoto.
+
+Si ottiene dalle pecore e si può colorare con le tinture.
+
+Si usa come materiale da costruzione e si può colorare con le tinture. Ricetta sconsigliata, in quanto la lana è facilmente ottenibile dalle pecore.
+
+Si usa come tintura per creare lana nera.
+
+Si usa come tintura per creare lana verde.
+
+Si usano come tintura per creare lana marrone, come ingrediente per preparare biscotti e per far crescere frutti di cacao.
+
+Si usa come tintura per creare lana argento.
+
+Si usa come tintura per creare lana gialla.
+
+Si usa come tintura per creare lana rossa.
+
+Si usa per far crescere immediatamente colture, alberi, erba alta, funghi giganti e fiori e si impiega nelle ricette delle tinture.
+
+Si usa come tintura per creare lana rosa.
+
+Si usa come tintura per creare lana arancione.
+
+Si usa come tintura per creare lana verde lime.
+
+Si usa come tintura per creare lana grigia.
+
+Usata come tintura per la lana grigio chiaro.
+(Nota: si può anche preparare con tintura grigia e farina d'ossa, avendone quattro per sacca di inchiostro, invece di tre.)
+
+Si usa come tintura per creare lana azzurra.
+
+Si usa come tintura per creare lana turchese.
+
+Si usa come tintura per creare lana viola.
+
+Si usa come tintura per creare lana magenta.
+
+Si usa come tintura per creare lana blu.
+
+Suona dischi.
+
+Utilizzabile per creare attrezzi, armi o armature molto robusti.
+
+Fa più luce della torcia. Scioglie ghiaccio e neve e si può usare anche sott'acqua.
+
+Si usa per creare libri e mappe.
+
+Si usa per costruire scaffali o si può incantare per creare Libri incantati.
+
+Permette di creare incantesimi più potenti se lo si mette intorno al Tavolo per incantesimi.
+
+Si usa come decorazione.
+
+Si scava con una piccozza di ferro o migliore, poi si fonde nella fornace per produrre lingotti d'oro.
+
+Si scava con una piccozza di pietra o migliore, poi si fonde nella fornace per produrre lingotti di ferro.
+
+Si scava con una piccozza per ottenere carbone.
+
+Si scava con una piccozza di pietra o migliore per ottenere lapislazzuli.
+
+Si scava con una piccozza di ferro o migliore per ottenere diamanti.
+
+Si scava con una piccozza di ferro o migliore per ottenere polvere di pietra rossa.
+
+Si scava con una piccozza per ottenere ciottoli.
+
+Si ottiene con la pala. Si può usare per la costruzione.
+
+Si può piantare per far crescere un albero.
+
+Non si rompe.
+
+Dà fuoco a qualsiasi cosa tocca. Si può raccogliere in un secchio.
+
+Si ottiene con la pala. Si fonde in vetro usando la fornace. Subisce la gravità se sotto non ci sono altre tessere.
+
+Si ottiene con la pala. A volte produce una pietra focaia. Subisce la gravità se sotto non ci sono altre tessere.
+
+Si abbatte con l'ascia e si può tagliare in assi o usare come combustibile.
+
+Si crea nella fornace fondendo la sabbia. Si può usare per la costruzione, ma si rompe se cerchi di prenderlo.
+
+Si estrae dalla pietra usando la piccozza. Si può usare per costruire una fornace o attrezzi di pietra.
+
+Risultato della cottura dell'argilla in una fornace.
+
+Si inserisce nella fornace per creare mattoni.
+
+Quando viene rotta, rilascia delle sfere di argilla che possono essere cotte in una fornace per creare dei mattoni.
+
+Per conservare le palle di neve in poco spazio.
+
+Si può scavare con una pala per creare palle di neve.
+
+Può produrre Semi di grano quando viene tagliata.
+
+Si usa per creare tinture.
+
+Si usa con la ciotola per fare la zuppa.
+
+Si scava solo con una piccozza di diamante. Nasce dall'incontro tra acqua e lava e si usa per creare portali.
+
+Genera mostri nel mondo.
+
+Si posa a terra per condurre elettricità. Se si usa per preparare una pozione, aumenta la durata dell'effetto.
+
+Le colture si possono mietere per ottenere grano.
+
+Terreno pronto per piantare semi.
+
+Si può cuocere in fornace per produrre tintura verde.
+
+Si può usare per produrre zucchero.
+
+Si può indossare come elmo o unire a una torcia per creare una zucca di Halloween. È anche l'ingrediente principale per la torta di zucca.
+
+Una volta accesa, brucia per sempre.
+
+Rallentano il movimento di qualsiasi cosa ci passi sopra.
+
+Entra nel portale per spostarti tra il Sopramondo e il Sottomondo.
+
+Si usa come combustibile per la fornace o per creare una torcia.
+
+Si ottiene uccidendo un ragno e si usa per creare archi o canne da pesca. Si può anche mettere per terra per creare un filo.
+
+Si ottiene uccidendo una gallina e si usa per creare una freccia.
+
+Si ottiene uccidendo un creeper e si usa per creare del TNT, oppure come ingrediente per preparare pozioni.
+
+Si possono piantare e coltivare su una zolla. Assicurati che vi sia luce a sufficienza per far crescere i semi!
+
+Si ottiene dalle colture e si può usare per creare cibo.
+
+Si ottiene scavando nella ghiaia e si può usare per creare acciarino e pietra focaia.
+
+Si usa sui maiali per poterli cavalcare. Il maiale cavalcato può essere controllato usando carota e bastone.
+
+Si ottiene scavando nella neve e si può lanciare.
+
+Si ottiene uccidendo una mucca e si usa per creare un'armatura o per fare libri.
+
+Si ottiene uccidendo uno slime e si usa come ingrediente per preparare pozioni o per costruire pistoni appiccicosi.
+
+Viene deposto casualmente dalle galline e si può usare per creare cibi.
+
+Si ottiene scavando nella pietra brillante e si può usare per creare blocchi di pietra brillante. Si può anche utilizzare insieme alle pozioni per rendere più potente il loro effetto.
+
+Si ottiene uccidendo uno scheletro. Si usa per produrre farina d'ossa. Può essere dato in pasto a un lupo per ammansirlo.
+
+Si ottiene facendo uccidere un creeper da uno scheletro. Si può suonare in un jukebox.
+
+Spegne il fuoco e favorisce la crescita delle colture. Si può raccogliere in un secchio.
+
+Quando si rompono, a volte fanno cadere un arbusto che può essere trapiantato per far crescere un albero.
+
+Si trova nei dungeon e si può usare per costruire e decorare.
+
+Si usa per ottenere lana dalle pecore e ottenere blocchi foglia.
+
+Quando è alimentato (attraverso un pulsante, una leva, una piastra a pressione, una torcia pietra rossa o pietra rossa con uno qualsiasi di questi), se possibile il pistone si estende e spinge i blocchi.
+
+Quando è alimentato (attraverso un pulsante, una leva, una piastra a pressione, una torcia pietra rossa o pietra rossa con uno qualsiasi di questi), se possibile il pistone si estende e spinge i blocchi. Quando si ritrae, tira anche il blocco a contatto con la parte estesa del pistone.
+
+Creato utilizzando blocchi di pietra. Si trova comunemente nelle fortezze.
+
+Si usa come barriera, analogamente alle recinzioni.
+
+Simile a una porta, ma usato principalmente nelle recinzioni.
+
+Può essere creato usando Fette di melone.
+
+Blocchi trasparenti che possono essere usati come alternativa ai blocchi di vetro.
+
+Si possono piantare per far crescere delle zucche.
+
+Si possono piantare per far crescere dei meloni.
+
+Viene deposta dagli Enderman quando muoiono. Lanciando la Perla di Ender, il giocatore verrà teletrasportato nel punto in cui essa atterra, ma perderà un po' di salute.
+
+Un blocco di terra coperto d'erba. Si ottiene con la pala. Si può usare per la costruzione.
+
+Si può usare per costruire e decorare.
+
+Attraversarla rallenta i movimenti. Può essere distrutta con le forbici per raccogliere corda.
+
+Genera un Pesciolino d'argento quando viene distrutto. Può anche generare un Pesciolino d'argento se nelle vicinanze c'è un altro Pesciolino d'argento sotto attacco.
+
+Una volta posizionato, cresce nel corso del tempo. Si può raccogliere usando le forbici. Ci si può salire come su una scala.
+
+Superficie scivolosa. Si trasforma in acqua se si trova sopra un altro blocco quando questo viene distrutto. Si scioglie se posizionato nei pressi di una fonte di luce o nel Sottomondo.
+
+Si può usare come decorazione.
+
+Si usa come ingrediente di pozioni e per individuare Fortezze. Viene abbandonata dalle Vampe che si trovano nei pressi delle Fortezze del Sottomondo o al loro interno.
+
+Si usa come ingrediente di pozioni. Viene deposta dai Ghast quando muoiono.
+
+Viene deposta dagli uomini-maiale zombie quando muoiono. Gli uomini-maiale zombie si trovano nel Sottomondo. Si può usare come ingrediente per preparare pozioni.
+
+Si usa come ingrediente di pozioni. Cresce spontaneamente nelle Fortezze del Sottomondo. Si può piantare anche nelle Sabbie mobili.
+
+Può avere effetti diversi a seconda dell'oggetto su cui viene usata.
+
+Può essere riempita d'acqua e usata come ingrediente di base per preparare pozioni nel Banco di distillazione.
+
+Cibo velenoso e ingrediente per pozioni tossiche. Viene deposto dai Ragni o Ragni delle grotte uccisi dal giocatore.
+
+Si usa come ingrediente di pozioni, soprattutto nelle pozioni con effetti negativi.
+
+Si usa come ingrediente di pozioni o insieme ad altri oggetti per creare l'Occhio di Ender o la Crema di magma.
+
+Si usa come ingrediente di pozioni.
+
+Si usa per produrre Pozioni e Bombe pozione.
+
+Può essere riempito d'acqua mettendolo sotto la pioggia oppure usando un secchio, poi lo si può utilizzare per riempire d'acqua Bottiglie di vetro.
+
+Quando viene lanciato, l'Occhio di Ender mostra la posizione di un Portale del Limite. Dodici Occhi inseriti nel Telaio di un portale del Limite attivano il Portale stesso.
+
+Si usa come ingrediente di pozioni.
+
+Simili ai blocchi Erba, questi blocchi sono ideali come terreno di coltura per i funghi.
+
+Galleggia e può essere usata per guadare un corso d'acqua.
+
+Si usa per costruire Fortezze del Sottomondo. È immune alle palle di fuoco lanciate dai Ghast.
+
+Si usa nelle Fortezze del Sottomondo.
+
+Si trova nelle Fortezze del Sottomondo. Quando viene distrutto, rilascia una Verruca del Sottomondo.
+
+Permette al giocatore di incantare spade, piccozze, asce, pale, archi e armature usando i punti Esperienza guadagnati.
+
+Si attiva usando dodici Occhi di Ender e permette di raggiungere la dimensione Limite.
+
+Si usa per costruire un Portale del Limite.
+
+Un tipo di blocco che si trova nel Limite. Estremamente resistente alle esplosioni, è molto utile per costruire.
+
+Questo blocco si crea dopo aver sconfitto il Drago nel Limite.
+
+Quando viene lanciata, lascia cadere delle sfere Esperienza; raccogliendole, il giocatore può aumentare i propri punti Esperienza.
+
+Utile per appiccare il fuoco alle cose. Se si spara da un dispenser può scatenare incendi tutt'intorno in modo casuale.
+
+Simile a un espositore, mostra l'oggetto o il blocco messo al suo interno.
+
+Quando è lanciato può generare una creatura del tipo indicato.
+
+Si usa per creare scale lunghe. Due lastre una sopra l'altra creano un blocco doppio di dimensioni normali.
+
+Si usa per creare scale lunghe. Due lastre una sopra l'altra creano un blocco doppio di dimensioni normali.
+
+Creato dalla fusione della Sottogriglia nella fornace. Può generare blocchi di mattoni del Sottomondo.
+
+Se alimentate, emettono una luce.
+
+Può essere coltivato per raccogliere Semi di cacao.
+
+Le teste di Mob si possono collocare come decorazioni o indossare come maschere nello slot per l'elmo.
+
+Calamaro
+
+Rilascia sacche di inchiostro quando viene ucciso.
+
+Mucca
+
+Rilascia pelle quando viene uccisa. Si può anche mungere usando un secchio.
+
+Pecora
+
+Rilascia lana quando viene tosata (se non è già stata tosata). Si può creare lana di vari colori usando le tinture.
+
+Gallina
+
+Rilascia piume quando viene uccisa, inoltre a volte depone le uova.
+
+Maiale
+
+Rilascia costolette quando viene ucciso. Si può cavalcare usando una sella.
+
+Lupo
+
+Docile finché non viene attaccato, nel qual caso reagisce. Si può domare usando le ossa, che lo convincono a seguirti e ad attaccare i tuoi nemici.
+
+Creeper
+
+Esplode se ti avvicini troppo!
+
+Scheletro
+
+Ti lancia delle frecce. Rilascia frecce quando viene ucciso.
+
+Ragno
+
+Ti attacca quando ti avvicini. Può arrampicarsi sui muri. Rilascia un pungiglione quando viene ucciso.
+
+Zombie
+
+Ti attacca quando ti avvicini.
+
+Uomo-maiale zombie
+
+Inizialmente docile, ma se ne colpisci uno verrai attaccato da un gruppo.
+
+Ghast
+
+Ti lancia sfere di fuoco che esplodono al contatto.
+
+Slime
+
+Se danneggiato, si divide in slime più piccoli.
+
+Enderman
+
+Ti attacca se lo guardi. Può anche spostare blocchi.
+
+Pesciolino d'argento
+
+Quando viene attaccato, attira tutti i Pesciolini d'argento nascosti nei dintorni. Si nasconde nei blocchi di pietra.
+
+Ragno delle grotte
+
+Il suo morso è velenoso.
+
+Muccafungo
+
+Si usa con una Ciotola per preparare la Zuppa di funghi. Deposita funghi e diventa una mucca normale quando viene tosata.
+
+Golem di neve
+
+Il Golem di neve può essere creato assemblando blocchi di neve e una zucca. Lancia palle di neve contro i nemici del suo creatore.
+
+Drago di Ender
+
+Grosso drago nero che si trova nel Limite.
+
+Vampe
+
+Nemici che si trovano nel Sottomondo, soprattutto all'interno delle Fortezze. Quando vengono uccisi, depositano Bacchette di Vampe.
+
+Cubo di magma
+
+Si trovano nel Sottomondo. Simili a Slime, si dividono in esemplari più piccoli quando vengono uccisi.
+
+Abitante del villaggio
+
+Ocelot
+
+Possono essere trovati nelle giungle. Sono addomesticabili se sfamati con pesce crudo, ma aspetta che sia lui ad avvicinarsi a te, perché un movimento brusco lo metterebbe in fuga.
+
+Golem di ferro
+
+Appare nei villaggi per proteggerli, può essere creato usando blocchi di ferro e zucche.
+
+Explosives Animator
+
+Concept Artist
+
+Number Crunching and Statistics
+
+Bully Coordinator
+
+Original Design and Code by
+
+Project Manager/Producer
+
+Rest of Mojang Office
+
+Capo programmatore Minecraft PC
+
+Ninja Coder
+
+CEO
+
+White Collar Worker
+
+Customer Support
+
+Office DJ
+
+Designer/Programmer Minecraft - Pocket Edition
+
+Developer
+
+Chief Architect
+
+Art Developer
+
+Game Crafter
+
+Director of Fun
+
+Music and Sounds
+
+Programming
+
+Art
+
+QA
+
+Executive Producer
+
+Lead Producer
+
+Producer
+
+Test Lead
+
+Lead Tester
+
+Design Team
+
+Development Team
+
+Release Management
+
+Director, XBLA Publishing
+
+Business Development
+
+Portfolio Director
+
+Product Manager
+
+Marketing
+
+ Community Manager
+
+Europe Localization Team
+
+Redmond Localization Team
+
+Asia Localization Team
+
+User Research Team
+
+MGS Central Teams
+
+Milestone Acceptance Tester
+
+Special Thanks
+
+Test Manager
+
+Senior Test Lead
+
+SDET
+
+Project STE
+
+Additional STE
+
+Test Associates
+
+Jon Kågström
+
+Tobias Möllstam
+
+Risë Lugo
+
+Spada di legno
+
+Spada di pietra
+
+Spada di ferro
+
+Spada di diamante
+
+Spada d'oro
+
+Pala di legno
+
+Pala di pietra
+
+Pala di ferro
+
+Pala di diamante
+
+Pala d'oro
+
+Piccozza di legno
+
+Piccozza di pietra
+
+Piccozza di ferro
+
+Piccozza di diamante
+
+Piccozza d'oro
+
+Ascia di legno
+
+Ascia di pietra
+
+Ascia di ferro
+
+Ascia di diamante
+
+Ascia d'oro
+
+Zappa di legno
+
+Zappa di pietra
+
+Zappa di ferro
+
+Zappa di diamante
+
+Zappa d'oro
+
+Porta di legno
+
+Porta di ferro
+
+Elmo di maglia metallica
+
+Corazza di maglia metallica
+
+Gambali di maglia metallica
+
+Stivali di maglia metallica
+
+Cappello di pelle
+
+Elmo di ferro
+
+Elmo di diamante
+
+Elmo d'oro
+
+Tunica di pelle
+
+Corsaletto di ferro
+
+Corsaletto di diamante
+
+Corsaletto d'oro
+
+Pantaloni di pelle
+
+Gambali di ferro
+
+Gambali di diamante
+
+Gambali d'oro
+
+Stivali di cuoio
+
+Stivali di ferro
+
+Stivali di diamante
+
+Stivali d'oro
+
+Lingotto di ferro
+
+Lingotto d'oro
+
+Secchio
+
+Secchio d'acqua
+
+Secchio di lava
+
+Pietra focaia e acciarino
+
+Mela
+
+Arco
+
+Freccia
+
+Carbone
+
+Antracite
+
+Diamante
+
+Bastone
+
+Ciotola
+
+Zuppa di funghi
+
+Corda
+
+Piuma
+
+Polvere da sparo
+
+Semi di grano
+
+Grano
+
+Pane
+
+Pietra focaia
+
+Costoletta di maiale cruda
+
+Costoletta di maiale cotta
+
+Dipinto
+
+Mela d'oro
+
+Cartello
+
+Carrello da miniera
+
+Sella
+
+Pietra rossa
+
+Palla di neve
+
+Barca
+
+Pelle
+
+Secchio di latte
+
+Mattone
+
+Argilla
+
+Canna da zucchero
+
+Carta
+
+Libro
+
+Palla di slime
+
+Carrello con cassa
+
+Carrello con fornace
+
+Uovo
+
+Bussola
+
+Canna da pesca
+
+Orologio
+
+Polvere di pietra brillante
+
+Pesce crudo
+
+Pesce cotto
+
+Tintura in polvere
+
+Sacca d'inchiostro
+
+Rosso rosa
+
+Verde cactus
+
+Semi di cacao
+
+Lapislazzulo
+
+Tintura viola
+
+Tintura turchese
+
+Tintura grigiastra
+
+Tintura grigia
+
+Tintura rosa
+
+Tintura verde lime
+
+Giallo mimosa
+
+Tintura azzurra
+
+Tintura magenta
+
+Tintura arancione
+
+Farina d'ossa
+
+Osso
+
+Zucchero
+
+Torta
+
+Letto
+
+Ripetitore pietra rossa
+
+Biscotto
+
+Mappa
+
+Disco - "13"
+
+Disco - "gatto"
+
+Disco - "blocchi"
+
+Disco - "cip"
+
+Disco - "lontano"
+
+Disco - "centro commerciale"
+
+Disco - "mellohi"
+
+Disco - "stal"
+
+Disco - "strad"
+
+Disco - "reparto"
+
+Disco - "11"
+
+Disco - "dove siamo adesso"
+
+Tosatrice
+
+Semi di zucca
+
+Semi di melone
+
+Pollo crudo
+
+Pollo cotto
+
+Manzo crudo
+
+Bistecca
+
+Carne guasta
+
+Ender Pearl
+
+Fetta di melone
+
+Bacchetta di Vampe
+
+Lacrima di Ghast
+
+Pepita d'oro
+
+Verruca del Sottomondo
+
+{*splash*}{*prefix*}Pozione {*postfix*}
+
+Bottiglia di vetro
+
+Bottiglia d'acqua
+
+Occhio di ragno
+
+Occhio di ragno fermentato
+
+Polvere di Vampe
+
+Crema di magma
+
+Banco di distillazione
+
+Calderone
+
+Occhio di Ender
+
+Melone scintillante
+
+Bottiglia magica
+
+Scarica di fuoco
+
+Scarica di fuoco (carbone vegetale)
+
+Scarica di fuoco (carbone)
+
+Espositore
+
+Genera {*CREATURE*}
+
+Mattone del Sottomondo
+
+Teschio
+
+Teschio di scheletro
+
+Teschio di scheletro avvizzito
+
+Testa di zombie
+
+Testa
+
+Testa di %s
+
+Testa di Creeper
+
+Pietra
+
+Blocco d'erba
+
+Terra
+
+Ciottolo
+
+Assi di legno di quercia
+
+Assi di legno di abete
+
+Assi di legno di betulla
+
+Assi di legno della giungla
+
+Arbusto
+
+Arbusto di quercia
+
+Arbusto di abete
+
+Arbusto di betulla
+
+Arbusto della giungla
+
+Substrato roccioso
+
+Acqua
+
+Lava
+
+Sabbia
+
+Arenaria
+
+Ghiaia
+
+Minerale d'oro
+
+Minerale di ferro
+
+Minerale carbone
+
+Legno
+
+Legno di quercia
+
+Legno di abete
+
+Legno di betulla
+
+Legno della giungla
+
+Quercia
+
+Abete
+
+Betulla
+
+Foglie
+
+Foglie di quercia
+
+Foglie d'abete
+
+Foglie di betulla
+
+Foglie della giungla
+
+Spugna
+
+Vetro
+
+Lana
+
+Lana nera
+
+Lana rossa
+
+Lana verde
+
+Lana marrone
+
+Lana blu
+
+Lana viola
+
+Lana turchese
+
+Lana grigio chiaro
+
+Lana grigia
+
+Lana rosa
+
+Lana verde lime
+
+Lana gialla
+
+Lana azzurra
+
+Lana magenta
+
+Lana arancione
+
+Lana bianca
+
+Fiore
+
+Rosa
+
+Fungo
+
+Blocco d'oro
+
+Un modo compatto di riporre l'oro.
+
+Un modo compatto di riporre il ferro.
+
+Blocco di ferro
+
+Lastra di pietra
+
+Lastra di pietra
+
+Lastra di arenaria
+
+Lastra di legno
+
+Lastra acciottolata
+
+Lastra di mattoni
+
+Lastra di mattoni di pietra
+
+Lastra di legna di quercia
+
+Lastra di arbusto
+
+Lastra di legno di betulla
+
+Lastra di legno della giungla
+
+Lastra di mattoni del Sottomondo
+
+Mattoni
+
+TNT
+
+Scaffale
+
+Pietra di muschio
+
+Ossidiana
+
+Torcia
+
+Torcia (carbone)
+
+Torcia (antracite)
+
+Fuoco
+
+Generatore di mostri
+
+Scala di legno di quercia
+
+Cassa
+
+Polvere di pietra rossa
+
+Minerale di diamante
+
+Blocco di diamante
+
+Un modo compatto di riporre i diamanti.
+
+Tavolo da lavoro
+
+Coltura
+
+Zolla
+
+Fornace
+
+Cartello
+
+Porta di legno
+
+Scala a pioli
+
+Binari
+
+Binari potenziati
+
+Binari rilevatori
+
+Scala di pietra
+
+Leva
+
+Piastra a pressione
+
+Porta di ferro
+
+Minerale pietra rossa
+
+Torcia pietra rossa
+
+Pulsante
+
+Neve
+
+Ghiaccio
+
+Cactus
+
+Argilla
+
+Canna da zucchero
+
+Jukebox
+
+Recinzione
+
+Zucca
+
+Zucca di halloween
+
+Sottogriglia
+
+Sabbie mobili
+
+Pietra brillante
+
+Portale
+
+Minerale di lapislazzulo
+
+Blocco lapislazzulo
+
+Un modo compatto di riporre i lapislazzuli.
+
+Dispenser
+
+Blocco nota
+
+Torta
+
+Letto
+
+Ragnatela
+
+Erba alta
+
+Cespuglio secco
+
+Diodo
+
+Cassa chiusa
+
+Botola
+
+Lana (qualsiasi colore)
+
+Pistone
+
+Pistone appiccicoso
+
+Blocco Pesciolino d'argento
+
+Mattoni di pietra
+
+Mattoni di pietra coperti di muschio
+
+Mattoni di pietra lesionati
+
+Mattoni di pietra cesellati
+
+Fungo
+
+Fungo
+
+Barre di ferro
+
+Lastra di vetro
+
+Melone
+
+Picciolo di zucca
+
+Picciolo di melone
+
+Rampicanti
+
+Cancello per recinzioni
+
+Scale di mattoni
+
+Scale di mattoni di pietra
+
+Pietra Pesciolino d'argento
+
+Ciottolo Pesciolino d'argento
+
+Mattone di pietra Pesciolino d'argento
+
+Micelio
+
+Ninfea
+
+Mattone del Sottomondo
+
+Recinzione di mattoni del Sottomondo
+
+Scale di mattoni del Sottomondo
+
+Verruca del Sottomondo
+
+Tavolo per incantesimi
+
+Banco di distillazione
+
+Calderone
+
+Portale del Limite
+
+Telaio per portale del Limite
+
+Pietra del Limite
+
+Uovo di drago
+
+Arbusto
+
+Felce
+
+Scala di arenaria
+
+Scale di abete
+
+Scale di legno di betulla
+
+Scala di legno della giungla
+
+Torcia di pietra rossa
+
+Cacao
+
+Teschio
+
+Comandi attuali
+
+Layout
+
+Muoviti/Scatta
+
+Guarda
+
+Pausa
+
+Salta
+
+Salta/Vola su
+
+Inventario
+
+Scorri oggetti in mano
+
+Azione
+
+Usa
+
+Crafting
+
+Posa
+
+Furtività
+
+Muoviti furtivamente/Vola giù
+
+Cambia modalità telecamera
+
+Giocatori/Invito
+
+Movimento (durante il volo)
+
+Layout 1
+
+Layout 2
+
+Layout 3
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+
]]>
+
+{*B*}Premi{*CONTROLLER_VK_A*} per continuare.
+
+{*B*}Premi{*CONTROLLER_VK_A*} per avviare il tutorial.{*B*}
+ Premi{*CONTROLLER_VK_B*} se sei pronto a giocare da solo.
+
+In Minecraft si posizionano blocchi per costruire tutto ciò che vuoi.
+Di notte, i mostri vagano in libertà, quindi costruisci un riparo per tempo.
+
+Usa{*CONTROLLER_ACTION_LOOK*} per guardare su, giù e intorno.
+
+Usa{*CONTROLLER_ACTION_MOVE*} per muoverti.
+
+Per scattare, sposta in avanti {*CONTROLLER_ACTION_MOVE*} due volte rapidamente. Finché tieni premuto {*CONTROLLER_ACTION_MOVE*}, il personaggio continuerà a scattare, a meno che non esaurisca il tempo per lo scatto o il cibo.
+
+Premi{*CONTROLLER_ACTION_JUMP*} per saltare.
+
+Tieni premuto{*CONTROLLER_ACTION_ACTION*} per scavare e abbattere alberi usando la mano o un oggetto. Potresti dover creare un attrezzo per scavare alcuni blocchi...
+
+Tieni premuto{*CONTROLLER_ACTION_ACTION*} per abbattere 4 blocchi di legno (tronchi).{*B*}Quando un blocco si rompe, puoi raccoglierlo avvicinandoti all'oggetto fluttuante che appare, inserendolo così nel tuo inventario.
+
+Premi{*CONTROLLER_ACTION_CRAFTING*} per aprire l'interfaccia Crafting.
+
+Man mano che raccogli e crei oggetti, l'inventario si riempie.{*B*}
+ Premi{*CONTROLLER_ACTION_INVENTORY*} per aprire l'inventario.
+
+Via via che ti sposti, scavi e attacchi i nemici, il livello della barra del cibo diminuisce {*ICON_SHANK_01*}. Scattando e saltando durante uno scatto si consuma molto più cibo che non camminando e saltando normalmente.
+
+Se subisci dei danni, ma nella tua barra del cibo ci sono 9 o più{*ICON_SHANK_01*}, la tua salute si ripristinerà automaticamente. Mangiare farà risalire la tua barra del cibo.
+
+Tenendo in mano un cibo, tieni premuto{*CONTROLLER_ACTION_USE*} per mangiarlo e reintegrare la tua barra del cibo. Se la barra del cibo è piena, non potrai mangiare.
+
+Il livello della tua barra del cibo è sceso e hai perso energia. Mangia la bistecca nel tuo inventario per reintegrare la barra del cibo e riacquistare le forze.{*ICON*}364{*/ICON*}
+
+Il legno ottenuto si può tagliare in assi. Apri l'interfaccia Crafting per crearle.{*PlanksIcon*}
+
+Il crafting può richiedere diverse operazioni. Ora che hai delle assi, puoi creare nuovi oggetti. Crea un tavolo da lavoro.{*CraftingTableIcon*}
+
+Per velocizzare la raccolta di blocchi, puoi costruire attrezzi appositi. Alcuni attrezzi hanno un manico creato con dei bastoni. Crea dei bastoni.{*SticksIcon*}
+
+Usa{*CONTROLLER_ACTION_LEFT_SCROLL*} e{*CONTROLLER_ACTION_RIGHT_SCROLL*} per cambiare l'oggetto che tieni in mano.
+
+Usa{*CONTROLLER_ACTION_USE*} per utilizzare gli oggetti, interagire e collocarli. Gli oggetti collocati possono essere raccolti scavando con l'attrezzo appropriato.
+
+Una volta selezionato il tavolo da lavoro, sposta il puntatore nel punto desiderato e usa{*CONTROLLER_ACTION_USE*} per collocarlo.
+
+Sposta il puntatore sul tavolo da lavoro e premi{*CONTROLLER_ACTION_USE*} per aprirlo.
+
+La pala aiuta a scavare più in fretta i blocchi cedevoli come terra e neve. Raccogliendo materiali, potrai creare attrezzi più robusti e durevoli. Crea una pala di legno.{*WoodenShovelIcon*}
+
+L'ascia ti aiuta a tagliare più in fretta la legna e le tessere di legno. Raccogliendo materiali, potrai creare attrezzi più robusti e durevoli. Crea un'ascia di legno.{*WoodenHatchetIcon*}
+
+La piccozza aiuta a scavare più in fretta i blocchi duri come pietra e minerale. Raccogliendo materiali, potrai creare attrezzi più robusti e durevoli, inoltre potrai scavare anche i materiali più duri. Crea una piccozza di legno.{*WoodenPickaxeIcon*}
+
+Apri il contenitore
+
+
+ La notte arriva in fretta ed è pericoloso restare all'aperto impreparati. Puoi creare armi e armature, ma conviene avere un riparo sicuro.
+
+
+
+ Nelle vicinanze c'è un rifugio di minatori abbandonato che puoi completare entro sera.
+
+
+
+ Dovrai raccogliere le risorse per completare il rifugio. Per muri e tetto si può usare qualsiasi materiale, ma ti converrà creare una porta, delle finestre e un po' di luce.
+
+
+Usa la piccozza per scavare dei blocchi di pietra. I blocchi di pietra producono ciottoli. Con 8 blocchi di ciottoli puoi costruire una fornace. Potresti dover scavare nella terra per raggiungere la pietra: usa la pala.{*StoneIcon*}
+
+Hai abbastanza ciottoli per costruire una fornace. Usa il tavolo da lavoro.
+
+Usa{*CONTROLLER_ACTION_USE*} per collocare la fornace nel mondo, poi aprila.
+
+Usa la fornace per creare l'antracite. Mentre aspetti che sia pronta, che ne dici di raccogliere altri materiali per completare il rifugio?
+
+Usa la fornace per creare del vetro. Mentre aspetti che sia pronto, che ne dici di raccogliere altri materiali per completare il rifugio?
+
+Un buon rifugio ha una porta per entrare e uscire agilmente senza dover ogni volta scavare e sostituire i muri. Crea una porta di legno.{*WoodenDoorIcon*}
+
+Usa{*CONTROLLER_ACTION_USE*} per collocare la porta. Puoi usare{*CONTROLLER_ACTION_USE*} per aprire e chiudere una porta di legno nel mondo.
+
+Di notte è buio, quindi serve della luce per poterci vedere nel rifugio. Crea una torcia usando bastoni e antracite dall'interfaccia Crafting.{*TorchIcon*}
+
+
+ Hai completato la prima parte del tutorial.
+
+
+
+ {*B*}
+ Premi{*CONTROLLER_VK_A*} per continuare il tutorial.{*B*}
+ Premi{*CONTROLLER_VK_B*} se sei pronto a giocare da solo.
+
+
+
+ Questo è il tuo inventario. Mostra gli oggetti che puoi tenere in mano e quelli che trasporti, nonché la tua eventuale armatura.
+
+
+{*B*}
+ Premi{*CONTROLLER_VK_A*} per continuare.{*B*}
+ Premi{*CONTROLLER_VK_B*} se sai già come si usa l'inventario.
+
+
+
+ Usa{*CONTROLLER_MENU_NAVIGATE*} per muovere il puntatore. Usa{*CONTROLLER_VK_A*} per raccogliere un oggetto sotto il puntatore.
+ Se c'è più di un oggetto, verranno raccolti tutti, oppure premi{*CONTROLLER_VK_X*} per raccoglierne soltanto la metà.
+
+
+
+ Sposta l'oggetto in un'altra casella dell'inventario usando il puntatore e collocalo con{*CONTROLLER_VK_A*}.
+ Se il puntatore seleziona più oggetti, usa{*CONTROLLER_VK_A*} per collocarli tutti o{*CONTROLLER_VK_X*} per collocarne solo uno.
+
+
+
+ Sposta il puntatore fuori dal bordo dell'interfaccia mentre è selezionato un oggetto per posarlo.
+
+
+
+ Se vuoi maggiori informazioni su un oggetto, spostaci sopra il puntatore e premi{*CONTROLLER_VK_RT*}.
+
+
+
+ Ora premi{*CONTROLLER_VK_B*} per uscire dall'inventario.
+
+
+
+ Questo è l'inventario della modalità Creativa. Mostra gli oggetti che hai in mano e tutti quelli a tua disposizione.
+
+
+{*B*}
+ Premi{*CONTROLLER_VK_A*} per continuare.{*B*}
+ Premi{*CONTROLLER_VK_B*} se sai già come si usa l'inventario della modalità Creativa.
+
+
+
+ Usa{*CONTROLLER_MENU_NAVIGATE*} per muovere il puntatore.
+ Quando sei nell'elenco degli oggetti, usa{*CONTROLLER_VK_A*} per selezionare l'oggetto sotto il puntatore e{*CONTROLLER_VK_Y*} per prenderne la quantità massima.
+
+
+
+ Il puntatore si sposterà automaticamente su uno spazio nella riga per l'uso. Posiziona l'oggetto usando{*CONTROLLER_VK_A*}. Una volta completata questa operazione, il puntatore tornerà all'elenco degli oggetti e potrai selezionarne un altro.
+
+
+
+ Sposta il puntatore fuori dal bordo dell'interfaccia mentre è selezionato un oggetto per posizionarlo nel mondo. Per eliminare tutti gli oggetti nella barra di scelta rapida, premi{*CONTROLLER_VK_X*}.
+
+
+
+ Scorri le schede dei tipi di oggetti usando{*CONTROLLER_VK_LB*} e{*CONTROLLER_VK_RB*} per selezionare il tipo di oggetto che vuoi prendere.
+
+
+
+ Se vuoi maggiori informazioni su un oggetto, spostaci sopra il puntatore e premi{*CONTROLLER_VK_RT*}.
+
+
+
+ Ora premi{*CONTROLLER_VK_B*} per uscire dall'inventario della modalità Creativa.
+
+
+
+ Questa è l'interfaccia Crafting, che ti consente di combinare gli oggetti raccolti per crearne di nuovi.
+
+
+{*B*}
+ Premi {*CONTROLLER_VK_A*}per continuare.{*B*}
+ Premi{*CONTROLLER_VK_B*} se sai già come funziona il crafting.
+
+
+{*B*}
+ Premi{*CONTROLLER_VK_X*} per visualizzare la descrizione dell'oggetto.
+
+
+{*B*}
+ Premi{*CONTROLLER_VK_X*} per visualizzare gli ingredienti necessari per creare l'oggetto corrente.
+
+
+{*B*}
+ Premi{*CONTROLLER_VK_X*} per visualizzare di nuovo l'inventario.
+
+
+
+ Scorri le schede dei tipi di oggetti usando{*CONTROLLER_VK_LB*} e{*CONTROLLER_VK_RB*} per selezionare il tipo di oggetto, poi usa{*CONTROLLER_MENU_NAVIGATE*} per scegliere l'oggetto da creare.
+
+
+
+ L'area crafting mostra gli elementi richiesti per creare il nuovo oggetto. Premi{*CONTROLLER_VK_A*} per creare l'oggetto e inserirlo nell'inventario.
+
+
+
+ Il tavolo da lavoro consente di creare una selezione di oggetti più vasta. Lavorare al tavolo funziona come il normale crafting, ma avrai un'area di lavoro più ampia, che consente una maggiore combinazione di ingredienti.
+
+
+
+ La parte in basso a destra dell'interfaccia Crafting mostra il tuo inventario. Qui puoi anche vedere una descrizione dell'oggetto selezionato e gli ingredienti necessari per crearlo.
+
+
+
+ Ora è visualizzata la descrizione dell'oggetto selezionato, che ti dà un'idea del suo possibile utilizzo.
+
+
+
+ Ora è visualizzato l'elenco degli ingredienti necessari per creare l'oggetto selezionato.
+
+
+Il legno ottenuto si può tagliare in assi. Seleziona l'icona delle assi e premi{*CONTROLLER_VK_A*} per crearle.{*PlanksIcon*}
+
+
+ Ora che hai costruito un tavolo da lavoro, collocalo nel mondo per creare una selezione di oggetti più vasta.{*B*}
+ Ora premi{*CONTROLLER_VK_B*} per uscire dall'interfaccia Crafting.
+
+
+
+ Premi{*CONTROLLER_VK_LB*} e{*CONTROLLER_VK_RB*} per cambiare il tipo di oggetto da creare. Seleziona il gruppo attrezzi.{*ToolsIcon*}
+
+
+
+ Premi{*CONTROLLER_VK_LB*} e{*CONTROLLER_VK_RB*} per cambiare il tipo di oggetto da creare. Seleziona il gruppo strutture.{*StructuresIcon*}
+
+
+
+ Usa{*CONTROLLER_MENU_NAVIGATE*} per cambiare l'oggetto da creare. Alcuni oggetti esistono in varie versioni, a seconda dei materiali impiegati. Seleziona la pala di legno.{*WoodenShovelIcon*}
+
+
+
+ Il crafting può richiedere diverse operazioni. Ora che hai delle assi, puoi creare nuovi oggetti. Usa{*CONTROLLER_MENU_NAVIGATE*} per cambiare l'oggetto da creare. Seleziona il tavolo da lavoro.{*CraftingTableIcon*}
+
+
+
+ Grazie agli attrezzi che hai creato, puoi partire alla grande e raccogliere diversi materiali in modo più efficiente.{*B*}
+ Ora premi{*CONTROLLER_VK_B*} per uscire dall'interfaccia Crafting.
+
+
+
+ Alcuni oggetti non possono essere creati con il tavolo da lavoro, ma è necessaria una fornace. Ora crea una fornace.{*FurnaceIcon*}
+
+
+
+ Colloca la fornace creata nel mondo. Ti conviene metterla nel tuo rifugio.{*B*}
+ Ora premi{*CONTROLLER_VK_B*} per uscire dall'interfaccia Crafting.
+
+
+
+ Questa è l'interfaccia fornace, dove puoi modificare gli oggetti attraverso il fuoco. Per esempio, puoi trasformare il minerale di ferro in lingotti di ferro.
+
+
+{*B*}
+ Premi{*CONTROLLER_VK_A*} per continuare.{*B*}
+ Premi{*CONTROLLER_VK_B*} se sai già come si usa la fornace.
+
+
+
+ Dovrai inserire del combustibile nella parte inferiore della fornace e l'oggetto da modificare nella parte superiore. A questo punto, la fornace si accenderà e si metterà in funzione, fornendo il risultato nella parte destra.
+
+
+
+ Puoi usare molti oggetti di legno come combustibile, ma ciascuno brucia per un tempo diverso. Puoi anche scoprire altri oggetti nel mondo da usare come combustibile.
+
+
+
+ Gli oggetti nell'area di produzione possono essere trasferiti nell'inventario. Sperimenta con diversi ingredienti e vedi cosa riesci a creare.
+
+
+
+ Usando il legno come ingrediente, puoi produrre l'antracite. Inserisci del combustibile nella fornace e del legno nello slot ingrediente. La fornace può richiedere tempo per creare l'antracite, quindi sentiti libero di fare altro e di tornare in seguito a controllare l'avanzamento.
+
+
+
+ L'antracite può essere usata come combustibile o combinata con un bastone per creare una torcia.
+
+
+
+ Inserisci la sabbia nello slot ingrediente per produrre del vetro. Crea dei blocchi di vetro da usare come finestre nel tuo rifugio.
+
+
+
+ Questa è l'interfaccia di distillazione. Puoi usarla per creare pozioni di vario tipo.
+
+
+{*B*}
+ Premi{*CONTROLLER_VK_A*} per continuare.{*B*}
+ Premi{*CONTROLLER_VK_B*} se sai già come si usa il Banco di distillazione.
+
+
+
+ Per distillare una pozione, posiziona un ingrediente nello slot superiore e una pozione o una Bottiglia d'acqua negli slot inferiori. Puoi preparare fino a tre pozioni contemporaneamente. Una volta inserita una combinazione di ingredienti corretta, il processo di distillazione si avvierà e, dopo un breve periodo di tempo, potrai ritirare la tua pozione.
+
+
+
+ Il punto di partenza di tutte le pozioni è una Bottiglia d'acqua. Quasi tutte le pozioni vengono preparate utilizzando prima una Verruca del Sottomondo per creare una Maldestra pozione e aggiungendo poi almeno un altro ingrediente per ottenere il prodotto finale.
+
+
+
+ È possibile modificare gli effetti di una pozione aggiungendo altri ingredienti. La Polvere di pietra rossa, ad esempio, rende più duraturi gli effetti della pozione, mentre la Polvere di pietra brillante li rende più potenti.
+
+
+
+ L'Occhio di ragno fermentato inquina la pozione e può farle acquisire effetti diametralmente opposti, mentre la Polvere da sparo la trasforma in una Bomba pozione che, una volta lanciata, diffonderà il suo effetto nella zona colpita.
+
+
+
+ Crea una Pozione di Resistenza al fuoco aggiungendo prima una Verruca del Sottomondo a una Bottiglia d'acqua e completando poi la pozione con della Crema di magma.
+
+
+
+ Ora premi{*CONTROLLER_VK_B*} per uscire dall'interfaccia di distillazione.
+
+
+
+ In quest'area troverai un Banco di distillazione, un Calderone e una cassa pieni di oggetti da utilizzare per la preparazione di pozioni.
+
+
+{*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sulla distillazione di pozioni.{*B*}
+ Premi{*CONTROLLER_VK_B*} se non hai bisogno di spiegazioni al riguardo.
+
+
+
+ Prima di poter distillare una pozione, devi creare una Bottiglia d'acqua. Prendi una Bottiglia di vetro dalla cassa.
+
+
+
+ Puoi riempire una Bottiglia di vetro attingendo acqua da un Calderone che ne contenga o da un blocco d'acqua. Riempi la tua bottiglia posizionando il cursore su una fonte d'acqua e premendo{*CONTROLLER_ACTION_USE*}.
+
+
+
+ Se il Calderone si svuota, puoi riempirlo con un Secchio d'acqua.
+
+
+
+ Usa il Banco di distillazione per creare una Pozione di Resistenza al fuoco. Ti serviranno una Bottiglia d'acqua, una Verruca del Sottomondo e Crema di magma.
+
+
+
+ Prendi una pozione e tieni premuto{*CONTROLLER_ACTION_USE*} per usarla. Le pozioni normali vengono ingerite e producono i propri effetti sul giocatore stesso; le pozioni Area, invece, vengono lanciate e il loro effetto si applica alle creature che si trovano nella zona dell'impatto.
+ È possibile creare delle Bombe pozione aggiungendo polvere da sparo a una pozione normale.
+
+
+
+ Usa la Pozione di Resistenza al fuoco su te stesso.
+
+
+
+ Ora che sei resistente al fuoco e alla lava, approfittane per raggiungere dei luoghi che prima ti risultavano inaccessibili.
+
+
+
+ Questa è l'interfaccia di incantamento. Puoi usarla per incantare armi, armature e alcuni attrezzi.
+
+
+{*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sull'interfaccia per gli incantesimi.{*B*}
+ Premi{*CONTROLLER_VK_B*} se non hai bisogno di spiegazioni al riguardo.
+
+
+
+ Per applicare un incantesimo a un oggetto, posizionalo nello slot di incantamento. È possibile incantare armi, armature e alcuni attrezzi per dotarli di proprietà speciali, come una maggiore resistenza ai danni o la capacità di raccogliere più oggetti quando si scava un blocco.
+
+
+
+ Quando un oggetto viene posizionato nello slot di incantamento, i pulsanti a destra mostreranno una selezione casuale di incantesimi.
+
+
+
+ La cifra sul pulsante indica il costo in punti Esperienza dell'incantesimo. Se non hai un livello di Esperienza sufficiente, il pulsante non sarà selezionabile.
+
+
+
+ Seleziona un incantesimo e premi{*CONTROLLER_VK_A*} per applicarlo all'oggetto. Il costo dell'incantesimo verrà detratto dai tuoi punti Esperienza.
+
+
+
+ Gli incantesimi sono casuali, ma alcuni dei più potenti sono disponibili solo quando hai un livello elevato di Esperienza e intorno al Tavolo per incantesimi ci sono molti scaffali che ne aumentano la potenza.
+
+
+
+ In quest'area troverai un Tavolo per incantesimi e alcuni altri oggetti che potrai utilizzare per familiarizzarti con questa nuova funzionalità.
+
+
+{*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sugli incantesimi.{*B*}
+ Premi{*CONTROLLER_VK_B*} se non hai bisogno di spiegazioni al riguardo.
+
+
+
+ Utilizzando un Tavolo per incantesimi è possibile incantare armi, armature e alcuni attrezzi per dotarli di proprietà speciali, come una maggiore resistenza ai danni o la capacità di raccogliere più oggetti quando si scava un blocco.
+
+
+
+ Posizionare degli scaffali intorno al Tavolo per incantesimi ne aumenta la potenza e consente di accedere agli incantesimi di livello più alto.
+
+
+
+ Gli incantesimi richiedono un certo livello di Esperienza; puoi far salire di livello la tua Esperienza raccogliendo le sfere di Esperienza che vengono abbandonate da mostri e animali uccisi, estraendo metalli, facendo riprodurre animali, pescando e fondendo/cuocendo alcuni oggetti in una fornace.
+
+
+
+ Puoi guadagnare Esperienza anche usando una Bottiglia magica. Quando viene lanciata, la Bottiglia magica rilascia attorno a sé Sfere di Esperienza che possono essere raccolte.
+
+
+
+ Le casse che troverai in quest'area contengono oggetti già incantati, Bottiglie magiche e alcuni oggetti da incantare per acquisire dimestichezza con il Tavolo per incantesimi.
+
+
+
+ Ora viaggi in un carrello da miniera. Per smontare, punta il cursore verso il carrello e premi{*CONTROLLER_ACTION_USE*}.{*MinecartIcon*}
+
+
+{*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sul carrello da miniera.{*B*}
+ Premi{*CONTROLLER_VK_B*} se sai già come funziona il carrello da miniera.
+
+
+
+ Il carrello da miniera viaggia sui binari. Puoi creare un carrello potenziato usando una fornace e un carrello da miniera contenente una cassa.
+ {*RailIcon*}
+
+
+
+ Puoi anche creare binari potenziati, che traggono energia dai circuiti e dalle torce di pietre rosse per far accelerare il carrello. Potrai quindi collegarli a interruttori, leve e piastre a pressione per realizzare sistemi complessi.
+ {*PoweredRailIcon*}
+
+
+
+ Ora navighi su una barca. Per scendere, punta il cursore verso la barca e premi{*CONTROLLER_ACTION_USE*}.{*BoatIcon*}
+
+
+
+ {*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sulla barca.{*B*}
+ Premi{*CONTROLLER_VK_B*} se sai già come funziona la barca.
+
+
+
+ La barca consente di viaggiare velocemente sull'acqua. Per virare, usa{*CONTROLLER_ACTION_MOVE*} e{*CONTROLLER_ACTION_LOOK*}.
+ {*BoatIcon*}
+
+
+
+ Ora stai utilizzando la canna da pesca. Premi{*CONTROLLER_ACTION_USE*} per usarla.{*FishingRodIcon*}
+
+
+
+ {*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sulla pesca.{*B*}
+ Premi{*CONTROLLER_VK_B*} se sai già come funziona la pesca.
+
+
+
+ Premi{*CONTROLLER_ACTION_USE*} per lanciare la lenza e iniziare a pescare. Premi di nuovo{*CONTROLLER_ACTION_USE*} per tirare la lenza.
+ {*FishingRodIcon*}
+
+
+
+ Se aspetti che il galleggiante affondi sotto la superficie dell'acqua prima di tirare, potresti prendere un pesce. Il pesce si può mangiare crudo o cucinato nella fornace per reintegrare la salute.
+ {*FishIcon*}
+
+
+
+ Come nel caso di molti altri attrezzi, la canna da pesca ha un numero di utilizzi prestabilito, non limitato alla pesca. Sperimenta e scopri cos'altro puoi prendere o attivare...
+ {*FishingRodIcon*}
+
+
+
+ Questo è un letto. Premi{*CONTROLLER_ACTION_USE*} mentre punti verso di esso di notte per dormire e risvegliarti il mattino successivo.{*ICON*}355{*/ICON*}
+
+
+
+ {*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sul letto.{*B*}
+ Premi{*CONTROLLER_VK_B*} se sai già come funziona il letto.
+
+
+
+ Il letto dovrebbe trovarsi in un punto sicuro e ben illuminato, in modo che i mostri non ti sveglino nel cuore della notte. Una volta usato un letto, se dovessi morire, tornerai in quel punto.
+ {*ICON*}355{*/ICON*}
+
+
+
+ Se ci sono altri giocatori nel gioco, per dormire devono essere tutti a letto nello stesso momento.
+ {*ICON*}355{*/ICON*}
+
+
+
+ In quest'area ci sono dei semplici circuiti con pietre rosse e pistoni, oltre a un forziere contenente altri oggetti per ampliare i circuiti.
+
+
+
+ {*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sui circuiti con pietre rosse e pistoni.{*B*}
+ Premi{*CONTROLLER_VK_B*} se sai già come funzionano.
+
+
+
+ Leve, pulsanti, piastre a pressione e torce a pietre rosse alimentano i circuiti collegandoli direttamente all'oggetto da attivare o connettendoli con la polvere di pietra rossa.
+
+
+
+ Posizione e direzione delle fonti di alimentazione modificano il loro effetto sui blocchi circostanti. Per esempio, una torcia a pietre rosse sul lato di un blocco può essere spenta se il blocco è alimentato da un'altra fonte.
+
+
+
+ La polvere di pietra rossa si raccoglie estraendo il minerale di pietra rossa con una piccozza di ferro, diamante o oro. Puoi usarla per alimentare fino a 15 blocchi e può salire o scendere di un blocco in altezza.
+ {*ICON*}331{*/ICON*}
+
+
+
+ I ripetitori a pietre rosse si usano per aumentare la distanza di alimentazione o per inserire un ritardo in un circuito.
+ {*ICON*}356{*/ICON*}
+
+
+
+ Quando è alimentato, un pistone si estende, spingendo fino a 12 blocchi. Quando si ritira, un pistone appiccicoso può tirare un blocco di quasi tutti i tipi.
+ {*ICON*}33{*/ICON*}
+
+
+
+ Nel forziere in quest'area ci sono dei componenti per creare dei circuiti con i pistoni. Prova a usare o completare i circuiti in quest'area, oppure creane uno personalizzato. Troverai altri esempi al di fuori dell'area del tutorial.
+
+
+
+ In quest'area c'è un Portale per il Sottomondo!
+
+
+
+ {*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sui Portali e sul Sottomondo.{*B*}
+ Premi{*CONTROLLER_VK_B*} se sai già come funzionano i Portali e il Sottomondo.
+
+
+
+ I Portali si creano posizionando blocchi di ossidiana in una struttura larga quattro blocchi e alta cinque. I blocchi d'angolo non sono necessari.
+
+
+
+ Per attivare un Sottoportale, dai fuoco ai blocchi di ossidiana dentro la struttura, usando acciarino e pietra focaia. I Portali possono essere disattivati se la struttura si rompe, se c'è un'esplosione nelle vicinanze o se del liquido vi scorre dentro.
+
+
+
+ Per usare un Sottoportale, mettiti in piedi all'interno. Lo schermo diventerà viola e sentirai un suono. Dopo qualche secondo sarai trasportato in un'altra dimensione.
+
+
+
+ Il Sottomondo può essere pericoloso e pieno di lava, ma può essere utile per raccogliere Sottogriglia, che una volta accesa brucia all'infinito, e Pietra brillante, che produce luce.
+
+
+
+ Si può usare il Sottomondo per viaggiare velocemente nel Sopramondo: una distanza di un blocco nel Sottomondo equivale a 3 blocchi nel Sopramondo.
+
+
+
+ Ora sei in modalità Creativa.
+
+
+
+ {*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sulla modalità Creativa.{*B*}
+ Premi{*CONTROLLER_VK_B*} se sai già come funziona la modalità Creativa.
+
+
+In modalità Creativa avrai a disposizione una quantità infinita di oggetti e blocchi, potrai distruggere blocchi con un clic, senza usare alcun attrezzo, sarai invulnerabile e potrai volare.
+
+In modalità Creativa, premi due volte rapidamente{*CONTROLLER_ACTION_JUMP*} per volare. Ripeti l'azione per interrompere il volo. Per volare più rapidamente, sposta in avanti{*CONTROLLER_ACTION_MOVE*} due volte in rapida successione mentre stai volando.
+Durante il volo, puoi tenere premuto{*CONTROLLER_ACTION_JUMP*} per salire e{*CONTROLLER_ACTION_SNEAK*} per scendere, oppure utilizzare il tasto D per salire, scendere e spostarti lateralmente.
+
+Premi{*CONTROLLER_ACTION_CRAFTING*} per aprire l'interfaccia dell'inventario in modalità Creativa.
+
+Raggiungi l'altra estremità di questo fosso per continuare.
+
+Hai completato il tutorial della modalità Creativa.
+
+
+ In quest'area è stata allestita una fattoria. Coltivare la terra ti permette di avere una fonte rinnovabile di cibo e altri oggetti.
+
+
+
+ {*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sulla coltivazione.{*B*}
+ Premi{*CONTROLLER_VK_B*} se sai già come funziona.
+
+
+Grano, Zucche e Meloni crescono a partire dai semi. I Semi di grano si ottengono tagliando l'Erba alta o raccogliendo Grano maturo, mentre quelli di Zucca e di Melone si ricavano dai rispettivi ortaggi.
+
+Prima di poter procedere alla semina, devi lavorare i blocchi di terra con la Zappa per trasformarli in Zolle. Una fonte d'acqua nei pressi manterrà umide le zolle, farà crescere i raccolti più rapidamente e illuminerà l'area.
+
+Il Grano attraversa vari stadi prima di giungere a maturazione. È pronto ad essere raccolto quando ha assunto una tinta più scura.{*ICON*}59:7{*/ICON*}
+
+Zucche e Meloni richiedono un blocco libero accanto a quello in cui sono stati piantati i semi in modo che il frutto abbia spazio per crescere una volta che il picciolo è giunto a maturazione.
+
+La Canna da zucchero deve essere piantata su un blocco di erba, terra o sabbia attiguo a un blocco d'acqua. Tagliare un blocco di Canna da zucchero fa cadere anche tutti i blocchi che lo sovrastano.{*ICON*}83{*/ICON*}
+
+I Cactus si piantano nella sabbia e crescono fino a raggiungere un'altezza di tre blocchi. Come per la Canna da zucchero, distruggere il blocco inferiore ti permetterà di raccogliere anche i blocchi che lo sovrastano.{*ICON*}81{*/ICON*}
+
+I Funghi vanno piantati in un'area scarsamente illuminata. Crescendo, si allargano verso i blocchi vicini, purché siano anch'essi in penombra.{*ICON*}39{*/ICON*}
+
+La Farina d'ossa può essere usata per portare a maturità i raccolti o per trasformare i Funghi in Funghi giganti.{*ICON*}351:15{*/ICON*}
+
+Hai completato il tutorial sulla coltivazione.
+
+
+ In quest'area troverai alcuni animali rinchiusi in un recinto. Se li fai riprodurre, gli animali metteranno al mondo delle versioni in miniatura di se stessi.
+
+
+
+ {*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sugli animali e sulla riproduzione.{*B*}
+ Premi{*CONTROLLER_VK_B*} se non hai bisogno di spiegazioni al riguardo.
+
+
+Per far riprodurre un animale, devi prima farlo entrare in "modalità Amore" nutrendolo con l'alimento adatto.
+
+Dai grano a una mucca, a un muccafungo o a una pecora, carote a un maiale, semi di grano o verruche del Sottomondo a una gallina, e qualsiasi tipo di carne a un lupo, e le creature cominceranno a cercare nei dintorni un altro animale della stessa specie che sia a sua volta in modalità Amore.
+
+Quando l'avrà trovato, i due si scambieranno effusioni per qualche secondo e poi apparirà un cucciolo. Il piccolo seguirà i genitori per un certo periodo di tempo prima di diventare adulto.
+
+Devono passare circa cinque minuti prima che un animale possa entrare nuovamente in modalità Amore.
+
+Alcuni animali ti seguiranno quando hai in mano il loro cibo. In questo modo ti sarà più semplice raggrupparli per farli riprodurre.{*ICON*}296{*/ICON*}
+
+
+ I lupi selvatici possono essere ammansiti dando loro degli ossi. Una volta ammansiti, intorno ai lupi compariranno dei cuoricini. I lupi ammansiti seguono il giocatore e lo difendono, a meno che non sia stato loro ordinato di stare seduti.
+
+
+Hai completato il tutorial sugli animali e sulla riproduzione.
+
+
+ In questa area ci sono zucche e blocchi per creare un golem di neve e uno di ferro.
+
+
+
+ {*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sui golem.{*B*}
+ Premi{*CONTROLLER_VK_B*} se sai già tutto sui golem.
+
+
+I golem si creano sistemando una zucca in cima a una pila di blocchi.
+
+I golem di neve si creano con due blocchi di neve, uno sull'altro, con in cima una zucca. I golem di neve scagliano palle di neve contro i nemici.
+
+I golem di ferro si creano con quattro blocchi di ferro, come mostrato, con una zucca sopra il blocco centrale. I golem di ferro attaccano i tuoi nemici.
+
+I golem di ferro compaiono per aiutare i villaggi e ti attaccheranno se proverai ad attaccare un abitante.
+
+Non puoi abbandonare l'area finché non avrai completato il tutorial.
+
+Attrezzi diversi sono indicati per materiali diversi. Usa la pala per scavare materiali cedevoli come terra e sabbia.
+
+Attrezzi diversi sono indicati per materiali diversi. Usa l'ascia per abbattere gli alberi.
+
+Attrezzi diversi sono indicati per materiali diversi. Usa la piccozza per scavare pietra e minerali. Per ottenere risorse da alcuni blocchi, potrebbe rendersi necessario costruire piccozze con materiali migliori.
+
+Alcuni attrezzi sono perfetti per attaccare i nemici. La spada è uno di questi.
+
+Suggerimento: tieni premuto {*CONTROLLER_ACTION_ACTION*}per scavare e abbattere alberi usando la mano o un oggetto. Potresti dover creare un attrezzo per scavare alcuni blocchi...
+
+L'attrezzo che stai usando si è danneggiato. Ogni volta che usi un attrezzo, esso si danneggia e, alla fine, si rompe. La barra colorata sotto l'oggetto nell'inventario mostra lo stato corrente.
+
+Tieni premuto{*CONTROLLER_ACTION_JUMP*} per nuotare verso l'alto.
+
+In quest'area c'è un carrello da miniera sui binari. Per salirci, punta il cursore verso i binari e premi{*CONTROLLER_ACTION_USE*}. Usa{*CONTROLLER_ACTION_USE*} sul pulsante per far muovere il carrello.
+
+Nella cassa accanto al fiume c'è una barca. Per usarla, punta il cursore verso l'acqua e premi{*CONTROLLER_ACTION_USE*}. Usa{*CONTROLLER_ACTION_USE*} mentre punti verso la barca per salirci.
+
+Nella cassa accanto al laghetto c'è una canna da pesca. Prendi la canna da pesca dalla cassa e selezionala come oggetto in mano per usarla.
+
+Questo pistone con un meccanismo più avanzato crea un ponte auto-riparante! Premi il pulsante per attivarlo, poi scopri in che modo i componenti interagiscono tra loro per saperne di più.
+
+Se sposti il puntatore fuori dall'interfaccia mentre trasporti un oggetto, puoi posarlo.
+
+Non hai tutti gli ingredienti necessari per creare questo oggetto. La casella in basso a sinistra mostra gli ingredienti necessari.
+
+
+ Congratulazioni, hai completato il tutorial. Il tempo nel gioco scorre normalmente, e tra poco sarà notte e i mostri usciranno allo scoperto! Completa il rifugio!
+
+
+{*EXIT_PICTURE*} Quando vorrai proseguire l'esplorazione, vicino al rifugio di minatori, in quest'area, troverai una scala che conduce a un piccolo castello.
+
+Promemoria:
+
+
]]>
+
+Nell'ultima versione del gioco, sono state aggiunte nuove funzionalità, tra cui nuove aree nel mondo tutorial.
+
+{*B*}Premi{*CONTROLLER_VK_A*} per giocare normalmente il tutorial.{*B*}
+ Premi{*CONTROLLER_VK_B*} per saltare il tutorial principale.
+
+In quest'area, troverai delle zone che ti aiuteranno a scoprire la pesca, le barche, i pistoni e le pietre rosse.
+
+Fuori da quest'area troverai esempi di edifici, coltivazioni, carrelli da miniera e binari, oltre a incantesimi, pozioni da distillare, scambi da effettuare, metalli da lavorare e molto altro ancora!
+
+
+ La tua barra del cibo è scesa a un livello troppo basso e non potrai più recuperare energia.
+
+
+
+ {*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sulla barra del cibo e sull'alimentazione.{*B*}
+ Premi{*CONTROLLER_VK_B*} se sai già come funzionano la barra del cibo e l'alimentazione.
+
+
+Seleziona
+
+Usa
+
+Indietro
+
+Esci
+
+Annulla
+
+Annulla accesso
+
+Seleziona periferica
+
+Cambia periferica
+
+Aggiorna elenco partite
+
+Giochi Party
+
+Tutti i giochi
+
+Cambia gruppo
+
+Mostra inventario
+
+Mostra descrizione
+
+Mostra ingredienti
+
+Crafting
+
+Crea
+
+Prendi/Colloca
+
+Prendi
+
+Prendi tutto
+
+Prendi metà
+
+Colloca
+
+Colloca tutti
+
+Colloca uno
+
+Posa
+
+Posa tutti
+
+Posa uno
+
+Scambia
+
+Spost. veloce
+
+Elimina scelta rapida
+
+Cos'è?
+
+Condividi su Facebook
+
+Cambia filtro
+
+Scheda giocatore
+
+Visualizza profilo giocatore
+
+Invia richiesta amico
+
+Pagina giù
+
+Pagina su
+
+Avanti
+
+Indietro
+
+Espelli giocatore
+
+Tingi
+
+Scava
+
+Nutri
+
+Addomestica
+
+Cura
+
+Siediti
+
+Seguimi
+
+Espelli
+
+Svuota
+
+Sella
+
+Colloca
+
+Colpisci
+
+Mungi
+
+Raccogli
+
+Mangia
+
+Dormi
+
+Svegliati
+
+Suona
+
+Cavalca
+
+Naviga
+
+Coltiva
+
+Nuota su
+
+Apri
+
+Cambia tonalità
+
+Fai esplodere
+
+Leggi
+
+Appendi
+
+Lancia
+
+Pianta
+
+Ara
+
+Mieti
+
+Continua
+
+Sblocca gioco completo
+
+Elimina salvataggio
+
+Elimina
+
+Opzioni
+
+Invito Party Xbox Live
+
+Invita amici
+
+Accetta
+
+Tosa
+
+Escludi livello
+
+Seleziona skin
+
+Accendi
+
+Naviga
+
+Installa versione completa
+
+Installa versione di prova
+
+Installa
+
+Reinstalla
+
+Opzioni di salvataggio
+
+Esegui comando
+
+Creativa
+
+Sposta ingrediente
+
+Sposta combustibile
+
+Sposta attrezzo
+
+Sposta armatura
+
+Sposta arma
+
+Equipaggia
+
+Tendi
+
+Rilascia
+
+Privilegi
+
+Blocco
+
+Pagina su
+
+Pagina giù
+
+Modalità Amore
+
+Bevi
+
+Ruota
+
+Nascondi
+
+Carica salvataggio per Xbox One
+
+Svuota tutti gli slot
+
+Carica salvataggio per Xbox One
+
+OK
+
+Annulla
+
+Negozio di Minecraft
+
+Vuoi davvero uscire dalla partita attuale e accedere a quella nuova? Tutti i progressi non salvati andranno persi.
+
+Esci dal gioco
+
+Salva gioco
+
+Esci senza salvare
+
+Vuoi davvero sovrascrivere qualsiasi salvataggio precedente di questo mondo con la versione del mondo corrente?
+
+Vuoi davvero uscire senza salvare? Perderai tutti i progressi in questo mondo!
+
+Avvia gioco
+
+Se crei, carichi o salvi un mondo in modalità Creativa, gli obiettivi e gli aggiornamenti della classifica saranno disabilitati e lo resteranno anche se quel mondo verrà successivamente caricato in modalità Sopravvivenza. Vuoi davvero continuare?
+
+Questo mondo è stato precedentemente salvato in modalità Creativa. Gli obiettivi e gli aggiornamenti della classifica sono disabilitati. Vuoi davvero continuare?
+
+Questo mondo è stato precedentemente salvato in modalità Creativa. Gli obiettivi e gli aggiornamenti della classifica sono disabilitati.
+
+Se crei, carichi o salvi un mondo con l'opzione Privilegi dell'host abilitata, gli obiettivi e gli aggiornamenti della classifica saranno disabilitati e lo resteranno anche se quel mondo verrà successivamente caricato con l'opzione disattivata. Vuoi davvero continuare?
+
+Salvataggio dannegg.
+
+Questo salvataggio è danneggiato. Vuoi eliminarlo?
+
+Vuoi davvero tornare al menu principale e disconnettere tutti i giocatori? Tutti i progressi non salvati andranno persi.
+
+Esci e salva
+
+Esci senza salvare
+
+Vuoi davvero tornare al menu principale? Tutti i progressi non salvati andranno persi.
+
+Vuoi davvero tornare al menu principale? I progressi andranno persi!
+
+Crea nuovo mondo
+
+Avvia tutorial
+
+Tutorial
+
+Nomina il tuo mondo
+
+Immetti un nome per il tuo mondo
+
+Pianta il seme per la generazione del tuo mondo
+
+Carica mondo salvato
+
+Premi START per accedere alla partita
+
+Uscita dal gioco
+
+Si è verificato un errore. Tornerai al menu principale.
+
+Connessione non riuscita
+
+Connessione persa
+
+Connessione al server persa. Tornerai al menu principale.
+
+Connessione a Xbox Live persa. Tornerai al menu principale.
+
+Connessione a Xbox Live persa.
+
+Disconnesso dal server
+
+Sei stato espulso dalla partita
+
+Sei stato espulso dalla partita per comportamento scorretto
+
+Timeout del tentativo di connessione
+
+Server pieno
+
+L'host è uscito dal gioco.
+
+Non puoi accedere a questa partita perché non hai amici tra i partecipanti.
+
+Non puoi accedere a questa partita perché sei stato espulso dall'host in precedenza.
+
+Non puoi partecipare alla partita perché il giocatore a cui vuoi unirti ha una versione più vecchia del gioco.
+
+Non puoi partecipare alla partita perché il giocatore a cui vuoi unirti a una versione più nuova del gioco.
+
+Nuovo mondo
+
+Premio sbloccato!
+
+Evviva, hai ottenuto un'immagine del giocatore con Steve di Minecraft!
+
+Evviva, hai ottenuto un'immagine del giocatore con un creeper!
+
+Evviva, hai ottenuto un oggetto avatar: una t-shirt Minecraft: Xbox 360 Edition!
+Vai alla dashboard per farla indossare al tuo avatar.
+
+Evviva, hai ottenuto un oggetto avatar: un orologio Minecraft: Xbox 360 Edition!
+Vai alla dashboard per farlo indossare al tuo avatar.
+
+Evviva, hai ottenuto un oggetto avatar: un cappellino creeper!
+Vai alla dashboard per farlo indossare al tuo avatar.
+
+Evviva, hai ottenuto il tema di Minecraft: Xbox 360 Edition!
+Vai alla dashboard per selezionarlo.
+
+Sblocca gioco completo
+
+Stai giocando con la versione di prova, ma serve la versione completa per salvare i progressi.
+Vuoi sbloccare il gioco completo ora?
+
+Questa è la versione di prova di Minecraft: Xbox 360 Edition. Se avessi il gioco completo, avresti sbloccato un obiettivo!
+Vuoi sbloccare il gioco completo?
+
+Questa è la versione di prova di Minecraft: Xbox 360 Edition. Se avessi il gioco completo, avresti ottenuto un premio avatar!
+Vuoi sbloccare il gioco completo?
+
+Questa è la versione di prova di Minecraft: Xbox 360 Edition. Se avessi il gioco completo, avresti ottenuto un'immagine del giocatore!
+Vuoi sbloccare il gioco completo?
+
+Questa è la versione di prova di Minecraft: Xbox 360 Edition. Se avessi il gioco completo, avresti ottenuto un tema!
+Vuoi sbloccare il gioco completo?
+
+Questa è la versione di prova di Minecraft: Xbox 360 Edition. Per accettare questo invito è necessario il gioco completo.
+Vuoi sbloccare il gioco completo?
+
+I giocatori ospiti non possono sbloccare il gioco completo. Effettua l'accesso con un ID utente di Xbox Live.
+
+Attendi
+
+Nessun risultato
+
+Filtro:
+
+Amici
+
+Punt. personale
+
+Generale
+
+Totale:
+
+Posiz.
+
+Gamertag
+
+Preparazione al salvataggio livello
+
+Preparazione blocchi...
+
+Finalizzazione...
+
+Creazione terreno
+
+Simulazione mondo
+
+Inizializzazione server
+
+Creazione area di generazione
+
+Caricamento area di generazione
+
+Ingresso nel Sottomondo
+
+Uscita dal Sottomondo
+
+Rigenerazione
+
+Generazione livello
+
+Caricamento livello
+
+Salvataggio giocatori
+
+Connessione all'host
+
+Download terreno
+
+Passaggio a gioco offline
+
+Attendi mentre l'host salva il gioco
+
+Ingresso nel LIMITE
+
+Uscita dal LIMITE
+
+Ricerca Seme per generatore mondo
+
+Questo letto è occupato
+
+Puoi dormire solo di notte
+
+%s dorme in un letto. Per saltare all'alba, tutti i giocatori devono dormire in un letto contemporaneamente.
+
+Letto mancante o passaggio ostruito
+
+Non puoi riposare adesso: ci sono mostri nei paraggi
+
+Stai dormendo in un letto. Per saltare all'alba, tutti i giocatori devono dormire in un letto contemporaneamente.
+
+Attrezzi e armi
+
+Armi
+
+Cibo
+
+Strutture
+
+Armature
+
+Meccanismi
+
+Trasporto
+
+Decorazioni
+
+Blocchi da costruzione
+
+Pietra rossa e trasporti
+
+Varie
+
+Distillazione
+
+Distillazione
+
+Attrezzi, armi e armature
+
+Materiali
+
+Disconnesso
+
+Sei tornato alla schermata iniziale perché il tuo profilo giocatore si è disconnesso
+
+Difficoltà
+
+Musica
+
+Effetti
+
+Gamma
+
+Sensibilità gioco
+
+Sensibilità interfaccia
+
+Relax
+
+Facile
+
+Normale
+
+Difficile
+
+In questa modalità, il giocatore recupera salute col tempo e non ci sono nemici nell'ambiente.
+
+In questa modalità, vengono generati nemici nell'ambiente, ma infliggono danni minori rispetto alla modalità normale.
+
+In questa modalità, nell'ambiente vengono generati nemici che infliggono un danno standard al giocatore.
+
+In questa modalità, nell'ambiente vengono generati nemici che infliggono gravi danni al giocatore. Fai attenzione anche ai creeper: è improbabile che annullino il loro attacco esplosivo quando ti allontani!
+
+Timeout prova
+
+Hai giocato alla versione di prova di Minecraft: Xbox 360 Edition per il tempo massimo consentito! Per continuare a divertirti, vuoi sbloccare il gioco completo?
+
+Partita al completo
+
+Impossibile accedere: nessuno spazio rimasto
+
+Inserisci testo cartello
+
+Inserisci il testo per il cartello
+
+Inserisci titolo
+
+Inserisci un titolo per il tuo messaggio
+
+Inserisci didascalia
+
+Inserisci una didascalia per il tuo messaggio
+
+Inserisci descrizione
+
+Inserisci una descrizione per il tuo messaggio
+
+Inventario
+
+Ingredienti
+
+Banco di distillazione
+
+Cassa
+
+Incanta
+
+Fornace
+
+Ingrediente
+
+Combustibile
+
+Dispenser
+
+Nessuna offerta di contenuto scaricabile disponibile per questo titolo al momento.
+
+%s si unisce alla partita.
+
+%s ha abbandonato la partita.
+
+%s è stato espulso dal gioco.
+
+Vuoi davvero eliminare questo salvataggio?
+
+Da approvare
+
+Censurato
+
+In gioco:
+
+Resetta impostazioni
+
+Vuoi davvero ripristinare le impostazioni predefinite?
+
+Errore caricamento
+
+Caricamento "Minecraft: "Minecraft: Xbox 360 Edition" non riuscito, impossibile continuare.
+
+Gioco di %s
+
+Gioco con host sconosciuto
+
+Ospite disconnesso
+
+Un giocatore ospite si è disconnesso, rimuovendo tutti i giocatori ospite dal gioco.
+
+Accedi
+
+Non hai effettuato l'accesso. Per partecipare a questo gioco, devi prima accedere. Vuoi accedere ora?
+
+Multiplayer non consentito
+
+Impossibile accedere alla partita: uno o più giocatori non possono disputare partite multiplayer su Xbox Live.
+
+Impossibile creare una partita online: uno o più giocatori non possono disputare partite multiplayer su Xbox Live. Deseleziona la casella "Gioco online" per avviare una partita offline.
+
+Non ti è consentito accedere a questa sessione di gioco perché l'impostazione per i privilegi dei contenuti dell'abbonato è troppo restrittiva. Modificala nella sezione Impostazioni privacy e online della Xbox Dashboard se desideri accedere a questa sessione.
+
+Non ti è consentito accedere a questa sessione di gioco perché uno dei giocatori locali ha un'impostazione per i privilegi dei contenuti dell'abbonato troppo restrittiva.
+
+Non ti è consentito accedere a questa sessione di gioco perché uno dei giocatori nella sessione ha i privilegi dei contenuti dell'abbonato impostati su Solo amici, e tu non sei nella sua lista amici.
+
+Creazione di partita non riuscita
+
+Non ti è consentito creare questa sessione di gioco perché uno dei giocatori locali ha un'impostazione per i privilegi dei contenuti dell'abbonato troppo restrittiva. Deseleziona la casella "Gioco online" per avviare una partita offline, oppure modifica questa impostazione nella sezione Impostazioni privacy e online della Xbox Dashboard.
+
+Selezionato automaticamente
+
+No pacchetto: skin predef.
+
+Skin preferite
+
+Livello escluso
+
+Il gioco a cui stai cercando di accedere è nell'elenco dei livelli esclusi.
+Se scegli di entrarvi comunque, il livello verrà rimosso dall'elenco dei livelli esclusi.
+
+Escludere questo livello?
+
+Vuoi davvero aggiungere questo livello all'elenco dei livelli esclusi?
+Selezionando OK, uscirai da questa partita.
+
+Rimuovi da elenco esclusi
+
+Intervallo autosalvataggio
+
+Intervallo autosalvataggio: NO
+
+Min
+
+Impossibile collocare qui!
+
+Non è consentito collocare la lava accanto al punto di generazione del livello: i giocatori appena generati potrebbero morire immediatamente.
+
+Questo gioco utilizza una funzione di autosalvataggio. Quando appare l'icona qui sopra, il gioco sta salvando i dati.
+Non spegnere la console Xbox 360 mentre l'icona è visualizzata.
+
+Opacità interfaccia
+
+Preparazione salvataggio livello
+
+Dimensioni dell'interfaccia
+
+Dimensioni dell'interfaccia (schermo diviso)
+
+Seme
+
+Sblocca pacchetto Skin
+
+Per usare la skin che hai selezionato, devi sbloccare questo pacchetto Skin.
+Vuoi sbloccare il pacchetto Skin ora?
+
+Sblocca pacchetto texture
+
+Per usare questo pacchetto texture nel tuo mondo, devi prima sbloccarlo.
+Vuoi sbloccarlo ora?
+
+Versione di prova pacchetto texture
+
+Stai usando una versione di prova del pacchetto texture. Non potrai salvare questo mondo, a meno che non sblocchi la versione completa.
+Vuoi sbloccare la versione completa del pacchetto texture?
+
+Nessun pacchetto texture
+
+Sblocca versione completa
+
+Scarica versione di prova
+
+Scarica versione completa
+
+Questo mondo usa un pacchetto texture o mash-up che non hai!
+Vuoi installare uno dei due pacchetti ora?
+
+Ottieni la versione di prova
+
+Ottieni la versione completa
+
+Espelli giocatore
+
+Sei sicuro di voler espellere questo giocatore dalla partita? Non potrà accedere finché non riavvii il mondo.
+
+Pacchetti Immagini del giocatore
+
+Temi
+
+Pacchetti Skin
+
+Accetta amici di amici
+
+Non puoi unirti a questa partita. L'host ha limitato l'accesso ai propri amici.
+
+Impossibile accedere alla partita
+
+Selezionato
+
+Skin selezionata:
+
+Contenuto scaricabile danneg.
+
+Questo contenuto scaricabile è danneggiato e non può essere usato. Cancellalo e installalo nuovamente dal menu del Negozio di Minecraft.
+
+Parte del contenuto scaricabile è danneggiato e non può essere usato. Cancella il contenuto e installalo nuovamente dal menu del Negozio di Minecraft.
+
+La modalità di gioco è cambiata
+
+Rinomina il mondo
+
+Inserisci il nuovo nome del tuo mondo
+
+Modalità: Sopravvivenza
+
+Modalità: Creativa
+
+Sopravvivenza
+
+Creativa
+
+In modalità Sopravvivenza
+
+In modalità Creativa
+
+Renderizza nuvole
+
+Cosa vuoi fare con questo salvataggio?
+
+Rinomina salvataggio
+
+Autosalvataggio tra %d...
+
+Sì
+
+No
+
+Normale
+
+Superpiatto
+
+Se attivato, il gioco sarà un gioco online.
+
+Se attivato, i giocatori potranno unirsi solo su invito.
+
+Se attivato, gli amici delle persone nella Lista amici potranno unirsi alla partita.
+
+Se l'opzione è abilitata, è possibile infliggere danni agli altri giocatori. Efficace solo in modalità Sopravvivenza.
+
+Se l'opzione è disabilitata, i giocatori che si uniscono alla partita non possono costruire o scavare fino a quando non vengono autorizzati.
+
+Se l'opzione è abilitata, il fuoco può propagarsi ai blocchi infiammabili vicini.
+
+Se l'opzione è abilitata, il TNT esplode quando viene attivato.
+
+Se l'opzione é abilitata, l'host può att./dis. la possibilità di volare, disabilitare la stanchezza e rendersi invisibile. Obiettivi e aggiornamenti della classifica verranno disabilitati.
+
+Quando è attivato, il Sottomondo viene rigenerato. È molto utile nel caso tu abbia un vecchio salvataggio nel quale non sono presenti Fortezze del Sottomondo.
+
+Se l'opzione è abilitata, nel mondo si genereranno strutture come Villaggi e Fortezze.
+
+Se l'opzione è abilitata, verrà generato un mondo completamente piatto tanto nel Sopramondo che nel Sottomondo.
+
+Se l'opzione è abilitata, vicino al punto di generazione del giocatore apparirà una cassa contenente alcuni oggetti utili.
+
+Pacchetti di skin
+
+Temi
+
+Immagini del giocatore
+
+Oggetti avatar
+
+Pacchetti Texture
+
+Pacchetti Mash-Up
+
+{*PLAYER*} ha preso fuoco
+
+{*PLAYER*} è bruciato vivo
+
+{*PLAYER*} ha cercato di nuotare nella lava
+
+{*PLAYER*} è soffocato dentro un muro
+
+{*PLAYER*} è affogato
+
+{*PLAYER*} è morto di fame
+
+{*PLAYER*} è morto in seguito a una puntura
+
+{*PLAYER*} si è schiantato al suolo
+
+{*PLAYER*} è caduto fuori dal mondo
+
+{*PLAYER*} è morto
+
+{*PLAYER*} è saltato in aria
+
+{*PLAYER*} è stato ucciso dalla magia
+
+Il Drago di Ender ha ucciso {*PLAYER*} con il suo alito
+
+{*PLAYER*} è stato ucciso da {*SOURCE*}
+
+{*PLAYER*} è stato ucciso da {*SOURCE*}
+
+{*PLAYER*} è stato colpito da un proiettile di {*SOURCE*}
+
+{*PLAYER*} è stato colpito con una palla di fuoco da {*SOURCE*}
+
+{*PLAYER*} è stato pestato a morte da {*SOURCE*}
+
+{*PLAYER*} è stato ucciso da {*SOURCE*}
+
+Nebbia substrato roccioso
+
+Mostra interfaccia
+
+Mostra mano
+
+Gamertag schermo diviso
+
+Messaggi di morte
+
+Personaggio animato
+
+Animazione skin personalizzata
+
+Non puoi più scavare né usare oggetti
+
+Ora puoi scavare e usare oggetti
+
+Non puoi più posizionare blocchi
+
+Ora puoi posizionare blocchi
+
+Ora puoi usare porte e interruttori
+
+Non puoi più usare porte e interruttori
+
+Ora puoi usare contenitori (es. casse)
+
+Non puoi più usare contenitori (es. casse)
+
+Non puoi più attaccare i nemici
+
+Ora puoi attaccare i nemici
+
+Non puoi più attaccare i giocatori
+
+Ora puoi attaccare i giocatori
+
+Non puoi più attaccare gli animali
+
+Ora puoi attaccare gli animali
+
+Ora sei un moderatore
+
+Non sei più un moderatore
+
+Ora puoi volare
+
+Non puoi più volare
+
+Non sentirai più la stanchezza
+
+Ora sentirai la stanchezza
+
+Ora sei invisibile
+
+Non sei più invisibile
+
+Ora sei invulnerabile
+
+Non sei più invulnerabile
+
+%d MSP
+
+Drago di Ender
+
+%s si trova ora nel Limite
+
+%s ha lasciato il Limite
+
+
+{*C3*}Ho capito a quale giocatore ti riferisci.{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}?{*EF*}{*B*}{*B*}
+{*C3*}Sì. Fai attenzione. Ha raggiunto un livello superiore. Può leggere le nostre menti.{*EF*}{*B*}{*B*}
+{*C2*}Non importa. Crede che siamo parte del gioco.{*EF*}{*B*}{*B*}
+{*C3*}Mi piace, questo giocatore. Ha giocato bene. Non si è arreso.{*EF*}{*B*}{*B*}
+{*C2*}Sta leggendo i nostri pensieri come se fossero parole su uno schermo.{*EF*}{*B*}{*B*}
+{*C3*}È così che riesce a immaginare molte cose, quando è immerso nel sogno di un gioco.{*EF*}{*B*}{*B*}
+{*C2*}Le parole sono un'interfaccia meravigliosa, estremamente flessibile e molto meno spaventosa del guardare la realtà oltre lo schermo.{*EF*}{*B*}{*B*}
+{*C3*}Prima erano soliti ascoltare voci. Prima i giocatori erano in grado di leggere. Un tempo, chi non giocava chiamava i giocatori "streghe" e "stregoni", e i giocatori sognavano di volare su bastoni alimentati dall'energia dei demoni.{*EF*}{*B*}{*B*}
+{*C2*}Cosa sognava questo giocatore?{*EF*}{*B*}{*B*}
+{*C3*}Sognava la luce del sole, gli alberi... Sognava l'acqua e il fuoco... Sognava di creare, e sognava di distruggere... Sognava di cacciare e di essere preda... Sognava un riparo.{*EF*}{*B*}{*B*}
+{*C2*}Ah, l'interfaccia originale... È vecchia di un milione di anni, ma ancora funziona. Ma quale vera struttura ha creato questo giocatore, nella realtà oltre lo schermo?{*EF*}{*B*}{*B*}
+{*C3*}Ha funzionato, con oltre un milione di altri individui, per scolpire un vero mondo in una piega di {*EF*}{*NOISE*}{*C3*}, e ha creato {*EF*}{*NOISE*}{*C3*} per {*EF*}{*NOISE*}{*C3*}, in {*EF*}{*NOISE*}{*C3*}.{*EF*}{*B*}{*B*}
+{*C2*}Non può leggere quel pensiero.{*EF*}{*B*}{*B*}
+{*C3*}No. Non ha ancora raggiunto il livello più alto. Deve arrivarci nel lungo sogno della vita, non nella brevità di un gioco.{*EF*}{*B*}{*B*}
+{*C2*}Sa che lo amiamo? Che l'universo è buono?{*EF*}{*B*}{*B*}
+{*C3*}A volte, attraverso il rumore dei suoi pensieri, egli ascolta l'universo, sì.{*EF*}{*B*}{*B*}
+{*C2*}Capita, però, che nel lungo sogno sia triste. Crea mondi senza estate, trema sotto un sole nero, e crede che la sua triste creazione sia la realtà.{*EF*}{*B*}{*B*}
+{*C3*}Se lo guarissimo dal dolore lo distruggeremmo. Il dolore è parte del suo compito personale. Noi non possiamo interferire.{*EF*}{*B*}{*B*}
+{*C2*}A volte, quando sognano profondamente, vorrei dire loro che in realtà stanno costruendo dei veri mondi. Vorrei svelare l'importanza che essi hanno per l'universo. E quando non hanno effettuato un vero collegamento per molto tempo, vorrei aiutarli a pronunciare la parola che temono.{*EF*}{*B*}{*B*}
+{*C3*}Legge i nostri pensieri.{*EF*}{*B*}{*B*}
+{*C2*}Non me ne importa. Certe volte vorrei dire loro che questo mondo che ritengono reale è solo {*EF*}{*NOISE*}{*C2*} e {*EF*}{*NOISE*}{*C2*}. Mi piacerebbe dire loro che sono {*EF*}{*NOISE*}{*C2*} nel {*EF*}{*NOISE*}{*C2*}. Vedono una parte minuscola della realtà, nel loro lungo sogno...{*EF*}{*B*}{*B*}
+{*C3*}Eppure, essi continuano a giocare.{*EF*}{*B*}{*B*}
+{*C2*}Sarebbe così facile dire tutto...{*EF*}{*B*}{*B*}
+{*C3*}La rivelazione sarebbe troppo forte per questo sogno. Dire come vivere impedirebbe loro di vivere.{*EF*}{*B*}{*B*}
+{*C2*}Non dirò al giocatore come vivere.{*EF*}{*B*}{*B*}
+{*C3*}Il giocatore si sta inquietando.{*EF*}{*B*}{*B*}
+{*C2*}Narrerò una storia al giocatore.{*EF*}{*B*}{*B*}
+{*C3*}Ma non racconterò la verità.{*EF*}{*B*}{*B*}
+{*C2*}No. Sarà una storia che conterrà la verità in modo sicuro, protetta da una gabbia di parole. Non dirò la cruda verità che può bruciare a qualsiasi distanza.{*EF*}{*B*}{*B*}
+{*C3*}Dagli di nuovo un corpo.{*EF*}{*B*}{*B*}
+{*C2*}Sì. Giocatore...{*EF*}{*B*}{*B*}
+{*C3*}Usa il suo nome.{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}. Giocatore.{*EF*}{*B*}{*B*}
+{*C3*}Bene.{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}Ora respira profondamente. Respira ancora. Senti l'aria nei polmoni. I tuoi arti stanno tornando. Sì, muovi le dita... Hai di nuovo un corpo, nell'aria, soggetto alla forza di gravità. Rigenerati nel lungo sogno. Eccoti. Il tuo corpo tocca ancora una volta l'universo, in tutti i suoi punti, come se foste cose separate. Come se noi fossimo entità separate.{*EF*}{*B*}{*B*}
+{*C3*}Chi siamo? Un tempo eravamo chiamati gli spiriti della montagna. Padre Sole, Madre Luna. Spiriti ancestrali... Spiriti animali... Jinn, fantasmi. Poi l'uomo verde. E ancora dei, demoni, angeli... Spiriti, alieni, extraterrestri... Infine leptoni, quark... Le parole cambiano. Noi non cambiamo.{*EF*}{*B*}{*B*}
+{*C2*}Noi siamo l'universo. Siamo tutto ciò che credi non sia te. Ora ci stai guardando, attraverso la tua pelle e i tuoi occhi. Perché l'universo sfiora la tua pelle e ti inonda di luce? Per guardarti, giocatore. Per conoscersi e per farsi conoscere. Voglio raccontarti una storia.{*EF*}{*B*}{*B*}
+{*C2*}Un tempo c'era un giocatore...{*EF*}{*B*}{*B*}
+{*C3*}Quel giocatore eri tu, {*PLAYER*}.{*EF*}{*B*}{*B*}
+{*C2*}A volte il giocatore pensava di essere una creatura umana sulla sottile crosta di un globo rotante fatto di roccia fusa. Il globo di roccia fusa girava intorno a una sfera di gas fiammeggianti che era trecentotrentamila volte più grande di esso. La sfera era talmente distante dal globo che la luce impiegava otto minuti per viaggiare dall'una all'altro. La luce era informazione che veniva da una stella, e poteva bruciarti la pelle da una distanza di centocinquanta milioni di chilometri.{*EF*}{*B*}{*B*}
+{*C2*}A volte il giocatore sognava di essere un minatore sulla superficie di un mondo piatto e infinito. Il sole era un quadrato bianco. I giorni erano brevi. C'era sempre molto da fare, e la morte non era altro che un inconveniente temporaneo.{*EF*}{*B*}{*B*}
+{*C3*}A volte il giocatore credeva di essere parte di una storia.{*EF*}{*B*}{*B*}
+{*C2*}A volte il giocatore sognava di essere altre cose in luoghi diversi. Alcuni di quei sogni erano sgradevoli, altri meravigliosi. Capitava anche che il giocatore si svegliasse da un sogno e si ritrovasse in un altro, per poi destarsi anche da quello e scoprirsi in un terzo sogno.{*EF*}{*B*}{*B*}
+{*C3*}A volte il giocatore sognava di guardare delle parole su uno schermo.{*EF*}{*B*}{*B*}
+{*C2*}Torniamo indietro.{*EF*}{*B*}{*B*}
+{*C2*}Gli atomi del giocatore erano sparsi nell'erba, nei fiumi, nell'aria, nel suolo. Una donna raccolse gli atomi; li bevve, li mangiò, li respirò. La donna ricostruì il giocatore nel proprio corpo.{*EF*}{*B*}{*B*}
+{*C2*}Il giocatore si svegliò dal caldo, buio mondo del corpo di sua madre e si ritrovò nel lungo sogno.{*EF*}{*B*}{*B*}
+{*C2*}Il giocatore era una nuova storia, mai narrata prima, scritta con lettere di DNA. E il giocatore era un nuovo programma, mai eseguito prima, generato da un codice sorgente vecchio di miliardi di anni. E il giocatore era un nuovo essere umano, che non aveva mai vissuto prima, fatto solo di latte e amore.{*EF*}{*B*}{*B*}
+{*C3*}Tu sei il giocatore. La storia. Il programma. L'essere umano. Sei fatto solo di latte e amore.{*EF*}{*B*}{*B*}
+{*C2*}Torniamo ancora più indietro.{*EF*}{*B*}{*B*}
+{*C2*}I sette miliardi di miliardi di miliardi di atomi che compongono il corpo del giocatore furono creati molto tempo prima di questo gioco, nel cuore di una stella. Quindi, anche il giocatore è informazione che proviene da una stella. Il giocatore si muove in una storia, che è una foresta di informazioni seminata da un uomo di nome Julian su un mondo piatto e infinito creato da un altro uomo chiamato Markus, che esiste nel piccolo mondo personale creato dal giocatore, che vive in un universo creato da...{*EF*}{*B*}{*B*}
+{*C3*}Silenzio... A volte il giocatore creava il suo piccolo mondo personale, e lo faceva caldo, tenero, semplice. Altre volte lo faceva duro, freddo e complesso. A volte creava un modello dell'universo che aveva in mente, punti di energia che si muovono attraverso ampi spazi vuoti. A volte chiamava questi punti "elettroni" e "protoni".{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}A volte li chiamava "pianeti" e "stelle".{*EF*}{*B*}{*B*}
+{*C2*}A volte credeva di esistere in un universo fatto di energia composta da serie di on e di off, di zero e di uno, di linee di codice. A volte credeva di giocare a un gioco. A volte credeva di leggere parole su uno schermo.{*EF*}{*B*}{*B*}
+{*C3*}Tu sei il giocatore che legge le parole...{*EF*}{*B*}{*B*}
+{*C2*}Silenzio... A volte il giocatore leggeva linee di codice su uno schermo, le scomponeva in parole e da esse ricavava un significato, che diventava sensazioni, emozioni, teorie e idee. Il giocatore iniziò a respirare più velocemente, più profondamente... Si era reso conto di essere vivo. Era vivo. Le migliaia di morti attraverso le quali era passato non erano reali. Il giocatore era vivo{*EF*}{*B*}{*B*}
+{*C3*}Tu... Tu... sei... vivo.{*EF*}{*B*}{*B*}
+{*C2*}E a volte il giocatore credeva che l'universo gli avesse parlato mediante i raggi di sole che filtravano tra le foglie ondeggianti sugli alberi d'estate...{*EF*}{*B*}{*B*}
+{*C3*}E a volte il giocatore pensava che l'universo gli avesse parlato tramite la luce che cadeva dal limpido cielo delle notti invernali, quando un puntino luminoso nell'angolo del suo occhio poteva essere una stella milioni di volte più grande del sole, che trasformava i suoi pianeti in plasma incandescente per essere visibile per un solo istante al giocatore, che tornava a casa, dall'altro lato dell'universo, e sentiva il profumo dei cibi sulla porta a lui familiare, poco prima di rimettersi a sognare.{*EF*}{*B*}{*B*}
+{*C2*}E a volte il giocatore credeva che l'universo gli avesse parlato con serie di zero e di uno, attraverso l'elettricità del mondo, con le parole che comparivano su uno schermo alla fine di un sogno.{*EF*}{*B*}{*B*}
+{*C3*}L'universo gli diceva "ti amo"...{*EF*}{*B*}{*B*}
+{*C2*}E l'universo gli diceva "hai giocato bene"...{*EF*}{*B*}{*B*}
+{*C3*}E l'universo gli diceva "tutto ciò di cui hai bisogno è dentro di te"...{*EF*}{*B*}{*B*}
+{*C2*}E l'universo gli diceva "sei più forte di quanto tu creda"...{*EF*}{*B*}{*B*}
+{*C3*}E l'universo gli diceva "sei la luce del giorno"...{*EF*}{*B*}{*B*}
+{*C2*}E l'universo gli diceva "tu sei la notte"...{*EF*}{*B*}{*B*}
+{*C3*}E l'universo gli diceva "l'oscurità che combatti è dentro di te"...{*EF*}{*B*}{*B*}
+{*C2*}E l'universo gli diceva "la luce che cerchi è dentro di te"...{*EF*}{*B*}{*B*}
+{*C3*}E l'universo gli diceva "non sei solo"...{*EF*}{*B*}{*B*}
+{*C2*}E l'universo gli diceva "tu non sei separato da tutte le altre cose"...{*EF*}{*B*}{*B*}
+{*C3*}E l'universo gli diceva "tu sei l'universo che assapora sé stesso, che parla a sé stesso, che legge il proprio codice"...{*EF*}{*B*}{*B*}
+{*C2*}E l'universo gli diceva "ti amo perché tu sei amore"...{*EF*}{*B*}{*B*}
+{*C3*}E il gioco terminò, e il giocatore si svegliò dal sogno. Il giocatore iniziò un nuovo sogno, migliore del precedente. Il giocatore era l'universo. Il giocatore era amore.{*EF*}{*B*}{*B*}
+{*C3*}Tu sei il giocatore.{*EF*}{*B*}{*B*}
+{*C2*}Svegliati.{*EF*}
+
+
+Resetta Sottomondo
+
+Ripristinare le impostazioni iniziali del Sottomondo in questo salvataggio? Tutto ciò che hai creato nel Sottomondo andrà perso!
+
+Resetta Sottomondo
+
+Non ripristinare il Sottomondo
+
+Impossibile tosare il muccafungo al momento. Hai raggiunto il numero massimo di maiali, pecore, mucche e gatti.
+
+Impossibile usare l'uovo generazione al momento. Hai raggiunto il numero massimo di maiali, pecore, mucche e gatti.
+
+Impossibile usare l'uovo generazione al momento. Hai raggiunto il numero massimo di muccafunghi.
+
+Impossibile usare l'uovo generazione al momento. Hai raggiunto il numero massimo di lupi.
+
+Impossibile usare l'uovo generazione al momento. Hai raggiunto il numero massimo di galline.
+
+Impossibile usare l'uovo generazione al momento. Hai raggiunto il numero massimo di calamari.
+
+Impossibile usare Uovo rigenerazione al momento. È stato raggiunto il numero massimo di nemici nel mondo.
+
+Impossibile usare Uovo rigenerazione al momento. È stato raggiunto il numero massimo di villici nel mondo.
+
+Hai raggiunto il limite per i Telai di dipinti/oggetti di un mondo.
+
+Non puoi generare nemici in modalità Relax.
+
+Questo animale non può entrare in "modalità Amore". Hai raggiunto il numero massimo di maiali, pecore, mucche e gatti.
+
+Questo animale non può entrare in "modalità Amore". Hai raggiunto il numero massimo di riproduzione di lupi.
+
+Questo animale non può entrare in "modalità Amore". Hai raggiunto il numero massimo di riproduzione di galline.
+
+Questo animale non può entrare in "modalità Amore". Hai raggiunto il numero massimo di riproduzione di muccafunghi.
+
+È stato raggiunto il numero massimo di navi per mondo.
+
+Hai raggiunto il numero massimo di teste di Mob in un mondo.
+
+Inverti
+
+Mancino
+
+Sei morto!
+
+Rigenera
+
+Offerte contenuto scaricabile
+
+Cambia skin
+
+Come giocare
+
+Comandi
+
+Impostazioni
+
+Riconoscimenti
+
+Reinstalla contenuto
+
+Impostazioni debug
+
+Diffusione incendio
+
+Esplosione TNT
+
+Giocatore vs Giocatore
+
+Autorizza giocatori
+
+Privilegi dell'host
+
+Genera strutture
+
+Mondo superpiatto
+
+Cassa bonus
+
+Opzioni mondo
+
+Può costruire e scavare
+
+Può usare porte e interruttori
+
+Può aprire contenitori
+
+Può attaccare i giocatori
+
+Può attaccare gli animali
+
+Moderatore
+
+Espelli giocatore
+
+Può volare
+
+Disabilita stanchezza
+
+Invisibile
+
+Opzioni host
+
+Giocatori/Invito
+
+Partita online
+
+Solo invito
+
+Altre opzioni
+
+Carica
+
+Nuovo mondo
+
+Nome mondo
+
+Seme per generatore mondo
+
+Lascia vuoto per seme casuale
+
+Giocatori
+
+Unisciti alla partita
+
+Avvia gioco
+
+Nessuna partita trovata
+
+Gioca
+
+Classifiche
+
+Obiettivi
+
+Guida e opzioni
+
+Sblocca gioco completo
+
+Riprendi gioco
+
+Salva gioco
+
+Difficoltà:
+
+Tipo di gioco:
+
+Gamertag:
+
+Strutture:
+
+Tipo di livello:
+
+GvG:
+
+Autorizza giocatori:
+
+TNT:
+
+Diffusione incendio:
+
+Reinstalla tema
+
+Reinstalla immagine del giocatore 1
+
+Reinstalla immagine del giocatore 2
+
+Reinstalla oggetto avatar 1
+
+Reinstalla oggetto avatar 2
+
+Reinstalla oggetto avatar 3
+
+Opzioni
+
+Audio
+
+Comando
+
+Grafica
+
+Interfaccia utente
+
+Ripristina predefinite
+
+Vedi bobbing
+
+Aiuti
+
+Aiuti contestuali del gioco
+
+Gamertag nel gioco
+
+2 giocatori schermo diviso verticale
+
+Fatto
+
+Modifica messaggio cartello:
+
+Inserisci i dettagli del tuo screenshot
+
+Didascalia
+
+Screenshot del gioco
+
+Modifica messaggio cartello:
+
+Guarda cosa ho fatto a Minecraft: Xbox 360 Edition!
+
+Texture, icone e interfaccia classiche di Minecraft!
+
+Mostra tutti i mondi Mash-up
+
+Seleziona Trasferisci slot salvataggio
+
+Slot vuoto
+
+Caricamento metadati salvataggio
+
+Caricamento dati salvati
+
+Caricamento salvataggio per Xbox One
+
+Caricamento annullato
+
+Hai annullato il caricamento di questo salvataggio sull'area trasferimento salvataggio.
+
+Nessun effetto
+
+Velocità
+
+Lentezza
+
+Fretta
+
+Fatica del minatore
+
+Forza
+
+Debolezza
+
+Guarigione istantanea
+
+Danno istantaneo
+
+Salto potenziato
+
+Nausea
+
+Rigenerazione
+
+Resistenza
+
+Resistenza al fuoco
+
+Apnea
+
+Invisibilità
+
+Cecità
+
+Visione notturna
+
+Fame
+
+Veleno
+
+della Velocità
+
+della Lentezza
+
+della Fretta
+
+dell'Opacità
+
+della Forza
+
+della Debolezza
+
+della Guarigione
+
+del Danno
+
+del Salto
+
+della Nausea
+
+della Rigenerazione
+
+della Resistenza
+
+della Resistenza al fuoco
+
+dell'Apnea
+
+dell'Invisibilità
+
+della Cecità
+
+della Visione notturna
+
+della Fame
+
+del Veleno
+
+
+
+II
+
+III
+
+IV
+
+Bomba
+
+Prosaica
+
+Banale
+
+Blanda
+
+Chiara
+
+Opaca
+
+Diffusa
+
+Rozza
+
+Sottile
+
+Maldestra
+
+Insipida
+
+Voluminosa
+
+Pasticciata
+
+Imburrata
+
+Amabile
+
+Affabile
+
+Distinta
+
+Densa
+
+Elegante
+
+Elaborata
+
+Affascinante
+
+Prestante
+
+Raffinata
+
+Cordiale
+
+Frizzante
+
+Potente
+
+Pessima
+
+Inodore
+
+Rancida
+
+Aspra
+
+Acida
+
+Disgustosa
+
+Puzzolente
+
+Si usa in un Banco di distillazione come base per tutte le pozioni.
+
+Non ha effetti; può essere usata in un Banco di distillazione per creare pozioni aggiungendo altri ingredienti.
+
+Aumenta la velocità di movimento di giocatori, animali e mostri affetti. Nei giocatori affetti aumenta inoltre la velocità di scatto, la lunghezza dei salti e il campo visivo.
+
+Riduce la velocità di movimento di giocatori, animali e mostri affetti. Nei giocatori affetti riduce inoltre la velocità di scatto, la lunghezza dei salti e il campo visivo.
+
+Aumenta i danni provocati con l'attacco da giocatori e mostri affetti.
+
+Riduce i danni provocati con l'attacco da giocatori e mostri affetti.
+
+Aumenta istantaneamente la salute di giocatori, animali e mostri affetti.
+
+Riduce istantaneamente la salute di giocatori, animali e mostri affetti.
+
+Restituisce progressivamente salute a giocatori, animali e mostri affetti.
+
+Rende giocatori, animali e mostri affetti immuni ai danni causati da fuoco, lava e attacchi a distanza di Vampe.
+
+Riduce progressivamente la salute di giocatori, animali e mostri affetti.
+
+Acutezza
+
+Percossa
+
+Flagello degli Artropodi
+
+Atterramento
+
+Aspetto di Fuoco
+
+Protezione
+
+Protezione dal Fuoco
+
+Caduta della Piuma
+
+Protezione dalle esplosioni
+
+Protezione dai proiettili
+
+Respirazione
+
+Affinità con l'acqua
+
+Efficienza
+
+Tocco di Seta
+
+Durezza
+
+Saccheggio
+
+Fortuna
+
+Potenza
+
+Fiamma
+
+Pugno
+
+Infinito
+
+I
+
+II
+
+III
+
+IV
+
+V
+
+VI
+
+VII
+
+VIII
+
+IX
+
+X
+
+Si scava con una piccozza di ferro o migliore, per ottenere smeraldi.
+
+È simile a un forziere, ma gli oggetti posti in un forziere di Ender sono disponibili in tutti i forzieri di Ender, anche se di dimensioni diverse.
+
+Si attiva quando qualcosa passa sul filo collegato.
+
+Attiva un gancio a filo collegato quando qualcosa ci passa sopra.
+
+Una soluzione compatta per conservare gli smeraldi.
+
+Un muro fatto di ciottoli.
+
+Si può usare per riparare armi, attrezzi e armature.
+
+Si può fondere nelle fornaci per produrre quarzo del Sottomondo.
+
+Si usa come decorazione.
+
+Si usa per commerciare con gli abitanti dei villaggi.
+
+Si usa come decorazione. Al suo interno si possono piantare fiori, arbusti, cactus e funghi.
+
+Fa recuperare 2 {*ICON_SHANK_01*} e si può creare da una carota d'oro. Si può piantare sulle zolle.
+
+Fa recuperare 0,5 {*ICON_SHANK_01*} o si può cuocere nelle fornaci. Si può piantare sulle zolle.
+
+Fa recuperare 3 {*ICON_SHANK_01*}. Si crea cucinando una patata nella fornace.
+
+Reintegra 1 {*ICON_SHANK_01*}, o si può cucinare nella fornace. Si può piantare sulle zolle. Può avvelenarti.
+
+Reintegra 3 {*ICON_SHANK_01*}. Si realizza usando una carota e delle pepite d'oro.
+
+Si usa per controllare un maiale sellato quando lo si cavalca.
+
+Fa recuperare 4 {*ICON_SHANK_01*}.
+
+Si usa con un'incudine per incantare armi, attrezzi e armature.
+
+Si crea scavando il minerale di quarzo del Sottomondo. Si può trasformare in un blocco di quarzo.
+
+Si realizza con la lana. Si usa come decorazione.
+
+Smeraldo
+
+Vaso di fiori
+
+Carota
+
+Patata
+
+Patata arrostita
+
+Patata velenosa
+
+Carota d'oro
+
+Carota e bastone
+
+Torta di zucca
+
+Libro incantato
+
+Quarzo del Sottomondo
+
+Minerale di smeraldo
+
+Forziere di Ender
+
+Gancio a filo
+
+Filo
+
+Blocco di smeraldo
+
+Muro di ciottoli
+
+Muro di ciottoli coperto di muschio
+
+Vaso di fiori
+
+Carote
+
+Patate
+
+Incudine
+
+Incudine
+
+Incudine poco danneggiata
+
+Incudine molto danneggiata
+
+Minerale di quarzo del Sottomondo
+
+Blocco di quarzo
+
+Blocco di quarzo cesellato
+
+Blocco portante di quarzo
+
+Scale di quarzo
+
+Tappeto
+
+Tappeto nero
+
+Tappeto rosso
+
+Tappeto verde
+
+Tappeto marrone
+
+Tappeto blu
+
+Tappeto viola
+
+Tappeto ciano
+
+Tappeto grigio chiaro
+
+Tappeto grigio
+
+Tappeto rosa
+
+Tappeto lime
+
+Tappeto giallo
+
+Tappeto azzurro
+
+Tappeto magenta
+
+Tappeto arancione
+
+Tappeto bianco
+
+Arenaria cesellata
+
+Arenaria liscia
+
+{*PLAYER*} ha perso la vita mentre cercava di far male a {*SOURCE*}
+
+Un'incudine è caduta e ha schiacciato {*PLAYER*}.
+
+Un blocco è caduto e ha schiacciato {*PLAYER*}.
+
+{*PLAYER*} ha raggiunto {*DESTINATION*} grazie al teletrasporto
+
+{*PLAYER*} ti ha fatto raggiungere il luogo dove si trova usando il teletrasporto
+
+{*PLAYER*} ti ha teletrasportato
+
+Spine
+
+Lastra di quarzo
+
+Le aree buie appaiono come se fossero alla luce del giorno, anche sott'acqua.
+
+Rende invisibili i giocatori, gli animali e i mostri che subiscono l'effetto.
+
+Ripara e dai un nome
+
+Costo incantesimo: %d
+
+Troppo caro!
+
+Cambia il nome
+
+Hai:
+
+Oggetti richiesti per lo scambio
+
+{*VILLAGER_TYPE*} offre %s
+
+Ripara
+
+Scambia
+
+Tingi il collare
+
+
+ Questa è l'interfaccia dell'incudine, che puoi usare per riparare, cambiare nome e applicare incantesimi ad armi, armature e attrezzi, al costo di livelli di esperienza.
+
+
+
+ {*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sull'interfaccia incudine.{*B*}
+ Premi{*CONTROLLER_VK_B*} se non hai bisogno di spiegazioni al riguardo.
+
+
+
+ Per iniziare a lavorare su un oggetto, ponilo nel primo slot di inserimento.
+
+
+
+ Quando la corretta materia prima (ad esempio, dei lingotti di ferro per riparare una spada di ferro danneggiata) è messa nel secondo slot di inserimento, la riparazione proposta comparirà nello slot di uscita.
+
+
+
+ In alternativa, è possibile mettere nel secondo slot di inserimento un oggetto uguale a quello posto nel primo slot. I due oggetti saranno combinati tra loro.
+
+
+
+ Per incantare un oggetto sull'incudine, posiziona un libro incantato nel secondo slot di inserimento.
+
+
+
+ Sotto il risultato compare il numero di livelli di esperienza che il lavoro ti costerà. Se non hai livelli di esperienza a sufficienza, la riparazione non potrà essere completata.
+
+
+
+ Puoi cambiare nome all'oggetto modificando quello che compare nel riquadro del testo.
+
+
+
+ Quando prendi l'oggetto riparato, gli oggetti usati dall'incudine scompaiono e il tuo livello di esperienza si riduce della quantità indicata.
+
+
+
+ In quest'area ci sono un'incudine e un forziere che contengono attrezzi e armi su cui puoi lavorare.
+
+
+
+ {*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sull'incudine.{*B*}
+ Premi{*CONTROLLER_VK_B*} se non hai bisogno di spiegazioni al riguardo.
+
+
+
+ Usando l'incudine è possibile riparare armi e attrezzi per ripristinarne la durata, cambiare il loro nome e aggiungere incantesimi mediante i libri incantati.
+
+
+
+ È possibile trovare i libri incantati all'interno di forzieri posti nei dungeon, oppure puoi crearli al Tavolo per incantesimi lanciando incantesimi sui libri normali.
+
+
+
+ Usare l'incudine costa livelli di esperienza e, a ogni utilizzo, c'è la possibilità che essa si danneggi.
+
+
+
+ Il tipo di lavoro da svolgere, il valore dell'oggetto, il numero di incantesimi e la quantità di lavoro precedente influiscono sul costo della riparazione.
+
+
+
+ Cambiare il nome a un oggetto modifica il nome mostrato per tutti i giocatori e riduce in modo permanente il costo del lavoro precedente.
+
+
+
+ Nel forziere in quest'area troverai piccozze danneggiate, materie prime, bottiglie magiche e libri incantati, tutti oggetti con i quali potrai condurre qualche esperimento.
+
+
+
+ Questa è l'interfaccia del commercio, che mostra quali scambi puoi fare con un abitante del villaggio.
+
+
+
+ {*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sull'interfaccia del commercio.{*B*}
+ Premi{*CONTROLLER_VK_B*} se non hai bisogno di spiegazioni al riguardo.
+
+
+
+ Nella parte superiore compaiono gli scambi che l'abitante del villaggio è disposto a fare in questo momento.
+
+
+
+ Gli scambi indicati in rosso sono quelli che non puoi fare perché non disponi degli oggetti richiesti.
+
+
+
+ Il tipo e la quantità di oggetti che offri all'abitante del villaggio compaiono nei due slot a sinistra.
+
+
+
+ Nei due slot a sinistra è indicato il numero totale di oggetti richiesti per lo scambio.
+
+
+
+ Premi{*CONTROLLER_VK_A*} per scambiare gli oggetti chiesti dall'abitante del villaggio con quello offerto.
+
+
+
+ In quest'area ci sono un abitante del villaggio e un forziere contenente carta per acquistare oggetti.
+
+
+
+ {*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sul commercio.{*B*}
+ Premi{*CONTROLLER_VK_B*} se non hai bisogno di spiegazioni al riguardo.
+
+
+
+ I giocatori possono scambiare con gli abitanti dei villaggi gli oggetti presenti nell'inventario.
+
+
+
+ Gli oggetti che gli abitanti dei villaggi sono propensi a scambiare dipendono in massima parte dal mestiere che essi svolgono.
+
+
+
+ Effettuare più scambi modifica in modo casuale l'elenco degli oggetti (anche aggiungendone di nuovi) che l'abitante del villaggio è disposto a scambiare.
+
+
+
+ Il commercio degli oggetti che sono stati scambiati molto di frequente può essere temporaneamente sospeso. In ogni caso, l'abitante del villaggio avrà comunque almeno un oggetto da scambiare.
+
+
+
+ Prendi della carta dal forziere e prova a scambiarla con l'abitante del villaggio.
+
+
+
+ In quest'area ci sono due forzieri di Ender.
+
+
+
+ {*B*}
+ Premi{*CONTROLLER_VK_A*} per saperne di più sui forzieri di Ender.{*B*}
+ Premi{*CONTROLLER_VK_B*} se non hai bisogno di spiegazioni al riguardo.
+
+
+
+ Tutti i forzieri di Ender presenti in un mondo sono collegati tra loro, anche attraverso dimensioni diverse. Attraverso uno qualsiasi dei forzieri di Ender, è possibile accedere agli oggetti messi in uno qualunque dei forzieri di Ender.
+
+
+
+ Comunque, il contenuto dei forzieri di Ender è diverso per ciascun giocatore.
+
+
+
+ In tal modo, i giocatori possono riporre i loro oggetti in qualsiasi forziere di Ender, e prenderli da qualsiasi forziere di Ender posto in qualsivoglia parte del mondo. Prova a mettere degli oggetti in uno dei forzieri di Ender.
+
+
+Fa recuperare 2 {*ICON_SHANK_01*}, rigenera la salute per 30 secondi e dona resistenza al fuoco e resistenza ai danni per 5 minuti. Si crea usando una mela e dei blocchi d'oro.
+
+Può usare il teletrasporto
+
+Teletrasporto
+
+Teletrasporto verso il giocatore
+
+Teletrasporto verso di me
+
+Può disabilitare la stanchezza
+
+Può diventare invisibile
+
+Ora puoi attivare l'invisibilità
+
+Non puoi più attivare l'invisibilità
+
+Ora puoi attivare il volo
+
+Non puoi più attivare il volo
+
+Ora puoi disabilitare la stanchezza
+
+Non puoi più disabilitare la stanchezza
+
+Ora puoi usare il teletrasporto
+
+Non puoi più usare il teletrasporto
+
+{*T3*}COME GIOCARE: L'INCUDINE{*ETW*}{*B*}{*B*}
+I livelli Esperienza possono anche essere usati per riparare o incantare gli oggetti con l'incudine, o per dar loro un nuovo nome.{*B*}
+È possibile cambiare il nome a tutti gli oggetti, ma solo quelli durevoli possono essere riparati o ricevere incantesimi tramite i libri incantati.{*B*}
+Per riparare un oggetto, mettilo in uno degli slot di inserimento posti sulla sinistra insieme a qualcuna delle materie prime da cui è composto (ad esempio, dei lingotti di ferro nel caso l'oggetto da riparare sia una spada di ferro) oppure combinalo con un altro oggetto dello stesso tipo.{*B*}
+Usare un'incudine per combinare gli oggetti permette di lavorare con maggiore efficienza. Inoltre, gli incantesimi eventualmente presenti negli oggetti usati per la combinazione potrebbero passare al prodotto finito.{*B*}
+I libri incantati possono incantare gli oggetti se combinati mediante un'incudine, a patto che l'incantesimo del libro sia adatto. È possibile trovare i libri incantati nei forzieri all'interno dei dungeon, ma si può anche incantare un libro normale usando il Tavolo per incantesimi.{*B*}
+L'incudine può subire danni ogni volta che viene usata, e si romperà definitivamente dopo numerosi utilizzi.{*B*}
+
+
+{*T3*}COME GIOCARE: COMMERCIO{*ETW*}{*B*}{*B*}
+Puoi scambiare oggetti con gli abitanti dei villaggi. Ciascun abitante svolge un mestiere: ci sono contadini, macellai, fabbri, librai e sacerdoti, e il loro lavoro determina il tipo di oggetti che ciascuno di essi potrebbe scambiare.{*B*}
+Nel menu del commercio troverai l'elenco di tutti gli oggetti che un abitante del villaggio offre. Quando un giocatore effettua scambi con un abitante di un villaggio, costui può modificare l'elenco degli oggetti offerti, anche aggiungendone di nuovi. Se un oggetto fosse scambiato troppo di frequente, il suo commercio potrebbe essere temporaneamente sospeso.{*B*}
+Di norma, i commerci si svolgono acquistando o vendendo una certa quantità di oggetti in cambio di smeraldi.{*B*}
+Se non disponi degli oggetti necessari per concludere uno scambio, gli oggetti sono colorati in rosso.{*B*}
+
+
+{*T3*}COME GIOCARE: FORZIERI DI ENDER {*ETW*}{*B*}{*B*}
+Tutti i forzieri di Ender presenti in un mondo sono collegati tra loro, quindi puoi accedere al contenuto di uno di essi tramite qualsiasi forziere di Ender. Il contenuto dei forzieri di Ender è diverso per ogni giocatore. I giocatori possono usare i forzieri di Ender per custodire i loro oggetti in tutta sicurezza e recuperarli da altri forzieri di Ender posti in qualsiasi parte del mondo.
+
+
+Contadino
+
+Libraio
+
+Sacerdote
+
+Fabbro
+
+Macellaio
+
+Si trovano nei villaggi. Gli abitanti dei villaggi si offrono di vendere al giocatore oggetti che cambiano in base al loro mestiere.
+
+Forziere grande
+
+
+ È anche possibile creare i libri incantati al Tavolo per incantesimi. Successivamente, potrai usare i libri incantati con l'incudine per applicare i loro incantesimi agli oggetti.
+
+
+
+ I ganci a filo forniscono anche energia costante a un circuito mentre qualcosa aziona la corda posta tra di essi.
+
+
+
+ Dopo che sono stati ammansiti, i lupi indossano sempre il collare. Il colore del collare può essere cambiato usando le tinture.
+
+
+Le carote e le patate si coltivano piantando carote e patate. Il raccolto è pronto quando i vegetali spuntano dal suolo.
+
+
+ Inoltre, i maiali possono essere sellati e poi cavalcati dai giocatori. È possibile controllare i maiali cavalcati dirigendoli con carota e bastone.
+
+
+
+ Se necessario, puoi far muovere lentamente il carrello da miniera con {*CONTROLLER_ACTION_MOVE*}. In questo modo aiuterai il carrello a partire facendolo arrivare su un binario potenziato.
+
+
+Non puoi unirti a questa partita perché lo schermo diviso è supportato solo in modalità Alta definizione. Se vuoi prendere parte al gioco, fai uscire tutti gli altri giocatori.
+
+Cura
+
+Xbox 360
+
+Indietro
+
+L'opzione disabilita gli obiettivi e gli aggiornamenti della classifica durante il gioco e, se la partita viene salvata con l'opzione abilitata, l'impostazione rimane anche quando lo stesso mondo viene caricato di nuovo successivamente.
+
+Carica salvataggio per Xbox One
+
+Carica salvataggio
+
+Solo un salvataggio Xbox 360 può essere caricato nell'area trasferimento salvataggio. Assicurati di aver scaricato il salvataggio sulla tua console Xbox One prima di caricare un altro salvataggio Xbox 360.
+
+Caricamento...
+
+Caricamento completo!
+
+Caricamento non riuscito. Riprova più tardi.
+
+Hai trovato {*progress*} dischi su {*goal*}!
+
+
diff --git a/Minecraft.Client/Xbox/loc/lcl/ja-JP/Minecraft_all.resx b/Minecraft.Client/Xbox/loc/lcl/ja-JP/Minecraft_all.resx
new file mode 100644
index 00000000..7c4a3d9d
--- /dev/null
+++ b/Minecraft.Client/Xbox/loc/lcl/ja-JP/Minecraft_all.resx
@@ -0,0 +1,4572 @@
+
+未使用
+
+OK
+
+戻る
+
+キャンセル
+
+はい
+
+いいえ
+
+破損したセーブデータ
+
+セーブデータが破損しています。新しいセーブデータを作成し、破損したデータを上書きしますか?
+
+空き容量が不足しています
+
+選択されているデータ保存機器には、新しいセーブデータを作成するための空き容量がありません
+
+別のデータ保存機器を選択
+
+セーブなしでプレイ
+
+新しいセーブデータを作成
+
+セーブデータを上書きしますか?
+
+選択したデータ保存機器にすでにセーブデータがあります。上書きしてもよろしいですか?
+
+上書きしない
+
+上書きしてセーブ
+
+セーブに失敗
+
+データ保存機器のエラー
+
+データ保存機器が見つからないか、エラーが起きています
+
+データ保存機器が見つからないか、エラーが起きています。別のデータ保存機器を選択してください
+
+別のデータ保存機器を選択
+
+データ保存機器が選択されていません
+
+データ保存機器を選択しない場合、ゲームはセーブできなくなります
+
+データ保存機器を選択
+
+セーブなしでプレイ
+
+データ保存機器が取り外されています。新しいデータ保存機器を選択してください
+
+ロードに失敗
+
+セーブデータの名前を入力
+
+セーブデータの名前を入力してください
+
+Xbox ダッシュボードに戻る
+
+本当にゲームを終了してもよろしいですか?
+
+サインアウト
+
+ゲーマー プロフィールからサインアウトしました。タイトル画面に戻ります
+
+ゲーマー プロフィールからサインアウトしました。マッチを終了します
+
+プレイを続ける
+
+Xbox LIVE にサインインしていません
+
+このゲームの一部の機能では、Xbox LIVE にサインインしているゲーマー プロフィールが必要となります。現在は Xbox LIVE にサインインしていません
+
+この機能を使うには、Xbox LIVE にサインインしているゲーマー プロフィールが必要です
+
+Xbox LIVE にサインイン
+
+サインインせずにプレイを続ける
+
+実績獲得のエラー
+
+ゲーマー プロフィールに正常にアクセスできませんでした。現在は実績を獲得できません
+
+ゲーマー プロフィールのエラー
+
+ゲーマー プロフィールに設定を保存できませんでした
+
+ゲストのゲーマー プロフィール
+
+ゲストのゲーマー プロフィールではこの機能を利用できません。別のゲーマー プロフィールを使用してください
+
+保存中...
+
+保存しています。本体の電源を切らないでください
+
+完全版を購入
+
+これは Minecraft のお試し版です。完全版であれば、今すぐ獲得できる実績があります!
+完全版を購入して、Xbox LIVE を通じて世界中のフレンドと一緒に遊べるMinecraft の楽しさを体験してください。
+完全版を購入しますか?
+
+プロフィールの読み込みに問題が発生したため、メイン メニューに戻ります
+
+新しいダウンロード コンテンツが追加されました! メイン メニューの [Minecraft ストア] からアクセスできます
+
+Minecraft ストアのスキン パックを使えば、あなたのキャラクターの外見を変えられます。メイン メニューの [Minecraft ストア] から品ぞろえを確認してくださいね
+
+高解像度モードを使うと、1 台の Xbox 360 本体で最大 4 人のプレイヤーが分割画面プレイ可能!
+
+Xbox 360 本体に別のコントローラーを接続し START を押すと、いつでもゲームに参加できます
+
+ガンマ設定を変更すると、ゲームの明るさを調整できます
+
+難易度を「ピース」に設定すると、HP が自動的に回復し、夜間にモンスターが出現しなくなります!
+
+オオカミに骨を与えて、手なずけましょう。おすわりさせたり、あなたについてこさせたりできます
+
+持ち物メニューで、カーソルをメニュー外に動かして、{*CONTROLLER_VK_A*} を押すと、アイテムを落とすことができます
+
+夜間にベッドで寝ると、朝まで時間をスキップすることができます。マルチプレイヤー ゲームでは、すべてのプレイヤーが寝ている必要があります
+
+豚から取れる豚肉を調理して食べると HP が回復します
+
+牛から取った革を使用して防具を作りましょう
+
+空のバケツがあれば、牛のミルクを搾ったり、水を汲んだり、溶岩を入れたりできます
+
+くわを使って、土地を耕しましょう
+
+クモは日中は、こちらから攻撃しない限り攻撃してきません
+
+手で地面や砂を掘るよりも、シャベルを使ったほうが速く掘れます
+
+豚肉は生で食べるよりも、調理したほうが HP を多く回復します
+
+たいまつを作って、夜に明かりとして使いましょう。たいまつの回りにはモンスターが近寄ってこなくなります
+
+トロッコとレールを使えば、早く目的地に着けます
+
+苗木を植えれば、成長して木になります
+
+Pigman は、こちらから攻撃しない限り、攻撃してきません
+
+ベッドで寝ることで、復活地点の変更と、夜から朝へ時間を早回しすることができます
+
+Ghast に火の玉を打ち返してやりましょう!
+
+闇のポータルを作れば、別の世界である暗黒界に行くことができます
+
+{*CONTROLLER_VK_B*} を押すと、手に持っているアイテムを落とします!
+
+目的にあった道具を使いましょう!
+
+たいまつに使う石炭が見つからないときには、かまどを使って木から木炭を作ることができます
+
+真下や真上に掘り進むのは、賢いとはいえません
+
+ガイコツの骨から作れる骨粉は、肥料として使って、色々なものを一瞬で成長させることができます!
+
+Creeper は近づくと爆発します!
+
+溶岩の源のブロックに水が触れると、黒曜石ができます
+
+溶岩の源のブロックを取り除くと、溶岩はしばらくして消えてしまいます
+
+丸石は Ghast の火の玉を防いでくれます。ポータルを守るのに使えます
+
+光源に使用できるブロックは、雪や氷を溶かすことができます。たいまつ、光石、カボチャ ランタンなどのブロックです
+
+屋外にウールで建物を建てる場合には、注意しましょう。雷が当たると燃えてしまいます
+
+バケツ 1 杯の溶岩があれば、かまどで 100 個のブロックを精錬できます
+
+音ブロックで演奏される楽器は、ブロックの下の材質で変化します
+
+ゾンビやガイコツは、水の中では太陽の光に当たっても大丈夫です
+
+オオカミを攻撃すると、近くにいるすべてのオオカミが襲い掛かってきます。ゾンビ Pigman も同じ習性を持っています
+
+オオカミは暗黒界に入ることができません
+
+オオカミは Creeper を攻撃しません
+
+ニワトリは 5~10 分ごとにタマゴを生みます
+
+黒曜石を掘り出すには、ダイヤモンドのツルハシが必要です
+
+Creeper からは火薬が簡単に手に入ります
+
+チェスト 2 つを並べて配置すれば、1 つの大きなチェストになります
+
+手なずけたオオカミの HP は尻尾の状態で分かります。回復するには、肉を与えましょう
+
+緑色の染料を作るには、サボテンをかまどで調理します
+
+ゲームの最新情報は 4J Studios と Kappische のTwitter でゲット!
+
+ポーズ メニューから Minecraft のスクリーンショットを Facebook に公開できます
+
+[遊び方] の最新情報で、更新情報をチェックできます
+
+柵を積み重ね可能としました
+
+minecraftforum には、Xbox 360 版専用セクションがあります
+
+動物の中には、小麦を持っているとついてくるものがいます
+
+いずれかの方向に 20 ブロック以上動けない動物は消滅しません
+
+BGM 制作: C418
+
+Notch の Twitter には 100 万人以上のフォロワーがいます!
+
+スウェーデン人みんなが金髪というわけではありません。たとえば、Mojang の Jens は赤毛です
+
+4J Studios の Xbox 360 向け超ホラー大作「Herobrine」はまさかのキャンセル... というウワサ
+
+アップデートも予定中です。お楽しみに!
+
+Notch って誰?
+
+Mojang はスタッフの数より受けた賞の数の方が多かったりします
+
+有名人も Minecraft をプレイ中!
+
+deadmau5 は Minecraft が大好き!
+
+虫と目を合わせてはいけません
+
+Creeper はプログラムのバグから発生します
+
+ニワトリ? それともアヒル?
+
+MineCon には参加しましたか?
+
+Mojang のスタッフですらジャンクボーイの素顔は知りません
+
+Minecraft Wiki があるのを知っていますか?
+
+Mojang の新しい事務所はとっても最高
+
+Minecraft: Xbox 360 版はさまざまな記録を更新しています!
+
+MineCon 2013 はフロリダ州オーランド (アメリカ合衆国) で開催されました!
+
+.party() は最高でした!
+
+ウワサは鵜呑みにしないこと。ほどほどに信じるのが一番!
+
+{*T3*}遊び方: 基本{*ETW*}{*B*}{*B*}
+Minecraft は自由な発想でブロックを積み上げて、探検したり、いろいろな物を作ったりするゲームです。夜になるとモンスターが現れるので、その前に必ず安全な場所を作っておかなければなりません。{*B*}{*B*}
+周囲を見回すには、{*CONTROLLER_ACTION_LOOK*} を押します。{*B*}{*B*}
+歩き回るには、{*CONTROLLER_ACTION_MOVE*} を押します。{*B*}{*B*}
+ジャンプするには、{*CONTROLLER_ACTION_JUMP*} を押します。{*B*}{*B*}
+ダッシュするには、{*CONTROLLER_ACTION_MOVE*} を前方向にすばやく2回連続で押します。{*CONTROLLER_ACTION_MOVE*} を前に押している間、キャラクターはダッシュを続けます。ただし一定時間が過ぎるか空腹ゲージが{*ICON_SHANK_03*}.以下になると、そこでやめてしまいます。{*B*}{*B*}
+手や、手に持ったアイテムで物を掘ったり、木を切ったりするには、 {*CONTROLLER_ACTION_ACTION*} を押し続けます。ブロックの中には、特別な道具を作らないと、掘ることができないものもあります。{*B*}{*B*}
+手に持ったアイテムは、{*CONTROLLER_ACTION_USE*} で使うことができます。また、{*CONTROLLER_ACTION_DROP*} を押すと、そのアイテムを落とします
+
+{*T3*}遊び方: 画面の表示{*ETW*}{*B*}{*B*}
+画面上にはプレイヤーのステータスが表示されています。HP、空気の残り (水中の場合)、空腹度 (何か食べると回復する)、装備している防具などです。 空腹ゲージの {*ICON_SHANK_01*} が 9 個以上ある状態では、HP が自然に回復します。食べ物を食べると空腹ゲージは回復します。{*B*}
+経験値ゲージも画面に表示され、現在の経験値レベルと次のレベルまでに必要な値を確認できます。 経験値は、生き物を倒した時、特定のブロックを採掘した時、動物を繁殖させた時、釣り、かまどで鉱石を製錬した時などに獲得できる経験値オーブを集めると貯まっていきます。{*B*}{*B*}
+さらに使用できるアイテムも表示され、{*CONTROLLER_ACTION_LEFT_SCROLL*} と {*CONTROLLER_ACTION_RIGHT_SCROLL*} で手に持つアイテムを切り替えられます
+
+{{*T3*}遊び方: 持ち物{*ETW*}{*B*}{*B*}
+持ち物は {*CONTROLLER_ACTION_INVENTORY*} で見ることができます。{*B*}{*B*}
+この画面では、手にしている使用可能なアイテム、所有しているアイテムのリスト、現在装備している防具を確認できます。{*B*}{*B*}
+ポインターを {*CONTROLLER_MENU_NAVIGATE*} で動かして、アイテムに合わせてから {*CONTROLLER_VK_A*} を押すと、アイテムを選択できます。そのアイテムを複数所有している場合は、そのすべてが選択されます。半分だけ選択するには {*CONTROLLER_VK_X*} を使用します。{*B*}{*B*}
+ポインターで選んだアイテムを持ち物の別の場所に移動させるには、移動先で {*CONTROLLER_VK_A*} を押します。 ポインターに複数のアイテムがある場合は、{*CONTROLLER_VK_A*} を押すと全部、 {*CONTROLLER_VK_X*} を押すと 1 つだけ移動させることができます。{*B*}{*B*}
+ポインターで選んだアイテムが防具の場合、適切な防具スロットに移すためのボタンガイドが表示されます。{*B*}{*B*}
+革のアーマーは染色することができます。持ち物メニューのポインターで染料を選び、染色するアイテムの上にポインターを移動させて{*CONTROLLER_VK_X*} を押すと染色することができます
+
+
+{*T3*}使い方: チェスト{*ETW*}{*B*}{*B*}
+チェストを作ったら、それをゲームの世界に置きましょう。{*CONTROLLER_ACTION_USE*} でチェストを使って、中にアイテムを保管できます。{*B*}{*B*}
+ポインターを使って、アイテムを持ち物からチェストに、あるいはその逆に移せます。{*B*}{*B*}
+チェストに入れたアイテムは、そのまま保管されるので、後で、チェストから、自分の持ち物にアイテムを取り出せます
+
+
+{*T3*}使い方: チェスト (大){*ETW*}{*B*}{*B*}
+2 つのチェストを横に並べて置くと、チェスト (大) になります。よりたくさんのアイテムを保管できます。{*B*}{*B*}
+使い方は普通のチェストと同じです
+
+
+{*T3*}遊び方: 工作{*ETW*}{*B*}{*B*}
+工作画面では、持ち物のアイテムを組み合わせて新しいアイテムを作れます。 工作画面を開くには {*CONTROLLER_ACTION_CRAFTING*} を押します。{*B*}{*B*}
+画面上部のタブを {*CONTROLLER_VK_LB*} と {*CONTROLLER_VK_RB*} で切り替えて、作りたいアイテムのグループを選んでから {*CONTROLLER_MENU_NAVIGATE*} で作るアイテムを選びます。{*B*}{*B*}
+工作ウィンドウに、そのアイテムを作るのに必要なアイテムが表示されます。{*CONTROLLER_VK_A*} を押すと、アイテムが作られ、持ち物に追加されます
+
+
+{*T3*}使い方: 作業台{*ETW*}{*B*}{*B*}
+作業台を使うと、もっと大きなアイテムを作ることができます{*B*}{*B*}
+ゲームの世界に作業台を置いて {*CONTROLLER_ACTION_USE*} を押すと、使うことができます{*B*}{*B*}
+作業台での作業も通常の工作と流れは同じですが、工作ウィンドウが大きくなり、より多くのアイテムを作れるようになります
+
+
+{*T3*}使い方: かまど{*ETW*}{*B*}{*B*}
+かまどを使ってアイテムに熱を加えることで、そのアイテムを加工できます。例えば、鉄鉱石を鉄の延べ棒に変えることができます。{*B*}{*B*}
+ゲームの世界にかまどを置いて {*CONTROLLER_ACTION_USE*} を押すと使うことができます。{*B*}{*B*}
+かまどの下に燃料を入れ、上には加工したいアイテムを入れてください。するとかまどに火が入り、加工が始まります。{*B*}{*B*}
+加工が終わると、そのアイテムをかまどの取り出し口から持ち物に移すことができます。{*B*}{*B*}
+ポインターで選んだアイテムがかまどで使用する素材または燃料の場合、かまどへ移動するためのボタンガイドが表示されます
+
+
+{*T3*}使い方: 発射装置{*ETW*}{*B*}{*B*}
+発射装置を使うと、アイテムを撃ち出すことができます。そのためには発射装置の横にレバーなどのスイッチ部分を取り付ける必要があります。{*B*}{*B*}
+発射装置にアイテムを入れるには、{*CONTROLLER_ACTION_USE*} を押してから、持ち物からアイテムを発射装置に移します。{*B*}{*B*}
+それから取り付けたスイッチを使うと、発射装置がアイテムを撃ち出します
+
+
+{*T3*}使い方: 調合{*ETW*}{*B*}{*B*}
+ポーションの調合には作業台で作れる調合台を使います。ポーションの調合にはまず水のビンが必要なので、大釜や水源からガラスビンに水を移し、水のビンを用意しましょう。{*B*}
+調合台にはビンを置く枠が 3 つあり、1 回の調合で最大 3 つのポーションを調合できます。1 つの材料でビン 3 本分のポーションが作れるので、資源を効率よく使うには一度に 3 つのポーションを作りましょう。{*B*}
+調合台の上の枠にポーションの材料を置いて少し待つと、基剤となるポーションができます。基剤自体に効果はありませんが、別の材料を加えて調合すると、効力を持つポーションを作れます。{*B*}
+このポーションが完成したら、3 つめの材料を加えてさらなる効果をつけてみましょう。レッドストーンの粉を足せば効果の持続時間が長くなり、光石の粉を足せばポーションの効力が高まり、発酵したクモの目を足せばマイナス効果のあるポーションが作れます。{*B*}
+また、どのポーションでも火薬を加えればスプラッシュポーションになります。スプラッシュポーションは投げて使用し、落ちた場所に効果を発揮します。{*B*}ポーションの原材料となるものは以下の通りです:-{*B*}{*B*}
+* {*T2*}暗黒茸{*ETW*}{*B*}
+* {*T2*}クモの目{*ETW*}{*B*}
+* {*T2*}砂糖{*ETW*}{*B*}
+* {*T2*}Ghast の涙{*ETW*}{*B*}
+* {*T2*}Blaze パウダー{*ETW*}{*B*}
+* {*T2*}マグマクリーム{*ETW*}{*B*}
+* {*T2*}輝くスイカ{*ETW*}{*B*}
+* {*T2*}レッドストーンの粉{*ETW*}{*B*}
+* {*T2*}光石の粉{*ETW*}{*B*}
+* {*T2*}発酵したクモの目{*ETW*}{*B*}{*B*}
+
+調合できる材料の組み合わせはたくさんありますので、色々と実験してみてください!
+
+
+{*T3*}使い方: エンチャント{*ETW*}{*B*}{*B*}
+モンスターや動物を倒したり、採掘したり、かまどを使った精錬や料理で獲得した経験値は、一部の道具や武器、防具のエンチャントに使えます。{*B*}
+剣、弓、斧、ツルハシ、シャベルまたは防具をエンチャントテーブルの本の下の枠に置くと、右側のボタンにエンチャントとエンチャントで消費される経験値が示されます。{*B*}
+エンチャントに必要な経験値は、不足している場合は赤、足りている場合は緑で表示されます。{*B*}{*B*}
+エンチャントは消費可能な経験値の範囲でランダムに選択されます。{*B*}{*B*}
+エンチャントテーブルの周囲に、テーブルとブロック 1 つ分のすき間を空けて本棚 (最大 15 台) を並べることで、エンチャントのレベルが上がります。また本棚からテーブル上の本に向けて文字が流れ込むエフェクトが表示されます。{*B*}{*B*}
+エンチャントテーブルに必要な材料はすべて村や採掘、農耕などで手に入ります。{*B*}{*B}
+エンチャントした本は金床を使ってアイテムをエンチャントすることができます。これによりアイテムにより多くのエンチャントを選択することができます{*B*}
+
+
+{*T3*}遊び方: 動物の飼育{*ETW*}{*B*}{*B*}
+動物を特定の場所で飼うには 20 x 20 ブロック未満のエリアに柵を立て、その中に動物を入れます。これで動物は柵の中にとどまり、いつでも様子を見ることができます
+
+
+{*T3*}遊び方: 動物の繁殖{*ETW*}{*B*}{*B*}
+Minecraft に登場する動物は繁殖能力を持ち、自分たちの赤ちゃんバージョンを産み出します!{*B*}
+動物を繁殖させるには、その動物にあった餌を与えて、動物たちを「求愛モード」に導く必要があります。{*B*}
+牛、Mooshroom、羊には小麦、豚にはニンジン、ニワトリには小麦の種か暗黒茸、オオカミには肉を与えましょう。すると、近くにいる求愛モードの仲間を探し始めます。{*B*}
+求愛モードになっている同じ種類の動物が出会うと、少しの間キスをして赤ちゃんが誕生します。赤ちゃんは、成長するまでは両親の後ろをついて回ります。{*B*}
+一度求愛モードになった動物は 5 分間は再び求愛モードになることはありません。{*B*}
+世界全体で出現する動物の数には制限があるため、たくさんいる動物は繁殖しないことがあります
+
+{*T3*}使い方: 闇のポータル{*ETW*}{*B*}{*B*}
+闇のポータルを使うと、地上界と暗黒界の間を行き来できます。暗黒界は地上界の場所をすばやく移動したい時に便利です。暗黒界での 1 ブロックの移動は、地上界での 3 ブロックの移動に相当します。つまり暗黒界にもポータルを作って
+地上界に出ると、同じ時間で 3 倍離れた場所に出ることができます。{*B*}{*B*}
+ポータルを作るには、少なくとも黒曜石が 10 個必要で、ポータルは高さ 5 ブロック x 横 4 ブロック x 奥行 1 ブロックでなければいけません。ポータルの枠を作ったら、枠の中に火を付けることでポータルが起動します。火は、火打ち石と打ち金または発火剤で付けられます。{*B*}{*B*}
+右の図は、完成したポータルの見本です
+
+
+{*T3*}遊び方: マルチプレイヤー{*ETW*}{*B*}{*B*}
+Minecraft Xbox 360 版は、初期設定でマルチプレイヤー ゲームになっています。高解像度でプレイしている場合はコントローラーを接続して START を押すと、いつでもローカル プレイヤーがゲームに参加できます。{*B*}{*B*}
+開始または参加したオンライン ゲームはフレンド リストに表示されます (ホストとしてゲームを開始するときに [招待者のみ] を選択した場合を除きます)。フレンドが参加するとそのフレンド リストにもゲームが表示され、フレンドからフレンドにゲームが広がっていきます (オプションで [フレンドのフレンドを許可] を選択している場合)。{*B*}
+ゲーム中に BACK ボタンを押すと、参加中のプレイヤーのリストを開けます。リストからゲーマー カードを確認したり、プレイヤーを追放したり、ゲームに招待したりできます
+
+
+{*T3*}遊び方: スクリーンショットの公開{*ETW*}{*B*}{*B*}
+ポーズ メニューで {*CONTROLLER_VK_Y*} を押してスクリーンショットを撮影し、Facebook で公開することができます。投稿の前に、撮影したスクリーンショットの縮小版が表示され、投稿に添えるメッセージを編集できます。{*B*}{*B*}
+スクリーンショット撮影に適したカメラ モードも用意されています。キャラクターの正面からのショットを撮影して公開するには、{*CONTROLLER_ACTION_CAMERA*} を何度か押して正面からのカメラに切り替え、{*CONTROLLER_VK_Y*} を押します。{*B*}{*B*}
+スクリーンショットにゲーマータグは表示されません
+
+
+{*T3*}遊び方: 世界へのアクセス禁止{*ETW*}{*B*}{*B*}
+プレイ中の世界が不適切なコンテンツを含んでいる場合、その世界をアクセス禁止リストに登録できます。
+世界をアクセス禁止リストに登録するには、ポーズ メニューを開き、{*CONTROLLER_VK_RB*} を押して、[アクセスを禁止] を選択します。
+次にその世界でプレイしようとすると、アクセス禁止リストに登録されていることが通知され、リストから外してプレイするか、プレイをキャンセルして戻るか選択できます
+
+{*T3*}遊び方: クリエイティブ モード{*ETW*}{*B*}{*B*}
+クリエイティブ モード画面では採掘や工作をしなくても、ゲーム内のあらゆるアイテムを持ち物に加えられます。
+プレイヤーの持ち物内にあるアイテムは、世界に置いたり使ったりしても持ち物から消えないため、材料集めの面倒がなく建設そのものに集中できます。{*B*}
+クリエイティブ モードで作成、ロード、セーブした世界は、たとえ後でサバイバル モードでロードしたとしても、実績やランキング更新の対象になりません。{*B*}
+クリエイティブ モードで飛行するには、{*CONTROLLER_ACTION_JUMP*} をすばやく 2 回押します。飛行をやめるには、同じ操作をもう一度行います。より速く飛ぶには、飛行中に {*CONTROLLER_ACTION_MOVE*} を前方向にすばやく 2 回押します。
+飛行モードでは、{*CONTROLLER_ACTION_JUMP*} で上昇、{*CONTROLLER_ACTION_SNEAK*} で下降できます。または、{*CONTROLLER_ACTION_DPAD_UP*} で上昇、 {*CONTROLLER_ACTION_DPAD_DOWN*} で下降、
+{*CONTROLLER_ACTION_DPAD_LEFT*} で左に、{*CONTROLLER_ACTION_DPAD_RIGHT*} で右に飛べます
+
+{*T3*}遊び方: ホストとプレイヤーのオプション{*ETW*}{*B*}{*B*}
+
+{*T1*}ゲーム オプション{*ETW*}{*B*}
+世界をロードまたは生成する際、[その他のオプション] を選択して、より詳細な設定ができるようになりました。{*B*}{*B*}
+
+ {*T2*}PvP{*ETW*}{*B*}
+ 有効にすると、プレイヤーが他のプレイヤーにダメージを与えられるようになります (サバイバル モードのみ)。{*B*}{*B*}
+
+ {*T2*}高度な操作を許可{*ETW*}{*B*}
+ 無効にするとゲームに参加したプレイヤーの行動が制限され、採掘やアイテムの使用、ブロックの設置、ドアとスイッチや入れ物の使用、他のプレイヤーや動物に対する攻撃ができなくなります。ゲーム内のメニューにより特定のプレイヤーに対する設定を変更できます。{*B*}{*B*}
+
+ {*T2*}火の延焼{*ETW*}{*B*}
+ 有効にすると近くの可燃性ブロックに火が延焼します。この設定はゲーム内のメニューで変更できます。{*B*}{*B*}
+
+ {*T2*}TNT の爆発{*ETW*}{*B*}
+ 有効にすると起爆した TNT が爆発します。この設定はゲーム内のメニューで変更できます。{*B*}{*B*}
+
+ {*T2*}ホスト特権{*ETW*}{*B*}
+ 有効にすると、ホストの飛行能力、疲労無効、ゲーム内メニューでの非表示を切り替えられます。{*DISABLES_ACHIEVEMENTS*}{*B*}{*B*}
+
+{*T1*}世界の生成のオプション{*ETW*}{*B*}
+世界の生成にオプションが追加されました。{*B*}{*B*}
+
+ {*T2*}建物の生成{*ETW*}{*B*}
+ 有効にすると村や要塞などの建物が世界に生成されるようになります。{*B*}{*B*}
+
+ {*T2*}スーパーフラット{*ETW*}{*B*}
+ 有効にすると、地上界および暗黒界に、まったく平らな世界を生成します。{*B*}{*B*}
+
+ {*T2*}ボーナス チェスト{*ETW*}{*B*}
+ 有効にすると、プレイヤーの復活地点の近くに便利なアイテムの入ったチェストが出現します。{*B*}{*B*}
+
+ {*T2*}暗黒界をリセットする{*ETW*}{*B*}
+ 有効にすると暗黒界を再生成します。暗黒砦が存在しないセーブ データがある場合に便利です{*B*}{*B*}
+
+ {*T1*}ゲーム内のオプション{*ETW*}{*B*}
+ ゲーム中に BACK を押すと、様々なオプション メニューを開くことができます。{*B*}{*B*}
+
+ {*T2*}ホスト オプション{*ETW*}{*B*}
+ ホストプレイヤーと [ホストオプションを変更できる] に設定されたプレイヤーは [ホスト オプション] メニューを使用できます。このメニューでは火の延焼や TNT の爆発などを切り替えることができます。{*B*}{*B*}
+
+{*T1*}プレイヤー オプション{*ETW*}{*B*}
+プレイヤー特権を変更するには、{*CONTROLLER_VK_A*} でプレイヤー特権メニューを開いて次のオプションを設定してください。{*B*}{*B*}
+
+ {*T2*}建設と採掘の許可{*ETW*}{*B*}
+ [高度な操作を許可] を無効にしている場合のみ使えるオプションです。 有効にするとこのゲームに参加したプレイヤーは通常通りに世界を操作できます。無効にすると、このゲームに参加したプレイヤーは建設や採掘および多くのアイテムやブロックの操作ができません。{*B*}{*B*}
+
+ {*T2*}ドアとスイッチの使用を許可{*ETW*}{*B*}
+ [高度な操作を許可] を無効にしている場合のみ使えるオプションです。無効にすると、このゲームに参加したプレイヤーはドアとスイッチを使用できません。{*B*}{*B*}
+
+ {*T2*}入れ物の使用を許可{*ETW*}{*B*}
+ [高度な操作を許可] を無効にしている場合のみ使えるオプションです。無効にすると、このゲームに参加したプレイヤーはチェストなどの入れ物を使用できません。{*B*}{*B*}
+
+ {*T2*}プレイヤーを攻撃可能{*ETW*}{*B*}
+ [高度な操作を許可] を無効にしている場合のみ使えるオプションです。無効にすると、プレイヤーが他のプレイヤーにダメージを与えられなくなります。{*B*}{*B*}
+
+ {*T2*}動物を攻撃可能{*ETW*}{*B*}
+ [高度な操作を許可] を無効にしている場合のみ使えるオプションです。無効にすると、プレイヤーが動物にダメージを与えられなくなります。{*B*}{*B*}
+
+ {*T2*}ホスト オプションを変更できる{*ETW*}{*B*}
+ この設定を有効にすると、そのプレイヤーは「高度な操作を許可」が無効の場合に、ホストを除く他のプレイヤーの特権や、プレイヤーの追放、火の延焼と TNT の爆発の設定ができるようになります。{*B*}{*B*}
+
+ {*T2*}プレイヤーを追放{*ETW*}{*B*}
+ ホストプレイヤーと同じ {*PLATFORM_NAME*} を使用していないプレイヤーに対してこのオプションを選択すると、そのプレイヤーおよび対象プレイヤーと同じ {*PLATFORM_NAME*} を使用している他のプレイヤーがゲームから追放されます。追放されたプレイヤーは、ゲームが再起動されるまでは再び参加できません。{*B*}{*B*}
+
+{*T1*}ホストプレイヤー オプション{*ETW*}{*B*}
+[ホスト特権] が有効の場合、ホストプレイヤーは自分に特権を設定できます。ホスト特権を変更するには、プレイヤー名を選択して {*CONTROLLER_VK_A*} で特権のメニューを開き、次のオプションを設定してください。{*B*}{*B*}
+
+ {*T2*}飛行可能{*ETW*}{*B*}
+ 有効にすると、飛行できるようになります。クリエイティブ モードでは全プレイヤーが飛行できるため、サバイバル モードにのみ適用されます。{*B*}{*B*}
+
+ {*T2*}疲労無効{*ETW*}{*B*}
+ サバイバル モードにのみ適用されるオプションです。有効にすると移動、ダッシュ、ジャンプなどの行動で空腹ゲージが減らなくなります。ただしプレイヤーがダメージを受けている間は、回復中に空腹ゲージがゆっくり減少します。{*B*}{*B*}
+
+ {*T2*}不可視{*ETW*}{*B*}
+ 有効にするとプレイヤーは他のプレイヤーから見えなくなり、ダメージも受けなくなります。{*B*}{*B*}
+
+ {*T2*テレポート可能{*ETW*}{*B*}
+ 自分や他のプレイヤーを世界にいる他のプレイヤーの場所に移動することができます
+
+
+次へ
+
+前へ
+
+基本
+
+画面の表示
+
+持ち物
+
+チェスト
+
+工作
+
+かまど
+
+発射装置
+
+動物の飼育
+
+動物の繁殖
+
+調合
+
+エンチャント
+
+闇のポータル
+
+マルチプレイヤー
+
+スクリーンショットの公開
+
+世界へのアクセス禁止
+
+クリエイティブ モード
+
+ホストとプレイヤーのオプション
+
+取引
+
+金床
+
+果ての世界
+
+{*T3*}遊び方: 果ての世界{*ETW*}{*B*}{*B*}
+果ての世界は別世界の 1 つで、果てのポータルを起動して行くことができます。果てのポータルは地上界の地下深くの要塞にあります。{*B*}
+果てのポータルを起動するには、エンダーアイを果てのポータルの枠内にはめ込む必要があります。{*B*}
+ポータルが起動したら、飛び込んで果ての世界に行きましょう。{*B*}{*B*}
+果ての世界では、恐ろしく手ごわい Enderman たちが待ち構えているだけでなく、エンダー ドラゴンが出現します。果ての世界に進む前にしっかり準備を整えましょう!{*B*}{*B*}
+8 本の黒曜石の柱の上にはエンダー クリスタルがあり、エンダー ドラゴンはこれを使って回復します。
+戦いが始まったら最初にエンダー クリスタルをひとつずつ破壊しましょう。{*B*}
+手前の数個は矢が届く場所にありますが、残りは鉄の柵で囲まれています。届く高さまで足場を積み上げましょう。{*B*}{*B*}
+その間、エンダー ドラゴンが飛びかかってきたり、エンダー アシッド ブレスを吐いて攻撃してきます!{*B*}
+柱の中央にあるタマゴ台に近づくと、エンダー ドラゴンが攻撃しようと降下してきます。ダメージを与えるチャンスです!{*B*}
+アシッド ブレスをかわしながら、エンダー ドラゴンの弱点である目を狙うのが効果的です。助けてくれるフレンドがいる場合は、果ての世界に来てもらって一緒に戦いましょう!{*B*}{*B*}
+あなたが一度でも果ての世界に入ると、フレンドの地図にも果てのポータルの場所が表示されるようになり
+簡単に参加してもらえます
+
+
+ダッシュ
+
+最新情報
+
+{*T3*}修正と追加{*ETW*}{*B*}{*B*}
+- 新しいアイテムを追加しました。エメラルド、エメラルド鉱石、エメラルドのブロック、エンダー チェスト、トリップワイヤー フック、エンチャントした金のリンゴ、金床、植木鉢、丸石の壁、苔の生えた丸石の壁、ウィザーの絵、ジャガイモ、ベイクド ポテト、有毒なジャガイモ、ニンジン、金のニンジン、棒付きのニンジン
+パンプキン パイ、暗視のポーション、不可視のポーション、闇のクォーツ、闇のクォーツ鉱石、クォーツのブロック、クォーツの厚板、クォーツの階段、模様入りのクォーツのブロック、柱状のクォーツのブロック、エンチャントした本、カーペット。{*B*}
+- なめらかな砂岩と模様入りの砂岩の新しいレシピを追加しました。{*B*}
+- 新しい生物、村人ゾンビを追加しました。{*B*}
+- 新しい地形生成機能を追加しました。砂漠の神殿、砂漠の村、ジャングルの神殿。{*B*}
+- 村人との取引を追加しました。{*B*}
+- 金床の画面を追加しました。{*B*}
+- 革のアーマーを染色できます。{*B*}
+- オオカミの首輪を染色できます。{*B*}
+- 棒付きのニンジンで乗り物の豚を操縦できます。{*B*}
+- ボーナス チェスト コンテンツのアイテムを増やしました。{*B*}
+- ハーフブロックとハーフブロック上のその他のハーフブロックの配置を変更しました。{*B*}
+- 上下逆の階段と厚板の配置を変更しました。{*B*}
+- 異なる村人の職業を追加しました。{*B*}
+- スポーン エッグから出現した村人の職業がランダムになります。{*B*}
+- 横道の丸太の配置を追加しました。{*B*}
+- 木の道具をかまどの燃料として使用できます。{*B*}
+- 氷板とガラス板を技能でエンチャントした道具で回収できます。{*B*}
+- 木のボタンと木のプレッシャー プレートを矢で起動できます。{*B*}
+- 闇の生物が地上界のポータルから発生します。{*B*}
+- Creeperとクモが、最後に攻撃してきたプレイヤーに対して攻撃的になります。{*B*}
+- クリエイティブ モードの生物が短時間で中立に戻ります。{*B*}
+- 溺れている時のノックバックを排除しました。{*B*}
+- ゾンビに壊されているドアのダメージが表示されます。{*B*}
+- 暗黒界では氷が溶けます。{*B*}
+- 雨が降っている時に大釜を外に出すと一杯になります。{*B*}
+- ピストンの更新に 2 倍の時間がかかります。{*B*}
+- 豚を殺すと鞍を落とします (鞍を着けている場合)。{*B*}
+- 果ての世界の空の色を変更しました。{*B*}
+- ひも (トップワイヤー用) を付けることができます。{*B*}
+- 雨が葉の間をしたたり落ちます。{*B*}
+- ブロックの下にレバーを付けることができます。{*B*}
+- 難易度設定によって TNT がさまざまなダメージを与えます。{*B*}
+- 本のレシピを変更しました。{*B*}
+- スイレンの葉がボートを壊す代わりに、ボートがスイレンの葉を壊します。{*B*}
+- 豚の落とす豚肉を増やしました。{*B*}
+- スーパーフラットで発生するスライムを減らしました。{*B*}
+- Creeper のダメージ変数が難易度設定に基づき、ノックバックを増やしました。{*B*}
+- Endermanがアゴを開かないという問題を修正しました。{*B*}
+- プレイヤーのテレポートを追加しました (ゲーム内の BACK メニューを使用)。{*B*}
+- リモート プレイヤー用の飛行、不可視、不死身の新しいホスト オプションを追加しました。{*B*}
+- 新しいアイテムと機能のチュートリアルを追加しました。{*B*}
+- チュートリアルの音楽ディスク チェストの位置を変更しました{*B*}
+
+
+{*ETB*}ようこそ! まだお気づきでないかもしれませんが、Minecraft がアップデートされました。{*B*}{*B*}
+ここでご紹介しているのは、フレンドと一緒に遊べる新機能のほんの一部です。よく読んで楽しく遊んでください!{*B*}{*B*}
+{*T1*}新アイテム{*ETB*} - エメラルド、エメラルド鉱石、エメラルドのブロック、エンダー チェスト、トリップワイヤー フック、エンチャントした金のリンゴ、金床、植木鉢、丸石の壁、苔の生えた丸石の壁、ウィザーの絵、ジャガイモ、ベイクド ポテト、有毒なジャガイモ、ニンジン、金のニンジン、棒付きのニンジン、
+パンプキン パイ、暗視のポーション、不可視のポーション、闇のクォーツ、闇のクォーツ鉱石、クォーツのブロック、クォーツの厚板、クォーツの階段、模様入りのクォーツのブロック、柱状のクォーツのブロック、エンチャントした本、カーペット。{*B*}{*B*}
+ {*T1*}新しい生物{*ETB*} - 村人ゾンビ。{*B*}{*B*}
+{*T1*}新機能{*ETB*} - 村人との取引、金床での武器と道具の修理またはエンチャント、エンダー チェストにアイテムを保管、棒付きニンジンを使って乗った豚の操縦!{*B*}{*B*}
+{*T1*}新しいミニチュートリアル{*ETB*} ? チュートリアルの新機能を紹介!{*B*}{*B*}
+{*T1*}新しい「イースター エッグ」{*ETB*} ? チュートリアルの秘密の音楽ディスクを移動しました。もう一度見つけ出してみましょう!{*B*}{*B*}
+
+
+手よりも攻撃力が高い
+
+土、草、砂、砂利や雪を掘るのに使う。手で掘るより速い。雪玉を掘るにはシャベルが必要
+
+石でできているブロックと鉱石を掘るのに必要
+
+木でできているブロックを切り出すのに使う。手で切り出すより速い
+
+土や草のブロックを耕して作物を育てられるようにする
+
+木のドアは、使用したり、叩いたり、レッドストーンを使うことで開きます
+
+鉄のドアを開くには、レッドストーンや、ボタン、スイッチを使う必要があります
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+装備するとアーマーポイント +1
+
+装備するとアーマーポイント +3
+
+装備するとアーマーポイント +2
+
+装備するとアーマーポイント +1
+
+装備するとアーマーポイント +2
+
+装備するとアーマーポイント +5
+
+装備するとアーマーポイント +4
+
+装備するとアーマーポイント +1
+
+装備するとアーマーポイント +2
+
+装備するとアーマーポイント +6
+
+装備するとアーマーポイント +5
+
+装備するとアーマーポイント +2
+
+装備するとアーマーポイント +2
+
+装備するとアーマーポイント +5
+
+装備するとアーマーポイント +3
+
+装備するとアーマーポイント +1
+
+装備するとアーマーポイント +3
+
+装備するとアーマーポイント +8
+
+装備するとアーマーポイント +6
+
+装備するとアーマーポイント +3
+
+光沢を放つ延べ棒、道具を作る材料として使う。かまどで鉱石を精錬して作る
+
+延べ棒、宝石、染料などを、世界に置けるブロックに変えられる。高級な建築用ブロックや、鉱石の保管用として使うことができる
+
+プレイヤーや動物、モンスターなどが上を通ると電気を送り出す。木の重量感知板は、物を上に置くことでも作動する
+
+小さな階段を作るのに使う
+
+長い階段を作るのに使う。それぞれの上部に 2 つの厚板を置くことで、通常サイズの 2 倍の厚板ブロックを作ることができる
+
+長い階段を作るのに使う。それぞれの上部に 2 つの厚板を置くことで、通常サイズの 2 倍の厚板ブロックを作ることができる
+
+明かりを照らすのに使う。たいまつは、雪や氷も溶かすことができる
+
+建築用素材。様々な物の材料になる。どんな形の木からでも切り出せる
+
+建築用素材。通常の砂のように重力の影響を受けない
+
+建築用素材
+
+たいまつ、矢、看板、はしご、柵を作る、または道具や武器の握り部分を作るのに使う
+
+ゲーム内の全てのプレイヤーがベッドで寝ている時に使うと、夜から朝へ時間を早回しすることができる。そして、使用したプレイヤーの復活地点が変わる。
+ベッドの色は使われたウールの色に関係なく、常に同じ
+
+通常の工作よりも、さらに多くの種類のアイテムを作ることができる
+
+鉱石を精錬して木炭やガラスを作ったり、魚や豚肉を調理することができる
+
+中にブロックやアイテムを保管できる。2 つのチェストを横に並べることで、2 倍の容量のチェスト (大) ができる
+
+「障害物」として機能し、ジャンプで飛び越えることができない。プレイヤーや動物、モンスターに対しては、高さ 1.5 ブロックとして機能し、他のブロックに対しては高さ 1 ブロックとして機能する
+
+垂直方向に登るのに使う
+
+使用したり、叩いたり、レッドストーンで開く。普通のドアとして機能するが、ブロック 1 個分であり、平らな床面として置ける
+
+自分や他のプレイヤーの入力したテキストを表示できる
+
+たいまつよりも明るい光で照らすことができる。雪や氷を溶かしたり、水中でも使える
+
+爆発を起こすのに使う。置いてから火打石と打ち金を使ったり、電気を通すことで起爆する
+
+きのこシチューを入れるのに使う。シチューを食べてしまっても、おわんは残る
+
+水や溶岩、ミルクを貯めて移動するのに使う
+
+水を入れて運ぶのに使う
+
+溶岩を入れて運ぶのに使う
+
+ミルクを入れて運ぶのに使う
+
+火を起こしたり、TNT を起爆したり、建築済みのポータルを開くのに使う
+
+魚を獲るのに使う
+
+太陽と月の位置を表示する
+
+自分のスタート地点を示す
+
+手に持っていると、探索済みのエリアの地図を表示する。道を確認するのに使う
+
+矢を射る攻撃ができる
+
+弓と組み合わせて、武器として使う
+
+2.5{*ICON_SHANK_01*} 回復する
+
+1{*ICON_SHANK_01*} 回復する。6 回まで使用できる
+
+1{*ICON_SHANK_01*} 回復する
+
+1{*ICON_SHANK_01*} 回復する
+
+3{*ICON_SHANK_01*} 回復する
+
+1{*ICON_SHANK_01*} 回復する。かまどで調理することも可能。病気になる場合もある
+
+3{*ICON_SHANK_01*} 回復する。鶏肉をかまどで調理するとできる
+
+1.5{*ICON_SHANK_01*} 回復する。かまどで調理することも可能
+
+4{*ICON_SHANK_01*} 回復する。牛肉をかまどで調理するとできる
+
+1.5{*ICON_SHANK_01*} 回復する。かまどで調理することも可能
+
+4{*ICON_SHANK_01*} 回復する。生の豚肉をかまどで調理するとできる
+
+1{*ICON_SHANK_01*} 回復する。かまどで調理することも可能。ヤマネコに与えて手なずけることもできる
+
+2.5{*ICON_SHANK_01*} 回復する。生魚をかまどで調理するとできる
+
+2{*ICON_SHANK_01*} 回復する。金のリンゴの材料となる
+
+2{*ICON_SHANK_01*} 回復し、さらに HP が 4 秒間、自動回復する。リンゴと金の塊から作る
+
+2{*ICON_SHANK_01*} 回復するが、病気になる場合もある
+
+ケーキの材料の 1 つ。ポーションの調合としても使うことができる
+
+オン/オフを切り替えて、電気を送れる。もう一度押すまでオンまたはオフの状態が保たれる
+
+ブロックの横に取り付けて、常に電気を送ったり、送信機、受信機として使える。
+弱い明かりとしても使用可能
+
+反復装置、遅延装置、ダイオードとして単体で、または組み合わせて、レッドストーンの回路に使われる
+
+押すと電気を送れる。約 1 秒間起動した後、自動的にオフになる
+
+レッドストーンを電源として使い、ランダムな順番でアイテムを撃ち出す
+
+音を奏でる。叩くと音程を変えられる。種類の違うブロックの上に置くことで、楽器の種類を変えることができる
+
+トロッコを走らせるのに使う
+
+電源が入っている時、上を走るトロッコを加速させる。電源が入っていない時は、上でトロッコが止まる
+
+トロッコ専用の重量感知板として機能する。電源が入っている時にレッドストーンの信号を送る
+
+プレイヤーや動物、モンスターを乗せて、レールの上を移動できる
+
+物を運んで、レール上を移動できる
+
+レールの上を移動する。石炭を使うことで他のトロッコを押すことができる
+
+泳ぐよりも速く水上を移動できる
+
+羊から採れる。染料を使って色を変えることができる
+
+建築用素材。染料で色を変えることができる。ウールは羊から簡単に入手できるので、この作り方はあまりお勧めできない
+
+黒のウールを作るのに使う染料
+
+緑のウールを作るのに使う染料
+
+茶色のウールを作るのに使う染料。クッキーの材料やカカオポッドを育てるのために使うこともできる
+
+銀のウールを作るのに使う染料
+
+黄色のウールを作るのに使う染料
+
+赤のウールを作るのに使う染料
+
+即座に作物や木、背の高い草、巨大なきのこ、花などを育てるのに使う。染料の材料にもなる
+
+ピンクのウールを作るのに使う染料
+
+オレンジのウールを作るのに使う染料
+
+黄緑のウールを作るのに使う染料
+
+灰色のウールを作るのに使う染料
+
+薄灰色のウールを作るのに使う染料
+(注意: 薄灰色の染料は灰色の染料と骨粉を混ぜて作ることもできる。この方法だと 3 つではなく 1 つの墨袋から 4 つの薄灰色の染料を作ることができる)
+
+空色のウールを作るのに使う染料
+
+水色のウールを作るのに使う染料
+
+紫のウールを作るのに使う染料
+
+赤紫のウールを作るのに使う染料
+
+青のウールを作るのに使う染料
+
+音楽ディスクを聞ける
+
+強力な道具、武器や防具を作ることができる
+
+たいまつよりも明るい光で照らすことができる。雪や氷を溶かしたり、水中でも使える
+
+本や地図を作るのに使う
+
+本棚を作るのに使ったり、エンチャントしてエンチャントした本を作るために使う
+
+エンチャントテーブルの周囲に置いて、より強力なエンチャントを作る
+
+飾り付けとして使う
+
+鉄のツルハシ以上で掘れる。かまどに入れて精錬すると、金の延べ棒になる
+
+石のツルハシ以上で掘れる。かまどに入れて精錬すると、鉄の延べ棒になる
+
+ツルハシで掘れる。石炭が採れる
+
+石のツルハシ以上で掘れる。ラピスラズリが採れる
+
+鉄のツルハシ以上で掘れる。ダイヤモンドが採れる
+
+鉄のツルハシ以上で掘れる。レッドストーンの粉が採れる
+
+ツルハシで掘れる。丸石が採れる
+
+シャベルを使って集める。建築用に使われる
+
+植えると、最終的に木に成長する
+
+破壊することができない
+
+様々な物に火をつけることができる。バケツを使って集める
+
+シャベルを使って集める。かまどに入れて精錬するとガラスになる。下に何もないと重力に引かれる
+
+シャベルを使って集める。掘っていると、時々火打ち石が出てくる。下に何もないと重力に引かれる
+
+斧を使って切る。木の板の材料になったり、燃料としても使われる
+
+かまどで砂を精錬するとできる。建築用素材として使えるが、掘ると壊れる
+
+ツルハシを使って石から掘り出す。かまどや石の道具を作るのに使う
+
+かまどで粘土を焼いて作る
+
+かまどで焼くとレンガになる
+
+破壊されると粘土の塊を落とします。粘土はかまどで焼くとレンガになります
+
+雪玉を保管するのに使える
+
+シャベルで掘り出して雪玉を作る
+
+壊すと時々、小麦の種が出てくる
+
+染料の材料になる
+
+おわんに入れてシチューを作れる
+
+ダイヤモンドのツルハシのみで掘れる。水と溶岩が混ざることで生まれる。ポータルの材料になる
+
+モンスターを出現させる
+
+地面に置いて、電気を伝えられる。ポーションと調合すると効果の持続時間が延長される
+
+十分に育つと作物が実り、小麦を収穫できる
+
+耕された地面。種を植えられる
+
+かまどで調理することで、緑色の染料になる
+
+砂糖を作るための材料になる
+
+ヘルメットとしてかぶったり、たいまつと組み合わせてカボチャ ランタンにできる。パンプキンパイの主な材料でもある
+
+いったん火がつくと、燃え続ける
+
+上を歩くもののスピードを遅くする
+
+ポータルを通過すると、地上界と暗黒界を行き来できる
+
+かまどの燃料として使用する。たいまつの材料にもなる
+
+クモを倒すと手に入る。弓や釣り竿の材料になったり、地面に置いてトリップワイヤーを作る
+
+ニワトリを倒すと手に入る。矢の材料になる
+
+Creeper を倒すと手に入る。TNT 火薬の材料になる。ポーションを調合する材料として使う
+
+農地にまくと作物ができる。日光が十分に当たるようにしよう!
+
+作物から収穫できる。食べ物アイテムを作るのに使われる
+
+砂利を掘ると手に入る。火打ち石と打ち金の材料になる
+
+豚に向かって使うと、その豚に乗れるようになる。豚は棒付きのニンジンを使って操縦できる
+
+雪を掘ると手に入る。投げることができる
+
+牛を倒すと手に入る。防具の材料となる。本を作ることができる
+
+スライムを倒すと手に入る。ポーションを調合する材料として使う。吸着ピストンの材料にもなる
+
+ニワトリがランダムで落とす。食べ物アイテムの材料になる
+
+光石を掘ると手に入る。光石のブロックに戻すことができる。ポーションと調合すると効果が上がる
+
+ガイコツを倒すと手に入る。骨粉の材料となる。オオカミに使うと手懐けることができる
+
+ガイコツに Creeper を倒させると手に入る。ジュークボックスで再生できる
+
+火を消し、作物の成長を促進する。バケツで集めることができる
+
+壊すと時々、苗木を落とす。苗木は植えると木へと成長する
+
+ダンジョンにある。建設、飾り付けに使う
+
+羊からウールを刈り取ったり、葉っぱのブロックを収穫するのに使う
+
+(ボタン、レバー、重量感知板、レッドストーンのたいまつなどで) 電気が送られると、ピストンが伸びてブロックを押すことができる
+
+(ボタン、レバー、重量感知板、レッドストーンのたいまつなどで) 電気が送られると、ピストンが伸びてブロックを押すことができる。また、ピストンが戻るときに、その時に触れているブロックを引き戻す
+
+石ブロックから作る。要塞で見かけることが多い
+
+柵と同じく、障害物として使う
+
+ドアと似ているが、主に柵と組み合わせて使う
+
+切ったスイカから作れる
+
+透明なブロックで、ガラスブロックの代わりに使える
+
+植えるとカボチャが生える
+
+植えるとスイカが生える
+
+Enderman が倒されたときに落とす。投げると、落ちた場所に使用者がテレポートされ、HP が少し減る
+
+上面に草が生えた土ブロック。シャベルを使って集める。建築用に使われる
+
+建設と飾り付けに使う
+
+上を歩くと移動が遅くなる。ハサミで破壊でき、ひもが採れる
+
+破壊されると Silverfish を出現させる。近くで別の Silverfish が攻撃を受けたときにも、Silverfish を出現させる場合がある
+
+置くと徐々に茂る。ハサミを使って集める。はしごのように登ることができる
+
+上面を歩くと滑る。上に載ったブロックが壊れると水になる。光源にあまり近づけたり暗黒界に置くと溶ける
+
+飾り付けとして使う
+
+ポーションの調合や要塞を探すのに使う。暗黒砦の周囲にいる Blaze が落とす
+
+ポーションの調合に使う。Ghast が倒されたときに落とす
+
+ゾンビ Pigman が倒されたときに落とす。ゾンビ Pigman は暗黒界にいる。ポーションを調合する材料として使う
+
+ポーションの調合に使う。暗黒砦に生えている。また、ソウルサンドでも育つ
+
+何に使うかにより、様々な効果が現れる
+
+水を入れるビン。調合台でポーションを作る時、最初に必要になる
+
+食べ物や薬の材料となる有毒のアイテム。クモや洞窟グモが倒されたときに落とす
+
+主にマイナス効果のポーションを調合するのに使う
+
+ポーションの調合や、他のアイテムと合わせてエンダーアイまたはマグマクリームを作るのに使う
+
+ポーションの調合に使う
+
+ポーションやスプラッシュポーションの調合に使う
+
+雨または水バケツを使って水を入れた後、水をガラスビンに詰めることができる
+
+投げると果てのポータルがある方角を示す。果てのポータルの枠内に 12 個置くと、果てのポータルが起動する
+
+ポーションの調合に使う
+
+草ブロックに似ているが、きのこ栽培に最適
+
+水に浮く植物。上を歩くことができる
+
+暗黒砦を建てるのに使う。Ghast の火の玉が効かない
+
+暗黒砦で使う
+
+暗黒砦で手に入る。壊すと暗黒茸を落とす
+
+プレイヤーの経験値を消費して剣やツルハシ、斧、シャベル、弓、防具にエンチャントを行います
+
+エンダーアイを 12 個使って起動すると、果ての世界へ行くためのポータルができる
+
+果てのポータルを作るのに使う
+
+果ての世界に存在するブロックの一種。爆発に対する耐性が高いので建材として便利
+
+果ての世界でエンダー ドラゴンを倒すと出現するブロック
+
+投げると経験値オーブを落とす。経験値オーブを貯めると経験値が上がる
+
+火をつけるのに便利です。発射装置を使って無差別に放火することができる
+
+表示枠に似ていて、ここには設置されたアイテムまたはブロックが表示される
+
+投げると特定の種類の生き物が出現します
+
+長い階段を作るのに使う。それぞれの上部に 2 つの厚板を置くことで、通常サイズの 2 倍の厚板ブロックを作ることができる
+
+長い階段を作るのに使う。それぞれの上部に 2 つの厚板を置くことで、通常サイズの 2 倍の厚板ブロックを作ることができる
+
+かまどで暗黒石を精錬すると出来上がる。暗黒レンガ ブロックの材料となる
+
+動力を受けると点灯する
+
+栽培して、カカオ豆を収穫できる
+
+ヘッド類は飾り付けとして並べたり、ヘルメットのスロットからマスクとして着用もできる
+
+イカ
+
+倒すと墨袋を落とす
+
+牛
+
+倒すと革を落とす。バケツがあればミルクも取れる
+
+羊
+
+毛を刈るときウールを落とす (毛が残っている場合)。ウールはいろいろな色に染められる
+
+ニワトリ
+
+倒すと羽根を落とす。タマゴを持っている場合もある
+
+豚
+
+倒すと豚肉を落とす。鞍があれば乗ることもできる
+
+オオカミ
+
+普段はおとなしいが、攻撃すると反撃してくる。骨を使うと手なずけることができ、プレイヤーについて回って、プレイヤーを攻撃してくる敵を攻撃してくれる
+
+Creeper
+
+近づきすぎると爆発する!
+
+ガイコツ
+
+矢を放ってくる。倒すと矢を落とす
+
+クモ
+
+近づくと攻撃してくる。壁を登ることができる。倒すと糸を落とす
+
+ゾンビ
+
+近づくと攻撃してくる
+
+ゾンビ Pigman
+
+最初はおとなしいが、1 匹を攻撃すると集団で反撃してくる
+
+Ghast
+
+当たると爆発する火の玉を放ってくる
+
+スライム
+
+ダメージを与えると、小さなスライムに分裂する
+
+Enderman
+
+照準を向けると攻撃してくる。ブロックを移動できる
+
+Silverfish
+
+攻撃すると、近くに隠れている Silverfish も集まってくる。石ブロックの中に隠れている
+
+洞窟グモ
+
+牙に毒がある
+
+Mooshroom
+
+空のおわんを使うときのこシチューが採れる。ハサミで毛刈りをするときのこを落とすが、普通の牛になってしまう
+
+スノー ゴーレム
+
+雪ブロックとカボチャで作れるゴーレム。作った人の敵に向かって雪玉を投げつける
+
+エンダー ドラゴン
+
+果ての世界に存在する大きな黒竜
+
+Blaze
+
+暗黒界に出現する敵。主に暗黒砦内にいる。倒すと Blaze ロッドを落とす
+
+マグマ キューブ
+
+暗黒界に出現する。Slime 同様、倒すと小さな Lava Slime に分裂する
+
+村人
+
+ヤマネコ
+
+ジャングルに生息。生魚を与えて飼い慣らせる。不意な動きに驚いてすぐに逃げるため、接近するのは簡単ではない
+
+アイアン ゴーレム
+
+村に出現して村人を守ってくれる。鉄のブロックとカボチャで作ることもできる
+
+Explosives Animator
+
+Concept Artist
+
+Number Crunching and Statistics
+
+Bully Coordinator
+
+Original Design and Code by
+
+Project Manager/Producer
+
+Rest of Mojang Office
+
+Lead game programmer Minecraft PC
+
+Ninja Coder
+
+CEO
+
+White Collar Worker
+
+Customer Support
+
+Office DJ
+
+Designer/Programmer Minecraft - Pocket Edition
+
+Developer
+
+Chief Architect
+
+Art Developer
+
+Game Crafter
+
+Director of Fun
+
+Music and Sounds
+
+Programming
+
+Art
+
+QA
+
+Executive Producer
+
+Lead Producer
+
+Producer
+
+Test Lead
+
+Lead Tester
+
+Design Team
+
+Development Team
+
+Release Management
+
+Director, XBLA Publishing
+
+Business Development
+
+Portfolio Director
+
+Product Manager
+
+Marketing
+
+ Community Manager
+
+Europe Localization Team
+
+Redmond Localization Team
+
+Asia Localization Team
+
+User Research Team
+
+MGS Central Teams
+
+Milestone Acceptance Tester
+
+Special Thanks
+
+Test Manager
+
+Senior Test Lead
+
+SDET
+
+Project STE
+
+Additional STE
+
+Test Associates
+
+Jon Kagstrom
+
+Tobias Mollstam
+
+Rise Lugo
+
+木の剣
+
+石の剣
+
+鉄の剣
+
+ダイヤモンドの剣
+
+金の剣
+
+木のシャベル
+
+石のシャベル
+
+鉄のシャベル
+
+ダイヤモンドのシャベル
+
+金のシャベル
+
+木のツルハシ
+
+石のツルハシ
+
+鉄のツルハシ
+
+ダイヤモンドのツルハシ
+
+金のツルハシ
+
+木の斧
+
+石の斧
+
+鉄の斧
+
+ダイヤモンドの斧
+
+金の斧
+
+木のくわ
+
+石のくわ
+
+鉄のくわ
+
+ダイヤモンドのくわ
+
+金のくわ
+
+木のドア
+
+鉄のドア
+
+チェーンヘルメット
+
+チェーンチェストプレート
+
+チェーンレギンス
+
+チェーンブーツ
+
+革の帽子
+
+鉄の兜
+
+ダイヤモンドの兜
+
+金の兜
+
+革の服
+
+鉄の胸当て
+
+ダイヤモンドの胸当て
+
+金の胸当て
+
+革のパンツ
+
+鉄の脚甲
+
+ダイヤモンドの脚甲
+
+金の脚甲
+
+革のブーツ
+
+鉄のブーツ
+
+ダイヤモンドのブーツ
+
+金のブーツ
+
+鉄の延べ棒
+
+金の延べ棒
+
+バケツ
+
+水バケツ
+
+溶岩バケツ
+
+火打ち石と打ち金
+
+リンゴ
+
+弓
+
+矢
+
+石炭
+
+木炭
+
+ダイヤモンド
+
+棒
+
+おわん
+
+きのこシチュー
+
+ひも
+
+羽根
+
+火薬
+
+小麦の種
+
+小麦
+
+パン
+
+火打ち石
+
+生の豚肉
+
+調理した豚肉
+
+絵
+
+金のリンゴ
+
+看板
+
+トロッコ
+
+鞍
+
+レッドストーン
+
+雪玉
+
+ボート
+
+革
+
+ミルク バケツ
+
+レンガ
+
+粘土
+
+サトウキビ
+
+紙
+
+本
+
+スライムボール
+
+チェストつきトロッコ
+
+かまどつきトロッコ
+
+タマゴ
+
+コンパス
+
+釣り竿
+
+時計
+
+光石の粉
+
+生魚
+
+調理した魚
+
+染色粉
+
+墨袋
+
+ローズ レッド
+
+サボテン グリーン
+
+ココア ビーンズ
+
+ラピスラズリ
+
+紫の染料
+
+水色の染料
+
+薄灰色の染料
+
+灰色の染料
+
+ピンクの染料
+
+黄緑の染料
+
+たんぽぽイエロー
+
+空色の染料
+
+赤紫の染料
+
+オレンジの染料
+
+骨粉
+
+骨
+
+砂糖
+
+ケーキ
+
+ベッド
+
+レッドストーン反復装置
+
+クッキー
+
+地図
+
+音楽ディスク: 13
+
+音楽ディスク: cat
+
+音楽ディスク: blocks
+
+音楽ディスク: chirp
+
+音楽ディスク: far
+
+音楽ディスク: mall
+
+音楽ディスク: mellohi
+
+音楽ディスク: stal
+
+音楽ディスク: strad
+
+音楽ディスク: ward
+
+音楽ディスク: 11
+
+音楽ディスク: where are we now
+
+ハサミ
+
+カボチャの種
+
+スイカの種
+
+鶏肉
+
+焼き鳥
+
+牛肉
+
+ステーキ
+
+腐肉
+
+エンダーパール
+
+切ったスイカ
+
+Blaze ロッド
+
+Ghast の涙
+
+金の塊
+
+暗黒茸
+
+{*prefix*}{*postfix*}ポーション{*splash*}
+
+ガラスビン
+
+水のビン
+
+クモの目
+
+発酵したクモの目
+
+Blaze パウダー
+
+マグマクリーム
+
+調合台
+
+大釜
+
+エンダーアイ
+
+輝くスイカ
+
+エンチャントのビン
+
+発火剤
+
+発火剤 (木炭)
+
+発火剤 (石炭)
+
+額縁
+
+{*CREATURE*}出現
+
+暗黒レンガ
+
+スカル
+
+ガイコツ スカル
+
+ウィザー ガイコツ スカル
+
+ゾンビ ヘッド
+
+ヘッド
+
+%sのヘッド
+
+Creeper ヘッド
+
+石
+
+草ブロック
+
+土
+
+丸石
+
+樫の板
+
+トウヒの板
+
+樺の板
+
+ジャングルの木の板
+
+苗木
+
+樫の苗木
+
+トウヒの苗木
+
+樺の苗木
+
+ジャングルの木の苗木
+
+岩盤
+
+水
+
+溶岩
+
+砂
+
+砂岩
+
+砂利
+
+金鉱石
+
+鉄鉱石
+
+石炭の原石
+
+木
+
+樫の木
+
+トウヒの木
+
+樺の木
+
+ジャングルの木
+
+樫
+
+トウヒ
+
+樺
+
+葉っぱ
+
+樫の葉
+
+トウヒの葉
+
+樺の葉
+
+ジャングルの木の葉
+
+スポンジ
+
+ガラス
+
+ウール
+
+黒のウール
+
+赤のウール
+
+緑のウール
+
+茶色のウール
+
+青のウール
+
+紫のウール
+
+水色のウール
+
+薄灰色のウール
+
+灰色のウール
+
+ピンクのウール
+
+黄緑のウール
+
+黄色のウール
+
+空色のウール
+
+赤紫のウール
+
+オレンジのウール
+
+白のウール
+
+花
+
+バラ
+
+きのこ
+
+金のブロック
+
+金を保管するのに使える
+
+鉄を保管するのに使える
+
+鉄のブロック
+
+石の厚板
+
+石の厚板
+
+砂岩の厚板
+
+樫の厚板
+
+丸石の厚板
+
+レンガの厚板
+
+石レンガの厚板
+
+樫の厚板
+
+トウヒの厚板
+
+樺の厚板
+
+ジャングルの木の厚板
+
+暗黒レンガの厚板
+
+レンガ
+
+TNT 火薬
+
+本棚
+
+コケ石
+
+黒曜石
+
+たいまつ
+
+たいまつ (石炭)
+
+たいまつ (木炭)
+
+火
+
+モンスター発生器
+
+樫の階段
+
+チェスト
+
+レッドストーンの粉
+
+ダイヤモンド鉱石
+
+ダイヤモンドのブロック
+
+ダイヤモンドを保管するのに使える
+
+作業台
+
+作物
+
+農地
+
+かまど
+
+看板
+
+木のドア
+
+はしご
+
+レール
+
+加速レール
+
+感知レール
+
+石の階段
+
+レバー
+
+重量感知板
+
+鉄のドア
+
+レッドストーン鉱石
+
+レッドストーンのたいまつ
+
+ボタン
+
+雪
+
+氷
+
+サボテン
+
+粘土
+
+サトウキビ
+
+ジュークボックス
+
+柵
+
+カボチャ
+
+カボチャ ランタン
+
+暗黒石
+
+ソウルサンド
+
+光石
+
+ポータル
+
+ラピスラズリ鉱石
+
+ラピスラズリのブロック
+
+ラピスラズリを保管するのに使える
+
+発射装置
+
+音ブロック
+
+ケーキ
+
+ベッド
+
+クモの巣
+
+背の高い草
+
+枯れた茂み
+
+ダイオード
+
+鍵つきチェスト
+
+トラップドア
+
+ウール (すべての色)
+
+ピストン
+
+吸着ピストン
+
+Silverfish ブロック
+
+石レンガ
+
+苔の生えた石レンガ
+
+ひび割れた石レンガ
+
+模様入り石レンガ
+
+きのこ
+
+きのこ
+
+鉄格子
+
+ガラス板
+
+スイカ
+
+カボチャの茎
+
+スイカの茎
+
+つた
+
+フェンスゲート
+
+レンガ階段
+
+石レンガ階段
+
+Silverfish 石
+
+Silverfish の丸石
+
+Silverfish の石レンガ
+
+菌糸
+
+スイレンの葉
+
+暗黒レンガ
+
+暗黒レンガの柵
+
+暗黒レンガ階段
+
+暗黒茸
+
+エンチャントテーブル
+
+調合台
+
+大釜
+
+果てのポータル
+
+果てのポータルの枠
+
+果ての石
+
+ドラゴンの卵
+
+低木
+
+シダ
+
+砂岩の階段
+
+トウヒの階段
+
+樺の階段
+
+ジャングルの木の階段
+
+レッドストーン ランプ
+
+ココア
+
+スカル
+
+現在の操作方法
+
+レイアウト
+
+動く/ダッシュ
+
+見る
+
+ポーズ
+
+ジャンプ
+
+ジャンプ/上昇 (飛行時)
+
+持ち物
+
+手持ちアイテムの切り替え
+
+アクション
+
+使う
+
+工作
+
+落とす
+
+しのび足
+
+しのび足/下降 (飛行時)
+
+カメラ モードの変更
+
+プレイヤー/招待
+
+移動 (飛行時)
+
+レイアウト 1
+
+レイアウト 2
+
+レイアウト 3
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+
]]>
+
+{*B*}続けるには {*CONTROLLER_VK_A*} を押してください
+
+{*B*}チュートリアルを始める: {*CONTROLLER_VK_A*}{*B*}
+ チュートリアルを飛ばす: {*CONTROLLER_VK_B*}
+
+Minecraft は自由な発想でブロックを積み上げて、探検したり、いろいろな物を作ったりするゲームです。
+夜になるとモンスターが現れるので、その前に必ず安全な場所を作っておかなければなりません
+
+{*CONTROLLER_ACTION_LOOK*} で周囲を見回せます
+
+{*CONTROLLER_ACTION_MOVE*} 動き回れます
+
+ダッシュするには {*CONTROLLER_ACTION_MOVE*} を前方向にすばやく 2 回押します。{*CONTROLLER_ACTION_MOVE*} を前方向に押し続ける間ダッシュできます。ただし一定時間が過ぎるか食べ物が尽きるとそこでやめてしまいます。
+
+{*CONTROLLER_ACTION_JUMP*} でジャンプ
+
+手や、手に持っているアイテムを使って、掘ったり切ったりするには、{*CONTROLLER_ACTION_ACTION*} を押し続けます。道具を作らないと、掘れないブロックもあります
+
+{*CONTROLLER_ACTION_ACTION*} を押し続けて木を 4 ブロック (木の幹に相当) 切ってみましょう。{*B*}ブロックを壊すと、アイテムが浮かんだ状態で現れます。アイテムの近くに立つと、アイテムを集められます。集めたアイテムは、持ち物に追加されます
+
+{*CONTROLLER_ACTION_CRAFTING*} で工作画面を開きましょう
+
+アイテムを集めたり、作ったりすることで持ち物は増えます。{*B*}
+ {*CONTROLLER_ACTION_INVENTORY*} で持ち物を開きましょう
+
+移動、採掘、攻撃などの行動で空腹ゲージ {*ICON_SHANK_01*} が減っていきます。ダッシュやダッシュ ジャンプは普通に歩いたりジャンプしたりするよりもゲージが減ります
+
+HP が減っても空腹ゲージの {*ICON_SHANK_01*} が 9 個以上ある状態では、HP が自然に回復します。 食べ物を食べると空腹ゲージは回復します
+
+食べ物アイテムを持っているときに {*CONTROLLER_ACTION_USE*} を押し続けると、アイテムを食べて空腹ゲージが回復します。ゲージが満タンのときは食べられません
+
+空腹ゲージが低いため HP が減り始めました。持ち物に入っているステーキを食べて空腹ゲージを回復させれば、HP が回復し始めます。{*ICON*}364{*/ICON*}
+
+集めた木は、木の板の材料になります。工作画面を開いて、工作を始めましょう{*PlanksIcon*}
+
+工作にはいくつもの工程があります。木の板が手に入ったので、これで、いろいろ作ることができます。まずは作業台を作ってみましょう{*CraftingTableIcon*}
+
+作業に合った道具を使うことで、ブロックをより効率よく集めることができます。道具には棒の持ち手が必要な物があるので、棒を作りましょう{*SticksIcon*}
+
+手に持っているアイテムを変更するには {*CONTROLLER_ACTION_LEFT_SCROLL*} と {*CONTROLLER_ACTION_RIGHT_SCROLL*} を使います
+
+アイテムを使用したり、置いたり、オブジェクトにアクションを取ったりするには {*CONTROLLER_ACTION_USE*} を使います。置いたアイテムは、適切な道具を使用して拾うことができます
+
+作業台を置きましょう。作業台を選択して、置きたい場所にポインターを合わせてから {*CONTROLLER_ACTION_USE*} を押します
+
+作業台にポインターを合わせてから {*CONTROLLER_ACTION_USE*} を押して、作業台を開きましょう
+
+シャベルを使えば、土や雪のような柔らかいブロックを手早く掘れます。より多くの材料を手に入れることで、より丈夫で効率の良い道具を作ることができます。木のシャベルを作ってみましょう{*WoodenShovelIcon*}
+
+斧を使えば、木や木のブロックを手早く切り出せます。より多くの材料を手に入れることで、より丈夫で効率の良い道具を作ることができます。木の斧を作ってみましょう{*WoodenHatchetIcon*}
+
+ツルハシを使えば、石や鉱石のような堅いブロックを早く掘り出せます。より多くの材料を手に入れることで、さらに堅い材料を掘ることのできる、より丈夫で効率の良い道具を作ることができます。木のツルハシを作ってみましょう{*WoodenPickaxeIcon*}
+
+入れ物を開く
+
+
+ 夜はすぐに訪れます。何の準備もなしに外にいるのは危険です。武器や防具を作ることもできますが、まずは安全な場所を作ることが賢明です
+
+
+
+ 近くに、昔に鉱山の働き手が住んでいた小屋があります。それを修復すれば夜でも安全です
+
+
+
+ 小屋を修復するための材料を集めましょう。壁や屋根はどのブロックでも作れますが、ドアや窓、明かりも作りたいところです
+
+
+ツルハシを使って、石のブロックを掘り出してみましょう。石のブロックを掘り出していると、丸石も出てきます。丸石を 8 つ集めると、かまどを作ることができます。石のある場所にたどり着くには、土を掘っていく必要があるので、シャベルを使いましょう{*StoneIcon*}
+
+かまどを作るのに必要な数の丸石が集まりました。作業台を使って、かまどを作りましょう
+
+{*CONTROLLER_ACTION_USE*} でかまどを置いて、開きましょう
+
+かまどを使って、木炭を作りましょう。出来上がりを待っている間に、小屋を修復するための材料をもっと集めてみましょう
+
+かまどを使って、ガラスを作りましょう。出来上がりを待っている間に、小屋を修復するための材料をもっと集めてみましょう
+
+小屋にドアをつけると、いちいち壁を掘ったり移動させたりせずに、簡単に出入りすることができます。木のドアを作ってみましょう{*WoodenDoorIcon*}
+
+ドアを {*CONTROLLER_ACTION_USE*} で設置します。ドアは {*CONTROLLER_ACTION_USE*} で開け閉めできます
+
+夜は外が真っ暗になります。小屋の中には明かりが欲しいところです。工作画面で、棒と木炭からたいまつを作りましょう{*TorchIcon*}
+
+
+ チュートリアルの最初のパートが完了です!
+
+
+
+ {*B*}
+ チュートリアルを続ける: {*CONTROLLER_VK_A*}{*B*}
+ チュートリアルを飛ばす: {*CONTROLLER_VK_B*}
+
+
+
+ これがあなたの持ち物です。手で持って使用できるアイテムと、所有しているアイテムのリスト、現在装備している防具を確認できます
+
+
+{*B*}
+ 持ち物の説明を続ける: {*CONTROLLER_VK_A*}{*B*}
+ 持ち物の説明を飛ばす: {*CONTROLLER_VK_B*}
+
+
+
+ ポインターを {*CONTROLLER_MENU_NAVIGATE*} で動かして、アイテムに合わせてから {*CONTROLLER_VK_A*} を押すと、アイテムを選択できます。
+ そのアイテムを複数所有している場合は、そのすべてが選択されます。半分だけ選択するには {*CONTROLLER_VK_X*} を使用します
+
+
+
+ ポインターで選んだアイテムを持ち物の別の場所に移動させるには、移動先で {*CONTROLLER_VK_A*} を押します。
+ ポインターに複数のアイテムがある場合は、{*CONTROLLER_VK_A*} を押すと全部、 {*CONTROLLER_VK_X*} を押すと 1 つだけ移動させることができます
+
+
+
+ ポインターでアイテムを選択したまま、持ち物のウィンドウの外にポインターを動かすことで、アイテムを外に落とすことができます
+
+
+
+ アイテムの説明を見たい時は、ポインターをアイテムの上に動かしてから {*CONTROLLER_VK_RT*} を押してください
+
+
+
+ 持ち物画面を閉じるには {*CONTROLLER_VK_B*} を押します
+
+
+
+ これがクリエイティブ モードの持ち物です。手で持って使用できるアイテムと、所有しているアイテムのリストを確認できます
+
+
+{*B*}
+ 持ち物の説明を続ける: {*CONTROLLER_VK_A*}{*B*}
+ クリエイティブ モードの持ち物の説明を飛ばす: {*CONTROLLER_VK_B*}
+
+
+
+ ポインターを {*CONTROLLER_MENU_NAVIGATE*} で動かしてアイテムに合わせます。
+ {*CONTROLLER_VK_A*} を押すと、アイテムを選択します。
+ そのアイテムを複数所有している場合は、{*CONTROLLER_VK_Y*} を押すと、すべてが選択されます
+
+
+
+ ポインターは自動的に使用欄へ移動します。{*CONTROLLER_VK_A*} でそこに選択アイテムを置きます。アイテムを置くとポインターはアイテム一覧に戻るので、そこから他のアイテムを選ぶこともできます
+
+
+
+ アイテムの上にポインターを置いた状態で、持ち物画面の外へポインターを動かすと、そのアイテムを落とすことができます。クイック選択バーを一度に空にするには{*CONTROLLER_VK_X*}を押してください。
+
+
+
+ 使うアイテムのグループを変更するには {*CONTROLLER_VK_LB*} と {*CONTROLLER_VK_RB*} で、上にあるグループのタブを切り替え、{*CONTROLLER_VK_LS*} でアイテムを選択します
+
+
+
+ アイテムの説明を見たい時は、ポインターをアイテムの上に動かしてから {*CONTROLLER_VK_RT*} を押します
+
+
+
+ クリエイティブ モード持ち物画面を閉じるには {*CONTROLLER_VK_B*} を押します
+
+
+
+ これが工作画面です。この画面では、これまでに集めたアイテムを組み合わせて、新しいアイテムを作ることができます
+
+
+{*B*}
+ 工作の説明を続ける: {*CONTROLLER_VK_A*}{*B*}
+ 工作の説明を飛ばす: {*CONTROLLER_VK_B*}
+
+
+{*B*}
+ アイテムの説明を見るには {*CONTROLLER_VK_X*} を押します
+
+
+{*B*}
+ このアイテムを作るのに必要なアイテムのリストを見るには {*CONTROLLER_VK_X*} を押します
+
+
+{*B*}
+ 持ち物に戻るには {*CONTROLLER_VK_X*} を押します
+
+
+
+ 作りたいアイテムのグループを変更するには {*CONTROLLER_VK_LB*} と {*CONTROLLER_VK_RB*} で、上にあるグループのタブを切り替え、{*CONTROLLER_MENU_NAVIGATE*} で作るアイテムを選択します
+
+
+
+ 工作ウィンドウには、新しいアイテムを作るのに必要なアイテムのリストが表示されます。{*CONTROLLER_VK_A*} を押すとアイテムが作られ、持ち物に追加されます
+
+
+
+ 作業台を使うと、より多くの種類のアイテムを作れるようになります。作業台での工作も普通の工作と変わりません。ですが作業スペースが広い分、より多くの材料を組み合わせてアイテムを作ることができます
+
+
+
+ 工作画面の右下には、持ち物が表示されます。さらに、選択しているアイテムの説明と、それを作るのに必要な材料も表示されます
+
+
+
+ 選択しているアイテムの説明が表示されています。説明から、そのアイテムが何に使えるかが分かります
+
+
+
+ 選択したアイテムを作るのに必要なアイテムのリストです
+
+
+集めた木を使って、木の板を作ることができます。作るには、木の板のアイコンを選んでから {*CONTROLLER_VK_A*} を押してください{*PlanksIcon*}
+
+
+ これで 作業台が完成です! ゲームの世界に置いて、いろいろなアイテムを作れるようにしましょう。{*B*}
+ 工作画面から出るには {*CONTROLLER_VK_B*} を押します
+
+
+
+ 作るアイテムのグループを切り替えるには {*CONTROLLER_VK_LB*} と {*CONTROLLER_VK_RB*} を使います。道具のグループを選択しましょう{*ToolsIcon*}
+
+
+
+ 作るアイテムのグループを切り替えるには {*CONTROLLER_VK_LB*} と {*CONTROLLER_VK_RB*} を使います。建物のグループを選択しましょう{*StructuresIcon*}
+
+
+
+ 作るアイテムを変えるには {*CONTROLLER_MENU_NAVIGATE*} を使います。アイテムによっては、使う材料によって、できる物が変わります。それでは木のシャベルを選びましょう{*WoodenShovelIcon*}
+
+
+
+ 工作にはいくつもの工程があります。木の板が何枚か手元にあるので、さらにいろいろなアイテムを作れます。作るアイテムは {*CONTROLLER_MENU_NAVIGATE*} で変更できます。それでは作業台を選びましょう{*CraftingTableIcon*}
+
+
+
+ 道具が完成しました。順調です。これで様々な材料をさらに効率よく集めることができます。{*B*}
+ 工作画面を閉じるには {*CONTROLLER_VK_B*} を押してください
+
+
+
+ 一部のアイテムは作業台ではなく、かまどで作ります。それではかまどを作りましょう{*FurnaceIcon*}
+
+
+
+ 完成したかまどをゲームの世界に置きましょう。小屋の中に置くとよいかもしれません。{*B*}
+ 工作画面を閉じるには {*CONTROLLER_VK_B*} を押してください
+
+
+
+ これがかまどの画面です。かまどを使ってアイテムに熱を加えることで、そのアイテムを加工できます。例えば、鉄鉱石を鉄の延べ棒に変えることができます
+
+
+{*B*}
+ かまどの説明を続ける: {*CONTROLLER_VK_A*}{*B*}
+ かまどの説明を飛ばす: {*CONTROLLER_VK_B*}
+
+
+
+ かまどの下に燃料を入れ、上には加工したいアイテムを入れてください。するとかまどに火が入り、加工が始まります。完成したアイテムは右のスロットに入ります
+
+
+
+ 木でできているアイテムの多くが燃料として使えますが、同時に違う種類のアイテムを燃やすことはできません。さらに木以外にも燃料として使えるアイテムがあります
+
+
+
+ アイテムの加工が終わると、その完成したアイテムを持ち物へ移動できます。様々な材料を使って、何が出来上がるのかいろいろ実験してみましょう
+
+
+
+ 木を材料に使うと、木炭が出来上がります。かまどに燃料を入れ、材料を入れる所に木を入れてください。木炭が出来上がるには少し時間がかるので、その間は他のことをしながら、時々進み具合を確かめに戻って来ましょう
+
+
+
+ 木炭は燃料として使えます。棒と組み合わせると、たいまつになります
+
+
+
+ 材料を入れる所に砂を入れると、ガラスを作ることができます。小屋の窓用にガラスを作ってみましょう
+
+
+
+ これが調合の画面です。さまざまな効果を発揮するポーションを作ることができます
+
+
+{*B*}
+ 調合台の説明を続ける: {*CONTROLLER_VK_A*}{*B*}
+ 調合台の説明を飛ばす: {*CONTROLLER_VK_B*}
+
+
+
+ 調合を行うには、上の枠に材料を入れ、下の枠にポーションまたは水のビンを入れます (一度に 3 つまで調合可能)。正しい組み合わせの材料が置かれると調合が始まり、少し待てばポーションの出来上がりです
+
+
+
+ ポーションの調合にはまず水のビンが必要です。また、ほとんどのポーションは暗黒茸から不完全なポーションを作るところから始め、完成させるには少なくともあと 1 種類の材料を必要とします
+
+
+
+ ポーションを作ったら、その効果を変えることができます。レッドストーンの粉を加えると効果の持続時間が延長され、光石の粉を加えると効果がより強くなります
+
+
+
+ 発酵したクモの目を加えると、ポーションが腐敗して効果が反転します。また、火薬を加えるとポーションがスプラッシュポーションになり、投げると落ちた場所の周囲に効果を発揮するようになります
+
+
+
+ 暗黒茸を水のビンに加えて耐火ポーションを作り、それからマグマクリームを足してみましょう
+
+
+
+ 調合画面を閉じるには {*CONTROLLER_VK_B*} を押します
+
+
+
+ ここには調合台、大釜と調合に必要なアイテムが詰まったチェストがあります.
+
+
+{*B*}
+ 調合とポーションの説明を続ける: {*CONTROLLER_VK_A*}{*B*}
+ 調合とポーションの説明を飛ばす: {*CONTROLLER_VK_B*}
+
+
+
+ 調合では、最初に水のビンを作ります。チェストからガラスビンを出しましょう
+
+
+
+ 水の入った大釜か水のブロックからガラスビンに水を移します。水源をクリックし、{*CONTROLLER_ACTION_USE*} を押してガラスビンに水を詰めてください
+
+
+
+ 大釜が空になったら、水バケツを使って水を溜めてください
+
+
+
+ 調合台を使って耐火ポーションを作りましょう。水のビン、暗黒茸とマグマクリームを用意してください
+
+
+
+ ポーションを使うには、ポーション手に持って {*CONTROLLER_ACTION_USE*} を押します。普通のポーションは飲んで自分に効果を発揮します。スプラッシュポーションの場合は、投げて落ちた所の周囲にいるクリーチャーに効果を発揮します
+ スプラッシュポーションは普通のポーションに火薬を混ぜ合わせると作れます
+
+
+
+ 耐火ポーションを自分に使ってみましょう
+
+
+
+ 火と溶岩に対する耐性が上がりました。これまで行けなかった場所にも行けるので試してみましょう
+
+
+
+ これがエンチャントの画面です。武器や防具、一部の道具にエンチャントすることで、特別なボーナスを付加できます
+
+
+{*B*}
+ エンチャント画面の説明を続ける: {*CONTROLLER_VK_A*}{*B*}
+ エンチャント画面の説明を飛ばす: {*CONTROLLER_VK_B*}
+
+
+
+ アイテムをエンチャントするには、まずアイテムをエンチャントの枠に入れてください。武器や防具、一部の道具にエンチャントすることで、ダメージ耐性を上げたり、採掘量を増やしたりなどの特別なボーナスを付加できます
+
+
+
+ エンチャントの枠にアイテムを入れると、右側のボタンにランダムなエンチャントが表示されます
+
+
+
+ ボタンに表示される数値はそのエンチャントを行うのに必要な経験値を表します。経験値が足りない場合、使えないボタンは無効になります
+
+
+
+ エンチャントを行うには、エンチャントを選んで {*CONTROLLER_VK_A*} を押してください。エンチャントのコストに応じて経験値レベルが下がります
+
+
+
+ エンチャントは基本的にランダムですが、一部の強力なエンチャントは経験値レベルが高く、エンチャントテーブルの周囲にテーブルを強化する本棚がたくさん設置されていないと表示されません
+
+
+
+ ここにはエンチャントテーブルと、エンチャントについて学ぶためのいくつかのアイテムがあります
+
+
+{*B*}
+ エンチャントの説明を続けるには {*CONTROLLER_VK_A*} を押してください。{*B*}
+ エンチャントの説明を飛ばすには {*CONTROLLER_VK_B*} を押してください
+
+
+
+ エンチャントテーブルを使うと、採掘量を増やしたり、武器や防具、一部の道具のダメージ耐性を上げたりなどの特別なボーナスを付加できます
+
+
+
+ エンチャントテーブルの周囲に本棚を置くと、テーブルが強化されてより高レベルのエンチャントができるようになります
+
+
+
+ エンチャントは経験値を消費します。経験値は、モンスターや動物を倒したり、採掘したり、動物を繁殖させたり、釣りをしたり、かまどを使った精錬や料理などで生成される経験値オーブを集めることで、貯まっていきます
+
+
+
+ エンチャントのビンを使って経験値を貯めることもできます。投げると落ちた場所に経験値オーブが出現するので、集めて経験値を貯めましょう
+
+
+
+ ここにあるチェストにはエンチャントされたアイテムや、エンチャントのビンのほか、エンチャントを試してみることのできるアイテムがあります
+
+
+
+ 今トロッコに乗っています。トロッコから降りるには、ポインターをトロッコに合わせてから {*CONTROLLER_ACTION_USE*} を押してください{*MinecartIcon*}
+
+
+{*B*}
+ トロッコの説明を続ける: {*CONTROLLER_VK_A*}{*B*}
+ トロッコの説明を飛ばす: {*CONTROLLER_VK_B*}
+
+
+
+ トロッコはレールの上を走ります。かまどを乗せた動力つきのトロッコや、チェストがついたトロッコを作ることもできます
+ {*RailIcon*}
+
+
+
+ トロッコのスピードを上げるために、レッドストーンのたいまつや回路から動力を得る加速用レールを作ることができます。これはスイッチやレバー、重量感知板などを組み合わせた、複雑な装置になります
+ {*PoweredRailIcon*}
+
+
+
+ 今ボートに乗っています。ボートから降りるには、ポインターをボートに合わせてから {*CONTROLLER_ACTION_USE*} を押してください{*BoatIcon*}
+
+
+
+ {*B*}
+ ボートの説明を続ける: {*CONTROLLER_VK_A*}{*B*}
+ ボートの説明を飛ばす: {*CONTROLLER_VK_B*}
+
+
+
+ ボートを使えば、水上を速く移動することができます。舵を取るには {*CONTROLLER_ACTION_MOVE*} と {*CONTROLLER_ACTION_LOOK*} を使います
+ {*BoatIcon*}
+
+
+
+ 釣り竿を手にしました。使うには {*CONTROLLER_ACTION_USE*} を押します{*FishingRodIcon*}
+
+
+
+ {*B*}
+ 魚釣りの説明を続ける: {*CONTROLLER_VK_A*}{*B*}
+ 魚釣りの説明を飛ばす: {*CONTROLLER_VK_B*}
+
+
+
+ 釣りを始めるには {*CONTROLLER_ACTION_USE*} を押します。リールを巻き上げるときも {*CONTROLLER_ACTION_USE*} を押してください
+ {*FishingRodIcon*}
+
+
+
+ 水の表面にある浮きが沈むまで待ってから、釣り糸を巻き上げて魚を釣り上げます。魚は生でも食べられますし、かまどで調理することもできます。食べると HP が回復します
+ {*FishIcon*}
+
+
+
+ 釣り竿は 様々な道具と組み合わせることができますが、その用途は比較的限られています。しかし魚を釣る以外のこともできます。釣り竿を使って他に何が釣れるのか、どんなことができるのか、いろいろ試してみましょう
+ {*FishingRodIcon*}
+
+
+
+ これがベッドです。夜になってからベッドにポインターを当てて {*CONTROLLER_ACTION_USE*} を押すと、朝まで眠ることができます{*ICON*}355{*/ICON*}
+
+
+
+ {*B*}
+ ベッドの説明を続ける: {*CONTROLLER_VK_A*}{*B*}
+ ベッドの説明を飛ばす: {*CONTROLLER_VK_B*}
+
+
+
+ ベッドは安全で明るい場所に置かないといけません。さもないと、夜中にモンスターに襲われてしまいます。ベッドで眠ると、次の力尽きた時の復活地点が、そのベッドに変更されます
+ {*ICON*}355{*/ICON*}
+
+
+
+ ゲーム内に他のプレイヤーがいる場合、眠るためには全員が同時にベッドに入っていなければなりません
+ {*ICON*}355{*/ICON*}
+
+
+
+ このエリアには、レッドストーンとピストンの回路、回路に使うアイテムの入ったチェストがあります
+
+
+
+ {*B*}
+ レッドストーン回路とピストンの説明を続ける: {*CONTROLLER_VK_A*}{*B*}
+ レッドストーン回路とピストンの説明を飛ばす: {*CONTROLLER_VK_B*}
+
+
+
+ レバー、ボタン、重量感知版、レッドストーンのたいまつは、起動したいアイテムに直接とりつけたり、レッドストーンの粉でつなげることで、電気を送ることができます
+
+
+
+ 電気の源を配置する位置や向きで、周囲のブロックへの効果が変わります。たとえば、ブロックに設置されたレッドストーンのたいまつは、そのブロックに電気が送られると消えます
+
+
+
+ レッドストーンの粉は、鉄、ダイヤモンド、金のツルハシでレッドストーン鉱石を掘ると手に入ります。レッドストーンの粉をブロックに置いてつなげることで、電気を伝えることができます。ただし、伝えられるのは距離にして 15 ブロック分、高さ方向の移動は 1 ブロックまでとなります
+ {*ICON*}331{*/ICON*}
+
+
+
+ レッドストーン反復装置は電気の届く距離を伸ばしたり、回路を遅延させたりすることができます
+ {*ICON*}356{*/ICON*}
+
+
+
+ ピストンは電気が送られると伸びて、最大 12 個のブロックを押します。吸着ピストンであれば、戻るときに一部の特殊なブロックを除いてブロックを 1 つ引き寄せることができます
+ {*ICON*}33{*/ICON*}
+
+
+
+ このエリアには、ピストン付きの回路を作るためのアイテムを入れたチェストがあります。すでにある回路を改造したり、1 から回路を作成したりしてみてください。チュートリアル エリアの外には、さらに多くの見本があります
+
+
+
+ このエリアには、暗黒界へのポータルが存在します!
+
+
+
+ {*B*}
+ ポータルと暗黒界の説明を続ける: {*CONTROLLER_VK_A*}{*B*}
+ ポータルと暗黒界の説明を飛ばす: {*CONTROLLER_VK_B*}
+
+
+
+ ポータルは、黒曜石のブロックで横 4 ブロック、縦 5 ブロックの枠を作成することで完成します。角のブロックは必要ありません。
+
+
+
+ ポータルを起動するには、火打石と打ち金で、フレーム内の黒曜石に火をつけましょう。枠が壊れたり、近くで爆発が起きたり、液体を流したりすると、ポータルは停止します
+
+
+
+ ポータルを使用するには、ポータルの中に立ちましょう。画面が紫色に変わり、音がし始め、しばらくすると、別世界へテレポートできます
+
+
+
+ 暗黒界はあちこちで溶岩が噴き出す危険な場所ですが、暗黒石や光石を手に入れるには最適な場所です。暗黒石は火をつけると、消えることなく燃え続け、光石は、光を発生させます
+
+
+
+ 暗黒界をうまく利用して地上界を高速移動することができます。暗黒界での 1 ブロックの距離は、地上界での 3 ブロックに相当します
+
+
+
+ クリエイティブ モードになりました
+
+
+
+ {*B*}
+ クリエイティブ モードの説明を続ける: {*CONTROLLER_VK_A*}{*B*}
+ クリエイティブ モードの説明を飛ばす: {*CONTROLLER_VK_B*}
+
+
+クリエイティブ モードではほとんどのアイテムやブロックが無限に使えます。また、道具がなくても 1 回クリックするだけでブロックが破壊できるほか、攻撃されてもダメージを受けなくなり、飛行も可能です
+
+{*CONTROLLER_ACTION_JUMP*} をすばやく 2 回押すと飛行できます。飛行をやめるには、同じ操作をもう一度行います。より速く飛ぶには、飛行中に {*CONTROLLER_ACTION_MOVE*} を前方向にすばやく 2 回押します。
+飛行モードでは、{*CONTROLLER_ACTION_JUMP*} で上昇、{*CONTROLLER_ACTION_SNEAK*} で下降できます。または、方向パッドで上下左右に飛びましょう
+
+クリエイティブ モードの持ち物を開くには {*CONTROLLER_ACTION_CRAFTING*} を押してください
+
+続けるには穴の反対側へ移動してください
+
+クリエイティブ モードのチュートリアルを完了しました
+
+
+ このエリアには、畑があります。畑では、食べ物などの繰り返し生産できる資源を作り出すことができます
+
+
+
+ {*B*}
+ 農作業の説明を続ける: {*CONTROLLER_VK_A*}{*B*}
+ 農作業の説明を飛ばす: {*CONTROLLER_VK_B*}
+
+
+小麦、カボチャ、スイカは、種から育てます。小麦の種は、背の高い草を切ったり、小麦を栽培することで手に入れることができます。カボチャの種やスイカの種は、それぞれ、カボチャやスイカから入手します
+
+種をまく前に、くわをつかって土のブロックを耕地に変える必要があります。近くに水源や光源があり、十分な水と光が供給されていると作物が早く成長します
+
+小麦は何段階かに変化しながら成長していき、色が濃くなると収穫できるようになります。{*ICON*}59:7{*/ICON*}
+
+カボチャとスイカの場合は、茎が太くなってきたら、種をまいた場所の隣に実ができるためのブロックが必要になります
+
+サトウキビは、水ブロックと隣接する、草、土、砂のブロックに植える必要があります。また、サトウキビのブロックは中ほどを収穫すると、上にあるブロックもすべて収穫されます。{*ICON*}83{*/ICON*}
+
+サボテンは砂に植える必要があり、成長すると 3 ブロックの高さになります。サトウキビと同様、下のブロックを収穫すると、上にあるブロックもすべて収穫できます。{*ICON*}81{*/ICON*}
+
+きのこは薄暗いエリアに植えましょう。隣接する薄暗いブロックに広がっていきます。{*ICON*}39{*/ICON*}
+
+骨粉は作物を最大まで成長させたり、きのこを巨大なきのこに成長させることができます。{*ICON*}351:15{*/ICON*}
+
+農作業のチュートリアルを完了しました
+
+
+ このエリアでは動物が飼育されています。動物を飼育して子供を増やすことができます
+
+
+
+ {*B*}
+ 動物の繁殖の説明を続けるには {*CONTROLLER_VK_A*} を押してください。{*B*}
+ 動物の繁殖の説明を飛ばすには {*CONTROLLER_VK_B*} を押してください
+
+
+動物を繁殖させるには、動物にあった餌を与えて、動物たちを「求愛モード」にしてやる必要があります
+
+牛、Mooshroom、羊には小麦を、豚にはニンジンを、ニワトリには小麦の種または暗黒茸、オオカミには肉を与えましょう。すると、近くにいる求愛モードの仲間を探し始めます
+
+ともに求愛モードの同種の動物が出会うと、少しの間キスをして、動物の赤ちゃんが誕生します。赤ちゃんは、成長するまでは、両親の後ろをついて回ります
+
+一度求愛モードになった動物は、5 分間は再び求愛モードになることはありません
+
+手に食べ物を持っていると、あなたの後ろをついてくる動物もいます。この習性を利用すれば、簡単に動物を一か所に集めことができるでしょう{*ICON*}296{*/ICON*}
+
+
+ 野生のオオカミは、骨を与えれば飼い慣らすことができます。飼い慣らすと、そのオオカミの周りにハートが表示されます。飼い慣らしたオオカミは「お座り」の命令を下さない限り、プレイヤーの後を付いて危険から守ってくれます
+
+
+動物と繁殖のチュートリアルを完了しました
+
+
+ このエリアには、スノー ゴーレムやアイアン ゴーレムを作るためのカボチャやブロックがあります
+
+
+
+ {*B*}
+ ゴーレムの説明を続ける{*CONTROLLER_VK_A*}{*B*}
+ ゴーレムの説明を飛ばす{*CONTROLLER_VK_B*}
+
+
+ゴーレムは、重ねたブロックの一番上にカボチャをおいて完成します
+
+スノー ゴーレムは、雪ブロックを 2 つ重ね、その上にカボチャをのせて完成します。作った人の敵に、雪玉を投げます
+
+アイアン ゴーレムは、鉄のブロック 4 つを T 字に並べ、中央にカボチャをのせて完成します。作った人の敵を攻撃します
+
+アイアン ゴーレムは村に自然に現れて村人を守ることもあります。村人を攻撃すると、このアイアン ゴーレムが反撃します
+
+チュートリアルを終えるまで、このエリアから出ることはできません
+
+材料ごとに適した道具があります。土や砂などの柔らかいものを掘る場合はシャベルを使うのがよいでしょう
+
+材料ごとに適した道具があります。木の幹を切り出す場合は斧を使うのがよいでしょう
+
+材料ごとに適した道具があります。石や鉱石を掘り出す場合はツルハシを使うのがよいでしょう。特定の種類のブロックを掘るためには、さらに優れた材料を使ってツルハシを作る必要があるかもしれません
+
+特定の道具は敵を攻撃するのに向いています。剣を使うと良いでしょう
+
+ヒント: 手や、手に持っているアイテムを使って、掘ったり切ったりするには、{*CONTROLLER_ACTION_ACTION*} を押し続けます。道具を作らないと、掘れないブロックもあります
+
+道具は使っていると、少しずつ壊れていきます。使うたびに少しずつ損傷していき、最後は完全に壊れます。アイテムの下にあるゲージで、現在の状態が分かります
+
+上に向かって泳ぐには {*CONTROLLER_ACTION_JUMP*} を押し続けます
+
+このエリアではレールの上をトロッコが走っています。トロッコに乗るには、ポインターをトロッコに合わせて {*CONTROLLER_ACTION_USE*} を押します。トロッコを動かすには、ボタンにポインターを合わせて {*CONTROLLER_ACTION_USE*} を押しましょう
+
+川のそばにあるチェストの中に、ボートが入っています。ボートを使うには、ポインターを水に合わせて {*CONTROLLER_ACTION_USE*} を押します。ボートに乗るにはポインターをボートに合わせて {*CONTROLLER_ACTION_USE*} を押しましょう
+
+池のそばにあるチェストの中に、釣り竿が入っています。使うには、チェストから釣り竿を出してから、手に持って使うアイテムに選んでください
+
+このピストン装置は、自動建設される橋です。ボタンを押して、装置の動きを調べてみましょう
+
+アイテムを選択した状態で、持ち物画面の外へポインターを動かすと、アイテムを落とすことができます
+
+このアイテムを作るために必要な材料が揃っていません。左下にあるボックスの中に表示されているのが、必要な材料です
+
+
+ おめでとうございます! チュートリアルはこれですべて完了です。ゲーム内の時間の流れはこれから普通に戻ります。夜が来てモンスターが現れるまで、あまり時間がありません。早く安全な場所を作りましょう!
+
+
+{*EXIT_PICTURE*} もっと冒険を続けたい? それなら、鉱山の働き手が住んでいた小屋の近くを探ってみましょう。小さな城に通じる階段があります
+
+お忘れなく:
+
+
]]>
+
+バージョン アップにより、チュートリアルの新エリアを始めとする新機能が追加されました
+
+{*B*}基本のチュートリアルから始める{*CONTROLLER_VK_A*}{*B*}
+ 基本のチュートリアルを飛ばす{*CONTROLLER_VK_B*}
+
+このエリアで、釣り竿、ボート、ピストン、レッドストーンなどの使い方を練習しましょう
+
+このエリアの外では、建物、畑、トロッコ、エンチャント、調合、取引、鍛造などがあなたを待っています!
+
+
+ 空腹ゲージが減りすぎて、HP が回復できません。
+
+
+
+ {*B*}
+ 空腹ゲージや食べ物について詳しく知りたい場合は {*CONTROLLER_VK_A*} を押してください。{*B*}
+ すでに十分知っている場合は {*CONTROLLER_VK_B*} を押してください。
+
+
+選択
+
+使う
+
+戻る
+
+終了
+
+キャンセル
+
+参加をキャンセル
+
+データ保存機器を選択
+
+データ保存機器を変更
+
+オンライン ゲーム リストを更新
+
+パーティー ゲーム
+
+すべてのゲーム
+
+グループを切り替え
+
+持ち物を見る
+
+説明を見る
+
+材料を見る
+
+工作
+
+作る
+
+取る/置く
+
+取る
+
+すべて取る
+
+半分取る
+
+置く
+
+すべて置く
+
+1 つ置く
+
+落とす
+
+すべて落とす
+
+1 つ落とす
+
+入れ替え
+
+クイック移動
+
+クイック選択バーを空にする
+
+これは何?
+
+Facebook に公開
+
+フィルターを変更
+
+ゲーマー カードを見る
+
+ゲーマー プロフィールを見る
+
+フレンド登録の依頼を送る
+
+次へ
+
+前へ
+
+次へ
+
+前へ
+
+プレイヤーを追放
+
+染める
+
+掘る
+
+えさを与える
+
+手なずける
+
+回復する
+
+おすわり
+
+ついてこい
+
+取り出す
+
+空にする
+
+鞍を置く
+
+置く
+
+叩く
+
+乳搾り
+
+集める
+
+食べる
+
+眠る
+
+起きる
+
+遊ぶ
+
+乗る
+
+船に乗る
+
+育てる
+
+泳ぐ
+
+開く
+
+音程を変える
+
+起爆する
+
+読む
+
+ぶら下がる
+
+投げる
+
+植える
+
+耕す
+
+収穫する
+
+続ける
+
+完全版を購入
+
+セーブデータを削除
+
+削除
+
+オプション
+
+Xbox Live パーティーを招待
+
+フレンドを招待
+
+決定
+
+毛を刈る
+
+アクセスを禁止
+
+スキンを決定
+
+火をつける
+
+選択
+
+完全版をインストール
+
+お試し版をインストール
+
+インストール
+
+再インストール
+
+セーブのオプション
+
+コマンドを実行
+
+クリエイティブ
+
+材料を移動
+
+燃料を移動
+
+道具を移動
+
+防具を移動
+
+武器を移動
+
+装備
+
+引く
+
+放つ
+
+特権
+
+ブロック
+
+上へ
+
+下へ
+
+求愛モード
+
+飲む
+
+回転する
+
+隠す
+
+Xbox One 用にセーブをアップロード
+
+全てのスロットを空にする
+
+Xbox One 用にセーブをアップロード
+
+OK
+
+キャンセル
+
+Minecraft ストア
+
+本当に現在プレイしているゲームを終了して、新しいゲームに参加してもよろしいですか? セーブしていない途中経過は失われてしまいます
+
+ゲームを終了
+
+ゲームをセーブ
+
+セーブせずに終了
+
+以前のこの世界のセーブ データを、現在のデータで上書きしてもよろしいですか?
+
+本当にセーブせずメイン メニューに戻ってもよろしいですか? この世界での途中経過は失われてしまいます
+
+ゲームを始める
+
+クリエイティブ モードで作成、ロード、セーブした世界は、たとえ後でサバイバル モードでロードしたとしても、実績やランキング更新の対象になりません。実行してよろしいですか?
+
+クリエイティブ モードで作成、ロード、セーブした世界は、たとえ後でサバイバル モードでロードしたとしても、実績やランキング更新の対象になりません。実行してよろしいですか?
+
+クリエイティブ モードで作成、ロード、セーブした世界は、たとえ後でサバイバル モードでロードしたとしても、実績やランキング更新の対象になりません。
+
+ホスト特権を有効にして作成、ロード、セーブした世界は、たとえ後でオプションをオフにしたとしても、実績やランキング更新の対象になりません。実行してよろしいですか?
+
+セーブ データの破損
+
+このセーブ データは破損しています。削除しますか?
+
+現在のゲームを終了し、すべてのプレイヤーとの接続を切断してメイン メニューに戻ってもよろしいですか? セーブしていない途中経過は失われてしまいます
+
+セーブして終了
+
+セーブせずに終了
+
+本当にメイン メニューに戻ってもよろしいですか? セーブしていない途中経過は失われてしまいます
+
+本当にメイン メニューに戻ってもよろしいですか? ここまでの途中経過は失われてしまいます
+
+新しい世界
+
+チュートリアルをプレイ
+
+チュートリアル
+
+新しい世界に名前をつける
+
+新しい世界の名前を入力してください
+
+世界の種を入力してください
+
+セーブした世界をロードする
+
+START を押してゲームに参加
+
+ゲームを終了
+
+エラーが起こりました。メイン メニューに戻ります
+
+接続に失敗しました
+
+接続が切断されました
+
+サーバーとの接続が切断されました。メイン メニューに戻ります
+
+Xbox Live との接続が切断されました。メイン メニューに戻ります
+
+Xbox Live との接続が切断されました
+
+サーバーにより切断されました
+
+ゲームから追放されました
+
+空を飛んだため、ゲームから追放されました
+
+接続に時間がかかりすぎています
+
+サーバーが満員です
+
+ホストがゲームを終了しました
+
+この世界でプレイ中のフレンドがいないため、この世界には入れません
+
+以前にホストにより追放されているため、この世界には入れません
+
+相手のプレイヤーのゲームのバージョンが古いため、ゲームに参加できません
+
+相手のプレイヤーのゲームのバージョンが新しいため、ゲームに参加できません
+
+新しい世界
+
+アワードをアンロックしました!
+
+おめでとうございます! Minecraft の Steve のゲーマー アイコンを獲得しました!
+
+おめでとうございます! Creeper のゲーマー アイコンを獲得しました!
+
+おめでとうございます! アバター アイテム、Minecraft Xbox 360 版 T シャツを獲得しました!
+ダッシュボードでアバターに装備しましょう
+
+おめでとうございます! アバター アイテム、Minecraft Xbox 360 版 ウォッチを獲得しました!
+ダッシュボードでアバターに装備しましょう
+
+おめでとうございます! アバター アイテム、Creeper 野球帽を獲得しました!
+ダッシュボードでアバターに装備しましょう
+
+おめでとうございます! アバター アイテム、Minecraft Xbox 360 版 テーマを獲得しました!
+ダッシュボードでテーマを選択しましょう
+
+完全版を購入
+
+今はお試し版をプレイ中です。データをセーブするためには完全版を購入いただく必要があります
+今すぐ完全版を購入しますか?
+
+これは Minecraft Xbox 360 版のお試し版です。完全版であれば、今すぐ獲得できる実績があります!
+完全版を購入して、Xbox Live を通じて世界中のフレンドと一緒に遊べるMinecraft の楽しさを体験してください。
+完全版を購入しますか?
+
+これは Minecraft Xbox 360 版のお試し版です。完全版であれば、今すぐ獲得できるアバター アワードがあります!
+完全版を購入して、Xbox Live を通じて世界中のフレンドと一緒に遊べるMinecraft の楽しさを体験してください。
+完全版を購入しますか?
+
+これは Minecraft Xbox 360 版のお試し版です。完全版であれば、今すぐ獲得できるゲーマー アイコンがあります!
+完全版を購入して、Xbox Live を通じて世界中のフレンドと一緒に遊べる Minecraft の楽しさを体験してください。
+完全版を購入しますか?
+
+これは Minecraft Xbox 360 版のお試し版です。完全版であれば、今すぐ獲得できるテーマがあります!
+完全版を購入して、Xbox Live を通じて世界中のフレンドと一緒に遊べる Minecraft の楽しさを体験してください。
+完全版を購入しますか?
+
+お試し版では、この招待は受けられません。
+完全版を今すぐ購入しますか?
+
+ゲスト プレイヤーでは完全版を購入することはできません。Xbox Live ゲーマー プロフィールでサインインしてください
+
+お待ちください
+
+結果なし
+
+フィルター:
+
+フレンド
+
+マイスコア
+
+通算
+
+登録数:
+
+ランク
+
+ゲーマータグ
+
+セーブレベル
+
+詳細を設定中...
+
+最終処理中...
+
+地形を構築中
+
+世界のシミュレート中
+
+サーバーを初期化中
+
+復活地点を作成中
+
+復活地点を読み込み中
+
+暗黒界に入る
+
+暗黒界を出る
+
+復活中
+
+レベルを生成中
+
+レベルを読み込み中
+
+プレイヤーをセーブ中
+
+ホストサーバーに接続中
+
+地形をダウンロード中
+
+オフライン ゲームに切り替える
+
+ホストがゲームをセーブしています。しばらくお待ちください
+
+果ての世界に入る
+
+果ての世界を出る
+
+世界の種を探す
+
+このベッドは使用中です
+
+夜の間しか眠ることはできません
+
+%s は寝ています。朝まで時間をスキップするには、すべてのプレイヤーが寝ている必要があります
+
+最後に使用したベッドがなくなっているか、アクセスできません
+
+モンスターが近くにいる時に休むのは危険です
+
+あなたは寝ています。朝まで時間をスキップするには、すべてのプレイヤーが寝ている必要があります
+
+道具と武器
+
+武器
+
+食べ物
+
+建物
+
+防具
+
+機械
+
+乗り物
+
+飾り
+
+建設用ブロック
+
+レッドストーンと乗り物
+
+その他
+
+調合
+
+調合
+
+道具、武器、防具
+
+材料
+
+サインアウト
+
+ゲーマー プロフィールからサインアウトしました。タイトル画面に戻ります
+
+難易度
+
+BGM
+
+効果音
+
+ガンマ
+
+ゲームでの感度
+
+メニューでの感度
+
+ピース
+
+イージー
+
+ノーマル
+
+ハード
+
+プレイヤーの HP は自動で回復し、敵もいません
+
+敵は出現しますが、ノーマル モードほど攻撃力が高くありません
+
+敵が出現し、その攻撃力は普通です
+
+敵が出現し、その攻撃力がアップします。また、一瞬近づいただけでも Creeper が爆発するようになるので注意しましょう
+
+お試し版タイムアウト
+
+お試し版をプレイできる制限時間が過ぎてしまいました! 完全版を購入して、ゲームを続けますか?
+
+完全版
+
+既に満員のため、ゲームに参加できませんでした
+
+看板の文字を入力
+
+看板の文字を入力してください
+
+タイトルを入力
+
+投稿のタイトルを入力してください
+
+キャプションを入力
+
+投稿のキャプションを入力してください
+
+説明を入力
+
+投稿の説明を入力してください
+
+持ち物
+
+材料
+
+調合台
+
+チェスト
+
+エンチャント
+
+かまど
+
+材料
+
+燃料
+
+発射装置
+
+現在、このタイプのダウンロード コンテンツはありません
+
+%s が世界にやってきました
+
+%s が世界を去りました
+
+%s が追放されました
+
+本当にこのセーブデータを削除してもよろしいですか?
+
+承認待ち
+
+検閲済み
+
+プレイ中:
+
+設定を元に戻す
+
+本当に設定を最初の状態に戻してもよろしいですか?
+
+ロード エラー
+
+Minecraft Xbox 360 版のロードに失敗しました。続行できません
+
+%s のゲーム
+
+ななしのホストのゲーム
+
+ゲストがサインアウトしました
+
+ゲスト プレイヤーの 1 人がサインアウトしたため、すべてのゲスト プレイヤーがゲームから取り除かれました
+
+サインイン
+
+サインインしていません。このゲームをプレイするにはサインインが必要です。今すぐサインインしますか?
+
+マルチプレイが制限されています
+
+Xbox Live でのマルチプレイを制限されているプレイヤーがいます。ゲームに参加できません
+
+Xbox Live でのマルチプレイを制限されているプレイヤーがいます。オンライン ゲームは作成できません。[オンライン ゲーム] のチェックを外すとオフラインでゲームを開始できます
+
+[メンバーが作ったコンテンツ] の設定によりコンテンツへのアクセスが制限されているため、ゲームに参加できません。ゲームに参加するには、Xbox ダッシュボードの [プライバシー & オンライン設定] で設定を変更してください
+
+ローカル プレイヤーの中に [メンバーが作ったコンテンツ] の設定によりコンテンツへのアクセスが制限されているプレイヤーがいるため、ゲームに参加できません
+
+参加プレイヤーの中に [メンバーが作ったコンテンツ] の設定が [フレンドのみ] のプレイヤーがおり、あなたはそのフレンド リストに登録されていないため、ゲームに参加できません
+
+ゲームを作成できません
+
+ローカル プレイヤーの中に [メンバーが作ったコンテンツ] の設定によりコンテンツへのアクセスが制限されているプレイヤーがいるため、ゲームを作成できません。[オンライン ゲーム] のチェックを外してオフラインでゲームを始めるか、または Xbox ダッシュボードの [プライバシー & オンライン設定] で設定を変更してください
+
+自動選択されました
+
+デフォルト スキン
+
+お気に入りのスキン
+
+アクセスが禁止されています
+
+アクセス禁止リストに登録されている世界に参加しようとしています。
+このまま参加すると、この世界はアクセス禁止リストから外されます
+
+アクセス禁止にしますか?
+
+この世界をアクセス禁止リストに登録しますか?
+OK を選択すると、この世界でのプレイを終了します
+
+アクセス禁止を解除
+
+オートセーブの間隔
+
+オートセーブの間隔: オフ
+
+分
+
+ここには置けません
+
+復活したプレイヤーにダメージを与える可能性があるため、復活地点の近くに溶岩を置くことはできません
+
+このゲームではオートセーブ機能を利用できます。オートセーブの実行中は上のオートセーブ アイコンが表示されます。
+オートセーブ アイコンの表示中に本体の電源を切らないでください
+
+インターフェースの不透明度
+
+オートセーブを実行します
+
+画面表示サイズ
+
+画面表示サイズ (画面分割)
+
+種
+
+スキン パックのロック解除
+
+選択したスキンを使用するには、スキン パックをロック解除してください。
+今すぐスキン パックをロック解除しますか?
+
+テクスチャ パックのロック解除
+
+このテクスチャ パックを世界で使用するには、これをロック解除してください。
+今すぐテクスチャ パックをロック解除しますか?
+
+テクスチャ パック試用版
+
+現在お使いのテクスチャ パックは試用版です。完全版を利用しない場合、この世界はセーブできません。
+テクスチャ パックの完全版を購入しますか?
+
+テクスチャ パックを持っていません
+
+完全版を購入
+
+試用版をダウンロード
+
+完全版をダウンロード
+
+この世界は、持っていないテクスチャ パック、またはマッシュアップ パックが使用されています。
+今すぐこのテクスチャ パック、またはマッシュアップ パックをインストールしますか?
+
+試用版を購入
+
+完全版を購入
+
+プレイヤーを追放
+
+このプレイヤーをゲームから追放しますか? 追放されたプレイヤーは、この世界を再スタートするまで世界に入れなくなります
+
+ゲーマー アイコン パック
+
+テーマ
+
+スキン パック
+
+フレンドのフレンドを許可
+
+この世界への参加は、ホスト プレイヤーのフレンドのみに制限されています
+
+世界に入れません
+
+選択中
+
+選択したスキン:
+
+破損したダウンロード コンテンツ
+
+このダウンロード コンテンツは破損しているため使用できません。破損しているコンテンツを削除し、[Minecraft ストア] から再インストールしてください
+
+破損して使用できないダウンロード コンテンツがあります。破損しているコンテンツを削除し、[Minecraft ストア] から再インストールしてください
+
+ゲームモードを変更しました
+
+世界の名前を変更する
+
+世界の新しい名前を入力してください
+
+ゲームモード: サバイバル
+
+ゲームモード: クリエイティブ
+
+サバイバル
+
+クリエイティブ
+
+サバイバル モードで作成
+
+クリエイティブ モードで作成
+
+雲を表示する
+
+このセーブデータに対する操作を選んでください
+
+セーブデータの名前を変更する
+
+%d 秒後にオートセーブを開始します...
+
+オン
+
+オフ
+
+ノーマル
+
+スーパーフラット
+
+有効にすると、オンラインのゲームになります
+
+有効にすると、招待されたプレイヤーしか参加できません
+
+有効にすると、フレンド リストのフレンドのみゲームに参加できます
+
+有効にすると、プレイヤーが他のプレイヤーにダメージを与えられるようになります。(サバイバル モードのみ)
+
+無効にすると、このゲームに参加したプレイヤーは許可をもらわないかぎり建設や採掘ができません
+
+有効にすると、火は近くの可燃性ブロックに燃え広がります
+
+有効にすると、TNT 火薬を起爆すると爆発します
+
+有効にすると、ホストが飛行能力、疲労無効、ゲーム内メニューでの非表示を切り替えられます。実績およびランキング更新は無効になります
+
+有効にすると暗黒界を再生成します。暗黒砦が存在しないセーブ データがある場合に便利です
+
+有効にすると、村や要塞などの建物が世界に生成されるようになります
+
+有効にすると、地上界および暗黒界に、まったく平らな世界を生成します
+
+有効にすると、プレイヤーの復活地点の近くに便利なアイテムの入ったチェストが出現します
+
+スキン パック
+
+テーマ
+
+ゲーマーアイコン
+
+アバター アイテム
+
+テクスチャ パック
+
+マッシュアップ パック
+
+{*PLAYER*} は火の中で力尽きた
+
+{*PLAYER*} は火によって力尽きた
+
+{*PLAYER*} は溶岩に飲み込まれた
+
+{*PLAYER*} は壁に飲み込まれた
+
+{*PLAYER*} は溺れて力尽きた
+
+{*PLAYER*} は飢えて力尽きた
+
+{*PLAYER*} は刺されて力尽きた
+
+{*PLAYER*} は落下の衝撃で力尽きた
+
+{*PLAYER*} は世界の外へ落ちた
+
+{*PLAYER*} は力尽きた
+
+{*PLAYER*} は爆発した
+
+{*PLAYER*} は魔法により力尽きた
+
+{*PLAYER*}はエンダー ドラゴンのブレスで力尽きた
+
+{*PLAYER*} は {*SOURCE*} に倒された
+
+{*PLAYER*} は {*SOURCE*} に倒された
+
+{*PLAYER*} は {*SOURCE*} に撃たれて力尽きた
+
+{*PLAYER*} は {*SOURCE*} に火だるまにされた
+
+{*PLAYER*} は {*SOURCE*} に叩き潰された
+
+{*PLAYER*} は {*SOURCE*} に倒された
+
+岩盤の霧
+
+HUD の表示
+
+プレイヤーの手の表示
+
+分割画面でゲーマータグを表示
+
+ゲームオーバー メッセージ
+
+キャラクターを動かす
+
+カスタム スキン アニメーション
+
+採掘やアイテムの使用ができなくなりました
+
+採掘やアイテムの使用ができるようになりました
+
+ブロックを設置できなくなりました
+
+ブロックを設置できるようになりました
+
+ドアとスイッチを使用できるようになりました
+
+ドアとスイッチを使用できなくなりました
+
+チェストなどの入れ物を使用できるようになりました
+
+チェストなどの入れ物を使用できなくなりました
+
+生き物を攻撃できなくなりました
+
+生き物を攻撃できるようになりました
+
+プレイヤーを攻撃できなくなりました
+
+プレイヤーを攻撃できるようになりました
+
+動物を攻撃できなくなりました
+
+動物を攻撃できるようになりました
+
+ホストオプションを変更できるようになりました
+
+ホストオプションを変更できなくなりました
+
+飛行できるようになりました
+
+飛行できなくなりました
+
+疲労無効になりました
+
+疲労無効ではなくなりました
+
+不可視になりました
+
+不可視ではなくなりました
+
+攻撃されてもダメージを受けなくなりました
+
+攻撃されるとダメージを受けます
+
+%d MSP
+
+エンダー ドラゴン
+
+%s は果ての世界に入りました
+
+%s は果ての世界から出ました
+
+
+{*C3*}この人が、例のプレイヤーか{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}のこと?{*EF*}{*B*}{*B*}
+{*C3*}そう。気をつけろよ、もうずいぶんレベルが上がったみたいだ。僕らの考えは読まれているんだから{*EF*}{*B*}{*B*}
+{*C2*}別にいいよ。僕らはゲームの一部だと思われてるんだろうし{*EF*}{*B*}{*B*}
+{*C3*}僕はこのプレイヤー嫌いじゃないな。あきらめないで、たくさん遊んだじゃないか{*EF*}{*B*}{*B*}
+{*C2*}僕らの思考が画面上の文字みたいに読まれてるね{*EF*}{*B*}{*B*}
+{*C3*}ゲームという夢にのめり込んでいる時、プレイヤーは言葉を使っていろいろな物事を想像するらしい{*EF*}{*B*}{*B*}
+{*C2*}言葉はとても柔軟で素晴らしいインターフェイスだね。その上、画面の外の現実を直視するより全然怖くない{*EF*}{*B*}{*B*}
+{*C3*}文字で読めるようになる前には声を使ってたんだぞ。ゲームをしない人がゲームをする人たちを魔法使いとか賢者とか呼んで、悪魔の杖に乗って空を飛ぶ夢を見ていた頃の話だ{*EF*}{*B*}{*B*}
+{*C2*}このプレイヤーは何の夢を見たんだろう?{*EF*}{*B*}{*B*}
+{*C3*}陽の光と木の夢。それに火と水。夢を見ては、作る。夢を見ては、壊す。夢を見ては、狩る。時々狩られたりしたけど。あとは安全な場所の夢だ{*EF*}{*B*}{*B*}
+{*C2*}ふーん、元祖インターフェイスか。100 万年も昔の物なのにまだちゃんと動く。でもプレイヤーは、画面の外の現実で、本当はどんなものを作ったんだろう?{*EF*}{*B*}{*B*}
+{*C3*}それは、{*EF*}{*NOISE*}{*C3*} の檻の中で真実の世界を彫り上げるために、100 万の人と一緒に {*EF*}{*NOISE*}{*C3*} を作ったんだ。目的は {*EF*}{*NOISE*}{*C3*} だ。{*EF*}{*NOISE*}{*C3*} の中のことに過ぎないのに{*EF*}{*B*}{*B*}
+{*C2*}これはプレイヤーには読めないね{*EF*}{*B*}{*B*}
+{*C3*}そう、まだ最高レベルまで到達していないから。ゲームの中の短い夢じゃなくて、人生の長い夢を叶えなくてはいけない{*EF*}{*B*}{*B*}
+{*C2*}プレイヤーは僕らの好意を知っているの? 宇宙は寛容だってことを?{*EF*}{*B*}{*B*}
+{*C3*}おそらく。プレイヤーは宇宙の思いのノイズを聞いている{*EF*}{*B*}{*B*}
+{*C2*}でもプレイヤーの長い夢の中には、時に悲しいこともある。夏が訪れず、黒い太陽の下で凍え、自分が作った悲しさを現実と思ってしまうことがある{*EF*}{*B*}{*B*}
+{*C3*}だがその悲しさを外から癒すと、プレイヤーは壊れてしまう。悲しみはプレイヤー自身が乗り越えるもののひとつで、外から干渉できることではない{*EF*}{*B*}{*B*}
+{*C2*}プレイヤーがあまりに夢に浸っていると、時々教えたくなるんだ。プレイヤーは現実に本当の世界を作り上げていることを。その存在が宇宙にとって大切であることを。もし本当の絆を持てない時は、恐くて口に出せないでいる言葉を言う手助けをしたくなる{*EF*}{*B*}{*B*}
+{*C3*}おい、プレイヤーに読まれているぞ{*EF*}{*B*}{*B*}
+{*C2*}プレイヤーのことなんかどうでもいい時もあるけど、教えてあげたい時もある。現実だと思っている世界は本当はただの {*EF*}{*NOISE*}{*C2*} で、しかも {*EF*}{*NOISE*}{*C2*} だけだってこと。プレイヤーは {*EF*}{*NOISE*}{*C2*} の中では {*EF*}{*NOISE*}{*C2*} なんだ。長い夢の中で知る現実はほんの一部でしかない{*EF*}{*B*}{*B*}
+{*C3*}それでもプレイヤーはゲームを遊ぶんだ{*EF*}{*B*}{*B*}
+{*C2*}だけど、真実を教えることは簡単じゃないか...{*EF*}{*B*}{*B*}
+{*C3*}この夢の中では厳しすぎる。生きる方法を教えることは、生きる道を閉ざすことと同じだ{*EF*}{*B*}{*B*}
+{*C2*}だから僕は生き方を教えない{*EF*}{*B*}{*B*}
+{*C3*}プレイヤーは落ち着かなくなってきてるな{*EF*}{*B*}{*B*}
+{*C2*}なら、ある物語を教えようよ{*EF*}{*B*}{*B*}
+{*C3*}ただの物語で真実ではない{*EF*}{*B*}{*B*}
+{*C2*}そう。辺りを焼き払ってしまうようなむき出しの真実ではなく、言葉の檻の中に真実を優しく隠した物語{*EF*}{*B*}{*B*}
+{*C3*}もう一度プレイヤーに体を与えよう{*EF*}{*B*}{*B*}
+{*C2*}さあ、プレイヤー...{*EF*}{*B*}{*B*}
+{*C3*}君の名前をもう一度聞かせてほしい{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}。ゲームのプレイヤーだよ{*EF*}{*B*}{*B*}
+{*C3*}では始めようか{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}さあ、深呼吸だ。もう一度。胸に空気を入れてふくらませたら、吐き出して元に戻して。指を動かそう。体全体で空気と重力を感じて。君の長い夢の中に戻るんだ。君の全身は再び宇宙にふれている。今まではばらばらだったかのように。僕らが物事を分断していたかのように{*EF*}{*B*}{*B*}
+{*C3*}僕らは誰だろう? 山の精霊と呼ばれたこともあった。父なる太陽、母なる月、祖先の魂、獣の性、異教のソウル、幽霊、宇宙人、神、悪魔、天使、ポルターガイスト、エイリアン、地球外生命体、レプトン、クォーク。言葉は変わる。僕らは変わらない{*EF*}{*B*}{*B*}
+{*C2*}僕らは宇宙。君が君ではないと思うものすべて。君が今その肌と目を通して見ているもの。宇宙は君にふれ、君に光を投げかける。君の姿を見るためだよ、プレイヤー。君を知り、君に知ってもらうために。さあ、話を始めよう{*EF*}{*B*}{*B*}
+{*C2*}昔むかしあるところに、ひとりのプレイヤーがいました{*EF*}{*B*}{*B*}
+{*C3*}プレイヤーとは君、{*PLAYER*}だ{*EF*}{*B*}{*B*}
+{*C2*}自転する溶けた岩の薄い地表に立ったプレイヤーは、ある時自分自身を人間だと考えました。溶けた岩で出来たボールは、それより 33 万倍も大きい燃えるガスのかたまりの周りを回っていました。2 つのかたまりの間は、光の速さで 8 分もかかるほど離れていました。光は星からの情報で 1,500 万キロメートル離れたプレイヤーの肌を焦がすことさえできました{*EF*}{*B*}{*B*}
+{*C2*}平らで果てしない世界の上で、プレイヤーはある時鉱山で働く夢を見ました。太陽は白く四角でした。明るい時間は短すぎ、やるべきことは多すぎました。死は束の間の厄介ごとでした{*EF*}{*B*}{*B*}
+{*C3*}またある時は、プレイヤーは物語の中で自分自身を見失う夢を見ました{*EF*}{*B*}{*B*}
+{*C2*}そしてまたある時は、プレイヤーは別の場所で、別のものになる夢を見ました。夢は時に不快で、時にとても美しくもありました。プレイヤーはひとつの夢から目覚め、別の夢に入り込み、また覚めては他の夢を見ました{*EF*}{*B*}{*B*}
+{*C3*}そして、ある夢の中でプレイヤーは画面上に文字を見ました{*EF*}{*B*}{*B*}
+{*C2*}少し戻ろうか{*EF*}{*B*}{*B*}
+{*C2*}プレイヤーの原子は草原に、川に、大地に散らばりました。ある女の人がばらまかれた原子を集め、食べ、飲み、吸い込み、体の中でプレイヤーを組み立てました{*EF*}{*B*}{*B*}
+{*C2*}温かく暗い母の胎内から目覚めたプレイヤーは、長い夢に入っていきました{*EF*}{*B*}{*B*}
+{*C2*}プレイヤーは DNA に記された、語られたことのない新しい物語でした。十億年前に書かれたソースコードに生成された、実行されたことのない新しいプログラムでした。乳と愛によってのみ造られた、かつて存在しなかった新しい人間でした{*EF*}{*B*}{*B*}
+{*C3*}君はプレイヤー。物語。プログラム。乳と愛によってのみ造られた人間{*EF*}{*B*}{*B*}
+{*C2*}もっとさかのぼろう{*EF*}{*B*}{*B*}
+{*C2*}このゲームよりずっとずっと先に 70 億の 10 億倍のさらに 10 億倍の原子によって、プレイヤーの体は星の中心で作られました。ですから、プレイヤーも星からの情報なのです。プレイヤーはジュリアンという人が植えた情報の森の物語を進みマルクスという人が作った平らで果てしない世界を渡ります。物語はプレイヤーが密かに作り上げた小さな世界の中に存在し、そのプレイヤーが住む宇宙を作ったのは...{*EF*}{*B*}{*B*}
+{*C3*}それは秘密だ。時にプレイヤーは、柔らかく、暖かく、優しい世界をこっそり作りました。ある世界は厳しく、凍てつき、複雑でもありました。プレイヤーは宇宙の模型を空想することもありました。小さなエネルギーのかたまりが何もない広大な空間を飛び交います。このかたまりは「電子」や「陽子」と呼ばれるものでした{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}中には「惑星」や「恒星」と呼ばれるものもありました{*EF*}{*B*}{*B*}
+{*C2*}プレイヤーは「オフ」と「オン」、「0」と「1」、プログラムで作られた世界の中にいると信じていたこともありました。また、ゲームで遊んでいると思い込んでいたこともありました。そして、画面上の文字を読んでいる、と思っていたこともありました{*EF*}{*B*}{*B*}
+{*C3*}その文字を読んでいるのが君、プレイヤー...{*EF*}{*B*}{*B*}
+{*C2*}黙って。プレイヤーは画面に映し出されたコードを読むこともありました。コードを言葉に分解し、言葉から意味をくみ取り、意味から感情を、思いを、理論を、考えを引き出しました。呼吸が深く速くなり、そうしてプレイヤーは気がついたのです。自分が生きていることに。今まで経験した幾千もの死は現実ではなかったことに{*EF*}{*B*}{*B*}
+{*C3*}それが君。君だ。君は生きているんだ{*EF*}{*B*}{*B*}
+{*C2*}時折、夏の木漏れ日から宇宙の語りかける声を聞いたと感じることもありました{*EF*}{*B*}{*B*}
+{*C3*}時折、宇宙の声は、冷たく澄んだ冬の夜空の輝きから聞こえると感じたこともありました。視界の端にかすかに見えたのは、太陽より百万倍も大きな星の光だったのかもしれません。燃えた星のプラズマが、ほんの一瞬だけプレイヤーの目に映ったのです。プレイヤーは宇宙のはるか遠くで、家に向かって歩いている途中に突然おいしそうな匂いを感じ、慣れ親しんだ家のドアに今にもたどり着きそうなところでした。そしてプレイヤーはまた夢を見るのです{*EF*}{*B*}{*B*}
+{*C2*}時折、宇宙は「0」と「1」を通して、世界の電気を介して語りかけてくるのだと感じたこともありました。夢の終わりには、宇宙は画面上を流れていく言葉で話しかけていました{*EF*}{*B*}{*B*}
+{*C3*}宇宙は言いました。「愛している」{*EF*}{*B*}{*B*}
+{*C2*}「辛抱強く遊んでくれてありがとう」{*EF*}{*B*}{*B*}
+{*C3*}「君が必要とする物は、すべて自分の中にある」{*EF*}{*B*}{*B*}
+{*C2*}「君は自分が思うより強いのだ」{*EF*}{*B*}{*B*}
+{*C3*}「君は日差しだ」{*EF*}{*B*}{*B*}
+{*C2*}「君は闇夜だ」{*EF*}{*B*}{*B*}
+{*C3*}「君が闘っている暗闇は自分の内側に他ならない」{*EF*}{*B*}{*B*}
+{*C2*}「君が求める光は自分の内側に存在する」{*EF*}{*B*}{*B*}
+{*C3*}「君はひとりではない」{*EF*}{*B*}{*B*}
+{*C2*}「君はすべてから切り離された存在ではない」{*EF*}{*B*}{*B*}
+{*C3*}「君自身が宇宙だ。君は自分を試し、自分に語りかけ、自分を見つめている」{*EF*}{*B*}{*B*}
+{*C2*}「そして僕が君を愛するのは、君自身が愛であるからだ」{*EF*}{*B*}{*B*}
+{*C3*}ゲームは終わり、プレイヤーは夢から目覚め、また新しい夢が始まります。次にプレイヤーが見る夢はもっと素晴らしいものでしょう。プレイヤーは宇宙であり、愛でした{*EF*}{*B*}{*B*}
+{*C3*}さあ、プレイヤー{*EF*}{*B*}{*B*}
+{*C2*}目を覚まして{*EF*}{*B*}{*B*}
+
+
+暗黒界をリセットする
+
+本当にこのセーブ データの暗黒界を最初の状態にリセットしてもよろしいですか? 暗黒界に建設したものはすべて失われます
+
+暗黒界をリセットする
+
+暗黒界をリセットしない
+
+現在、Mooshroom は毛刈りできません。豚、羊、牛、ネコの数が最大数に達しました。
+
+現在、スポーン エッグを使用できません。 豚、羊、牛、ネコの数が最大数に達しました
+
+現在、スポーン エッグを使用できません。 Mooshroom の数が最大数に達しました
+
+現在、スポーン エッグを使用できません。 世界のオオカミの数が最大数に達しました
+
+現在、スポーン エッグを使用できません。 世界のニワトリの数が最大数に達しました
+
+現在、スポーン エッグを使用できません。 世界のイカの数が最大数に達しました
+
+現在、スポーン エッグを使用できません。 世界の敵の数が最大数に達しました
+
+現在、スポーン エッグを使用できません。 世界の村人の数が最大数に達しました
+
+世界の絵/額縁の数が最大数に達しました。
+
+難易度「ピース」では敵を出現させることはできません。
+
+この動物は求愛モードにできません。豚、羊、牛、ネコの繁殖数が最大数に達しました
+
+この動物は求愛モードにできません。オオカミの繁殖数が最大数に達しました
+
+この動物は求愛モードにできません。ニワトリの繁殖数が最大数に達しました
+
+この動物は求愛モードにできません。Mooshroom の繁殖数が最大数に達しました
+
+世界のボートの数が最大数に達しました
+
+世界のヘッド類の数が最大数に達しました
+
+上下反転
+
+左利き
+
+ゲームオーバー!
+
+復活
+
+利用可能ダウンロード コンテンツ
+
+スキンを変更
+
+遊び方
+
+操作方法
+
+設定
+
+クレジット
+
+コンテンツを再インストール
+
+デバッグ設定
+
+火の延焼
+
+TNT の爆発
+
+PvP
+
+高度な操作を許可
+
+ホスト特権
+
+建物を生成する
+
+スーパーフラット
+
+ボーナス チェスト
+
+世界のオプション
+
+建設と採掘の許可
+
+ドアとスイッチを使用可能
+
+入れ物を使用可能
+
+プレイヤーを攻撃可能
+
+動物を攻撃可能
+
+ホストオプションを変更できる
+
+プレイヤーを追放
+
+飛行可能
+
+疲労無効
+
+不可視
+
+ホスト オプション
+
+プレイヤー/招待
+
+オンライン ゲーム
+
+招待者のみ
+
+その他のオプション
+
+ロード
+
+新しい世界
+
+世界の名前
+
+世界の種
+
+ランダムに種を決める場合、空白のままにしてください
+
+プレイヤー
+
+ゲームに参加
+
+ゲームを始める
+
+ゲームが見つかりません
+
+プレイする
+
+ランキング
+
+実績
+
+遊び方 & オプション
+
+完全版を購入
+
+ゲームに戻る
+
+セーブ
+
+難易度:
+
+ゲームタイプ:
+
+ゲーマータグ:
+
+建物:
+
+レベルタイプ:
+
+PvP:
+
+高度な操作を許可:
+
+TNT 火薬:
+
+火の延焼:
+
+テーマを再インストール
+
+ゲーマー アイコン 1 を再インストール
+
+ゲーマー アイコン 2 を再インストール
+
+アバター アイテム 1 を再インストール
+
+アバター アイテム 2 を再インストール
+
+アバター アイテム 3 を再インストール
+
+オプション
+
+オーディオ
+
+コントロール
+
+グラフィック
+
+ユーザー インターフェイス
+
+デフォルトにリセット
+
+画面の揺れ
+
+ヒント
+
+プレイ中のボタンガイド
+
+ゲーム内でゲーマータグを表示
+
+2 プレイヤー左右分割画面
+
+完了
+
+看板のメッセージを編集:
+
+スクリーンショットの説明を入力してください
+
+キャプション
+
+ゲームのスクリーンショット
+
+看板のメッセージを編集:
+
+Minecraft: Xbox 360 版で作ったよ!
+
+Minecraft 正統派のテクスチャ、アイコン、ユーザー インターフェイス!
+
+すべてのマッシュアップされた世界を表示する
+
+転送をセーブするスロットを選択する
+
+空のスロット
+
+セーブ メタデータをアップロード中
+
+セーブ データをアップロード中
+
+Xbox One 用にセーブをアップロード中
+
+アップロードがキャンセルされました
+
+セーブ転送エリアへのセーブのアップロードがキャンセルされました
+
+効果なし
+
+スピード
+
+鈍化
+
+勤勉
+
+疲労
+
+力
+
+弱体化
+
+回復
+
+ダメージ
+
+跳躍
+
+目まい
+
+再生
+
+耐性
+
+耐火
+
+水中呼吸
+
+不可視
+
+盲目
+
+暗視
+
+空腹
+
+毒
+
+スピードの
+
+鈍化の
+
+勤勉の
+
+疲労の
+
+力の
+
+弱体化の
+
+回復の
+
+ダメージの
+
+跳躍の
+
+目まいの
+
+再生の
+
+耐性の
+
+耐火の
+
+水中呼吸の
+
+不可視の
+
+盲目の
+
+暗視の
+
+空腹の
+
+毒の
+
+
+
+II
+
+III
+
+IV
+
+ (スプラッシュ)
+
+陳腐な
+
+退屈な
+
+無個性な
+
+クリアな
+
+ミルキーな
+
+拡散した
+
+素朴な
+
+薄い
+
+不完全な
+
+気の抜けた
+
+かさばる
+
+無様な
+
+バター風味の
+
+なめらかな
+
+上品な
+
+小粋な
+
+濃厚な
+
+エレガントな
+
+ファンシーな
+
+チャーミングな
+
+粋な
+
+洗練された
+
+真心の
+
+きらめく
+
+強力な
+
+よどんだ
+
+無臭の
+
+悪臭の
+
+刺激のある
+
+えぐい
+
+キモい
+
+臭い
+
+すべてのポーションの基礎に使用します。調合台で使用すると、ポーションができます。
+
+単体では効果がありませんが、調合台で使用することができ、材料を追加するとポーションができます。
+
+プレイヤー、動物、モンスターの移動スピードを上昇させ、プレイヤーの走るスピード、ジャンプ距離、視界を向上させます
+
+プレイヤー、動物、モンスターの移動スピードを低下させ、プレイヤーの走るスピード、ジャンプ距離、視界を低下させます
+
+プレイヤーやモンスターの攻撃ダメージを上昇させます
+
+プレイヤーやモンスターの攻撃ダメージを低下させます
+
+プレイヤー、動物、モンスターの HP を瞬時に回復させます
+
+プレイヤー、動物、モンスターの HP を瞬時に減少させます
+
+プレイヤー、動物、モンスターの HP を時間とともに回復させます
+
+プレイヤー、動物、モンスターが、火、溶岩、Blaze 攻撃からダメージを受けなくなります
+
+プレイヤー、動物、モンスターの HP を時間とともに減少させます
+
+鋭さ
+
+聖なる力
+
+虫殺し
+
+ノックバック
+
+火属性
+
+防護
+
+防火
+
+落下軽減
+
+爆発耐性
+
+間接攻撃耐性
+
+水中呼吸
+
+水中作業
+
+効率
+
+技能
+
+耐久力
+
+アイテムボーナス
+
+幸運
+
+パワー
+
+火炎
+
+衝撃
+
+無限
+
+I
+
+II
+
+III
+
+IV
+
+V
+
+VI
+
+VII
+
+VIII
+
+IX
+
+X
+
+鉄のツルハシ以上で掘れる。エメラルドが採れる
+
+チェストに似ているが、異なる世界でもエンダー チェストの中のアイテムはすべてのプレイヤーのエンダー チェストで手に入れることができる
+
+接続したトリップワイヤーをエンティティが通過した時に起動する
+
+エンティティが通過した時に接続したトリップワイヤー フックを起動する
+
+エメラルドを保管するのに使える
+
+丸石でできた壁
+
+武器、道具、防具の修理に使用できる
+
+闇のクォーツを作るためにかまどで精錬した
+
+飾りとして使用する
+
+村人と取引できる
+
+飾り付けとして使う。花、苗木、サボテン、きのこを植えることができる
+
+2{*ICON_SHANK_01*} 回復する。金のニンジンの材料となる。農地に植えることができる
+
+0.5{*ICON_SHANK_01*} 回復する。かまどで調理することも可能。農地に植えることができる
+
+3{*ICON_SHANK_01*} 回復する。ジャガイモをかまどで調理するとできる
+
+1{*ICON_SHANK_01*} 回復する。かまどで調理することも可能。農地に植えることができる。病気になる場合がある
+
+3{*ICON_SHANK_01*} 回復する。ニンジンと金の塊から作る
+
+鞍を着けた豚に乗った時、操縦するのに使う
+
+4{*ICON_SHANK_01*} 回復する
+
+武器、道具、防具をエンチャントするのに金床と一緒に使用する
+
+闇のクォーツ鉱石を掘って作る。クォーツのブロックの材料になる
+
+ウールから作られる。飾り付けとして使う
+
+エメラルド
+
+植木鉢
+
+ニンジン
+
+ジャガイモ
+
+ベイクド ポテト
+
+有毒なジャガイモ
+
+金のニンジン
+
+棒付きのニンジン
+
+パンプキン パイ
+
+エンチャントした本
+
+闇のクォーツ
+
+エメラルド鉱石
+
+エンダー チェスト
+
+トリップワイヤー フック
+
+トリップワイヤー
+
+エメラルドのブロック
+
+丸石の壁
+
+苔の生えた丸石の壁
+
+植木鉢
+
+ニンジン
+
+ジャガイモ
+
+金床
+
+金床
+
+軽いダメージを受けた金床
+
+酷いダメージを受けた金床
+
+闇のクォーツ鉱石
+
+クォーツのブロック
+
+模様入りのクォーツのブロック
+
+柱状のクォーツのブロック
+
+クォーツの階段
+
+カーペット
+
+黒のカーペット
+
+赤のカーペット
+
+緑のカーペット
+
+茶色のカーペット
+
+青のカーペット
+
+紫のカーペット
+
+水色のカーペット
+
+薄灰色のカーペット
+
+灰色のカーペット
+
+ピンクのカーペット
+
+黄緑のカーペット
+
+黄色のカーペット
+
+空色のカーペット
+
+赤紫のカーペット
+
+オレンジのカーペット
+
+白のカーペット
+
+模様入り砂岩
+
+なめらかな砂岩
+
+{*SOURCE*} に損害を与えようとした {*PLAYER*} が倒された
+
+{*PLAYER*} は落下した金床に潰された
+
+{*PLAYER*} は落下したブロックに潰された
+
+{*PLAYER*} を {*DESTINATION*} へテレポートした
+
+{*PLAYER*} の場所までテレポートされた
+
+{*PLAYER*} があなたの場所にテレポートされた
+
+とげ
+
+クォーツの厚板
+
+水中を含む暗いエリアを、まるで昼間のように明るく表示します
+
+影響を受けるプレイヤー、動物、モンスターを不可視にします
+
+修理 & 名前
+
+エンチャントのコスト: %d
+
+高すぎます!
+
+名前の変更
+
+所有:
+
+取引に必要なアイテム
+
+{*VILLAGER_TYPE*} からの申し込み: %s
+
+修理
+
+取引
+
+首輪の染色
+
+
+ この金床の画面では、経験値を使って武器、防具、道具の名前を変更したり、修理したり、エンチャントすることができます
+
+
+
+ {*B*}
+ 金床の画面の説明を続けるには {*CONTROLLER_VK_A*} を押してください。{*B*}
+ 金床の説明を飛ばすには {*CONTROLLER_VK_B*} を押してください
+
+
+
+ アイテムを作るには、1 つ目の入力スロットに入れてください
+
+
+
+ 2 つ目の入力スロットに正しい材料 (例: 壊れた鉄の剣に鉄の延べ棒) が入ると、出力スロットに修理対象のアイテムが表示されます
+
+
+
+ 同一アイテムをもう 1 つ、2 つ目の入力スロットに入れれば、2 つのアイテムを組み合わせることができます
+
+
+
+ 金床の上でアイテムをエンチャントするには、エンチャントした本を 2 つ目の入力スロットに入れます
+
+
+
+ 作業にかかる経験値の数は、出力スロットの下に表示されます。経験値が足りない場合、修理は完了しません
+
+
+
+ テキストボックスに表示された名前を編集すれば、アイテムの名前を変更することができます
+
+
+
+ 修理したアイテムを拾うと、金床で使用した両方のアイテムを消費し、その分経験値が下がります
+
+
+
+ このエリアには、道具と武器の入った金床とチェストがあります
+
+
+
+ {*B*}
+ 金床の解説を続けるには {*CONTROLLER_VK_A*} を押してください。{*B*}
+ 金床の説明を飛ばすには {*CONTROLLER_VK_B*} を押してください
+
+
+
+ 金床を使って武器と道具を修理し、耐久度を回復させたり、名前を変更したり、エンチャントした本を使ってエンチャントすることができます
+
+
+
+ エンチャントした本は、ダンジョン内のチェストの中にあるか、エンチャントテーブルで普通の本をエンチャントして作ることができます
+
+
+
+ 金床を使うと経験値を消費し、使うたびに金床にダメージを与える可能性があります
+
+
+
+ 必要な作業内容、アイテムの価値、エンチャントの回数および過去に行った作業の数のすべてが修理コストに影響を与えます
+
+
+
+ アイテムの名前を変更すると、すべてのプレイヤーに対して表示される名前が変わり、作業コストが永久に下がったままになります
+
+
+
+ このエリアのチェストの中には、実験に使うことができる、壊れたツルハシ、原材料、エンチャントのビンおよびエンチャントした本が入っています
+
+
+
+ この取引の画面では、村人を相手に行うことのできる取引が表示されます
+
+
+
+ {*B*}
+ 取引の画面の説明を続けるには {*CONTROLLER_VK_A*} を押してください。{*B*}
+ 取引の画面の説明を飛ばすには {*CONTROLLER_VK_B*} を押してください
+
+
+
+ 現在、村人が希望しているすべての取引は、画面上部に表示されます
+
+
+
+ 必要なアイテムを持っていない場合、その取引は赤で表示され、利用することができません
+
+
+
+ 村人に渡すアイテムの数と種類は、画面左側の 2 つのボックス内に表示されます
+
+
+
+ 取引に必要なアイテムの合計は、画面左側の 2 つのボックスに表示されます
+
+
+
+ 村人が申し出ているアイテムと取引するには {*CONTROLLER_VK_A*} を押してください
+
+
+
+ このエリアには村人と、アイテムを購入するための紙が入ったチェストがあります
+
+
+
+ {*B*}
+ 取引の説明を続けるには {*CONTROLLER_VK_A*} を押してください。{*B*}
+ 取引の説明を飛ばすには {*CONTROLLER_VK_B*} を押してください
+
+
+
+ プレイヤーは、持ち物のアイテムを村人と取引することができます
+
+
+
+ 村人が申し出る取引は、職業によって異なります
+
+
+
+ いくつかの取引を組み合わせて実行すると、村人の取引がランダムに追加または変更されます
+
+
+
+ 頻繁に使用された取引は、一時的に削除されることがありますが、村人は常に少なくとも 1 回は取引を申し出ます
+
+
+
+ チェストの中の紙を何枚か取り出し、ここの村人と取引してみてください
+
+
+
+ このエリアには、エンダー チェストが 2 つあります
+
+
+
+ {*B*}
+ エンダー チェストの解説を続けるには {*CONTROLLER_VK_A*} を押してください。{*B*}
+ エンダー チェストの解説を飛ばすには {*CONTROLLER_VK_B*} を押してください
+
+
+
+ すべてのエンダー チェストは、世界を超えてリンクしています。エンダー チェストに入れられたアイテムは、他のどのエンダー チェストからでも利用することができます
+
+
+
+ エンダー チェストの中身はプレイヤーによって異なります
+
+
+
+ これにより、プレイヤーはどのエンダー チェストにもアイテムを保管でき、世界のどの場所のエンダー チェストからでもアイテムを取り出すことができます。いずれかのエンダー チェストにアイテムを入れて試してみましょう
+
+
+2{*ICON_SHANK_01*} 回復し、HP が 30 秒間自動回復し、耐火とダメージ耐性を 5 分間与える。リンゴと金のブロックから作る
+
+テレポート可能
+
+テレポート
+
+プレイヤーへテレポートする
+
+自分へテレポートする
+
+疲労を無効にできる
+
+不可視になれる
+
+不可視を有効にできるようになりました
+
+不可視を有効にできなくなりました
+
+飛行を有効にできるようになりました
+
+飛行を有効にできなくなりました
+
+疲労を有効にできるようになりました
+
+疲労を有効にできなくなりました
+
+テレポートできます
+
+テレポートできなくなりました
+
+{*T3*}遊び方: 金床{*ETW*}{*B*}{*B*}
+経験値は、金床と一緒にアイテムの修理、エンチャントまたは名前の変更にも使うことができます。{*B*}
+すべてのアイテムの名前は変更できますが、修理またはエンチャントした本を用いてエンチャントできるのは耐久力のあるアイテムだけです。{*B*}
+アイテムを修理するには、アイテムと材料 (鉄の剣には鉄の延べ棒など) または同じタイプのアイテムを組み合わせて、左側の入力スロットに入れます。{*B*}
+アイテムを組み合わせる場合、金床と組み合わせるのがより効果的です。さらに、どちらかがエンチャントされたアイテムの場合、完成したアイテムは入力スロットに入れたどちらかのアイテムにエンチャントされます。{*B*}
+エンチャントした本が適切であれば、アイテムを金床で組み合わせることで、アイテムをエンチャントすることができます。エンチャントした本はダンジョン内のチェストで見つけるか、普通の本をエンチャントテーブルでエンチャントすることができます。{*B*}
+金床は使用するたびにダメージを受けることがあり、酷使し過ぎると壊れてしまいます{*B*}
+
+
+{*T3*}遊び方: 取引{*ETW*}{*B*}{*B*}
+村人とアイテムを取引することができます。村人はそれぞれ、農民、肉屋、鍛冶屋、司書、司祭などの職業に就いていて、取引対象となるアイテムの種類に影響を及ぼします。{*B*}
+取引メニューで、村人が提供しているすべての取引のリストを見ることができます。あまり頻繁に使用すると、その取引は一時的に無効になりますが、プレイヤーがこれを使用して取引を行うと、村人は取引内容を変更したり追加したりすることができます。{*B*}
+取引は通常、いくつかのアイテムを売買してエメラルドを手に入れることを指します。{*B*}
+取引に必要なアイテムを持っていない場合、アイテムが赤く表示されます{*B*}
+
+
+{*T3*}遊び方: エンダー チェスト {*ETW*}{*B*}{*B*}
+ゲームの世界のエンダー チェストはすべてリンクしていて、中に保管されたアイテムはどのエンダー チェストからもアクセスすることができます。エンダー チェストの中身はプレイヤーごとに異なります。エンダー チェストに入れられたアイテムは、世界のどの場所にあるエンダー チェストからでも利用することができます
+
+
+農民
+
+司書
+
+司祭
+
+鍛冶屋
+
+肉屋
+
+村にある。村人が職業によって異なるアイテムの売却を申し出る
+
+大きなチェスト
+
+
+ エンチャントした本は、エンチャントテーブルで作ることができます。これを後で金床で使えば、アイテムをエンチャントすることができます
+
+
+
+ トリップワイヤー フックは、ワイヤー間をつなぐひもに何かが触発していれば、回路に動力を与え続けます
+
+
+
+ 飼い慣らしたオオカミは常に首輪を着けます。首輪の色は、染色して変えることができます
+
+
+ニンジンやジャガイモは、植えて栽培することができます。地上に野菜の姿が見えたら収穫の準備完了です
+
+
+ 豚に鞍を着ければプレイヤーは乗ることができます。鞍を着けた豚は、棒付きのニンジンで釣って操縦します
+
+
+
+ {*CONTROLLER_ACTION_MOVE*}でトロッコをゆっくり動かせます。トロッコを加速レールに乗せて走らせます
+
+
+分割画面プレイは高解像度モードでしか対応していないため、ゲームに参加できません。参加するには、参加中のプレイヤーをサインアウトしてください
+
+治癒
+
+Xbox 360
+
+Back
+
+このオプションでは、実績およびランキング更新は無効になります。
+
+Xbox One 用にセーブをアップロード
+
+セーブをアップロード
+
+セーブ転送エリアに一度に保管できるのは Xbox 360 本体 1 台のセーブのみです。別の Xbox 360 本体セーブに読み込む前に、お使いの Xbox One 本体にセーブをダウンロードしたかご確認ください
+
+読み込み中...
+
+読み込みが完了しました!
+
+読み込みに失敗しました。後ほど改めてお試しください
+
+音楽ディスクを見つけました ({*progress*}/{*goal*})
+
+
diff --git a/Minecraft.Client/Xbox/loc/lcl/ko-KR/Minecraft_all.resx b/Minecraft.Client/Xbox/loc/lcl/ko-KR/Minecraft_all.resx
new file mode 100644
index 00000000..4ace282e
--- /dev/null
+++ b/Minecraft.Client/Xbox/loc/lcl/ko-KR/Minecraft_all.resx
@@ -0,0 +1,4573 @@
+
+사용 안 함
+
+확인
+
+뒤로
+
+취소
+
+예
+
+아니요
+
+저장 데이터 손상
+
+저장 데이터가 손상되었습니다. 새로 저장한 다음 기존 데이터를 덮어쓰시겠습니까?
+
+여유 공간 부족
+
+선택한 저장 장치에 공간이 부족하여 새 저장 데이터를 만들 수 없습니다.
+
+다시 선택
+
+저장하지 않고 플레이
+
+새 저장 데이터 생성
+
+덮어쓰시겠습니까?
+
+저장 데이터가 들어 있는 저장 장치를 선택했습니다. 덮어쓰시겠습니까?
+
+아니요, 덮어쓰지 않습니다.
+
+덮어쓰고 저장합니다.
+
+저장 실패
+
+저장 장치 문제
+
+저장 장치를 사용할 수 없거나 장치에 오류가 있습니다.
+
+저장 장치를 사용할 수 없거나 저장 장치에 오류가 있습니다. 다른 저장 장치를 선택하십시오.
+
+새 저장 장치 선택
+
+선택한 저장 장치 없음
+
+저장 장치를 선택하지 않으면 게임을 저장할 수 없습니다.
+
+저장 장치 선택
+
+저장하지 않고 계속하기
+
+저장 장치가 제거되었습니다. 새 장치를 선택하십시오.
+
+불러오기 실패
+
+저장 데이터 이름 입력
+
+저장 데이터 이름을 입력하십시오.
+
+Xbox 대시보드로 돌아가기
+
+게임을 종료하시겠습니까?
+
+로그아웃
+
+게이머 프로필에서 로그아웃했으므로 타이틀 화면으로 돌아갑니다.
+
+게이머 프로필에서 로그아웃했으므로 매치가 종료됐습니다.
+
+계속 플레이
+
+게이머 프로필이 오프라인 상태입니다.
+
+이 게임 기능 중 일부는 게이머 프로필로 Xbox Live에 로그인해야 이용할 수 있습니다. 현재는 오프라인 상태입니다.
+
+이 기능을 이용하려면 게이머 프로필로 Xbox Live에 로그인해야 합니다.
+
+Xbox Live 연결
+
+오프라인으로 계속하기
+
+도전 과제 상품 문제
+
+플레이어의 게임 프로필에 접속하는 중에 문제가 발생했습니다. 도전 과제 상품이 지급되지 않습니다.
+
+게이머 프로필 문제
+
+게이머 프로필에 설정을 저장하지 못했습니다.
+
+손님 게이머 프로필
+
+손님 게이머 프로필로 이용할 수 없는 기능입니다. 다른 게이머 프로필을 선택하십시오.
+
+저장하는 중...
+
+콘텐츠를 저장하고 있습니다. 본체를 끄지 마십시오.
+
+정식 버전 게임 구매
+
+이 Minecraft는 평가판입니다. 정식 버전 게임에서는 도전 과제를 달성할 수 있습니다.
+정식 버전 게임을 구매하면 Minecraft의 모든 기능을 이용하고 Xbox Live를 통해 전 세계의 친구들과 함께 게임을 즐길 수 있습니다.
+정식 버전 게임을 구매하시겠습니까?
+
+프로필을 읽는 데 문제가 발생하여 주 메뉴로 돌아갑니다.
+
+새 다운로드 콘텐츠가 준비되었습니다! 주 메뉴의 Minecraft 상점에서 이용할 수 있습니다.
+
+Minecraft 상점의 캐릭터 팩으로 캐릭터의 외형을 바꿀 수 있습니다. 주 메뉴의 'Minecraft 상점'을 선택해 확인해 보십시오.
+
+고화질(HD) 모드에서는 하나의 본체에서 분할 화면으로 최대 4명까지 게임을 즐길 수 있습니다.
+
+게임에 참가하려면 본체에 추가 컨트롤러를 연결하고 START를 누르십시오.
+
+게임의 밝기를 높이거나 낮추려면 감마 설정을 변경하십시오.
+
+낙원 난이도를 선택하면 체력이 자동으로 회복되고 밤에 괴물이 출몰하지 않습니다!
+
+늑대를 길들이려면 뼈를 먹이십시오. 길들인 늑대는 앉게 하거나 플레이어를 따르게 할 수 있습니다.
+
+소지품 메뉴 밖으로 포인터를 옮기고 {*CONTROLLER_VK_A*} 단추를 눌러 아이템을 버릴 수 있습니다.
+
+밤에 침대에서 자면 시간을 새벽으로 건너뛸 수 있습니다. 멀티 플레이어 게임에서는 동시에 모든 플레이어가 잠들어야 합니다.
+
+돼지에서 돼지고기를 수확하고 요리하여 먹으면 체력이 회복됩니다.
+
+소에서 가죽을 수확하고 그 가죽을 사용해 방어구를 만드십시오.
+
+빈 양동이를 사용하면 소에서 짜낸 우유, 물, 또는 용암을 담을 수 있습니다!
+
+식물을 심을 땅을 준비하려면 괭이를 사용하십시오.
+
+거미는 낮에 한해 먼저 공격하지 않는 한 이쪽을 공격하지 않습니다.
+
+삽으로 흙이나 모래를 파는 것이 손으로 파는 것보다 빠릅니다!
+
+돼지고기를 날로 먹는 것보다 요리해서 먹을 때 체력이 더 많이 회복됩니다.
+
+밤에 불을 밝히려면 횃불을 만드십시오. 괴물들은 횃불 근처 지역에는 접근하지 않습니다.
+
+광물 수레와 레일을 사용해서 목적지까지 더 빠르게 이동하십시오.
+
+묘목을 심으면 자라서 나무가 됩니다.
+
+Pigman은 먼저 공격하지 않는 한 이쪽을 공격하지 않습니다.
+
+플레이어는 게임 시작 지점을 변경할 수 있으며 침대에서 취침하여 시간을 새벽으로 건너뛸 수 있습니다.
+
+Ghast가 쏘는 불덩이를 되받아치십시오!
+
+차원문을 지으면 다른 차원의 세계인 지하로 여행을 떠날 수 있습니다.
+
+{*CONTROLLER_VK_B*} 단추를 누르면 지금 손에 들고 있는 아이템을 버립니다.
+
+상황에 맞는 도구를 사용하십시오!
+
+횃불에 쓸 석탄이 없을 때는 화로 안의 나무에서 숯을 만들 수 있습니다.
+
+땅을 계속 위로 파거나 계속 아래로 파는 것은 그리 좋지 않습니다.
+
+해골 뼈에서 얻을 수 있는 뼛가루는 작물을 즉시 자라게 하는 비료로 쓸 수 있습니다.
+
+Creeper는 접근하면 폭발합니다.
+
+흑요석은 물과 용암 재료 블록이 부딪쳐서 만들어진 것입니다.
+
+용암은 재료 블록이 제거되어도 완전히 사라지는 데 시간이 걸립니다.
+
+Ghast가 쏘는 불덩이에 내성을 가지는 조약돌은 경계 관문을 만드는 데 적합합니다.
+
+횃불, 발광석, 호박등과 같이 광원으로 사용 가능한 블록은 눈과 얼음을 녹입니다.
+
+양털로 만든 건축 구조물이 야외에 있으면 번개 때문에 불이 붙을 수도 있으므로 조심해야 합니다.
+
+용암 한 양동이로 화로에서 블록 100개를 녹일 수 있습니다.
+
+연주 음은 소리 블럭 아래 재질에 따라 달라집니다.
+
+좀비와 해골은 물속에 있으면 대낮에도 살아 움직입니다.
+
+늑대를 공격하면 근처에 있는 늑대들이 적대적으로 변해 플레이어를 공격합니다. Pigman 좀비도 같은 특성을 가집니다.
+
+늑대는 지하로 내려갈 수 없습니다.
+
+늑대는 Creeper를 공격하지 않습니다.
+
+닭은 5분에서 10분마다 달걀을 낳습니다.
+
+흑요석은 다이아몬드 곡괭이로만 채굴할 수 있습니다.
+
+Creeper를 처치하면 손쉽게 화약을 얻을 수 있습니다.
+
+두 개의 상자를 나란히 놓으면 큰 상자 하나를 만들 수 있습니다.
+
+길들인 늑대는 꼬리를 보면 체력 상태를 알 수 있습니다. 기운을 회복시키려면 고기를 먹이십시오.
+
+화로를 이용하면 선인장을 초록 선인장 염료로 만들 수 있습니다.
+
+4J Studios와 Kappische의 Twitter에서 이 게임의 최신 정보를 얻을 수 있습니다.
+
+일시 중지 메뉴에서 Minecraft 스크린샷을 Facebook에 올릴 수 있습니다. 친구들에게 자신의 작품을 자랑하십시오!
+
+플레이 방법 메뉴의 업데이트 정보 섹션에서 최신 업데이트 정보를 확인할 수 있습니다.
+
+이제 울타리를 쌓을 수 있습니다!
+
+minecraftforum에 Xbox 360 Edition 전용 섹션이 생겼습니다.
+
+플레이어가 손에 밀을 들고 있으면 일부 동물이 플레이어를 따라다닙니다.
+
+동물이 어떤 방향이든 20 블록 이상 움직일 수 없으면 사라지지 않습니다.
+
+음악은 C418이 만들었습니다!
+
+Notch의 Twitter를 팔로우하는 사람은 100만 명이 넘습니다!
+
+스웨덴 사람들이 모두 금발은 아닙니다. Mojang 소속의 Jens 같이 붉은 머리도 있습니다!
+
+4J Studios가 Xbox 360 게임에서 Herobrine을 삭제한 것 같습니다.
+
+언젠가는 업데이트가 있을 예정입니다!
+
+Notch가 누구인지 아십니까?
+
+Mojang의 직원 수보다 Mojang이 받은 상의 수가 많습니다!
+
+유명인들도 Minecraft를 즐깁니다!
+
+deadmau5는 Minecraft를 좋아합니다!
+
+버그가 보이더라도 신경쓰지 마세요.
+
+Creeper는 코딩 버그에서 태어났습니다.
+
+닭입니까, 오리입니까?
+
+Minecon에 간 적 있나요?
+
+Mojang 직원 중, junkboy의 얼굴을 본 사람은 없습니다.
+
+Minecraft 위키가 있다는 걸 아십니까?
+
+Mojang의 새 사무실은 아주 멋집니다!
+
+Minecraft: Xbox 360 Edition이 다양한 기록을 갱신했습니다!
+
+Minecon 2013이 미국 플로리다 주 올랜도 시에서 개최되었습니다!
+
+.party()은 최고였습니다!
+
+뜬소문은 모두 거짓이라고 생각하는 것이 진실이라고 생각하는 것보다 좋습니다!
+
+{*T3*}플레이 방법: 기본{*ETW*}{*B*}{*B*}
+Minecraft는 블록을 배치하여 무엇이든 상상한 대로 만들 수 있는 게임입니다. 밤에는 괴물이 출몰하므로, 그에 대비하여 피신처를 준비해둬야 합니다.{*B*}{*B*}
+{*CONTROLLER_ACTION_LOOK*}으로 주위를 둘러봅니다.{*B*}{*B*}
+{*CONTROLLER_ACTION_MOVE*}으로 주변을 이동합니다.{*B*}{*B*}
+{*CONTROLLER_ACTION_JUMP*}를 누르면 점프합니다.{*B*}{*B*}
+{*CONTROLLER_ACTION_MOVE*}을 앞으로 빠르게 두 번 누르면 질주합니다. {*CONTROLLER_ACTION_MOVE*}를 계속 누르고 있으면 질주 시간이 다 되거나 음식 막대가 {*ICON_SHANK_03*} 이하가 될 때까지 계속 질주합니다.
+{*CONTROLLER_ACTION_ACTION*}를 누르고 있으면 손이나 도구를 사용해 채굴하거나 벌목합니다. 특정 블록을 채굴하려면 도구를 만들어야 할 수 있습니다.{*B*}{*B*}
+손에 아이템을 들고 있다면 {*CONTROLLER_ACTION_USE*}를 눌러 사용하거나 {*CONTROLLER_ACTION_DROP*}를 눌러 버릴 수 있습니다.
+
+{*T3*}플레이 방법: HUD{*ETW*}{*B*}{*B*}
+HUD는 체력이나 산소(물속에 있을 때), 배고픔 레벨(배고픔을 해결하려면 음식을 먹어야 함), 방어력(방어구를 입고 있을 때) 등의 정보를 보여줍니다. 체력을 잃어도 음식 막대에 {*ICON_SHANK_01*}가 9칸 이상 있다면 체력이 자동으로 회복됩니다. 음식을 먹으면 음식 막대가 차오릅니다.{*B*}
+또한 이곳의 경험치 막대는 숫자로 경험치가 표시되며 막대는 경험치를 올리는 데 필요한 경험치 점수를 보여줍니다. 경험치 점수는 괴물이나 동물을 처치하면 나오는 구체를 모으거나, 특정 블록을 채굴하거나, 동물을 교배하거나 낚시를 하거나 화로에서 광석을 녹이면 얻을 수 있습니다.{*B*}{*B*}
+또한 사용할 수 있는 아이템도 표시됩니다. {*CONTROLLER_ACTION_LEFT_SCROLL*}과 {*CONTROLLER_ACTION_RIGHT_SCROLL*}로 손에 든 아이템을 바꿀 수 있습니다.
+
+{*T3*}플레이 방법: 소지품{*ETW*}{*B*}{*B*}
+{*CONTROLLER_ACTION_INVENTORY*}을 이용해 소지품을 볼 수 있습니다.{*B*}{*B*}
+이 화면에는 손에 들고 쓸 수 있는 아이템과 가지고 다닐 수 있는 아이템이 모두 표시됩니다. 방어력 또한 이 화면에서 확인할 수 있습니다.{*B*}{*B*}
+{*CONTROLLER_MENU_NAVIGATE*}로 포인터를 움직일 수 있습니다. {*CONTROLLER_VK_A*} 단추를 누르면 포인터로 가리킨 아이템을 집습니다. 수량이 2개 이상일 때는 아이템을 전부 집으며, {*CONTROLLER_VK_X*} 단추를 누르면 반만 집을 수 있습니다.{*B*}{*B*}
+포인터를 사용해서 아이템을 소지품의 다른 공간으로 옮긴 다음 {*CONTROLLER_VK_A*} 단추를 누르면 해당 위치에 놓습니다. 포인터로 집은 아이템이 여러 개일 때 {*CONTROLLER_VK_A*} 단추를 누르면 모두 내려놓고 {*CONTROLLER_VK_X*} 단추를 누르면 하나만 놓습니다.{*B*}{*B*}
+방어구 아이템에 포인터를 올려놓으면 해당 아이템을 방어구 슬롯으로 빨리 옮길 수 있는 툴팁이 표시됩니다.{*B*}{*B*}
+염색으로 가죽 방어구의 색을 바꿀 수 있습니다. 소지품 메뉴에서 포인터로 염료를 잡은 후 포인터가 염색시키고자 하는 아이템 위에 있을 때 {*CONTROLLER_VK_X*} 단추를 누르면 됩니다.
+
+
+{*T3*}플레이 방법: 상자{*ETW*}{*B*}{*B*}
+상자를 만들고 나면 상자를 월드에 놓고 {*CONTROLLER_ACTION_USE*}를 눌러 소지품에 있는 아이템을 보관할 수 있습니다.{*B*}{*B*}
+아이템을 소지품 또는 상자로 옮기려면 포인터를 사용하십시오.{*B*}{*B*}
+상자 안에 넣어둔 아이템은 나중에 소지품에 다시 넣을 수 있습니다.
+
+
+{*T3*}플레이 방법: 대형 상자{*ETW*}{*B*}{*B*}
+상자 두 개를 나란히 붙이면 대형 상자가 만들어집니다. 이 상자에는 아이템을 더 많이 넣을 수 있습니다.{*B*}{*B*}
+사용 방법은 일반 상자와 같습니다.
+
+
+{*T3*}플레이 방법: 제작{*ETW*}{*B*}{*B*}
+제작 인터페이스에서는 소지품에 있는 아이템을 조합해서 새로운 아이템을 만들 수 있습니다. {*CONTROLLER_ACTION_CRAFTING*}를 눌러 제작 인터페이스를 여십시오.{*B*}{*B*}
+{*CONTROLLER_VK_LB*}과 {*CONTROLLER_VK_RB*}로 화면 위쪽의 탭에서 제작할 아이템 종류를 선택한 다음 {*CONTROLLER_MENU_NAVIGATE*}로 제작할 아이템을 고르십시오.{*B*}{*B*}
+제작 영역에는 새 아이템을 만드는 데 필요한 재료 아이템이 표시됩니다. {*CONTROLLER_VK_A*} 단추를 누르면 아이템을 만들어 소지품에 넣게 됩니다.
+
+
+{*T3*}플레이 방법: 작업대{*ETW*}{*B*}{*B*}
+더 큰 아이템을 만들 때는 작업대를 사용합니다.{*B*}{*B*}
+작업대를 설치하고 {*CONTROLLER_ACTION_USE*}를 눌러 사용하십시오.{*B*}{*B*}
+작업대에서 아이템을 만드는 방법은 기본 제작과 같지만, 제작 공간이 더 넓고 선택할 수 있는 아이템이 더 많아집니다.
+
+
+{*T3*}플레이 방법: 화로{*ETW*}{*B*}{*B*}
+화로에서는 아이템에 열을 가해서 다른 아이템으로 바꿀 수 있습니다. 예를 들어 철광석을 화로에서 가열하면 철 주괴가 만들어집니다.{*B*}{*B*}
+화로를 설치하고 {*CONTROLLER_ACTION_USE*}를 눌러 사용하십시오.{*B*}{*B*}
+화로 아래쪽에는 연료나 땔감을 넣고 위쪽에는 가열할 아이템을 넣어야 합니다. 그러면 화로에 불이 켜지고 작업이 시작됩니다.{*B*}{*B*}
+아이템 가열이 끝나면 결과물 슬롯에서 소지품으로 옮길 수 있습니다.{*B*}{*B*}
+화로에 넣을 수 있는 재료나 연료 아이템에 포인터를 올려놓으면 해당 아이템을 화로로 빨리 옮길 수 있는 툴팁이 표시됩니다.
+
+
+{*T3*}플레이 방법: 디스펜서{*ETW*}{*B*}{*B*}
+디스펜서는 아이템을 쏘아 보내는 데 사용됩니다. 디스펜서를 작동하려면 레버와 같은 스위치를 장착해야 합니다.{*B*}{*B*}
+디스펜서에 아이템을 넣으려면 {*CONTROLLER_ACTION_USE*}를 누른 다음, 쏘아 보낼 아이템을 소지품에서 꺼내 디스펜서에 넣으십시오.{*B*}{*B*}
+이제 스위치를 조작하면 디스펜서가 아이템을 쏘아 보냅니다.
+
+
+{*T3*}플레이 방법: 양조{*ETW*}{*B*}{*B*}
+양조 기술로 물약을 만들기 위해서는 양조대가 필요하며, 양조대는 작업대에서 만들 수 있습니다. 모든 물약을 만들 때는 물 한 병이 필요합니다. 가마솥이나 다른 수원에서 유리병에 물을 채우십시오. {*B*}
+양조대 하나에는 병을 넣을 수 있는 슬롯이 세 개 있으므로, 한 번에 물약을 세 병까지 양조할 수 있습니다. 재료 한 개를 병 세 개에 모두 넣을 수 있으므로, 자원을 최대한 아끼려면 물약 세 병을 동시에 양조하십시오.{*B*}
+물약 재료를 양조대 위에 넣으면 잠시 후 기본 물약이 완성됩니다. 기본 물약은 그 자체로는 아무런 효과가 없으나 다른 재료를 넣어 양조하면 효과가 있는 물약이 됩니다.{*B*}
+효과가 있는 물약을 만든 뒤 세 번째 재료를 넣으면 효과 지속 시간이 길어지거나(레드스톤 가루 사용), 효과가 더 강해지거나(발광석 가루 사용), 해로운 효과로 바꿀 수(발효 거미 눈 사용) 있습니다.{*B*}
+물약에 화약을 넣으면 던질 수 있는 폭발 물약으로 바꿀 수 있습니다. 폭발 물약을 던지면 물약병이 떨어진 지점 주변에서 해당 물약의 효과가 발생합니다.{*B*}
+
+물약 재료는 다음과 같습니다.{*B*}{*B*}
+* {*T2*}지하 사마귀{*ETW*}{*B*}
+* {*T2*}거미 눈{*ETW*}{*B*}
+* {*T2*}설탕{*ETW*}{*B*}
+* {*T2*}Ghast의 눈물{*ETW*}{*B*}
+* {*T2*}Blaze 가루{*ETW*}{*B*}
+* {*T2*}마그마 크림{*ETW*}{*B*}
+* {*T2*}빛나는 수박{*ETW*}{*B*}
+* {*T2*}레드스톤 가루{*ETW*}{*B*}
+* {*T2*}발광석 가루{*ETW*}{*B*}
+* {*T2*}발효 거미 눈{*ETW*}{*B*}{*B*}
+
+재료의 조합에 따라 물약의 효과가 달라지니 여러 조합을 시험해 보십시오.
+
+
+{*T3*}플레이 방법: 효과부여{*ETW*}{*B*}{*B*}
+괴물 및 동물을 처치하거나 또는 특정 블록을 채굴하거나 녹여서 얻을 수 있는 경험치로 도구, 무기 및 방어구에 효과를 부여할 수 있습니다.{*B*}
+검, 활, 도끼, 곡괭이, 삽 또는 방어구를 효과부여대에 놓인 책 아래에 있는 슬롯에 넣으면 슬롯 오른쪽에 각각 경험치 비용이 쓰인 단추 세 개가 나타납니다.{*B*}
+효과부여에 필요한 경험치가 모자란 항목은 빨간색으로 나타나며, 그렇지 않다면 초록색으로 나타납니다.{*B*}{*B*}
+실제 효과부여는 표시된 비용에 기반을 두고 무작위로 적용됩니다.{*B*}{*B*}
+효과부여대가 한 블록 간격을 두고 책장에 둘러싸여 있으면(최대 책장 15개까지) 효과부여 레벨이 상승하며, 효과부여대에 놓인 책에 신비한 문양이 나타납니다.{*B*}{*B*}
+효과부여대를 만들 때 쓰이는 모든 재료는 월드 안의 마을에서 찾거나 월드 안에서 채굴 및 경작을 통해 얻을 수 있습니다.{*B*}
+효과부여 책은 모루에서 아이템에 효과를 부여하는 데 사용합니다. 이것으로 아이템에 더 효율적으로 효과를 부여할 수 있습니다.{*B*}
+
+
+{*T3*}플레이 방법: 동물 농장{*ETW*}{*B*}{*B*}
+동물을 한 장소에 두고 싶으면 20x20 블록보다 작은 면적에 울타리를 짓고 그 안에 동물을 두십시오. 이렇게 하면 다른 일을 하다가 돌아와도 동물이 그 자리에 있을 겁니다.
+
+
+{*T3*}플레이 방법: 동물 교배{*ETW*}{*B*}{*B*}
+Minecraft에서는 동물을 교배해 새끼 동물을 얻을 수 있습니다!{*B*}
+동물을 교배시키려면 각 동물에 적합한 먹이를 먹여 '사랑 모드'로 만들어야 합니다.{*B*}
+소, Mooshroom, 양에게는 밀을 먹이고 돼지에게는 당근을 먹이십시오. 그리고 닭에게는 밀 씨앗이나 지하 사마귀를 먹이십시오. 늑대에겐 모든 종류의 고기를 먹일 수 있습니다. 적합한 먹이를 먹은 동물은 근처에 같은 종류의 사랑 모드 상태인 동물이 있는지 찾아다니게 됩니다.{*B*}
+사랑 모드 상태이며 종류가 같은 동물이 두 마리 만나게 되면 서로 입을 맞추게 되고, 잠시 후 새끼 동물이 태어납니다. 새끼 동물은 다 자라기 전까지 부모 동물을 따라다니게 됩니다.{*B*}
+사랑 모드가 끝난 동물은 5분간 다시 사랑 모드 상태가 될 수 없습니다.{*B*}
+월드에 생성될 수 있는 동물의 숫자가 제한되어 있으므로 동물이 많을 때 교배할 수 없을 수도 있습니다.
+
+{*T3*}플레이 방법: 지하 차원문{*ETW*}{*B*}{*B*}
+지하 차원문은 플레이어가 지상 월드와 지하 월드를 오갈 때 사용하는 관문입니다. 지하 월드를 이용하면 지상 월드를 더 빨리 이동할 수 있습니다. 지하 월드의 1블록 거리는 지상 월드의 3블록 거리와 같으므로 지하에 차원문을 세우고 그곳을 통과하면 3배 먼 거리로 나가게 됩니다.{*B*}{*B*}
+차원문을 세우려면 흑요석 블록이 10개 이상 필요하며, 5블록 높이에 4블록 길이, 1블록 너비로 만들어야 합니다. 차원문 외형이 만들어지면 안쪽 공간에 불을 붙여야 차원문을 작동할 수 있습니다. 불은 부싯돌과 부시 또는 불쏘시개를 사용하여 붙입니다.{*B*}{*B*}
+차원문 세우기의 예시는 오른쪽 그림에 표시되어 있습니다.
+
+
+{*T3*}플레이 방법: 멀티 플레이{*ETW*}{*B*}{*B*}
+Xbox 360 본체용 Minecraft는 멀티 플레이 게임이 기본값으로 되어 있습니다. 고화질(HD) 모드로 플레이 중이라면, 플레이 도중 언제든지 추가 컨트롤러를 연결하고 START를 눌러 로컬 플레이어를 게임에 참여시킬 수 있습니다.{*B*}{*B*}
+온라인 게임을 시작하거나 도중에 참가하면 친구 목록에 온라인 상태가 표시됩니다(게임 호스트일 때 '초대한 사람만 참가 가능'으로 설정한 경우는 제외). 그리고 친구가 게임에 참가하면 해당 친구의 친구 목록에도 온라인 상태가 표시됩니다('친구의 친구도 참가 가능' 옵션을 선택했을 경우).{*B*}
+게임 접속 중에 BACK 단추를 누르면 같은 게임 안에 있는 모든 플레이어 목록을 불러와 플레이어의 게이머 카드를 보거나 게임에서 추방하거나 다른 플레이어를 게임에 초대할 수 있습니다.
+
+
+{*T3*}플레이 방법: 스크린샷 공유{*ETW*}{*B*}{*B*}
+일시 중지 메뉴를 불러온 뒤, {*CONTROLLER_VK_Y*} 단추를 눌러 스크린샷을 찍고 Facebook에 공유할 수 있습니다. 조그맣게 스크린샷 미리 보기가 표시되며 Facebook 게시물에 추가할 텍스트를 입력할 수 있습니다.{*B*}{*B*}
+스크린샷을 찍을 때 특히 유용하게 쓰이는 카메라 모드의 변경으로 캐릭터의 앞모습을 찍을 수 있습니다. {*CONTROLLER_VK_Y*} 단추를 눌러 공유하기 전에, 게임 속에서 캐릭터의 앞모습이 나오도록 {*CONTROLLER_ACTION_CAMERA*} 단추로 변경하십시오.{*B*}{*B*}
+스크린샷에는 게이머태그가 표시되지 않습니다.
+
+
+{*T3*}플레이 방법: 레벨 차단{*ETW*}{*B*}{*B*}
+플레이 중인 레벨에 부적절한 내용이 포함되어 있다고 생각되면 해당 레벨을 차단 레벨 목록에 추가할 수 있습니다.
+레벨을 차단하려면 일시 중지 메뉴를 불러온 뒤 {*CONTROLLER_VK_RB*}단추를 눌러 레벨 차단 툴팁을 선택하십시오.
+다음에 해당 레벨을 선택하여 게임에 참가하려고 하면 차단 레벨 목록에 있는 레벨이라는 주의사항이 표시됩니다. 해당 레벨을 리스트에서 제거한 다음 참가할지, 아니면 나갈지를 선택할 수 있습니다.
+
+{*T3*}플레이 방법 : 창작 모드{*ETW*}{*B*}{*B*}
+창작 모드 인터페이스를 사용하면 게임 내의 모든 아이템을 채굴하거나 제작할 필요 없이 플레이어의 소지품으로 가져갈 수 있습니다.
+플레이어의 소지품 안에 있는 아이템은 놓거나 사용해도 없어지지 않습니다. 이 모드에서는 자원을 모으기보다 건설에 집중할 수 있습니다.{*B*}
+창작 모드에서 월드를 생성, 저장하거나 불러오면 해당 월드에서는 도전 과제를 획득할 수 없으며 순위표에 기록되지 않습니다. 이후 해당 월드를 생존 모드에서 불러와도 마찬가지입니다.{*B*}
+창작 모드에서 {*CONTROLLER_ACTION_JUMP*}를 앞으로 빨리 두 번 누르면 날 수 있습니다. 비행을 종료하려면 똑같은 동작을 반복하십시오. 더 빨리 날려면 {*CONTROLLER_ACTION_MOVE*}를 앞으로 빨리 두 번 누르십시오.
+비행 모드에서 {*CONTROLLER_ACTION_JUMP*}를 길게 누르면 위로 올라가고 {*CONTROLLER_ACTION_SNEAK*}를 길게 누르면 아래로 내려갑니다. 또는 {*CONTROLLER_ACTION_DPAD_UP*} 를 누르면 위로 올라가고 {*CONTROLLER_ACTION_DPAD_DOWN*}를 누르면 아래로 내려갑니다.
+{*CONTROLLER_ACTION_DPAD_LEFT*}를 누르면 왼쪽으로 이동하고 {*CONTROLLER_ACTION_DPAD_RIGHT*}를 누르면 오른쪽으로 이동합니다.
+
+{*T3*}플레이 방법: 호스트 및 플레이어 옵션{*ETW*}{*B*}{*B*}
+
+{*T1*}게임 옵션{*ETW*}{*B*}
+월드를 불러오거나 새로 만들 때 "추가 옵션" 단추를 누르면 게임의 세부 사항을 조정할 수 있는 메뉴가 열립니다.{*B*}{*B*}
+
+ {*T2*}플레이어 대 플레이어{*ETW*}{*B*}
+ 이 옵션을 켜면 플레이어가 다른 플레이어를 공격할 수 있습니다. 생존 모드에만 적용됩니다.{*B*}{*B*}
+
+ {*T2*}플레이어 신뢰{*ETW*}{*B*}
+ 이 옵션을 끄면 게임에 참여하는 플레이어의 행동이 제한됩니다. 채굴, 아이템 사용, 블록 놓기, 문과 스위치 사용, 보관함 사용, 플레이어나 동물 공격을 할 수 없습니다. 게임 메뉴에서 특정 플레이어의 행동 권한에 관한 이러한 옵션을 변경할 수 있습니다.{*B*}{*B*}
+
+ {*T2*}불 확산{*ETW*}{*B*}
+ 이 옵션을 켜면 불이 근처 가연성 블록으로 퍼집니다. 나중에 게임에서 설정을 바꿀 수도 있습니다.{*B*}{*B*}
+
+ {*T2*}TNT 폭발{*ETW*}{*B*}
+ 이 옵션을 켜면 TNT를 점화했을 때 폭발합니다. 나중에 게임에서 설정을 바꿀 수도 있습니다.{*B*}{*B*}
+
+ {*T2*}호스트 특권{*ETW*}{*B*}
+ 이 옵션을 켜면 호스트는 게임 메뉴에서 플레이어에게 비행 능력을 주거나, 지치지 않게 하거나, 투명하게 만들 수 있습니다.{*DISABLES_ACHIEVEMENTS*}{*B*}{*B*}
+
+{*T1*}월드 생성 옵션{*ETW*}{*B*}
+새 월드를 생성할 때 선택할 수 있는 추가 옵션입니다.{*B*}{*B*}
+
+ {*T2*}건물 생성{*ETW*}{*B*}
+ 이 옵션을 켜면 마을이나 요새 등의 건물이 월드에 생성됩니다.{*B*}{*B*}
+
+ {*T2*}완전평면 월드{*ETW*}{*B*}
+ 이 옵션을 켜면 지상과 지하에 완전히 평평한 세계가 생성됩니다.{*B*}{*B*}
+
+ {*T2*}보너스 상자{*ETW*}{*B*}
+ 이 옵션을 켜면 쓸모있는 아이템이 든 상자가 플레이어 생성 지점 근처에 나타납니다.{*B*}{*B*}
+
+ {*T2*}지하 초기화{*ETW*}{*B*}
+ 이 옵션을 켜면 지하가 재건됩니다. 사전에 지하 요새가 없는 곳에 미리 저장하면 유용합니다.{*B*}{*B*}
+
+ {*T1*}게임 메뉴 옵션{*ETW*}{*B*}
+ 게임 플레이 중에 {*BACK_BUTTON*} 단추를 눌러서 게임 메뉴로 이동한 다음 사용할 수 있는 옵션입니다.{*B*}{*B*}
+
+ {*T2*}호스트 옵션{*ETW*}{*B*}
+ 호스트 플레이어나 관리자로 설정된 플레이어는 "호스트 옵션" 메뉴에 들어갈 수 있습니다. 이 메뉴에서 불 확산과 TNT 폭발을 켜거나 끌 수 있습니다.{*B*}{*B*}
+
+{*T1*}플레이어 옵션{*ETW*}{*B*}
+플레이어의 행동 권한을 변경하려면 플레이어 이름을 선택하고 {*CONTROLLER_VK_A*} 단추를 눌러 플레이어 특권 메뉴에서 다음 옵션을 조정하십시오.{*B*}{*B*}
+
+ {*T2*}건설 및 채광 가능{*ETW*}{*B*}
+ 이 옵션은 "플레이어 신뢰"를 껐을 때만 사용할 수 있습니다. 이 옵션을 켜면 플레이어는 월드에서 일반적인 행동을 모두 할 수 있습니다. 이 옵션을 끄면 플레이어는 블록을 놓거나 파괴하지 못합니다.{*B*}{*B*}
+
+ {*T2*}문과 스위치 사용 가능{*ETW*}{*B*}
+ 이 옵션은 "플레이어 신뢰"를 껐을 때만 사용할 수 있습니다. 이 옵션을 끄면 플레이어는 문과 스위치를 사용할 수 없습니다.{*B*}{*B*}
+
+ {*T2*}보관함을 열 수 있음{*ETW*}{*B*}
+ 이 옵션은 "플레이어 신뢰"를 껐을 때만 사용할 수 있습니다. 이 옵션을 끄면 플레이어는 상자와 같은 보관함을 열 수 없습니다.{*B*}{*B*}
+
+ {*T2*}플레이어 공격 가능{*ETW*}{*B*}
+ 이 옵션은 "플레이어 신뢰"를 껐을 때만 사용할 수 있습니다. 이 옵션을 끄면 플레이어는 다른 플레이어에게 피해를 줄 수 없습니다.{*B*}{*B*}
+
+ {*T2*}동물 공격 가능{*ETW*}{*B*}
+ 이 옵션은 "플레이어 신뢰"를 껐을 때만 사용할 수 있습니다. 이 옵션을 끄면 플레이어는 동물에게 피해를 줄 수 없습니다.{*B*}{*B*}
+
+ {*T2*}관리자{*ETW*}{*B*}
+ 이 옵션을 켜면 플레이어는 다른 플레이어의 특권을 변경할 수 있습니다(호스트 제외). “플레이어 신뢰”를 끄면 플레이어를 추방하거나 불 확산과 TNT 폭발을 켜거나 끌 수 있습니다.{*B*}{*B*}
+
+ {*T2*}플레이어 추방{*ETW*}{*B*}
+ 호스트 플레이어와 같은 {*PLATFORM_NAME*} 본체로 플레이하는 플레이어를 제외하고, 이 옵션을 선택하면 다른 {*PLATFORM_NAME*} 본체로 접속하는 플레이어를 추방할 수 있습니다. 추방당한 플레이어는 게임이 새로 시작되기 전까지 다시 참가할 수 없습니다.{*B*}{*B*}
+
+{*T1*}호스트 플레이어 옵션{*ETW*}{*B*}
+"호스트 특권" 옵션을 켠 상태에서 호스트 플레이어는 플레이어 특권을 변경할 수 있습니다. 플레이어 특권을 변경하려면 플레이어 이름을 선택하고 {*CONTROLLER_VK_A*}를 눌러 플레이어 특권 메뉴에서 다음 옵션을 조정하십시오.{*B*}{*B*}
+
+ {*T2*}비행 가능{*ETW*}{*B*}
+ 이 옵션을 켜면 플레이어는 날 수 있습니다. 이 옵션은 생존 모드에서만 적용됩니다(창작 모드에서는 모든 플레이어가 비행 가능).{*B*}{*B*}
+
+ {*T2*}지치지 않음{*ETW*}{*B*}
+ 이 옵션은 생존 모드에서만 적용됩니다. 이 옵션을 켜면 걷기/달리기/점프 등의 행동을 해도 음식 막대가 줄어들지 않습니다. 하지만 플레이어가 상처를 입으면 회복되는 동안 음식 막대가 서서히 줄어듭니다.{*B*}{*B*}
+
+ {*T2*}투명화{*ETW*}{*B*}
+ 이 옵션을 켜면 플레이어는 다른 플레이어의 눈에 보이지 않게 되며 무적 상태가 됩니다.{*B*}{*B*}
+
+ {*T2*}순간이동 가능{*ETW*}{*B*}
+ 플레이어가 플레이어 자신 또는 다른 플레이어를 월드 내 다른 곳으로 이동시킬 수 있습니다.
+
+
+다음 페이지
+
+이전 페이지
+
+기본
+
+HUD
+
+소지품
+
+상자
+
+제작
+
+화로
+
+디스펜서
+
+동물 농장
+
+동물 교배
+
+양조
+
+효과부여
+
+지하 차원문
+
+멀티 플레이
+
+스크린샷 공유
+
+레벨 차단
+
+창작 모드
+
+호스트 및 플레이어 옵션
+
+거래
+
+모루
+
+Ender
+
+{*T3*}플레이 방법: Ender{*ETW*}{*B*}{*B*}
+Ender는 Ender 차원문을 통해 갈 수 있는 게임의 다른 차원입니다. Ender 차원문은 지상의 깊은 지하에 있는 요새에서 찾을 수 있습니다.{*B*}
+Ender 차원문을 열려면 Ender의 눈이 없는 Ender 차원문 외형에 Ender의 눈을 올려놓으십시오.{*B*}
+차원문이 열리면 Ender로 들어가십시오.{*B*}{*B*}
+Ender에서 수많은 Enderman과 흉폭하고 강력한 Ender 드래곤을 만나게 되니 전투에 대비해야 합니다!{*B*}{*B*}
+이곳에는 8개의 흑요석 기둥 위에 Ender 드래곤이 치유하는 데 사용하는 Ender 수정이 있으니,
+전투가 시작되면 가장 먼저 이것을 파괴해야 합니다.{*B*}
+일부는 화살 사정거리 내에 있지만 일부는 철제 우리가 보호하고 있으니 올라가야 합니다.{*B*}{*B*}
+Ender 드래곤이 Ender 산성구를 쏘며 공격하니 주의하십시오!{*B*}
+기둥의 중앙에 있는 알 받침대에 접근하면 Ender 드래곤이 내려와 강력한 공격을 합니다!{*B*}
+산성구를 피하며 Ender 드래곤의 눈을 공격하면 효과가 좋습니다. 친구와 함께 Ender에서 전투를 벌이십시오!{*B*}{*B*}
+Ender에 들어서면 친구가 그들의 지도에서 요새 내부에 있는 Ender 차원문의 위치를 볼 수 있으니,
+쉽게 참여할 수 있습니다.
+
+
+질주
+
+업데이트 정보
+
+
+{*T3*}수정 및 추가{*ETW*}{*B*}{*B*}
+- 새 아이템 추가 - 에메랄드, 에메랄드 광석, 에메랄드 블록, Ender 상자, 트립와이어 후크, 효과부여된 황금 사과, 모루, 화분, 조약돌 벽, 이끼 낀 조약돌 벽, 말라비틀어진 그림, 감자, 구운 감자, 독성 감자, 당근, 황금 당근, 당근 막대,
+호박 파이, 야간 시야 물약, 투명화 물약, 지하 석영, 지하 석영 광석, 석영 블록, 석영 발판, 석영 계단, 깎아놓은 석영 블록, 석영 블록 기둥, 효과부여 책, 카펫{*B*}
+- 새 조합법 추가 - 부드러운 사암 및 깎아놓은 사암{*B*}
+- 새로운 괴물 추가 - 좀비 마을 사람{*B*}
+- 새 지역 생성 기능 - 사막 사원, 사막 마을, 정글 사원{*B*}
+- 마을 사람과 거래 가능{*B*}
+- 모루 인터페이스 추가{*B*}
+- 가죽 방어구 염색 가능{*B*}
+- 늑대 목줄 염색 가능{*B*}
+- 당근 막대기로 돼지 방향 조종 가능{*B*}
+- 더 많은 아이템으로 보너스 상자 내용물 업데이트{*B*}
+- 반쪽 블록 배치 및 반쪽 블록 위의 다른 블록 배치 변경{*B*}
+- 뒤집힌 계단과 발판 배치 변경{*B*}
+- 마을 사람 직업 추가{*B*}
+- 낳은 알에서 나온 마을 사람에게 무작위 직업 부여{*B*}
+- 통나무 옆으로 놓기 가능{*B*}
+- 나무 도구를 용광로에서 연료로 사용 가능{*B*}
+- 채굴 정확성 효과부여 도구로 얼음 및 유리 판자 수집 가능{*B*}
+- 화살로 나무 단추와 나무 압력판 작동 가능{*B*}
+- 차원문을 통해 지상에 지하 괴물 생성 가능{*B*}
+- Creeper와 거미는 마지막으로 자신을 공격한 플레이어를 공격함{*B*}
+- 창작 모드의 괴물들은 잠시 시간이 지난 후 중립 상태가 됨{*B*}
+- 물에 빠졌을 때 타격 반동 제거{*B*}
+- 좀비가 부수는 문에 피해 표시{*B*}
+- 지하에서 얼음이 녹음{*B*}
+- 비가 오면 가마솥이 채워짐{*B*}
+- 피스톤 업데이트 시간 2배로 증가{*B*}
+- 안장을 가진 돼지를 죽이면 안장을 떨어트림{*B*}
+- Ender의 하늘 색 변경{*B*}
+- 트립와이어용으로 실 설치 가능{*B*}
+- 비가 나뭇잎을 통과해 내림{*B*}
+- 블록 아래쪽에 레버 설치 가능{*B*}
+- 난이도 설정에 따라 TNT 위력 변화{*B*}
+- 책 조합법 변경{*B*}
+- 연잎이 배를 파괴하지 않고, 배가 연잎을 파괴하도록 변경{*B*}
+- 돼지가 돼지고기를 더 많이 떨어트림{*B*}
+- 완전평면 월드에서 슬라임이 더 적게 생성됨{*B*}
+- Creeper로부터 받는 피해가 난이도에 따라 달라지고 타격 반동이 강해짐{*B*}
+- 고정된 Enderman이 턱을 벌리지 않음{*B*}
+- 플레이어 순간이동 추가(게임 중에 {*BACK_BUTTON*} 메뉴 사용){*B*}
+- 원격 플레이어 비행, 투명화, 무적 관련 호스트 옵션 추가{*B*}
+- 튜토리얼 월드에 새 아이템 및 기능을 위한 새 튜토리얼 추가{*B*}
+- 튜토리얼 월드의 음악 디스크 상자 위치 업데이트{*B*}
+
+
+{*ETB*}돌아오신 것을 환영합니다! 아직 눈치채지 못했을지도 모르지만, Minecraft가 업데이트되었습니다.{*B*}{*B*}
+새로운 기능이 많이 추가됐습니다. 추가된 주요 기능 일부를 소개해 드리니 읽어보고 신 나는 게임의 세계로 여행을 떠나십시오!{*B*}{*B*}
+{*T1*}새로운 아이템{*ETB*} - 에메랄드, 에메랄드 광석, 에메랄드 블록, Ender 상자, 트립와이어 후크, 효과부여된 황금 사과, 모루, 화분, 조약돌 벽, 이끼 낀 조약돌 벽, 말라비틀어진 그림, 감자, 구운 감자, 독성 감자, 당근, 황금 당근, 당근 막대,
+호박 파이, 야간 시야 물약, 투명화 물약, 지하 석영, 지하 석영 광석, 석영 블록, 석영 발판, 석영 계단, 깎아놓은 석영 블록, 석영 블록 기둥, 효과부여 책, 카펫{*B*}{*B*}
+{*T1*}새로운 괴물 추가{*ETB*} - 좀비 마을 사람{*B*}{*B*}
+{*T1*}새 기능{*ETB*} - 마을 사람과 거래, 모루에서 무기 및 도구를 수리하거나 효과 부여, Ender 상자에 아이템 저장, 돼지를 탔을 때 당근 스틱으로 방향 조정 가능!{*B*}{*B*}
+{*T1*}새로운 미니 튜토리얼{*ETB*} – 튜토리얼 월드에서 새로운 기능을 사용하는 방법을 알아보세요!{*B*}{*B*}
+{*T1*}새로운 '부활절 알'{*ETB*} – 튜토리얼 월드에서 비밀 음악 디스크의 위치를 모두 옮겼습니다. 다시 한번 찾아보세요!{*B*}{*B*}
+
+
+맨손 공격보다 위력이 강합니다.
+
+손을 사용하는 것보다 흙, 잡초, 모래, 자갈, 눈을 더 빨리 파냅니다. 눈덩이를 파내려면 삽이 필요합니다.
+
+돌로 된 블록이나 광석을 채굴할 때 쓰입니다.
+
+나무로 된 블록을 손을 사용할 때보다 더 빨리 잘라냅니다.
+
+흙과 잡초 블록을 갈아엎어서 작물을 기를 수 있게 만듭니다.
+
+나무문은 사용하거나 때리거나 또는 레드스톤으로 열 수 있습니다.
+
+철문은 레드스톤, 단추 또는 스위치로만 열 수 있습니다.
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+착용 시 1의 방어력을 얻습니다.
+
+착용 시 3의 방어력을 얻습니다.
+
+착용 시 2의 방어력을 얻습니다.
+
+착용 시 1의 방어력을 얻습니다.
+
+착용 시 2의 방어력을 얻습니다.
+
+착용 시 5의 방어력을 얻습니다.
+
+착용 시 4의 방어력을 얻습니다.
+
+착용 시 1의 방어력을 얻습니다.
+
+착용 시 2의 방어력을 얻습니다.
+
+착용 시 6의 방어력을 얻습니다.
+
+착용 시 5의 방어력을 얻습니다.
+
+착용 시 2의 방어력을 얻습니다.
+
+착용 시 2의 방어력을 얻습니다.
+
+착용 시 5의 방어력을 얻습니다.
+
+착용 시 3의 방어력을 얻습니다.
+
+착용 시 1의 방어력을 얻습니다.
+
+착용 시 3의 방어력을 얻습니다.
+
+착용 시 8의 방어력을 얻습니다.
+
+착용 시 6의 방어력을 얻습니다.
+
+착용 시 3의 방어력을 얻습니다.
+
+빛나는 주괴입니다. 주괴로 도구를 만들면 주괴와 재질이 같은 도구가 제작됩니다. 화로에서 광석을 녹여 만듭니다.
+
+주괴, 보석, 염료를 설치 가능한 블록으로 만들 수 있게 해줍니다. 값비싼 건설용 블록으로 쓰거나 광물을 간편하게 보관하는 데 사용됩니다.
+
+플레이어나 동물 또는 괴물이 밟으면 전기를 보냅니다. 나무 압력판은 위쪽에 물체를 떨어뜨려도 작동합니다.
+
+작은 계단을 만드는 데 사용됩니다.
+
+긴 계단을 만드는 데 쓰입니다. 발판 2개를 쌓으면 보통 크기의 2단 계단 블록이 만들어집니다.
+
+긴 계단을 만드는 데 쓰입니다. 발판 2개를 쌓으면 보통 크기의 2단 계단 블록이 만들어집니다.
+
+빛을 만드는 데 사용합니다. 눈과 얼음도 녹일 수 있습니다.
+
+건설 재료로 쓰거나 다양한 물건의 재료로 사용됩니다. 어떤 형태의 나무로든 만들어낼 수 있습니다.
+
+건설 재료로 사용됩니다. 일반 모래와 달리 중력의 영향을 받지 않습니다.
+
+건설 재료로 사용됩니다.
+
+횃불, 화살, 표지판, 사다리, 울타리를 만들거나 무기 또는 도구의 손잡이로 사용됩니다.
+
+밤에 모든 플레이어가 침대에 들면 시간을 앞당겨서 아침으로 만들며, 플레이어 생성 지점을 바꿉니다.
+침대 제작에 사용된 양털의 색과 상관없이, 침대의 색상은 모두 같습니다.
+
+일반적인 제작보다 더 다양한 아이템을 선택해 제작할 수 있게 해줍니다.
+
+광석을 녹이고 숯과 유리를 만들며, 생선과 돼지고기를 요리하는 데 사용합니다.
+
+블록과 아이템을 넣어 보관합니다. 상자 2개를 나란히 놓으면 용량이 2배 큰 상자가 만들어집니다.
+
+뛰어넘을 수 없는 방어벽으로 사용됩니다. 플레이어나 동물, 괴물에 대해서는 1.5배 높이의 블록으로 간주되지만 다른 블록에 대해서는 높이가 같은 것으로 간주됩니다.
+
+수직 경사를 오를 때 사용합니다.
+
+사용하거나 때리거나 레드스톤을 이용해 작동시킵니다. 작동 방식은 일반 문과 같지만 개별적 블록으로 간주되며, 땅과 수평인 형태로 열립니다.
+
+자신이나 다른 플레이어가 입력한 텍스트를 표시합니다.
+
+횃불보다 더 밝은 빛을 만들어냅니다. 얼음이나 눈을 녹이며, 물속에서 사용이 가능합니다.
+
+폭발을 일으킵니다. 설치한 다음, 부싯돌과 부시를 사용하거나 전기를 이용해 폭파할 수 있습니다.
+
+버섯죽을 담아두는 데 사용합니다. 죽을 먹어도 그릇은 남습니다.
+
+물이나 용암, 우유를 담아두거나 운반하는 데 쓰입니다.
+
+물을 저장하고 옮기는 데 사용합니다.
+
+용암을 저장하고 옮기는 데 사용합니다.
+
+우유를 저장하고 옮기는 데 사용합니다.
+
+불꽃을 일으키고, TNT를 폭파하고, 차원문을 여는 데 사용합니다.
+
+물고기를 잡을 수 있습니다.
+
+태양과 달의 위치를 표시합니다.
+
+시작 지점을 표시합니다.
+
+지도를 들고 있을 동안 탐험한 지역의 이미지를 만들어냅니다. 길을 찾는 데 사용할 수 있습니다.
+
+화살과 함께 사용하여 원거리 공격을 합니다.
+
+활에 장전하여 사용합니다.
+
+{*ICON_SHANK_01*}를 2.5만큼 회복합니다.
+
+{*ICON_SHANK_01*}를 1만큼 회복합니다. 효과가 6번까지 중복됩니다.
+
+{*ICON_SHANK_01*}를 1만큼 회복합니다.
+
+{*ICON_SHANK_01*}를 1만큼 회복합니다.
+
+{*ICON_SHANK_01*}를 3만큼 회복합니다.
+
+먹어서 {*ICON_SHANK_01*}를 1만큼 회복하거나 화로에서 조리할 수 있습니다. 먹으면 중독될 수 있습니다.
+
+{*ICON_SHANK_01*}를 3만큼 회복합니다. 화로에서 닭 날고기를 조리하여 만듭니다.
+
+먹어서 {*ICON_SHANK_01*}를 1.5만큼 회복하거나 화로에서 조리할 수 있습니다.
+
+{*ICON_SHANK_01*}를 4만큼 회복합니다. 화로에서 소 날고기를 조리하여 만듭니다.
+
+먹어서 {*ICON_SHANK_01*}를 1.5만큼 회복하거나 화로에서 조리할 수 있습니다.
+
+{*ICON_SHANK_01*}를 4만큼 회복합니다. 화로에서 돼지 날고기를 조리하여 만듭니다.
+
+먹어서 {*ICON_SHANK_01*}를 1만큼 회복하거나 화로에서 조리할 수 있습니다. 오셀롯을 길들이기 위한 먹이로 사용할 수도 있습니다.
+
+{*ICON_SHANK_01*}를 2.5만큼 회복합니다. 화로에서 날생선을 조리하여 만듭니다.
+
+{*ICON_SHANK_01*}를 2만큼 회복하며 황금 사과를 만드는 데 사용합니다.
+
+{*ICON_SHANK_01*}를 2만큼 회복하며 4초 동안 체력이 자동으로 회복됩니다. 사과와 금덩이를 사용해 만들 수 있습니다.
+
+{*ICON_SHANK_01*}를 2만큼 회복합니다. 먹으면 중독될 수 있습니다.
+
+케이크를 만들 때 사용하며 물약을 양조할 때 재료로도 쓰입니다.
+
+켜거나 끌 때 전기를 보냅니다. 다시 조작하기 전까지 켜지거나 꺼진 상태로 있습니다.
+
+주기적으로 전기를 보내거나, 블록 옆에 연결하면 송/수신기 역할을 합니다.
+약한 조명으로 사용할 수도 있습니다.
+
+레드스톤 회로에서 중계장치, 지연장치 또는 다이오드 역할을 합니다.
+
+누르면 전기를 보냅니다. 단추를 떼면 1초 정도 작동하다가 닫힙니다.
+
+레드스톤으로 전기를 공급하면 아이템을 넣어 무작위 순서로 발사할 수 있습니다.
+
+작동시키면 음을 연주합니다. 때리면 음의 높낮이가 바뀝니다. 다른 블록 위에 올려놓으면 연주 음의 종류가 변경됩니다.
+
+광물 수레가 가는 길로 사용됩니다.
+
+동력을 공급하면 그 위를 지나가는 광물 수레의 속도를 올려줍니다. 동력이 끊기면 광물 수레를 멈춰 세웁니다.
+
+압력 발판처럼 사용되지만 광물 수레로만 작동시킬 수 있습니다. 동력이 공급되면 레드스톤 신호를 보냅니다.
+
+레일을 따라서 플레이어나 동물, 괴물을 이동시킵니다.
+
+레일을 따라서 물건을 이동시킵니다.
+
+석탄을 안에 넣으면 레일을 따라 움직이며 다른 광물 수레를 밀어줍니다.
+
+헤엄치는 것보다 물에서 빨리 이동할 수 있습니다.
+
+양에게서 얻어냅니다. 염료로 색을 바꿀 수 있습니다.
+
+건설 재료로 쓰입니다. 염료로 색을 바꿀 수 있지만, 양털은 양에게서 쉽게 얻을 수 있으므로 권장하지는 않습니다.
+
+양털을 검은색으로 염색합니다.
+
+양털을 초록색으로 염색합니다.
+
+양털을 갈색으로 염색할 때, 코코아 콩을 재배할 때, 쿠키를 만들 때 쓰입니다.
+
+양털을 은색으로 염색합니다.
+
+양털을 노란색으로 염색합니다.
+
+양털을 빨간색으로 염색합니다.
+
+작물이나 나무, 긴 잡초, 거대 버섯, 꽃을 즉시 성장시킵니다. 염료 재료로도 사용합니다.
+
+양털을 분홍색으로 염색합니다.
+
+양털을 주황색으로 염색합니다.
+
+양털을 라임색으로 염색합니다.
+
+양털을 회색으로 염색합니다.
+
+양털을 밝은 회색으로 염색합니다.
+(참고: 밝은 회색 염료는 회색 염료와 뼛가루를 섞어도 만들 수 있습니다. 이 방법을 쓰면 먹물 주머니 하나로 회색 염료를 3개가 아니라 4개 만들 수 있습니다.)
+
+양털을 밝은 파란색으로 염색합니다.
+
+양털을 청록색으로 염색합니다.
+
+양털을 보라색으로 염색합니다.
+
+양털을 자주색으로 염색합니다.
+
+양털을 파란색으로 염색합니다.
+
+음악 디스크를 재생합니다.
+
+매우 강력한 도구나 무기, 방어구를 만드는 데 사용합니다.
+
+횃불보다 더 밝은 빛을 만들어냅니다. 얼음이나 눈을 녹이며, 물속에서 사용이 가능합니다.
+
+책과 지도의 재료입니다.
+
+책장을 만들거나 효과부여 책을 만드는 데 쓰입니다.
+
+효과부여대 주위에 놓으면 더 강력한 효과를 만들어낼 수 있습니다.
+
+장식으로 사용됩니다.
+
+철제 곡괭이 이상으로 채굴하면 얻을 수 있으며, 화로에서 녹여 황금 주괴로 만듭니다.
+
+돌곡괭이 이상으로 채굴하면 얻을 수 있으며, 화로에서 녹여 철 주괴로 만듭니다.
+
+곡괭이로 채굴하여 석탄을 얻어냅니다.
+
+돌곡괭이 이상으로 채굴하면 청금석이 나옵니다.
+
+철제 곡괭이 이상으로 채굴하면 다이아몬드를 얻습니다.
+
+철제 곡괭이 이상으로 채굴하면 레드스톤 가루를 얻습니다.
+
+곡괭이로 채굴하여 조약돌을 얻습니다.
+
+삽을 이용해서 얻습니다. 건물을 짓는 데 쓰입니다.
+
+땅에 심을 수 있으며 나무로 자라납니다.
+
+부술 수 없습니다.
+
+접촉하는 모든 것에 불을 붙입니다. 양동이에 담을 수 있습니다.
+
+삽을 이용해서 얻을 수 있으며 화로에서 녹이면 유리가 나옵니다. 아래에 다른 블록이 없으면 중력의 영향을 받습니다.
+
+삽을 이용해서 얻을 수 있으며, 파낼 때 가끔 부싯돌이 나옵니다. 아래에 다른 블록이 없으면 중력의 영향을 받습니다.
+
+도끼를 사용해서 벤 다음 판자 제작이나 땔감으로 쓰입니다.
+
+화로에서 모래를 녹여 만듭니다. 건물을 짓는 데 사용할 수 있지만, 채굴하려고 하면 깨져버립니다.
+
+곡괭이로 돌을 채굴하면 얻을 수 있습니다. 화로를 만들거나 돌로 된 도구의 재료로 쓰입니다.
+
+화로에서 찰흙을 구워 만듭니다.
+
+화로에 넣어 벽돌로 구워냅니다.
+
+부수면 찰흙 덩이가 나옵니다. 찰흙을 화로에 넣어 구워내면 벽돌이 됩니다.
+
+눈덩이를 보관하는 좋은 방법입니다.
+
+삽으로 파서 눈덩이를 만들 수 있습니다.
+
+부수면 가끔 밀 씨앗이 나옵니다.
+
+염료의 재료입니다.
+
+그릇을 사용하여 죽으로 만들 수 있습니다.
+
+다이아몬드 곡괭이로만 얻을 수 있습니다. 물과 용암을 섞어 만들어내며, 차원문의 재료가 됩니다.
+
+괴물을 소환합니다.
+
+땅 위에 놓아 전기를 흐르게 합니다. 물약으로 양조하면 효과의 지속 시간이 늘어납니다.
+
+다 자란 작물을 수확하면 밀을 얻습니다.
+
+씨앗을 심을 수 있게 준비된 땅입니다.
+
+화로를 사용하여 초록 선인장 염료를 만들 수 있습니다.
+
+설탕을 만드는 데 사용합니다.
+
+투구처럼 머리에 쓰거나 횃불과 조합하여 호박등으로 만들 수 있습니다. 호박 파이의 주재료이기도 합니다.
+
+불이 붙으면 영원히 타오릅니다.
+
+위를 지나가는 것들의 속도를 늦춥니다.
+
+차원문을 통해서 지상과 지하를 오갈 수 있습니다.
+
+화로의 연료, 혹은 횃불 제작의 재료로 사용됩니다.
+
+거미를 잡으면 얻을 수 있습니다. 활과 낚싯대의 재료로 사용하거나 땅에 놓아 트립와이어를 생성할 수 있습니다.
+
+닭을 잡으면 얻을 수 있습니다. 화살의 재료입니다.
+
+Creeper를 처치하여 얻습니다. TNT의 재료로 사용하거나 물약을 양조하는 데 재료로 사용합니다.
+
+농지에 심어 작물로 가꿔냅니다. 씨앗을 기르려면 충분한 빛이 있어야 합니다.
+
+작물을 수확하여 얻습니다. 식량으로 만들 수 있습니다.
+
+자갈을 파내서 얻을 수 있습니다. 부싯돌과 부시를 만드는 재료입니다.
+
+돼지에 사용하면 돼지를 타고 다닐 수 있습니다. 막대에 끼운 당근을 사용해 돼지가 움직이는 방향을 조종할 수 있습니다.
+
+눈을 파헤쳐서 획득하며, 집어던질 수 있습니다.
+
+소를 잡으면 얻을 수 있으며 방어구의 재료로 쓰거나 책을 만드는 데 사용합니다.
+
+슬라임을 처치하여 얻습니다. 물약을 양조할 때 재료로 쓰거나 끈끈이 피스톤의 재료로 쓸 수 있습니다.
+
+닭이 무작위로 낳습니다. 식량으로 만들 수 있습니다.
+
+발광석을 채굴해서 얻습니다. 제작을 거쳐 다시 발광석 블록으로 만들거나 물약과 양조해 효과의 효능을 높일 수 있습니다.
+
+해골을 처치하여 얻습니다. 뼛가루로 만들 수 있습니다. 늑대에게 먹이면 길들일 수 있습니다.
+
+해골이 Creeper를 처치하도록 유도해서 얻습니다. 주크박스에서 재생이 가능합니다.
+
+불을 꺼뜨리고 작물의 성장을 돕습니다. 양동이에 담을 수 있습니다.
+
+부수면 일정 확률로 묘목이 나옵니다. 묘목을 심어 나무로 가꿀 수 있습니다.
+
+던전에서 찾을 수 있으며 건설과 장식에 사용됩니다.
+
+양에게서 양털을 얻거나 나뭇잎 블록을 수확하는 데 사용합니다.
+
+동력을 공급(단추, 레버, 압력판, 레드스톤 횃불을 이용하거나, 그것들을 레드스톤과 함께 사용)하면 피스톤이 늘어나 블록을 밀어냅니다.
+
+동력을 공급(단추, 레버, 압력판, 레드스톤 횃불을 이용하거나, 그것들을 레드스톤과 함께 사용)하면 피스톤이 늘어나 블록을 밀어냅니다. 피스톤이 줄어들면 다시 블록을 끌어옵니다.
+
+돌로 된 블록으로 만들며 주로 요새에서 볼 수 있습니다.
+
+울타리처럼 방어벽으로 사용됩니다.
+
+문과 비슷하지만 울타리와 함께 사용됩니다.
+
+수박 조각의 재료입니다.
+
+유리 대신 사용할 수 있는 투명 판자입니다.
+
+땅에 심어 호박으로 가꿔냅니다.
+
+땅에 심어 수박으로 가꿔냅니다.
+
+Enderman이 죽을 때 떨어뜨립니다. Ender 진주를 던지면 진주가 떨어진 위치로 플레이어가 이동하며 체력을 잃습니다.
+
+흙 블록 위에 잡초가 자랐습니다. 삽을 이용해서 얻습니다. 건물을 짓는 데 쓰입니다.
+
+건물을 짓거나 장식으로 사용됩니다.
+
+통과할 때 움직임이 느려집니다. 가위로 잘라 실을 얻을 수 있습니다.
+
+파괴될 때 Sliverfish를 소환합니다. 근처에 있는 Sliverfish가 공격을 받아도 Sliverfish를 소환합니다.
+
+놓은 후 시간이 지나면 자라납니다. 가위를 사용하여 수확할 수 있습니다. 사다리처럼 타고 올라갈 수 있습니다.
+
+얼음 위를 걸어가면 미끄러집니다. 파괴되었을 때 아래에 다른 블록이 있으면 물로 변합니다. 광원 가까이에 있거나 지하에 있으면 녹습니다.
+
+장식으로 사용할 수 있습니다.
+
+물약 양조와 요새 위치 탐색에 사용합니다. 지하 요새 근처나 내부에 주로 서식하는 Blaze가 떨어뜨립니다.
+
+물약 양조에 사용합니다. Ghast가 죽을 때 떨어뜨립니다.
+
+좀비 Pigman이 죽을 때 떨어뜨립니다. 좀비 Pigman은 지하에서 찾아볼 수 있습니다. 물약을 양조할 때 재료로 사용됩니다.
+
+물약 양조에 사용합니다. 이것은 지하 요새에서 자연 상태로 자라는 것을 찾을 수 있습니다. 또한 영혼 모래에 심을 수 있습니다.
+
+사용하면 재료에 따라 다양한 효과를 얻을 수 있습니다.
+
+물을 채울 수 있으며 양조대에서 물약을 만드는 기본 재료로 사용할 수 있습니다.
+
+독이 든 음식이자 양조용 아이템입니다. 플레이어가 거미나 동굴 거미를 죽일 때 떨어뜨립니다.
+
+물약 양조에 사용합니다. 주로 해로운 효과의 물약을 만드는 데 사용합니다.
+
+물약 양조에 사용합니다. 다른 아이템과 조합하여 Ender의 눈이나 마그마 크림으로 만들 수 있습니다.
+
+물약 양조에 사용합니다.
+
+물약과 폭발 물약을 만드는 데 사용합니다.
+
+비나 물 양동이를 사용해서 물을 채울 수 있습니다. 그리고 유리병에 물을 채우는 데 사용할 수 있습니다.
+
+던지면 Ender 관문으로 가는 방향을 표시합니다. 열두 개를 Ender 관문 외형에 올려놓으면 Ender 관문이 열립니다.
+
+물약 양조에 사용합니다.
+
+잡초 블록과 비슷하나 버섯을 키우기에 좋습니다.
+
+물에 뜹니다. 수련잎 위로 걸어 다닐 수도 있습니다.
+
+지하 요새 건설에 쓰입니다. Ghast의 불덩이에 피해를 받지 않습니다.
+
+지하 요새에 쓰입니다.
+
+지하 요새에서 찾을 수 있습니다. 부서지면 지하 사마귀를 떨어뜨립니다.
+
+플레이어의 경험치를 사용해 검, 곡괭이, 도끼, 삽, 활 및 방어구에 효과를 부여할 수 있습니다.
+
+Ender의 눈 열두 개를 사용하면 열립니다. 플레이어를 Ender 차원으로 보냅니다.
+
+Ender 관문을 형성하는 데 쓰입니다.
+
+Ender에서 찾을 수 있는 블록 유형입니다. 폭발에 견디는 능력이 매우 강해 건물을 짓는 데 적합합니다.
+
+Ender 드래곤을 처치하면 생성되는 블록입니다.
+
+이 아이템을 던지면, 플레이어에게 경험치를 주는 경험치 구체를 떨어뜨립니다.
+
+불을 붙이는 데 유용하며 디스펜서에서 불을 붙이면 무차별 사격을 가합니다.
+
+진열장과 비슷하며 안에 놓인 블록이나 아이템을 보여줍니다.
+
+던지면 지정된 생물 유형이 생성될 수 있습니다.
+
+긴 계단을 만드는 데 쓰입니다. 발판 2개를 쌓으면 보통 크기의 2단 계단 블록이 만들어집니다.
+
+긴 계단을 만드는 데 쓰입니다. 발판 2개를 쌓으면 보통 크기의 2단 계단 블록이 만들어집니다.
+
+화로에서 지하 바위를 녹여 만듭니다. 지하 벽돌의 재료입니다.
+
+동력을 공급하면 빛을 냅니다.
+
+재배하여 코코아 콩을 얻을 수 있습니다.
+
+괴물 머리는 장식용으로 놓아둘 수도 있고, 투구 슬롯에 놓아 마스크로 쓸 수도 있습니다.
+
+오징어
+
+잡으면 먹물 주머니를 얻을 수 있습니다.
+
+소
+
+잡으면 가죽을 얻을 수 있습니다. 또한 우유를 짜서 양동이에 담을 수 있습니다.
+
+양
+
+가위를 사용하면 양털을 얻을 수 있습니다. 이미 털을 깎았다면 양털이 나오지 않습니다. 털을 염색하여 색을 바꿀 수 있습니다.
+
+닭
+
+잡으면 깃털이 나옵니다. 가끔 알을 낳습니다.
+
+돼지
+
+잡으면 돼지고기를 얻을 수 있습니다. 안장을 사용하면 타고 다닐 수 있습니다.
+
+늑대
+
+공격받기 전까지는 위협적이지 않으며, 공격하면 뒤를 습격합니다. 뼈를 이용해서 길들이면 데리고 다닐 수 있으며, 플레이어를 공격하는 대상을 공격합니다.
+
+Creeper
+
+가까이 다가가면 폭발합니다!
+
+해골
+
+플레이어에게 화살을 쏩니다. 처치하면 화살을 떨어뜨립니다.
+
+거미
+
+가까이 다가가면 공격합니다. 벽을 타고 오를 수 있으며, 처치하면 실을 떨어뜨립니다.
+
+좀비
+
+가까이 다가가면 공격합니다.
+
+Pigman 좀비
+
+먼저 공격하지 않지만, 공격을 받으면 무리를 지어 달려듭니다.
+
+Ghast
+
+닿으면 폭발하는 불덩어리를 던집니다.
+
+슬라임
+
+피해를 입으면 작은 슬라임으로 분리됩니다.
+
+Enderman
+
+플레이어가 바라보면 공격합니다. 블록을 들어 옮길 수도 있습니다.
+
+Sliverfish
+
+공격하면 근처의 Sliverfish를 끌어들입니다. 돌 블록에 숨어 있습니다.
+
+동굴 거미
+
+독이 있습니다.
+
+Mooshroom
+
+그릇과 함께 사용하면 버섯죽을 만들 수 있습니다. 가위를 사용하면 버섯을 떨어뜨리고 보통 소가 됩니다.
+
+눈 골렘
+
+플레이어는 눈 블록과 호박을 사용해 눈 골렘을 만들 수 있습니다. 눈 골렘은 플레이어의 적에게 눈덩이를 던집니다.
+
+Ender 드래곤
+
+Ender에서 찾아볼 수 있는 거대한 검은색 드래곤입니다.
+
+Blaze
+
+주로 지하 요새에서 찾아볼 수 있는 적입니다. 죽으면 Blaze 막대를 떨어뜨립니다.
+
+마그마 큐브
+
+지하에서 찾아볼 수 있습니다. 슬라임처럼 죽으면 분열하여 여러 개의 조그만 큐브가 됩니다.
+
+마을 사람
+
+오셀롯
+
+정글에서 찾을 수 있으며 날생선을 먹여서 조련이 가능합니다. 이때 갑자기 움직이면 오셀롯이 겁을 먹고 도망치기 때문에, 오셀롯이 다가오게 만들어야 합니다.
+
+철 골렘
+
+마을을 보호하기 위해 나타납니다. 철 블록과 호박으로 만들 수 있습니다.
+
+Explosives Animator
+
+Concept Artist
+
+Number Crunching and Statistics
+
+Bully Coordinator
+
+Original Design and Code by
+
+Project Manager/Producer
+
+Rest of Mojang Office
+
+리드 게임 프로그래머 Minecraft PC
+
+Code Ninja
+
+CEO
+
+White Collar Worker
+
+Customer Support
+
+Office DJ
+
+Designer/Programmer Minecraft - Pocket Edition
+
+Developer
+
+Chief Architect
+
+Art Developer
+
+Game Crafter
+
+Director of Fun
+
+Music and Sounds
+
+Programming
+
+Art
+
+QA
+
+Executive Producer
+
+Lead Producer
+
+Producer
+
+Test Lead
+
+Lead Tester
+
+Design Team
+
+Development Team
+
+Release Management
+
+Director, XBLA Publishing
+
+Business Development
+
+Portfolio Director
+
+Product Manager
+
+Marketing
+
+ Community Manager
+
+Europe Localization Team
+
+Redmond Localization Team
+
+Asia Localization Team
+
+User Research Team
+
+MGS Central Teams
+
+Milestone Acceptance Tester
+
+Special Thanks
+
+Test Manager
+
+Senior Test Lead
+
+SDET
+
+Project STE
+
+Additional STE
+
+Test Associates
+
+Jon Kagstrom
+
+Tobias Mollstam
+
+Rise Lugo
+
+목검
+
+돌검
+
+철제 검
+
+다이아몬드 검
+
+황금 검
+
+나무 삽
+
+돌삽
+
+철제 삽
+
+다이아몬드 삽
+
+황금 삽
+
+나무 곡괭이
+
+돌곡괭이
+
+철제 곡괭이
+
+다이아몬드 곡괭이
+
+황금 곡괭이
+
+나무 도끼
+
+돌도끼
+
+철제 도끼
+
+다이아몬드 도끼
+
+황금 도끼
+
+나무 괭이
+
+돌괭이
+
+철제 괭이
+
+다이아몬드 괭이
+
+황금 괭이
+
+나무문
+
+철문
+
+사슬 투구
+
+사슬 가슴보호구
+
+사슬 다리보호구
+
+사슬 장화
+
+가죽 모자
+
+철제 투구
+
+다이아몬드 투구
+
+황금 투구
+
+가죽 조끼
+
+철제 흉갑
+
+다이아몬드 흉갑
+
+황금 흉갑
+
+가죽 바지
+
+철제 다리보호대
+
+다이아몬드 다리보호대
+
+황금 다리보호대
+
+가죽 장화
+
+철제 장화
+
+다이아몬드 장화
+
+황금 장화
+
+철 주괴
+
+황금 주괴
+
+양동이
+
+물 양동이
+
+용암 양동이
+
+부싯돌과 부시
+
+사과
+
+활
+
+화살
+
+석탄
+
+숯
+
+다이아몬드
+
+막대
+
+그릇
+
+버섯죽
+
+실
+
+깃털
+
+화약
+
+밀 씨앗
+
+밀
+
+빵
+
+부싯돌
+
+돼지 날고기
+
+구운 돼지고기
+
+그림 액자
+
+황금 사과
+
+표지판
+
+광물 수레
+
+안장
+
+레드스톤
+
+눈덩이
+
+배
+
+가죽
+
+우유 양동이
+
+벽돌
+
+찰흙
+
+사탕수수
+
+종이
+
+책
+
+슬라임 볼
+
+상자가 담긴 광물 수레
+
+화로가 달린 광물 수레
+
+달걀
+
+나침반
+
+낚싯대
+
+시계
+
+발광석 가루
+
+날생선
+
+요리한 생선
+
+염료 가루
+
+먹물 주머니
+
+붉은 장미 염료
+
+초록 선인장 염료
+
+코코아 열매
+
+청금석
+
+보라색 염료
+
+청록색 염료
+
+밝은 회색 염료
+
+회색 염료
+
+분홍색 염료
+
+라임색 염료
+
+노란색 염료
+
+밝은 파란색 염료
+
+자주색 염료
+
+주황색 염료
+
+뼛가루
+
+뼈
+
+설탕
+
+케이크
+
+침대
+
+레드스톤 탐지기
+
+쿠키
+
+지도
+
+음악 디스크 - "13"
+
+음악 디스크 - "cat"
+
+음악 디스크 - "blocks"
+
+음악 디스크 - "chirp"
+
+음악 디스크 - "far"
+
+음악 디스크 - "mall"
+
+음악 디스크 - "mellohi"
+
+음악 디스크 - "stal"
+
+음악 디스크 - "strad"
+
+음악 디스크 - "ward"
+
+음악 디스크 - "11"
+
+음악 디스크 - "where are we now"
+
+가위
+
+호박씨
+
+수박씨
+
+닭 날고기
+
+구운 닭고기
+
+소 날고기
+
+스테이크
+
+썩은 살점
+
+Ender 진주
+
+수박 조각
+
+Blaze 막대
+
+Ghast의 눈물
+
+금덩이
+
+지하 사마귀
+
+{*splash*}{*prefix*}물약 {*postfix*}
+
+유리병
+
+물병
+
+거미 눈
+
+발효 거미 눈
+
+Blaze 가루
+
+마그마 크림
+
+양조대
+
+가마솥
+
+Ender의 눈
+
+빛나는 수박
+
+경험치 병
+
+불쏘시개
+
+불쏘시개 (숯)
+
+불쏘시개 (석탄)
+
+아이템 외형
+
+{*CREATURE*} 생성
+
+지하 벽돌
+
+두개골
+
+해골 두개골
+
+말라비틀어진 해골 두개골
+
+좀비 머리
+
+머리
+
+%s의 머리
+
+Creeper 머리
+
+돌
+
+잡초 블록
+
+흙
+
+조약돌
+
+참나무 목재 판자
+
+전나무 목재 판자
+
+자작나무 목재 판자
+
+정글 나무 판자
+
+묘목
+
+참나무 묘목
+
+전나무 묘목
+
+자작나무 묘목
+
+정글 묘목
+
+기반암
+
+물
+
+용암
+
+모래
+
+사암
+
+자갈
+
+황금 광석
+
+철광석
+
+석탄 광석
+
+나무
+
+참나무 목재
+
+전나무 목재
+
+자작나무 목재
+
+정글 나무
+
+참나무
+
+전나무
+
+자작나무
+
+나뭇잎
+
+참나무 나뭇잎
+
+전나무 나뭇잎
+
+자작나무 나뭇잎
+
+정글 잎사귀
+
+스펀지
+
+유리
+
+양털
+
+검은색 양털
+
+빨간색 양털
+
+초록색 양털
+
+갈색 양털
+
+파란색 양털
+
+보라색 양털
+
+청록색 양털
+
+밝은 회색 양털
+
+회색 양털
+
+분홍색 양털
+
+라임색 양털
+
+노란색 양털
+
+밝은 파란색 양털
+
+자주색 양털
+
+주황색 양털
+
+흰색 양털
+
+꽃
+
+장미
+
+버섯
+
+황금 블록
+
+금을 편리하게 보관할 수 있습니다.
+
+철을 편리하게 보관할 수 있습니다.
+
+철 블록
+
+돌 발판
+
+돌 발판
+
+사암 발판
+
+참나무 발판
+
+조약돌 발판
+
+벽돌 발판
+
+돌 벽돌 발판
+
+참나무 발판
+
+전나무 발판
+
+자작나무 발판
+
+정글 나무 발판
+
+지하 벽돌 발판
+
+벽돌
+
+TNT
+
+책장
+
+이끼 낀 돌
+
+흑요석
+
+횃불
+
+횃불(석탄)
+
+횃불(숯)
+
+불
+
+괴물 출입문
+
+참나무 계단
+
+상자
+
+레드스톤 가루
+
+다이아몬드 광석
+
+다이아몬드 블록
+
+다이아몬드를 편리하게 보관할 수 있습니다.
+
+작업대
+
+작물
+
+농지
+
+화로
+
+표지판
+
+나무문
+
+사다리
+
+레일
+
+동력 레일
+
+탐지 레일
+
+돌 계단
+
+손잡이
+
+압력판
+
+철문
+
+레드스톤 광석
+
+레드스톤 횃불
+
+단추
+
+눈
+
+얼음
+
+선인장
+
+찰흙
+
+사탕수수
+
+주크박스
+
+울타리
+
+호박
+
+호박등
+
+지하 바위
+
+영혼 모래
+
+발광석
+
+차원문
+
+청금석 광석
+
+청금석 블록
+
+청금석을 편리하게 보관할 수 있습니다.
+
+디스펜서
+
+소리 블록
+
+케이크
+
+침대
+
+거미줄
+
+긴 잡초
+
+마른 덤불
+
+다이오드
+
+잠긴 상자
+
+들창
+
+양털(모든 색상)
+
+피스톤
+
+끈끈이 피스톤
+
+Sliverfish 블록
+
+돌 벽돌
+
+이끼 낀 돌 벽돌
+
+금이 간 돌 벽돌
+
+깎아놓은 돌 벽돌
+
+버섯
+
+버섯
+
+철 막대
+
+유리 판자
+
+수박
+
+호박 줄기
+
+수박 줄기
+
+덩굴
+
+울타리 문
+
+벽돌 계단
+
+돌 벽돌 계단
+
+Sliverfish 돌
+
+Sliverfish 조약돌
+
+Sliverfish 돌 벽돌
+
+균사체
+
+수련잎
+
+지하 벽돌
+
+지하 벽돌 울타리
+
+지하 벽돌 계단
+
+지하 사마귀
+
+효과부여대
+
+양조대
+
+가마솥
+
+Ender 차원문
+
+Ender 차원문 외형
+
+Ender 돌
+
+용의 알
+
+관목
+
+양치식물
+
+사암 계단
+
+전나무 계단
+
+자작나무 계단
+
+정글 나무 계단
+
+레드스톤 램프
+
+코코아
+
+두개골
+
+현재 컨트롤
+
+배치
+
+이동/질주
+
+보기
+
+일시 중지
+
+점프
+
+점프/위로 비행
+
+소지품
+
+아이템 교체
+
+행동
+
+사용
+
+제작
+
+버리기
+
+살금살금 걷기
+
+살금살금 걷기/아래로 비행
+
+카메라 모드 변경
+
+플레이어/초대
+
+이동(비행 시)
+
+배치 1
+
+배치 2
+
+배치 3
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+
]]>
+
+{*B*}{*CONTROLLER_VK_A*} 단추를 누르면 계속합니다.
+
+{*B*}{*CONTROLLER_VK_A*} 단추를 누르면 튜토리얼을 시작합니다.{*B*}
+ 게임을 시작할 준비가 되었으면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+Minecraft는 블록을 배치하여 무엇이든 상상한 대로 만들 수 있는 게임입니다.
+밤에는 괴물이 출몰하므로, 그에 대비하여 피신처를 준비해둬야 합니다.
+
+{*CONTROLLER_ACTION_LOOK*}으로 위와 아래, 주변을 둘러봅니다.
+
+{*CONTROLLER_ACTION_MOVE*}으로 이동합니다.
+
+질주하려면 {*CONTROLLER_ACTION_MOVE*}를 앞으로 빨리 두 번 누르십시오. {*CONTROLLER_ACTION_MOVE*} 를 계속 누르고 있으면 캐릭터의 질주 시간이나 음식이 다 떨어질 때까지 계속 질주합니다.
+
+{*CONTROLLER_ACTION_JUMP*}를 눌러 점프합니다.
+
+{*CONTROLLER_ACTION_ACTION*}를 누르고 있으면 손이나 도구를 사용해 땅을 파거나 나무를 벱니다. 특정 블록은 도구를 만들어야 파낼 수 있습니다.
+
+{*CONTROLLER_ACTION_ACTION*}를 길게 눌러서 나무 블록 4개(나무둥치)를 베어보십시오. {*B*}블록이 파괴되고 공중에 뜬 형태로 아이템이 나타나면, 다가가서 집을 수 있습니다. 집은 아이템은 소지품에 표시됩니다.
+
+{*CONTROLLER_ACTION_CRAFTING*}를 눌러 제작 인터페이스를 엽니다.
+
+아이템을 수집하고 제작하면 소지품이 찹니다.{*B*}
+ 소지품을 열려면 {*CONTROLLER_ACTION_INVENTORY*}를 누르십시오.
+
+이동, 채광 및 공격을 하면 음식 막대 {*ICON_SHANK_01*}를 소비합니다. 질주하거나 질주 점프를 하면 일반적으로 걷거나 달리는 것보다 더 많이 음식 막대를 소비합니다.
+
+음식 막대가 9칸 이상{*ICON_SHANK_01*}일 때는 체력을 잃어도 자동으로 다시 회복됩니다. 음식을 먹으면 음식 막대가 다시 차오릅니다.
+
+손에 음식 아이템을 들고 있을 때 {*CONTROLLER_ACTION_USE*}을 길게 누르면 음식을 먹어서 음식 막대를 채웁니다. 음식 막대가 가득 찬 상태에서는 음식을 먹을 수 없습니다.
+
+음식 막대가 낮고 체력을 잃은 상태입니다. 소지품에 있는 스테이크를 먹으면 음식 막대가 차오르고 체력이 회복되기 시작합니다.{*ICON*}364{*/ICON*}
+
+게임에서 획득한 나무는 판자로 만들 수 있습니다. 판자를 만들려면 제작 인터페이스를 여십시오.{*PlanksIcon*}
+
+많은 아이템들은 여러 단계를 거쳐 제작됩니다. 이제 판자를 가지고 있으므로 더 다양한 아이템을 만들 수 있습니다. 작업대를 만들어 보십시오.{*CraftingTableIcon*}
+
+블록에서 아이템을 더 빨리 얻으려면 해당 작업에 맞는 도구를 만들어야 합니다. 일부 도구는 막대로 된 손잡이가 달려 있습니다. 막대를 몇 개 만들어 보십시오.{*SticksIcon*}
+
+{*CONTROLLER_ACTION_LEFT_SCROLL*} 과{*CONTROLLER_ACTION_RIGHT_SCROLL*}로 손에 들고 있는 아이템을 다른 아이템으로 바꿀 수 있습니다.
+
+아이템을 사용하거나, 조작하거나, 내려놓으려면 {*CONTROLLER_ACTION_USE*}를 누르십시오. 내려놓은 아이템에 올바른 도구를 사용하여 채굴 동작을 취하면 아이템을 다시 집을 수 있습니다.
+
+작업대를 선택했으면 포인터를 원하는 곳에 둔 다음 {*CONTROLLER_ACTION_USE*}를 눌러 작업대를 놓으십시오.
+
+포인터를 작업대에 맞추고 {*CONTROLLER_ACTION_USE*}를 눌러 여십시오.
+
+삽을 사용하면 흙이나 눈처럼 부드러운 블록을 더 빨리 파냅니다. 재료를 많이 모을수록 작업 속도와 내구력이 더 뛰어난 도구를 만들 수 있습니다. 나무 삽을 만드십시오.{*WoodenShovelIcon*}
+
+도끼를 사용하면 나무와 나무 블록을 더 빨리 벱니다. 재료를 많이 모을수록 작업 속도와 내구력이 더 뛰어난 도구를 만들 수 있습니다. 나무 도끼를 만드십시오.{*WoodenHatchetIcon*}
+
+곡괭이는 돌이나 광물처럼 단단한 블록을 더 빨리 파게 해줍니다. 재료를 많이 모을수록 작업 속도와 내구력이 더 뛰어난 도구를 만들 수 있으며, 더 단단한 재료도 파낼 수 있습니다. 나무 곡괭이를 만드십시오.{*WoodenPickaxeIcon*}
+
+보관함 열기
+
+
+ 밤은 순식간에 찾아오며, 준비하지 않은 상태로 밖에 나가면 위험합니다. 방어구와 무기를 만들어 사용할 수 있지만, 안전한 피신처를 찾는 것이 더 좋습니다.
+
+
+
+ 근처에 버려진 광부의 피신처가 있습니다. 이곳이라면 밤을 안전하게 보낼 수 있습니다.
+
+
+
+ 피신처를 세울 자원을 모아야 합니다. 벽과 지붕은 아무 블록이나 사용해도 되지만 문과 창문, 조명을 설치하려면 특정 재료가 필요합니다.
+
+
+곡괭이를 사용해서 돌 블록을 채굴하십시오. 돌 블록을 채굴하면 조약돌이 나옵니다. 조약돌 8개를 모으면 화로를 만들 수 있습니다. 돌 블록에 도달하려면 흙을 파야 할 수도 있으며, 이 때는 삽을 사용하십시오.{*StoneIcon*}
+
+화로를 만들 수 있을 만큼 조약돌을 모았습니다. 작업대에서 화로를 만드십시오.
+
+{*CONTROLLER_ACTION_USE*}를 눌러 화로를 설치한 다음 화로를 여십시오.
+
+화로를 사용해서 숯을 만드십시오. 숯이 만들어지는 시간 동안, 피신처를 만들 재료를 더 구해보면 어떨까요?
+
+화로를 사용해서 유리를 만드십시오. 유리가 만들어지는 시간 동안, 피신처를 만들 재료를 더 구해보면 어떨까요?
+
+좋은 피신처를 만들려면, 출입할 때마다 벽을 허물고 다시 쌓을 필요가 없도록 문을 달아야 합니다. 나무문을 만들어 보십시오.{*WoodenDoorIcon*}
+
+{*CONTROLLER_ACTION_USE*}를 눌러 문을 설치하십시오. {*CONTROLLER_ACTION_USE*}로 나무문을 열거나 닫아 월드로 출입할 수 있습니다.
+
+밤에는 매우 어두워지므로, 피신처 안에서 잘 볼 수 있도록 조명이 있어야 합니다. 제작 인터페이스에서 막대와 숯을 이용해 횃불을 만드십시오.{*TorchIcon*}
+
+
+ 튜토리얼 1장을 마쳤습니다.
+
+
+
+ {*B*}
+ 튜토리얼을 계속 진행하려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 게임을 시작할 준비가 됐다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 이곳은 소지품입니다. 이 화면에는 손에 들고 쓸 수 있는 아이템과 가지고 다닐 수 있는 아이템이 모두 표시됩니다. 방어력 또한 이 화면에서 확인할 수 있습니다.
+
+
+{*B*}
+ 계속하려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 소지품 사용법을 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ {*CONTROLLER_MENU_NAVIGATE*}로 포인터를 움직일 수 있습니다. {*CONTROLLER_VK_A*} 단추를 누르면 포인터로 가리킨 아이템을 집습니다.
+수량이 2개 이상일 때는 아이템을 전부 집으며, {*CONTROLLER_VK_X*} 단추를 누르면 반만 집을 수 있습니다.
+
+
+
+ 포인터를 사용해서 아이템을 소지품의 다른 공간으로 옮긴 다음 {*CONTROLLER_VK_A*} 단추를 누르면 해당 위치에 놓습니다.
+ 포인터로 집은 아이템이 여러 개일 때 {*CONTROLLER_VK_A*} 단추를 누르면 모두 내려놓고 {*CONTROLLER_VK_X*} 단추를 누르면 하나만 놓습니다.
+
+
+
+ 아이템이 걸린 포인터를 인터페이스 밖으로 옮기면 아이템을 버릴 수 있습니다.
+
+
+
+ 아이템 정보를 더 보려면 포인터로 아이템을 가리킨 다음 {*CONTROLLER_VK_RT*}를 누르십시오.
+
+
+
+ 소지품을 닫으려면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 이것은 창작 소지품입니다. 이 화면에는 손에 들고 쓸 수 있는 아이템 외에도 선택할 수 있는 모든 아이템이 함께 표시됩니다.
+
+
+{*B*}
+ 계속하려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 창작 모드 소지품 사용법을 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ {*CONTROLLER_MENU_NAVIGATE*}로 포인터를 움직일 수 있습니다.
+ 아이템 목록에서 {*CONTROLLER_VK_A*} 단추를 누르면 포인터로 가리킨 아이템을 집습니다. {*CONTROLLER_VK_Y*} 단추를 누르면 해당 아이템을 전부 집을 수 있습니다.
+
+
+
+ 포인터는 자동으로 사용 줄의 칸 단위로 움직입니다. {*CONTROLLER_VK_A*} 단추로 아이템을 놓을 수 있습니다. 아이템을 놓으면 포인터가 아이템 목록으로 돌아가므로 다른 아이템을 선택할 수 있습니다.
+
+
+
+ 아이템이 걸린 포인터를 인터페이스 밖으로 옮기면 아이템을 월드에 떨어뜨릴 수 있습니다. 빠른 선택 막대에 있는 아이템을 모두 선택 취소하려면 {*CONTROLLER_VK_X*} 단추를 누르십시오.
+
+
+
+ {*CONTROLLER_VK_LB*}로 상단의 그룹 유형 탭을 스크롤하고 {*CONTROLLER_VK_RB*}로 획득하고 싶은 아이템의 그룹 유형을 선택하십시오.
+
+
+
+ 아이템 정보를 더 보려면 포인터로 아이템을 가리킨 다음 {*CONTROLLER_VK_RT*}를 누르십시오.
+
+
+
+ 창작 모드 소지품을 닫으려면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 이것은 제작 인터페이스입니다. 여기서 아이템을 조합하여 새 아이템을 만들 수 있습니다.
+
+
+{*B*}
+ 계속하려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 제작 방법을 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+{*B*}
+ 아이템 설명을 보려면 {*CONTROLLER_VK_X*} 단추를 누르십시오.
+
+
+{*B*}
+ 현재 아이템을 만드는 데 필요한 재료를 보려면 {*CONTROLLER_VK_X*} 단추를 누르십시오.
+
+
+{*B*}
+ {*CONTROLLER_VK_X*} 단추를 눌러 소지품을 다시 여십시오.
+
+
+
+ 화면 위쪽의 그룹 유형 탭에서 {*CONTROLLER_VK_LB*}과 {*CONTROLLER_VK_RB*}을 사용하여 제작할 아이템 종류를 선택한 다음, {*CONTROLLER_MENU_NAVIGATE*}로 제작할 아이템을 선택하십시오.
+
+
+
+ 작업 구역에는 새 아이템을 만드는 데 필요한 재료가 표시됩니다. {*CONTROLLER_VK_A*} 단추를 눌러 아이템을 만든 다음 소지품에 넣으십시오.
+
+
+
+ 작업대를 사용하면 제작할 아이템을 더 다양하게 선택할 수 있습니다. 작업대에서도 제작 방법은 기본 제작과 같지만 작업 구역이 넓어지므로, 재료를 더 다양하게 조합할 수 있습니다.
+
+
+
+ 제작 인터페이스 오른쪽 아래에는 소지품이 표시됩니다. 여기에는 현재 선택한 아이템의 설명과, 해당 아이템을 만드는 데 필요한 재료가 표시됩니다.
+
+
+
+ 현재 선택한 아이템의 설명이 표시되었습니다. 설명을 보면 아이템을 어디에 사용하는지 알 수 있습니다.
+
+
+
+ 선택한 아이템을 만드는 데 필요한 재료 목록이 표시되었습니다.
+
+
+모아둔 나무를 이용해서 판자를 만들 수 있습니다. 판자 아이콘을 선택한 다음 {*CONTROLLER_VK_A*} 단추를 눌러 판자를 만드십시오.{*PlanksIcon*}
+
+
+ 작업대가 완성됐습니다. 작업대를 월드에 설치해야 더 다양한 아이템을 만들 수 있습니다.{*B*}
+ {*CONTROLLER_VK_B*} 단추를 눌러 작업 인터페이스를 닫으십시오.
+
+
+
+ {*CONTROLLER_VK_LB*}와 {*CONTROLLER_VK_RB*}로 제작할 아이템 그룹 유형을 변경할 수 있습니다. 도구 그룹을 선택하십시오.{*ToolsIcon*}
+
+
+
+ {*CONTROLLER_VK_LB*}와 {*CONTROLLER_VK_RB*}로 제작할 아이템 그룹 유형을 변경할 수 있습니다. 구조물 그룹을 선택하십시오.{*StructuresIcon*}
+
+
+
+ {*CONTROLLER_MENU_NAVIGATE*}로 제작할 아이템을 바꿀 수 있습니다. 일부 아이템은 제작 재료에 따라 완성품이 달라집니다. 나무 삽을 선택하십시오.{*WoodenShovelIcon*}
+
+
+
+ 많은 아이템들은 여러 단계를 거쳐 제작됩니다. 이제 판자를 가지고 있으므로 더 다양한 아이템을 만들 수 있습니다. {*CONTROLLER_MENU_NAVIGATE*}를 사용하면 제작할 아이템을 바꿀 수 있습니다. 작업대를 선택하십시오.{*CraftingTableIcon*}
+
+
+
+ 지금까지 만든 도구가 있으면 순조로운 출발을 할 수 있으며, 여러 자원을 더 효과적으로 확보하게 됩니다.{*B*}
+ {*CONTROLLER_VK_B*} 단추를 눌러 제작 인터페이스를 닫으십시오.
+
+
+
+ 일부 아이템은 작업대가 아니라 화로에서 만들어야 합니다. 이제 화로를 만들어 보십시오.{*FurnaceIcon*}
+
+
+
+ 완성한 화로를 설치하십시오. 피신처 안에 설치하는 것이 좋습니다.{*B*}
+ {*CONTROLLER_VK_B*} 단추를 눌러 제작 인터페이스를 닫으십시오.
+
+
+
+ 이 화면은 화로 인터페이스입니다. 화로에서는 아이템에 열을 가하여 다른 아이템으로 바꿀 수 있습니다. 예를 들어, 화로에서 철광석을 가열하면 철 주괴가 만들어집니다.
+
+
+{*B*}
+ 계속하려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 화로 사용법을 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 화로 아래쪽에는 연료나 땔감을 넣고 위쪽에는 변경할 아이템을 넣어야 합니다. 그러면 화로에 불이 켜지고 작업이 시작되며, 결과물은 오른쪽 슬롯에 들어옵니다.
+
+
+
+ 나무로 된 아이템은 종종 땔감으로 쓸 수 있지만, 타는 시간은 아이템마다 다릅니다. 또한 주변에서도 연료로 사용할 아이템들을 찾을 수 있습니다.
+
+
+
+ 아이템 가열이 끝나면 결과물 슬롯에서 소지품으로 옮길 수 있습니다. 다양한 재료를 실험해서 어떤 아이템이 만들어지는지 파악하십시오.
+
+
+
+ 나무를 재료로 사용하면 숯이 만들어집니다. 화로에 연료를 넣은 다음 재료 슬롯에 나무를 넣으십시오. 화로에서 숯이 완성될 때까지는 다소 시간이 필요하므로, 자유롭게 다른 일을 하다가 나중에 돌아와서 진행 상태를 확인하십시오.
+
+
+
+ 숯은 막대와 결합하여 횃불을 만들 수 있으며, 숯 자체로도 연료로 사용됩니다.
+
+
+
+ 재료 슬롯에 모래를 넣으면 유리가 만들어집니다. 피신처에 창문을 달려면 유리를 만드십시오.
+
+
+
+ 이것은 양조 인터페이스입니다. 여기서 다양한 효과를 지닌 물약을 만들 수 있습니다.
+
+
+{*B*}
+ 계속하려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 양조대 사용법을 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 위 슬롯에 재료를 넣고 아래 슬롯에 물병을 넣어 물약을 양조합니다. 한 번에 3병을 동시에 양조할 수 있습니다. 조합 조건이 갖추어지면 양조가 시작되고 잠시 후 물약이 완성됩니다.
+
+
+
+ 물약을 만들기 위해서는 우선 물병이 있어야 만들 수 있습니다. 그 후 지하 사마귀를 추가해 '이상한 물약'을 만든 다음, 하나 이상의 다른 재료를 넣는 방식으로 물약 대부분을 만들 수 있습니다.
+
+
+
+ 물약을 만든 다음에도 물약의 효과를 바꿀 수 있습니다. 레드스톤 가루를 넣으면 효과 지속 시간이 길어지고, 발광석 가루를 넣으면 효과가 더욱 강해집니다.
+
+
+
+ 발효 거미 눈을 넣으면 물약이 부패하여 반대 효과를 지니게 됩니다. 화약을 넣으면 던져서 주변에 효과를 적용할 수 있는 폭발 물약이 됩니다.
+
+
+
+ 물병에 지하 사마귀를 넣고 그다음 마그마 크림을 넣어 '물약 - 화염 저항'을 만드십시오.
+
+
+
+ {*CONTROLLER_VK_B*} 단추를 누르면 양조 인터페이스에서 나갑니다.
+
+
+
+ 이곳에는 양조대와 가마솥, 그리고 양조용 아이템이 들어 있는 상자가 있습니다.
+
+
+{*B*}
+ 양조와 물약에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 양조와 물약에 대해 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 물약 양조의 첫 번째 단계는 물병을 만드는 것입니다. 상자에서 유리병을 꺼내십시오.
+
+
+
+ 가마솥에 들어 있는 물이나 물 블록을 사용해 유리병에 물을 채우십시오. 수원을 가리킨 상태에서 {*CONTROLLER_ACTION_USE*}를 누르면 물을 채웁니다.
+
+
+
+ 가마솥의 물이 떨어지면 물 양동이로 다시 채울 수 있습니다.
+
+
+
+ 양조대를 사용하여 '물약 - 화염 저항'을 만드십시오. 물병, 지하 사마귀와 마그마 크림이 필요합니다.
+
+
+
+ 물약을 손에 든 상태에서 {*CONTROLLER_ACTION_USE*}를 길게 누르면 물약을 사용합니다. 일반 물약을 사용하면 물약을 마시게 되며 효과가 자신에게 나타납니다. 폭발 물약을 사용하면 물약을 던지게 되며 효과가 물약이 떨어진 곳 근처의 생물에게 나타납니다.
+ 일반 물약에 화약을 넣으면 폭발 물약을 만들 수 있습니다.
+
+
+
+ '물약 - 화염 저항'을 자신에게 사용하십시오.
+
+
+
+ 이제 화염과 용암에 대한 저항력이 생겼습니다. 지금까지 통과할 수 없었던 장소도 통과할 수 있습니다.
+
+
+
+ 이것은 효과부여 인터페이스입니다. 무기, 방어구 및 일부 도구에 효과를 부여할 수 있습니다.
+
+
+{*B*}
+ 효과부여 인터페이스에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 효과부여 인터페이스에 대해 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 아이템에 효과를 부여하려면 우선 아이템을 효과부여 슬롯에 넣으십시오. 무기, 방어구 및 일부 도구에 효과를 부여하면 특별한 효과를 얻을 수 있습니다. 예를 들어 방어력이 더 강해지거나, 블록을 채굴할 때 더 많은 아이템을 얻을 수 있게 됩니다.
+
+
+
+ 효과부여 슬롯에 아이템을 넣으면 오른쪽 단추에 무작위로 부여할 효과가 표시됩니다.
+
+
+
+ 단추에 쓰인 숫자는 아이템에 해당 효과를 부여할 때 필요한 경험치입니다. 경험치가 부족할 때는 단추를 선택할 수 없습니다.
+
+
+
+ 부여할 효과를 선택하고 {*CONTROLLER_VK_A*}를 누르면 아이템에 효과를 부여합니다. 부여할 효과 비용만큼 경험치가 줄어듭니다.
+
+
+
+ 효과는 무작위로 부여되지만, 성능이 더 좋은 효과 몇 종류는 더 많은 경험치를 지불하는 것은 물론 효과부여대 주위를 책장으로 둘러싸 강화해야 얻을 수 있습니다.
+
+
+
+ 여기에는 효과부여대와 효과부여에 사용할 수 있는 아이템이 있습니다.
+
+
+ {*B*}
+ 효과부여에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 효과부여에 대해 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 효과부여대를 사용하면 무기, 방어구 및 일부 도구에 특별한 효과를 부여할 수 있습니다. 예를 들어 블록을 채굴할 때 더 많은 아이템을 얻을 수 있는 효과나 방어력이 더 강해지는 효과 등이 있습니다.
+
+
+
+ 효과부여대 주변에 책장을 놓으면 효과부여대가 강화되어 더 높은 수준의 효과를 부여할 수 있습니다.
+
+
+
+ 아이템에 효과를 부여하려면 경험치가 필요합니다. 괴물 및 동물을 처치하면 나오는 경험치 구체를 모으거나, 광석을 채굴하거나, 동물을 교배하거나, 낚시를 하거나, 화로에서 특정 아이템을 녹이거나 요리하면 경험치를 얻을 수 있습니다.
+
+
+
+ 경험치 병을 사용해서도 경험치를 얻을 수 있습니다. 경험치 병을 던지면 병이 떨어진 곳에 경험치 구체가 나타납니다.
+
+
+
+ 이곳에 있는 상자에는 효과가 부여된 아이템과 경험치 병, 그리고 효과부여대를 시험해 볼 수 있는 아이템이 들어 있습니다.
+
+
+
+ 광물 수레에 탑승했습니다. 수레에서 나가려면 포인터를 수레에 맞춘 다음 {*CONTROLLER_ACTION_USE*}를 누르십시오.{*MinecartIcon*}
+
+
+{*B*}
+ 광물 수레에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 광물 수레에 대해 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 광물 수레는 레일을 따라 이동합니다. 화로를 동력으로 사용하여 움직이는 광물 수레나 상자가 담긴 광물 수레를 만들 수도 있습니다.
+ {*RailIcon*}
+
+
+
+ 레드스톤 횃불과 회로로 동력을 공급받아 광물 수레의 속도를 높여주는 동력 레일도 만들 수 있습니다. 스위치와 레버, 압력판으로 이러한 장치를 연결해 장치를 만드십시오.
+ {*PoweredRailIcon*}
+
+
+
+ 배를 타고 이동 중입니다. 배에서 내리려면 포인터를 배에 맞추고 {*CONTROLLER_ACTION_USE*}를 누르십시오.{*BoatIcon*}
+
+
+
+ {*B*}
+ 배에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 배에 대해 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 배를 이용하면 물에서 더 빨리 이동할 수 있습니다. {*CONTROLLER_ACTION_MOVE*}과 {*CONTROLLER_ACTION_LOOK*}으로 방향을 조정하십시오.
+ {*BoatIcon*}
+
+
+
+ 낚싯대를 사용하고 있습니다. 사용하려면 {*CONTROLLER_ACTION_USE*}를 누르십시오.{*FishingRodIcon*}
+
+
+
+ {*B*}
+ 낚시에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 낚시에 대해 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ {*CONTROLLER_ACTION_USE*}를 누르면 찌를 던지고 낚시를 시작합니다. {*CONTROLLER_ACTION_USE*}를 한 번 더 누르면 낚싯줄을 감습니다.
+ {*FishingRodIcon*}
+
+
+
+ 물고기를 낚으려면 물에 던져놓은 찌가 수면 아래로 가라앉기를 기다려서 줄을 감아올립니다. 물고기는 날것으로 먹거나 화로에서 요리해 먹을 수 있으며, 먹으면 체력이 회복됩니다.
+ {*FishIcon*}
+
+
+
+ 다른 도구들과 마찬가지로, 낚싯대도 정해진 횟수만큼만 사용할 수 있습니다. 하지만 물고기 이외의 물건을 낚아도 사용 횟수는 줄어듭니다. 낚싯대를 사용해서 어떤 물건을 낚을 수 있는지, 또는 어떤 일이 일어나는지 확인해 보십시오.
+ {*FishingRodIcon*}
+
+
+
+ 이것은 침대입니다. 밤에 침대를 가리킨 상태에서 {*CONTROLLER_ACTION_USE*}를 누르면 침대에서 잠을 자고 아침에 일어납니다.{*ICON*}355{*/ICON*}
+
+
+
+ {*B*}
+ 침대에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 침대에 대해 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 자는 도중에 괴물의 습격을 받지 않으려면 침대를 안전하고 조명이 충분한 곳에 두어야 합니다. 침대를 한 번 사용하면 게임 중에 사망했을 때 침대에서 부활합니다.
+ {*ICON*}355{*/ICON*}
+
+
+
+ 게임 내에 다른 플레이어가 있을 때는 모든 플레이어가 동시에 침대에 들어야 잠을 잘 수 있습니다.
+ {*ICON*}355{*/ICON*}
+
+
+
+ 이곳에는 레드스톤과 피스톤으로 이루어진 간단한 회로가 있고, 회로를 연장할 수 있는 아이템이 든 상자가 있습니다.
+
+
+
+ {*B*}
+ 레드스톤 회로와 피스톤에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 레드스톤 회로와 피스톤에 대해 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 레버, 단추, 압력판, 레드스톤 횃불로 회로에 동력을 공급할 수 있습니다. 작동할 아이템에 직접 붙이거나 레드스톤 가루로 연결하십시오.
+
+
+
+ 동력원을 설치한 위치와 방향에 따라 주변 블록에 주는 영향이 달라집니다. 예를 들면 블록 옆에 설치한 레드스톤 횃불은 해당 블록이 다른 동력원에서 동력을 공급받는다면 꺼질 수 있습니다.
+
+
+
+ 철제, 다이아몬드, 황금 곡괭이로 레드스톤을 채굴하면 레드스톤 가루를 얻을 수 있습니다. 레드스톤 가루를 사용하면 옆으로 15 블록, 아래위로 1블록까지 동력을 운반할 수 있습니다.
+ {*ICON*}331{*/ICON*}
+
+
+
+ 레드스톤 탐지기는 동력 운반 거리를 늘리거나 회로에 지연 기능을 부여할 수 있습니다.
+ {*ICON*}356{*/ICON*}
+
+
+
+ 동력이 공급되면 피스톤이 늘어나 최대 12블록까지 밀어냅니다. 끈끈이 피스톤은 줄어들 때 거의 모든 종류의 블록 1개를 다시 끌어옵니다.
+ {*ICON*}33{*/ICON*}
+
+
+
+ 이곳의 상자에는 피스톤으로 회로를 만들 수 있는 부품이 들어 있습니다. 이곳에 있는 회로를 완성하거나 자신만의 회로를 만드십시오. 튜토리얼 지역 밖에는 더 많은 예시가 있습니다.
+
+
+
+ 이곳에는 지하로 통하는 차원문이 있습니다!
+
+
+
+ {*B*}
+ 지하 차원문에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 지하 차원문에 대해 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 차원문은 흑요석 블록을 4블록 길이에 5블록 높이로 쌓아서 만듭니다. 모서리 블록은 없어도 됩니다.
+
+
+
+ 지하 차원문을 작동하려면 부싯돌과 부시를 사용하여 흑요석 블록 안쪽 공간에 불을 붙여야 합니다. 차원문 틀이 무너지거나, 근처에서 폭발이 일어나거나, 차원문 안에 물이 들어가면 차원문 작동이 멈출 수 있습니다.
+
+
+
+ 지하 차원문을 사용하려면 안으로 들어가십시오. 화면이 보라색으로 변하며 소리가 날 것입니다. 잠시 후 다른 차원으로 이동하게 됩니다.
+
+
+
+ 용암으로 가득찬 지하 세계는 위험한 곳입니다. 하지만 불을 붙이면 영원히 타는 지하 바위와 빛을 뿜는 발광석을 얻을 수 있습니다.
+
+
+
+ 지하의 1블록 거리는 지상의 3블록 거리와 같으므로, 지하 월드에서는 지상에서보다 더 빨리 이동할 수 있습니다.
+
+
+
+ 현재 창작 모드 상태입니다.
+
+
+
+ {*B*}
+ 창작 모드에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 창작 모드에 대해 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+창작 모드에서는 모든 아이템과 블록을 무한정 사용할 수 있습니다. 도구를 사용하지 않아도 클릭 한 번만으로 블록을 파괴할 수 있으며, 무적 상태인데다 날 수도 있습니다.
+
+{*CONTROLLER_ACTION_JUMP*}를 앞으로 빨리 두 번 누르면 날 수 있습니다. 비행을 종료하려면 똑같은 동작을 반복하십시오. 더 빨리 날려면 {*CONTROLLER_ACTION_MOVE*}를 앞으로 빨리 두 번 누르십시오.
+비행 모드에서 {*CONTROLLER_ACTION_JUMP*}을 길게 누르면 위로 올라가고{*CONTROLLER_ACTION_SNEAK*}을 길게 누르면 아래로 내려갑니다. 또는 십자 키를 사용해서 상하좌우로 움직일 수도 있습니다.
+
+{*CONTROLLER_ACTION_CRAFTING*}를 눌러 창작 소지품 인터페이스를 엽니다.
+
+구멍 반대쪽으로 나가면 계속합니다.
+
+창작 모드 튜토리얼을 완료했습니다.
+
+
+ 이 지역에는 농장이 있습니다. 농장에서 작물을 재배하면 음식 및 기타 아이템의 재료를 얻을 수 있습니다.
+
+
+
+ {*B*}
+ 재배에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 재배에 대해 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+밀, 호박, 수박은 씨앗을 심어서 재배합니다. 길게 자란 풀을 자르거나 밀을 수확하면 밀 씨앗을 얻을 수 있습니다. 호박 및 수박을 가공하면 호박씨 및 수박씨를 얻을 수 있습니다.
+
+씨를 심으려면 쟁기를 사용해서 흙 블록을 농지로 만들어야 합니다. 주변에 수원이 있으면 농지에 계속 수분을 공급하므로 작물이 빨리 자라며, 해당 지역에 불이 켜진 상태를 유지합니다.
+
+밀은 자라는 동안 여러 단계를 거칩니다. 수확할 준비가 되었을 때는 어둡게 변합니다.{*ICON*}59:7{*/ICON*}
+
+호박 및 수박은 씨를 심은 블록 옆에 또 다른 블록 하나가 필요합니다. 줄기가 다 자란 후 옆의 빈 블록에 열매를 맺게 됩니다.
+
+사탕수수는 물 블록 옆에 있는 풀, 흙 또는 모래 블록에 심어야 합니다. 사탕수수 블록을 자르면 사탕수수 위에 놓인 블록이 모두 떨어지게 됩니다.{*ICON*}83{*/ICON*}
+
+선인장은 모래에 심어야 하며 최대 세 블록 높이까지 자랍니다. 사탕수수와 마찬가지로 맨 아래 블록을 파괴하면 그 위의 블록이 떨어져 획득할 수 있습니다.{*ICON*}81{*/ICON*}
+
+버섯은 희미하게 불이 켜진 지역에 심어야 합니다. 버섯을 심으면 주변의 희미하게 불이 켜진 블록으로 퍼져 나갑니다.{*ICON*}39{*/ICON*}
+
+뼛가루를 사용하면 작물을 완전히 자란 상태로 만들거나 버섯을 거대 버섯으로 만들 수 있습니다.{*ICON*}351:15{*/ICON*}
+
+재배 튜토리얼을 완료했습니다.
+
+
+ 이곳에는 동물이 우리 안에 들어 있습니다. 동물을 교배하면 새끼 동물을 얻을 수 있습니다.
+
+
+
+ {*B*}
+ 동물과 교배에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 동물과 교배에 대해 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+동물을 교배시키려면 각 동물에 적합한 먹이를 먹여 '사랑 모드'로 만들어야 합니다.
+
+소, Mooshroom, 양에게는 밀을 먹이고 돼지에게는 당근을 먹이십시오. 그리고 닭에게는 밀 씨앗이나 지하 사마귀를 먹이십시오. 늑대에겐 모든 종류의 고기를 먹일 수 있습니다. 먹이를 먹은 동물은 사랑 모드 상태인 같은 종의 동물이 근처에 있는지 찾아다니게 됩니다.
+
+사랑 모드 상태이며 종류가 같은 동물이 두 마리 만나게 되면 서로 입을 맞추게 되고, 잠시 후 새끼 동물이 태어납니다. 새끼 동물은 다 자라기 전까지 잠시 부모 동물을 따라다닙니다.
+
+사랑 모드가 끝난 동물은 5분간 다시 사랑 모드 상태가 될 수 없습니다.
+
+플레이어가 손에 먹이를 들고 있으면 일부 동물은 플레이어를 따라다닙니다. 동물을 한데 모아 교배할 때 편리합니다.{*ICON*}296{*/ICON*}
+
+
+ 야생 늑대에게 뼈를 주면 길들일 수 있으며, 길들인 늑대 주변에는 하트가 나타납니다. 길들인 늑대는 플레이어를 따라다니며, 앉도록 명령받지 않은 동안에는 플레이어를 보호합니다.
+
+
+동물 및 교배 튜토리얼을 완료했습니다.
+
+
+ 이 지역에서는 호박과 블록으로 눈 골렘과 철 골렘을 만들 수 있습니다.
+
+
+
+ {*B*}
+ {*CONTROLLER_VK_A*}를 눌러 골렘에 대해 더 알아보십시오.{*B*}
+ 골렘에 대해 잘 안다면 {*CONTROLLER_VK_B*}를 누르십시오.
+
+
+골렘은 여러 개 쌓인 블록 위에 호박을 놓아 만들 수 있습니다.
+
+눈 골렘은 2개의 눈 블록을 위아래로 쌓고 그 위에 호박을 놓아 만들 수 있습니다. 눈 골렘은 적에게 눈덩이를 던집니다.
+
+철 골렘은 보시는 바와 같이 4개의 철 블록을 놓고 가운데 블록 위에 호박을 놓아 만들 수 있습니다. 철 골렘은 적을 공격합니다.
+
+철 골렘은 기본적으로 마을을 보호합니다. 사용자가 마을 사람을 공격하면 철 골렘이 사용자를 공격합니다.
+
+튜토리얼을 완료하기 전에는 이 지역을 벗어날 수 없습니다.
+
+재료를 확보할 때는 그에 맞는 도구를 사용하는 것이 좋습니다. 흙이나 모래 같이 부드러운 재질의 재료를 얻으려면 삽을 써야 합니다.
+
+재료를 확보할 때는 그에 맞는 도구를 사용하는 것이 좋습니다. 나무 둥치를 베려면 도끼를 써야 합니다.
+
+재료를 확보할 때는 그에 맞는 도구를 사용하는 것이 좋습니다. 돌과 광물을 채굴할 때는 곡괭이를 써야 합니다. 특정 블록에서 자원을 채굴하려면 더 좋은 재질의 곡괭이가 필요할 수도 있습니다.
+
+특정 도구는 적을 공격하는 데 유용합니다. 검을 사용해서 공격해 보십시오.
+
+힌트: {*CONTROLLER_ACTION_ACTION*}를 누르고 있으면 손 또는 손에 든 도구로 채굴하거나 벌목합니다. 일부 블록은 도구를 사용해야 채굴할 수 있습니다.
+
+사용하고 있는 도구가 손상됐습니다. 도구는 사용할 때마다 손상되며, 나중에는 망가집니다. 아이템 아래쪽의 색상 눈금을 보면 현재 손상된 정도를 알 수 있습니다.
+
+수면으로 헤엄치려면 {*CONTROLLER_ACTION_JUMP*}를 길게 누르십시오.
+
+이곳에는 궤도가 있고 그 위에 광물 수레가 있습니다. 광물 수레에 타려면 포인터를 수레에 맞추고 {*CONTROLLER_ACTION_USE*}를 누릅니다. 단추에 포인터를 맞추고 {*CONTROLLER_ACTION_USE*}를 누르면 광물 수레가 움직입니다.
+
+강 옆의 상자에는 배가 있습니다. 배를 사용하려면 포인터를 물에 맞추고 {*CONTROLLER_ACTION_USE*}를 누르십시오. 포인터를 배에 맞추고 {*CONTROLLER_ACTION_USE*}를 누르면 배에 탑니다.
+
+연못 옆의 상자에는 낚싯대가 있습니다. 상자에서 낚싯대를 꺼내 손에 든 아이템으로 선택한 다음 사용하십시오.
+
+이 고급 피스톤 기계장치는 자동 수리 기능을 지닌 다리를 만듭니다! 단추를 눌러 작동시킨 다음 각 부품이 어떻게 사용되었는지 더 알아보십시오.
+
+아이템을 옮기는 중에 포인터가 인터페이스를 벗어나면 아이템을 버릴 수 있습니다.
+
+이 아이템을 만들 재료가 부족합니다. 왼쪽 아래의 상자에는 이 아이템을 만드는 데 필요한 재료가 표시됩니다.
+
+
+ 축하합니다. 튜토리얼을 마쳤습니다. 이제 게임 시간이 정상적으로 흐르며, 괴물이 출몰하는 밤이 오기까지 시간이 얼마 남지 않았습니다! 피신처를 완성하십시오!
+
+
+{*EXIT_PICTURE*} 먼 곳을 탐험하려면 이 지역의 계단을 이용하십시오. 출입구는 작은 성과 연결된 광부의 피신처 근처에 있습니다.
+
+알림:
+
+
]]>
+
+최신 버전에는 튜토리얼 월드에서 갈 수 있는 새로운 지역 등의 다양한 새 기능이 추가되었습니다.
+
+{*B*}튜토리얼을 플레이하려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 튜토리얼을 건너뛰려면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+이곳에는 낚시, 배, 피스톤, 레드스톤에 대해 알려주는 지역이 있습니다.
+
+이곳 밖에서는 건설, 재배, 광물 수레와 궤도, 효과부여, 양조, 거래, 대장일 등의 예시를 만나볼 수 있습니다!
+
+
+ 음식 막대가 다 떨어지면 체력이 회복하지 않습니다.
+
+
+
+ {*B*}
+ 음식 막대와 음식 먹는 법에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 음식 막대와 음식 먹는 법에 대해 이미 알고 있다면{*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+선택
+
+사용
+
+뒤로
+
+나가기
+
+취소
+
+참가 취소
+
+저장 장치 선택
+
+저장 장치 변경
+
+온라인 게임 목록 새로 고침
+
+파티 게임
+
+모든 게임
+
+그룹 변경
+
+소지품 표시
+
+설명 표시
+
+재료 표시
+
+제작
+
+만들기
+
+획득/놓기
+
+획득
+
+모두 획득
+
+절반 획득
+
+놓기
+
+모두 놓기
+
+하나 놓기
+
+버리기
+
+모두 버리기
+
+하나 버리기
+
+교체
+
+빠른 이동
+
+빠른 선택 취소
+
+이것은 무엇입니까?
+
+Facebook에 공유
+
+필터 변경
+
+게이머 카드 보기
+
+게이머 프로필 확인
+
+친구 요청 보내기
+
+페이지 내림
+
+페이지 올림
+
+다음
+
+이전
+
+플레이어 추방
+
+염색
+
+채굴
+
+먹이기
+
+길들이기
+
+치료하기
+
+앉기
+
+나를 따르라
+
+쫓아내기
+
+비우기
+
+안장
+
+놓기
+
+때리기
+
+젖 짜기
+
+수집
+
+먹기
+
+잠자기
+
+일어나기
+
+재생
+
+타기
+
+배 타기
+
+성장
+
+수면으로 헤엄치기
+
+열기
+
+높낮이 변경
+
+폭파
+
+읽기
+
+매달기
+
+던지기
+
+심기
+
+경작
+
+수확
+
+계속
+
+정식 버전 게임 구매
+
+저장 게임 삭제
+
+삭제
+
+옵션
+
+Xbox Live 파티 초대
+
+친구 초대
+
+수락
+
+털 깎기
+
+레벨 차단
+
+캐릭터 선택
+
+점화
+
+캐릭터 찾기
+
+정식 버전 설치
+
+평가판 설치
+
+설치
+
+재설치
+
+옵션 저장
+
+명령 실행
+
+창작
+
+재료 이동
+
+연료 이동
+
+도구 움직이기
+
+방어구 이동
+
+무기 이동
+
+장비하기
+
+꺼내기
+
+놓기
+
+특권
+
+블록
+
+페이지 위로
+
+페이지 아래로
+
+사랑 모드
+
+마시기
+
+회전
+
+숨기기
+
+Xbox One용 저장 파일을 업로드합니다.
+
+모든 슬롯을 비웁니다.
+
+Xbox One 저장 데이터 업로드
+
+확인
+
+취소
+
+Minecraft 상점
+
+진행 중인 게임을 종료하고 새 게임에 참가하시겠습니까? 저장하지 않은 진행 상황은 사라집니다.
+
+게임 나가기
+
+게임 저장
+
+저장하지 않고 나가기
+
+현재 월드에서 이전에 저장한 내용을 현재 버전으로 덮어쓰시겠습니까?
+
+저장하지 않고 나가시겠습니까? 이 월드의 진행 상황이 모두 사라집니다!
+
+게임 시작
+
+창작 모드에서 월드를 생성, 저장하거나 불러오면 해당 월드에서는 도전 과제를 획득할 수 없으며 순위표에 기록되지 않습니다. 이후 해당 월드를 생존 모드에서 불러와도 마찬가지입니다. 계속하시겠습니까?
+
+이전에 창작 모드에서 저장된 월드입니다. 도전 과제를 획득할 수 없으며 순위표에 기록되지 않습니다. 계속하시겠습니까?
+
+이전에 창작 모드에서 저장된 월드입니다. 도전 과제를 획득할 수 없으며 순위표에 기록되지 않습니다.
+
+호스트 특권을 켜고 월드를 생성, 저장하거나 불러오면 해당 월드에서는 도전 과제를 획득할 수 없으며 순위표에 기록되지 않습니다. 이후 해당 옵션을 꺼도 마찬가지입니다. 계속하시겠습니까?
+
+손상된 저장 데이터
+
+저장 데이터가 손상되었습니다. 삭제하시겠습니까?
+
+게임에 참가한 모든 플레이어의 연결을 끊고, 주 메뉴로 나가시겠습니까? 저장하지 않은 진행 상황은 사라집니다.
+
+저장하고 나가기
+
+저장하지 않고 나가기
+
+주 메뉴로 나가시겠습니까? 저장하지 않은 진행 상황은 사라집니다.
+
+주 메뉴로 나가시겠습니까? 게임 진행 내용을 잃게 됩니다!
+
+새 월드 만들기
+
+튜토리얼 진행
+
+튜토리얼
+
+월드 이름 지정
+
+월드 이름을 입력하십시오.
+
+월드 생성 시드를 입력하십시오.
+
+저장된 월드 불러오기
+
+게임에 참가하려면 START를 누르십시오.
+
+게임에서 나가는 중
+
+오류가 발생했습니다. 주 메뉴로 돌아갑니다.
+
+연결 실패
+
+연결 끊어짐
+
+서버 연결이 끊어졌습니다. 주 메뉴로 돌아갑니다.
+
+Xbox Live 연결이 끊어졌습니다. 주 메뉴로 돌아갑니다.
+
+Xbox Live와의 연결이 끊어졌습니다.
+
+서버 연결 끊김
+
+게임에서 추방되었습니다.
+
+비행으로 인해 게임에서 추방되었습니다.
+
+연결 시도 시간이 초과했습니다.
+
+서버가 꽉 찼습니다.
+
+호스트가 게임에서 나갔습니다.
+
+이 게임에 참가한 친구가 없으므로 게임에 참가할 수 없습니다.
+
+예전에 호스트가 자신을 추방했기 때문에 게임에 참가할 수 없습니다.
+
+참가하려는 플레이어가 이 게임의 이전 버전을 플레이하고 있으므로 게임에 참가할 수 없습니다.
+
+참가하려는 플레이어가 이 게임의 다음 버전을 플레이하고 있으므로 게임에 참가할 수 없습니다.
+
+새 월드
+
+상품을 획득했습니다!
+
+만세! Minecraft의 Steve가 그려진 게이머 사진을 획득했습니다!
+
+만세! Creeper가 그려진 게이머 사진을 획득했습니다!
+
+만세! Minecraft: Xbox 360 Edition 티셔츠(아바타 아이템)를 획득했습니다!
+대시보드에서 아바타에게 티셔츠를 입혀 보십시오.
+
+만세! Minecraft: Xbox 360 Edition 손목시계(아바타 아이템)를 획득했습니다!
+대시보드에서 아바타에게 손목시계를 채워주십시오.
+
+만세! Creeper 야구 모자(아바타 아이템)를 획득했습니다!
+대시보드에서 아바타에게 모자를 씌워주십시오.
+
+만세! Minecraft: Xbox 360 Edition 테마를 획득했습니다!
+대시보드에서 테마를 적용해 보십시오.
+
+정식 버전 게임 구매
+
+현재 게임은 평가판 버전입니다. 게임을 저장하려면 정식 버전이 필요합니다.
+지금 정식 버전 게임을 구매하시겠습니까?
+
+이 Minecraft: Xbox 360 Edition은 평가판입니다. 정식 버전 게임에서는 도전 과제를 달성할 수 있습니다.
+정식 버전 게임을 구매하면 Minecraft: Xbox 360 Edition의 모든 기능을 이용하고 Xbox Live를 통해 전 세계의 친구들과 함께 게임을 즐길 수 있습니다.
+정식 버전 게임을 구매하시겠습니까?
+
+이 Minecraft: Xbox 360 Edition은 평가판입니다. 정식 버전 게임에서는 아바타 상품을 받을 수 있습니다!
+정식 버전 게임을 구매하면 Minecraft: Xbox 360 Edition의 모든 기능을 이용하고 Xbox Live를 통해 전 세계의 친구들과 함께 즐길 수 있습니다.
+정식 버전 게임을 구매하시겠습니까?
+
+이 Minecraft: Xbox 360 Edition은 평가판입니다. 정식 버전 게임에서는 게이머 사진을 받을 수 있습니다!
+정식 버전 게임을 구매하면 Minecraft: Xbox 360 Edition의 모든 기능을 이용하고 Xbox Live를 통해 전 세계의 친구들과 함께 즐길 수 있습니다.
+정식 버전 게임을 구매하시겠습니까?
+
+이 Minecraft: Xbox 360 Edition은 평가판입니다. 정식 버전 게임에서는 테마를 받을 수 있습니다!
+정식 버전 게임을 구매하면 Minecraft: Xbox 360 Edition의 모든 기능을 이용하고 Xbox Live를 통해 전 세계의 친구들과 함께 즐길 수 있습니다.
+정식 버전 게임을 구매하시겠습니까?
+
+이 게임은 Minecraft: Xbox 360 Edition 평가판입니다. 초대를 수락하려면 정식 버전 게임이 필요합니다.
+정식 버전 게임을 구매하시겠습니까?
+
+손님 플레이어는 정식 버전을 구매할 수 없습니다. Xbox Live 사용자 ID로 로그인하십시오.
+
+잠시 기다려 주십시오.
+
+결과 없음
+
+필터:
+
+친구
+
+내 점수
+
+전체
+
+명단:
+
+순위
+
+게이머태그
+
+레벨 저장 준비 중
+
+이것저것 준비 중...
+
+마무리 중...
+
+지형 구축 중
+
+월드 시뮬레이션 중
+
+서버 시동 중
+
+출현 지역 생성 중
+
+출현 지역 불러오는 중
+
+지하 진입 중
+
+지상 진입 중
+
+재생성 중
+
+레벨 생성 중
+
+레벨 불러오는 중
+
+플레이어 저장 중
+
+호스트에 연결 중
+
+지형 다운로드 중
+
+오프라인 게임으로 전환하는 중
+
+호스트가 게임을 저장하는 동안 기다리십시오.
+
+Ender에 들어가기
+
+Ender에서 나가기
+
+월드 생성 시드 찾는 중
+
+이 침대는 주인이 있습니다.
+
+잠은 밤에만 잘 수 있습니다.
+
+%s 님이 침대에서 자고 있습니다. 시간을 새벽으로 건너뛰려면 모든 플레이어가 잠들어야 합니다.
+
+침대가 사라졌거나 장애물이 막고 있습니다.
+
+휴식을 취할 때가 아닙니다. 근처에 괴물이 있습니다.
+
+침대에서 자고 있습니다. 시간을 새벽으로 건너뛰려면 모든 플레이어가 잠들어야 합니다.
+
+도구 및 무기
+
+무기
+
+식량
+
+구조물
+
+방어구
+
+기계장치
+
+이동수단
+
+장식물
+
+블록 짓기
+
+레드스톤 및 운송
+
+기타
+
+양조
+
+양조
+
+도구, 무기 및 방어구
+
+재료
+
+로그아웃
+
+게이머 프로필에서 로그아웃했으므로 타이틀 화면으로 돌아갑니다.
+
+난이도
+
+음악
+
+사운드
+
+감마
+
+게임 감도
+
+인터페이스 감도
+
+낙원
+
+쉬움
+
+보통
+
+어려움
+
+이 모드에서는 플레이어의 체력이 시간에 따라 자동으로 회복되며 적이 등장하지 않습니다.
+
+이 모드에서는 적이 나타나지만 보통 난이도보다 공격력이 약합니다.
+
+이 모드에서는 적이 나타나며, 플레이어에게 일반 수준의 피해를 입힙니다.
+
+이 모드에서는 적이 나타나며, 플레이어에게 큰 피해를 입힙니다. Creeper는 플레이어가 거리를 벌려도 폭발을 취소하지 않으므로 조심해야 합니다!
+
+평가판 시간 만료
+
+Minecraft: Xbox 360 Edition 평가판을 플레이할 수 있는 시간이 만료되었습니다! 정식 버전 게임을 구매하여 계속해서 게임을 즐기시겠습니까?
+
+인원 초과
+
+빈자리가 없어서 게임에 참가하지 못했습니다.
+
+서명 입력
+
+서명으로 사용할 텍스트를 입력하십시오.
+
+제목 입력
+
+게시물 제목을 입력하십시오.
+
+설명문 입력
+
+게시물 설명문을 입력하십시오.
+
+내용 입력
+
+게시물 내용을 입력하십시오.
+
+소지품
+
+재료
+
+양조대
+
+상자
+
+효과부여
+
+화로
+
+재료
+
+연료
+
+디스펜서
+
+현재 이 게임에서 구매할 수 있는 해당 유형의 다운로드 콘텐츠가 없습니다.
+
+%s님이 게임에 참가했습니다.
+
+%s님이 게임을 떠났습니다.
+
+%s님을 게임에서 추방했습니다.
+
+저장한 게임을 삭제하시겠습니까?
+
+승인을 기다리는 중
+
+확인됨
+
+플레이 중:
+
+설정 초기화
+
+설정을 기본값으로 초기화하시겠습니까?
+
+불러오기 오류
+
+Minecraft: Xbox 360 Edition을 불러오는 중에 오류가 발생하여 계속할 수 없습니다.
+
+%s 님의 게임
+
+알 수 없는 호스트 게임
+
+손님이 로그아웃됨
+
+모든 손님 플레이어가 게임에서 제거되었기 때문에 손님 플레이어가 로그아웃되었습니다.
+
+로그인
+
+로그인하지 않았습니다. 이 게임을 플레이하려면 로그인해야 합니다. 지금 로그인하시겠습니까?
+
+멀티 플레이 허용되지 않음
+
+한 명 이상의 플레이어가 Xbox Live 멀티 플레이 게임을 플레이할 수 없어 게임에 참가할 수 없습니다.
+
+한 명 이상의 플레이어가 Xbox Live 멀티 플레이 게임을 플레이할 수 없어 온라인 게임을 만들 수 없습니다. 오프라인 게임을 시작하려면 "온라인 게임"의 선택을 해제하십시오.
+
+멤버 콘텐츠 권한 설정 제한 범위가 너무 높아 게임 세션에 참가할 수 없습니다. 세션에 참가하려면 Xbox 대시보드의 개인 정보 보호 및 온라인 설정에서 해당 설정을 변경하십시오.
+
+로컬 플레이어 중 한 명 이상의 멤버 콘텐츠 권한 설정 제한 범위가 너무 높아 게임 세션에 참가할 수 없습니다.
+
+세션 내의 플레이어가 멤버 콘텐츠 권한 설정 제한을 [친구만]으로 설정하였습니다. 해당 플레이어의 친구 목록에 등록되지 않았으므로 게임 세션에 참가할 수 없습니다.
+
+게임을 생성하지 못했습니다.
+
+로컬 플레이어 중 한 명 이상의 멤버 콘텐츠 권한 설정 제한 범위가 너무 높아 게임 세션을 생성할 수 없습니다. '온라인 게임' 상자의 선택을 해제하여 오프라인 게임을 시작하거나 Xbox 대시보드의 [개인 정보 보호 및 온라인 설정]에서 해당 설정을 변경하십시오.
+
+자동 선택
+
+팩 없음: 기본 캐릭터
+
+즐겨찾는 캐릭터
+
+차단 레벨
+
+참가하려는 게임은 차단 레벨 목록에 들어 있습니다.
+게임 참가를 선택하면 해당 레벨이 차단 레벨 목록에서 제거됩니다.
+
+이 레벨을 차단하시겠습니까?
+
+이 레벨을 차단 레벨 목록에 추가하시겠습니까?
+확인을 선택하면 동시에 게임에서 나가게 됩니다.
+
+차단 목록에서 제거
+
+자동 저장 간격
+
+자동 저장 간격: 꺼짐
+
+분
+
+여기에 놓을 수 없습니다!
+
+용암을 레벨 출현 지점 근처에 놓을 수 없습니다. 플레이어가 시작 지점에서 바로 죽을 수 있기 때문입니다.
+
+이 게임은 레벨 자동 저장 기능을 지원합니다. 위에 보이는 아이콘은 게임을 저장하는 중임을 나타내는 것입니다.
+이 아이콘이 화면에 있을 때 Xbox 360 본체를 끄지 마십시오.
+
+인터페이스 투명도
+
+레벨 자동 저장 준비 중
+
+HUD 크기
+
+HUD 크기 (분할 화면)
+
+시드
+
+캐릭터 팩 획득
+
+선택한 캐릭터를 사용하려면 캐릭터 팩을 획득해야 합니다.
+지금 캐릭터 팩을 획득하시겠습니까?
+
+텍스처 팩 잠금 해제
+
+이 텍스처 팩을 사용하려면 먼저 잠금을 해제해야 합니다.
+지금 잠금 해제하시겠습니까?
+
+텍스처 팩 평가판
+
+텍스처 팩의 평가판을 사용 중입니다. 정식 버전을 구입하기 전에는 이 월드를 저장할 수 없습니다.
+텍스처 팩 정식 버전을 구입하시겠습니까?
+
+텍스처 팩 없음
+
+정식 버전 구입
+
+평가판 다운로드
+
+정식 버전 다운로드
+
+여기에는 텍스처 팩 또는 매시업 팩이 필요하며 현재 가지고 있지 않습니다!
+지금 텍스처 팩 또는 매시업 팩을 설치하시겠습니까?
+
+평가판 받기
+
+정식 버전 받기
+
+플레이어 추방
+
+이 플레이어를 게임에서 추방하시겠습니까? 추방당한 플레이어는 월드를 다시 시작하기 전까지 참가할 수 없습니다.
+
+게이머 사진 팩
+
+테마
+
+캐릭터 팩
+
+친구의 친구도 참가 가능
+
+이 게임은 호스트의 친구만 플레이할 수 있도록 제한되어서 참가할 수 없습니다.
+
+게임에 참가할 수 없음
+
+선택 됨
+
+선택된 캐릭터:
+
+손상된 다운로드 콘텐츠
+
+이 다운로드 콘텐츠는 손상되어서 사용될 수 없습니다. 해당 콘텐츠를 삭제한 다음 Minecraft 상점 메뉴에서 재설치하십시오.
+
+일부 다운로드 콘텐츠가 손상되어 사용될 수 없습니다. 해당 콘텐츠를 삭제한 다음 Minecraft 상점 메뉴에서 재설치하십시오.
+
+게임 모드가 변경되었습니다.
+
+월드 이름 바꾸기
+
+월드의 새 이름을 입력하십시오.
+
+게임 모드: 생존
+
+게임 모드: 창작
+
+생존
+
+창작
+
+생존 모드에서 생성
+
+창작 모드에서 생성
+
+구름 렌더링
+
+이 저장된 게임을 어떻게 하시겠습니까?
+
+저장된 게임 이름 바꾸기
+
+%d초 후에 자동 저장 실행...
+
+켜짐
+
+꺼짐
+
+일반
+
+완전평면
+
+이 옵션을 켜면 온라인 게임으로 플레이합니다.
+
+이 옵션을 켜면 초대받은 플레이어만 게임에 참가할 수 있습니다.
+
+이 옵션을 켜면 친구 목록에 있는 사람의 친구가 게임에 참가할 수 있습니다.
+
+이 옵션을 켜면 플레이어끼리 서로 피해를 입힐 수 있습니다. 생존 모드에만 적용됩니다.
+
+이 옵션을 끄면 게임에 참가한 플레이어는 인증을 받기 전까지 건물을 짓거나 채굴할 수 없습니다.
+
+이 옵션을 켜면 불이 근처의 가연성 블록으로 번집니다.
+
+이 옵션을 켜면 TNT가 작동할 때 폭발합니다.
+
+이 옵션을 켜면 호스트는 게임 메뉴에서 플레이어에게 비행 능력을 주거나, 지치지 않게 하거나, 투명하게 만들 수 있습니다. 도전 과제를 획득할 수 없으며 순위표에 기록되지 않습니다.
+
+이 옵션을 켜면 지하 월드가 재건됩니다. 사전에 지하 요새가 없는 곳에 미리 저장하면 유용합니다.
+
+이 옵션을 켜면 마을이나 요새 등의 건물이 월드에 생성됩니다.
+
+이 옵션을 켜면 지상과 지하에 완전히 평평한 세계가 생성됩니다.
+
+이 옵션을 켜면 쓸모있는 아이템이 든 상자가 플레이어 생성 지점 근처에 나타납니다.
+
+스킨 팩
+
+테마
+
+게이머 사진
+
+아바타 아이템
+
+텍스처 팩
+
+매시업 팩
+
+{*PLAYER*} 불꽃에 휩싸여 타오름
+
+{*PLAYER*} 불타서 사망
+
+{*PLAYER*} 용암에서 수영 시도
+
+{*PLAYER*} 벽에 끼어 질식사
+
+{*PLAYER*} 익사
+
+{*PLAYER*} 배고파서 사망
+
+{*PLAYER*} 찔려서 사망
+
+{*PLAYER*} 땅에 너무 세게 충돌
+
+{*PLAYER*} 월드 밖으로 떨어짐
+
+{*PLAYER*} 사망
+
+{*PLAYER*} 폭발
+
+{*PLAYER*} 마법에 의해 사망
+
+{*PLAYER*} Ender 드래곤 브레스에 의해 사망
+
+{*PLAYER*} {*SOURCE*}에 의해 사망
+
+{*PLAYER*} {*SOURCE*}에 의해 사망
+
+{*PLAYER*} {*SOURCE*}의 원거리 공격에 의해 사망
+
+{*PLAYER*} {*SOURCE*}의 화염구에 의해 사망
+
+{*PLAYER*} {*SOURCE*}에 타격에 의해 사망
+
+{*PLAYER*}님이 {*SOURCE*}에 의해 살해당했습니다.
+
+기반암 안개
+
+HUD 표시
+
+손 표시
+
+분할 화면 게이머태그
+
+사망 메시지
+
+캐릭터 애니메이션
+
+사용자 지정 스킨 애니메이션
+
+채굴하거나 아이템을 사용할 수 없습니다.
+
+채굴하거나 아이템을 사용할 수 있습니다.
+
+블록을 놓을 수 없습니다.
+
+블록을 놓을 수 있습니다.
+
+문과 스위치를 사용할 수 있습니다.
+
+문과 스위치를 사용할 수 없습니다.
+
+보관함(예; 상자)을 사용할 수 있습니다.
+
+보관함(예; 상자)을 사용할 수 없습니다.
+
+괴물 및 동물을 공격할 수 없습니다.
+
+괴물 및 동물을 공격할 수 있습니다.
+
+플레이어를 공격할 수 없습니다.
+
+플레이어를 공격할 수 있습니다.
+
+동물을 공격할 수 없습니다.
+
+동물을 공격할 수 있습니다.
+
+관리자가 되었습니다.
+
+관리자에서 해임되었습니다.
+
+날 수 있습니다.
+
+날 수 없습니다.
+
+지치지 않습니다.
+
+지치게 됩니다.
+
+투명 상태가 되었습니다.
+
+투명 상태가 해제되었습니다.
+
+무적 상태가 되었습니다.
+
+무적 상태가 해제되었습니다.
+
+%d MSP
+
+Ender 드래곤
+
+%s 님이 Ender에 들어갔습니다.
+
+%s 님이 Ender에서 나갔습니다.
+
+
+{*C3*}네가 말한 플레이어가 보여.{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}, 말이야?{*EF*}{*B*}{*B*}
+{*C3*}그래. 조심해. 이제 더 높은 단계에 도달해서 우리 생각을 읽을 수 있어.{*EF*}{*B*}{*B*}
+{*C2*}상관없어. 어차피 우리는 게임의 일부라고 생각할 거야.{*EF*}{*B*}{*B*}
+{*C3*}난 이 플레이어가 마음에 들어. 멋진 플레이를 보여줬고 절대 포기하지 않았잖아.{*EF*}{*B*}{*B*}
+{*C2*}우리 생각을 마치 게임 속 단어처럼 읽고 있어.{*EF*}{*B*}{*B*}
+{*C3*}게임의 꿈에 깊이 빠져있을 때 많은 것들을 상상하기 위해 선택한 방법이야.{*EF*}{*B*}{*B*}
+{*C2*}단어는 서로의 생각을 소통하기에 좋은 방법이야. 유연하잖아. 화면 뒤의 현실을 응시하는 것보다 덜 무섭고.{*EF*}{*B*}{*B*}
+{*C3*}플레이어가 읽을 수 있기 전까지는 목소리를 들었지. 예전엔 플레이하지 않던 사람들은 플레이어를 마녀나 마법사라고 불렀어. 그리고 플레이어는 악마의 힘이 깃든 빗자루를 타고 하늘을 날아다니는 꿈을 꿨고.{*EF*}{*B*}{*B*}
+{*C2*}이 플레이어는 어떤 꿈을 꿨을까?{*EF*}{*B*}{*B*}
+{*C3*}이 플레이어는 햇살과 나무 그리고 불과 물에 관한 꿈을 꿨어. 이 모든 것들을 만들어내고 파괴하는 꿈을 꿨지. 그리고 사냥하고 사냥당하는 꿈과 보금자리에 관한 꿈을 꿨어.{*EF*}{*B*}{*B*}
+{*C2*}아, 예전 인터페이스 말이구나. 백만 년도 더 됐지만 아직도 작동하지. 그런데 이 플레이어는 화면 뒤의 현실에서 실제로 어떤 것들을 만들었을까?{*EF*}{*B*}{*B*}
+{*C3*}수많은 사람들과 {*EF*}{*NOISE*}{*C3*} 사이에 진실된 세상을 만들고 {*EF*}{*NOISE*}{*C3*} 속에서 {*EF*}{*NOISE*}{*C3*}를 위해 {*EF*}{*NOISE*}{*C3*}를 만들었어.{*EF*}{*B*}{*B*}
+{*C2*}그 생각은 아직 읽지 못해.{*EF*}{*B*}{*B*}
+{*C3*}그래, 아직 가장 높은 단계에는 도달하지 못했으니까. 게임이라는 짧은 꿈에서는 도달할 수 없지만 기나긴 인생의 꿈속에서 도달하게 될 거야.{*EF*}{*B*}{*B*}
+{*C2*}우리가 사랑하고 있다는 걸 알고 있을까? 그리고 세상이 아름답고 다정하다는 건?{*EF*}{*B*}{*B*}
+{*C3*}생각의 잡음 속에서 간혹 세상의 소리를 들으니 알고 있을 거야.{*EF*}{*B*}{*B*}
+{*C2*}하지만 긴 꿈속에서 슬플 때도 있어. 여름이 없는 세상을 만들고 검은 태양 아래에서 두려움에 떨며 현실의 슬픈 창조물을 움켜잡고 있지.{*EF*}{*B*}{*B*}
+{*C3*}그의 슬픔을 치유하면 그를 망치게 될 거야. 슬픔은 직접 풀어야 하는 과제이니까. 우리는 그걸 방해하면 안 돼.{*EF*}{*B*}{*B*}
+{*C2*}말해주고 싶어. 때로는 그들이 꿈속에 깊은 곳에서 현실 속의 진정한 세상을 만들고 있다는 걸. 또 그들이 세상에서 얼마나 중요한 존재인지 말해주고 싶어. 그들이 진정한 관계를 맺지 못하고 있을 때 그들이 두려워하는 바를 말할 수 있도록 도와주고 싶어.{*EF*}{*B*}{*B*}
+{*C3*}우리 생각을 읽고 있어.{*EF*}{*B*}{*B*}
+{*C2*}난 신경 쓰지 않아. 그들에게 말해주고 싶어. 세상의 진실은 단지 {*EF*}{*NOISE*}{*C2*}하고 {*EF*}{*NOISE*}{*C2*} 할 뿐이란 걸 말이야. 또 그들은 {*EF*}{*NOISE*}{*C2*}에서 {*EF*}{*NOISE*}{*C2*}하고 있을 뿐이란 것도 말해주고 싶어. 그들은 기나긴 꿈속에서 현실의 아주 작은 부분만을 보고 있어.{*EF*}{*B*}{*B*}
+{*C3*}그렇다 하더라도 그들은 게임을 하고 있잖아.{*EF*}{*B*}{*B*}
+{*C2*}하지만 그들에게 말을 전하기는 어렵지 않아...{*EF*}{*B*}{*B*}
+{*C3*}이 꿈에서는 안 돼. 그들에게 어떻게 살아야 하는지 말해주는 건 그들의 삶을 방해하는 거야.{*EF*}{*B*}{*B*}
+{*C2*}플레이어에게 어떻게 살아야 하는지 말하려는 게 아니야.{*EF*}{*B*}{*B*}
+{*C3*}플레이어는 끝없이 성장하고 있어.{*EF*}{*B*}{*B*}
+{*C2*}플레이어에게 이야기를 들려줄 거야.{*EF*}{*B*}{*B*}
+{*C3*}하지만 진실이 아니잖아.{*EF*}{*B*}{*B*}
+{*C2*}그래. 이야기에는 단어의 틀에서만 진실을 담고 있겠지. 떨어져 있기 때문에 금방이라도 사라질 수 있는 적나라한 진실은 아니야.{*EF*}{*B*}{*B*}
+{*C3*}그에게 다시 육신을 줘.{*EF*}{*B*}{*B*}
+{*C2*}그래. 플레이어...{*EF*}{*B*}{*B*}
+{*C3*}이제 이름으로 불러.{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}. 이 게임의 플레이어.{*EF*}{*B*}{*B*}
+{*C3*}좋아.{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}이제 크게 심호흡을 해. 한 번 더. 폐 속 가득한 공기를 느껴봐. 팔다리가 돌아오도록 하는 거야. 그래, 손가락을 움직여봐. 중력 아래서 몸을 다시 갖게 되는 거지. 네가 다른 존재인 것처럼 우리가 다른 존재인 것처럼 네 몸이 다시 세상과 만나는 거야.{*EF*}{*B*}{*B*}
+{*C3*}우리가 누구냐고? 한때는 산의 정령으로 불렸지. 아버지 태양, 어머니 달. 고대의 영혼, 동물의 영혼. 정령. 유령. 대자연. 그리고 신, 악마. 천사. 폴터가이스트. 외계인, 우주인. 렙톤, 쿼크. 우리를 부르는 단어는 다양했지만 우리는 변하지 않았어.{*EF*}{*B*}{*B*}
+{*C2*}우리가 세상 그 자체야. 네가 생각하는 너 이외의 모든 것이 바로 우리지. 지금 넌 너의 피부와 눈을 통해 우리를 보고 있어. 왜 세상이 너의 피부를 통해 교감하고 네게 빛을 비출까? 플레이어인 널 보기 위해서야. 너에 대해 알고 네가 세상에 대해 알 수 있도록 말이야. 이제 네게 이야기를 하나 들려줄게.{*EF*}{*B*}{*B*}
+{*C2*}아주 오래전에 플레이어가 있었어.{*EF*}{*B*}{*B*}
+{*C3*}그 플레이어는 바로 {*PLAYER*}, 너야. {*EF*}{*B*}{*B*}
+{*C2*}용암으로 이루어진 회전하는 지구의 얇은 표면 위에서 그는 자신을 인간이라고 생각했어. 그 용암 덩어리는 질량이 33만 배 더 무거운 불타는 가스 덩어리를 돌고 있었지. 그 둘 사이의 거리는 빛의 속도로 8분이나 걸리는 먼 거리였어. 빛은 멀리 떨어져 있는 별의 정보였고 1억 5천 킬로미터 거리에서도 네 피부를 태울 수 있지.{*EF*}{*B*}{*B*}
+{*C2*}이따금 플레이어는 평평하고 끝이 없는 세상에서 자신이 광부가 되는 꿈을 꿨어. 그곳의 태양은 하얗고 사각형으로 되어 있었어. 하루는 짧았고 해야 할 일은 많았지. 그리고 죽음은 단지 잠깐의 불편함이었어.{*EF*}{*B*}{*B*}
+{*C3*}이따금 플레이어는 이야기 속에서 길을 잃는 꿈을 꿨어.{*EF*}{*B*}{*B*}
+{*C2*}이따금 플레이어는 다른 곳에서 다른 존재가 되는 꿈을 꿨어. 그리고 가끔 이 꿈들은 방해를 받았어. 가끔은 정말 아름다웠지. 이따금 플레이어는 꿈에서 깨어 다른 꿈으로 들어갔고 또 그 꿈에서 깨어 다른 꿈으로 들어갔어.{*EF*}{*B*}{*B*}
+{*C3*}이따금 플레이어는 화면의 단어를 보는 꿈을 꿨지.{*EF*}{*B*}{*B*}
+{*C2*}이제 과거로 돌아가 보자.{*EF*}{*B*}{*B*}
+{*C2*}플레이어의 원자는 초원에, 강에, 공기에, 땅에 흩어져 있었어. 여자가 그 원자를 모아 마시고 먹고 들이마셔 한대 모아 그녀의 몸 안에서 플레이어를 만든 거야.{*EF*}{*B*}{*B*}
+{*C2*}그렇게 플레이어는 아늑하고 어두운 어머니의 몸속에서 깨어나 긴 꿈의 세계로 들어간 거야.{*EF*}{*B*}{*B*}
+{*C2*}플레이어는 DNA로 쓰여진 한 번도 들어본 적이 없는 새로운 이야기였어. 플레이어는 수십억 년 된 소스 코드로 생성된 한 번도 실행해본 적이 없는 새로운 프로그램이었어. 플레이어는 무에서 젖과 사랑으로부터 탄생한 한 번도 생명을 가져본 적이 없는 새로운 인간이었어.{*EF*}{*B*}{*B*}
+{*C3*}네가 바로 무에서 젖과 사랑으로부터 탄생한 바로 그 플레이어이자 이야기고 프로그램이자 인간이야.{*EF*}{*B*}{*B*}
+{*C2*}이제 좀 더 과거로 돌아가 보자.{*EF*}{*B*}{*B*}
+{*C2*}플레이어의 수백 수천 수백억 원자는 이 게임이 존재하기 훨씬 이전에 별의 심장 속에서 만들어졌어. 즉, 플레이어도 별에서 온 정보야. 그리고 플레이어는 이야기 속에서 움직이는 데 그 이야기는 쥴리안이라는 사람이 심어놓은 정보야. 그리고 그 이야기는 마르쿠스라는 사람이 창조한 평평하고 끝없는 세상 위에서 펼쳐지지. 그리고 그 세상은 플레이어가 만든 작은 그만의 세상이야. 그리고 그 플레이어가 살고 있는 세상을 창조한 사람은…{*EF*}{*B*}{*B*}
+{*C3*}쉿. 이따금 플레이어는 부드럽고 따뜻하며 단순한 그만의 작은 세상을 만들어. 이따금 그 세상은 거칠고 추우며 복잡하기도 해. 이따금 거대한 텅 빈 공간에서 움직이는 에너지 조각으로 머릿속에서 세상을 만들지. 한때 그 조각들을 “전자”와 “양성자”라고 부를 때도 있었어.{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}한때 조각들을 “행성”과 “별”이라고 부를 때도 있었지.{*EF*}{*B*}{*B*}
+{*C2*}이따금 그는 On과 Off로, 0과 1로, 일련의 코드로 이루어진 에너지로 만든 세상에 있다고 믿었어. 이따금 그는 게임 플레이를 하고 있다고 믿었지. 이따금 그는 화면의 단어를 읽고 있다고 믿었어.{*EF*}{*B*}{*B*}
+{*C3*}네가 단어를 읽고 있는 그 플레이어야…{*EF*}{*B*}{*B*}
+{*C2*}쉿… 가끔 플레이어는 화면의 코드를 읽어. 코드를 단어로 바꾸고, 그 단어를 의미로 해석하고, 그 의미를 느낌, 감정, 이론, 아이디어로 바꿔서 플레이어는 더 빠르고 깊게 호흡하기 시작했고 자신은 살아 있으며 수천 번의 죽음은 진짜가 아니라는 걸 깨달아.{*EF*}{*B*}{*B*}
+{*C3*}너. 그래, 너는 살아 있어.{*EF*}{*B*}{*B*}
+{*C2*}그리고 이따금 플레이어는 여름 나무의 하늘거리는 잎 사이로 비치는 햇빛을 통해 세상이 그와 소통하고 있다고 믿었어.{*EF*}{*B*}{*B*}
+{*C3*}그리고 이따금 플레이어는 어느 추운 겨울 밤하늘에서 볼 수 있는, 아주 먼 우주 저편에서 찰나의 시간 동안 플레이어에게 보이기 위해 태양보다 백만 배 무거운 별이 자신을 불태워 발한 빛을 통해 세상이 그와 소통하고 있다고 믿었어. 그리고 세상과 멀리 떨어져 있는 집으로 걸어가 익숙한 문가에서 나는 음식 냄새를 맡으며 다시 꿈에 빠져들었지.{*EF*}{*B*}{*B*}
+{*C2*}그리고 이따금 플레이어는 0과 1, 세상에 퍼져있는 전기, 꿈의 마지막에 화면에 보이는 단어를 통해 세상과 소통한다고 믿었어.{*EF*}{*B*}{*B*}
+{*C3*}그리고 세상은 널 사랑한다고 말했어.{*EF*}{*B*}{*B*}
+{*C2*}그리고 세상은 네가 멋진 게임 플레이를 보여줬다고 말했어.{*EF*}{*B*}{*B*}
+{*C3*}그리고 세상은 네게 필요한 모든 것은 이미 네 안에 있다고 말했어.{*EF*}{*B*}{*B*}
+{*C2*}그리고 세상은 네가 생각하는 것보다 넌 더 강하다고 말했어.{*EF*}{*B*}{*B*}
+{*C3*}그리고 세상은 네가 낮이라고 말했어.{*EF*}{*B*}{*B*}
+{*C2*}그리고 세상은 네가 밤이라고 말했어.{*EF*}{*B*}{*B*}
+{*C3*}그리고 세상은 네가 싸우고 있는 어둠이 네 안에 존재한다고 말했어.{*EF*}{*B*}{*B*}
+{*C2*}그리고 세상은 네가 찾고 있는 빛이 네 안에 존재한다고 말했어.{*EF*}{*B*}{*B*}
+{*C3*}그리고 세상은 네가 혼자가 아니라고 말했어.{*EF*}{*B*}{*B*}
+{*C2*}그리고 세상은 네가 다른 모든 것들과 떨어져 있지 않다고 말했어.{*EF*}{*B*}{*B*}
+{*C3*}그리고 세상은 네가 스스로 맛을 느끼고 스스로 대화하며 자신의 코드를 읽는 세상 그 자체라고 말했어.{*EF*}{*B*}{*B*}
+{*C2*}그리고 세상은 네가 사랑 그 자체니까 널 사랑한다고 말했어.{*EF*}{*B*}{*B*}
+{*C3*}그리고 게임이 끝나고 플레이어가 꿈에서 깼어. 그리고 플레이어는 새로운 꿈을 꾸기 시작해. 그리고 다시 꿈을 꾸고, 더 좋은 꿈을 꿔. 그리고 플레이어는 세상 그 자체고 사랑 그 자체야.{*EF*}{*B*}{*B*}
+{*C3*}네가 바로 그 플레이어야.{*EF*}{*B*}{*B*}
+{*C2*}이제 일어나.{*EF*}
+
+
+지하 초기화
+
+지하의 저장 데이터를 초기화해 기본값으로 재설정하시겠습니까? 지하의 진행 상황이 사라집니다.
+
+지하 초기화
+
+지하 초기화를 하지 않습니다.
+
+Mooshroom의 털을 자를 수 없습니다. 돼지, 양, 소, 고양이의 수가 최대치에 도달했습니다.
+
+낳은 알을 사용할 수 없습니다. 돼지, 양, 소, 고양이의 수가 최대치에 도달했습니다.
+
+낳은 알을 사용할 수 없습니다. Mooshroom의 수가 최대치에 도달했습니다.
+
+낳은 알을 사용할 수 없습니다. 늑대의 수가 최대치에 도달했습니다.
+
+낳은 알을 사용할 수 없습니다. 닭의 수가 최대치에 도달했습니다.
+
+낳은 알을 사용할 수 없습니다. 오징어의 수가 최대치에 도달했습니다.
+
+낳은 알을 사용할 수 없습니다. 적의 수가 최대치에 도달했습니다.
+
+낳은 알을 사용할 수 없습니다. 마을 사람의 수가 최대치에 도달했습니다.
+
+그림 액자/아이템 외형의 수가 최대치에 도달했습니다.
+
+낙원 모드에서는 적을 생성할 수 없습니다.
+
+이 동물은 사랑 모드로 만들 수 없습니다. 교배할 수 있는 돼지, 양, 소, 고양이의 수가 최대치에 도달했습니다.
+
+이 동물은 사랑 모드로 만들 수 없습니다. 교배할 수 있는 늑대의 수가 최대치에 도달했습니다.
+
+이 동물은 사랑 모드로 만들 수 없습니다. 교배할 수 있는 닭의 수가 최대치에 도달했습니다.
+
+이 동물은 사랑 모드로 만들 수 없습니다. 교배할 수 있는 Mooshroom의 수가 최대치에 도달했습니다.
+
+배의 수가 최대치에 도달했습니다.
+
+괴물 머리의 수가 최대치에 도달했습니다.
+
+시야 반전
+
+왼손잡이
+
+사망!
+
+재생성
+
+다운로드 콘텐츠 판매
+
+스킨 변경
+
+게임 방법
+
+컨트롤
+
+설정
+
+제작진
+
+콘텐츠 재설치
+
+디버그 설정
+
+불 확산
+
+TNT 폭발
+
+플레이어 대 플레이어
+
+플레이어 신뢰
+
+호스트 특권
+
+건물 생성
+
+완전평면 월드
+
+보너스 상자
+
+월드 옵션
+
+건설 및 채광 가능
+
+문과 스위치 사용 가능
+
+보관함을 열 수 있음
+
+플레이어 공격 가능
+
+동물 공격 가능
+
+관리자
+
+플레이어 추방
+
+비행 가능
+
+지치지 않음
+
+투명화
+
+호스트 옵션
+
+플레이어/초대
+
+온라인 게임
+
+초대한 사람만 참가 가능
+
+추가 옵션
+
+불러오기
+
+새 월드
+
+월드 이름
+
+월드 생성 시드
+
+공백(무작위 시드)
+
+플레이어
+
+게임 참가
+
+게임 시작
+
+게임 없음
+
+게임 플레이
+
+순위표
+
+도전 과제
+
+도움말 및 옵션
+
+정식 버전 게임 구매
+
+게임 계속하기
+
+게임 저장
+
+난이도:
+
+게임 유형:
+
+게이머태그:
+
+건물:
+
+레벨 유형:
+
+플레이어 대 플레이어:
+
+플레이어 신뢰:
+
+TNT:
+
+불 확산:
+
+테마 재설치
+
+게이머사진 1 재설치
+
+게이머사진 2 재설치
+
+아바타 아이템 1 재설치
+
+아바타 아이템 2 재설치
+
+아바타 아이템 3 재설치
+
+옵션
+
+오디오
+
+컨트롤
+
+그래픽
+
+사용자 인터페이스
+
+기본값으로 재설정
+
+시야 흔들림 표시
+
+힌트
+
+게임 속 단추 설명 표시
+
+게임 내 게이머태그
+
+2 플레이어 수직 분할 화면
+
+완료
+
+서명 메시지 편집:
+
+스크린샷과 함께 게시할 설명을 입력하십시오.
+
+설명문
+
+게임 스크린샷
+
+서명 메시지 편집:
+
+Minecraft: Xbox 360 Edition에서 제가 만든 것들을 보세요!
+
+고전적인 Minecraft 텍스처, 아이콘 및 사용자 인터페이스입니다!
+
+모든 매시업 월드 보이기
+
+전송할 저장 슬롯을 선택합니다.
+
+슬롯을 비웁니다.
+
+저장 메타데이터를 업로드 중입니다.
+
+저장 데이터를 업로드 중입니다.
+
+Xbox One용 저장 파일을 업로드 중입니다.
+
+업로드 취소됨
+
+이 저장 데이터를 저장 데이터 이전 영역에 업로드하는 중에 취소했습니다.
+
+효과 없음
+
+속도
+
+속도 저하
+
+채굴 속도 향상
+
+채굴 속도 저하
+
+피해 강화
+
+피해 약화
+
+회복
+
+피해
+
+점프 강화
+
+혼란
+
+재생
+
+저항
+
+화염 저항
+
+수중 호흡
+
+투명화
+
+맹목
+
+야간 시야
+
+배고픔
+
+독
+
+- 신속
+
+- 속도 저하
+
+- 채굴 속도 향상
+
+- 둔함
+
+- 피해 강화
+
+- 피해 약화
+
+- 회복
+
+- 피해
+
+- 도약
+
+- 혼란
+
+- 재생
+
+- 저항
+
+- 화염 저항
+
+- 수중 호흡
+
+- 투명화
+
+- 맹목
+
+- 야간 시야
+
+- 배고픔
+
+- 독
+
+
+
+II
+
+III
+
+IV
+
+폭발
+
+일반적인
+
+시시한
+
+단조로운
+
+맑은
+
+우유빛
+
+뿌연
+
+소박한
+
+묽은
+
+이상한
+
+김이 빠진
+
+투박한
+
+엉터리
+
+느끼한
+
+부드러운
+
+미끈미끈한
+
+찰랑대는
+
+짙은
+
+우아한
+
+고급스러운
+
+화려한
+
+근사한
+
+정제된
+
+따스한
+
+거품이 이는
+
+강력한
+
+냄새나는
+
+냄새 없는
+
+고약한
+
+거칠거칠한
+
+매캐한
+
+역겨운
+
+지독한
+
+모든 물약의 기본이 됩니다. 양조대에서 사용하여 물약을 만들 수 있습니다.
+
+그 자체로는 효과가 없습니다. 양조대에서 다른 재료를 추가로 넣어 효과를 추가할 수 있습니다.
+
+효과 대상 플레이어, 동물 및 괴물의 이동 속도가 빨라집니다. 플레이어의 질주 속도가 빨라지며 점프 거리와 시야 거리가 늘어납니다.
+
+효과 대상 플레이어, 동물 및 괴물의 이동 속도가 느려집니다. 플레이어의 질주 속도가 느려지며 점프 거리와 시야 거리가 줄어듭니다.
+
+효과 대상 플레이어 및 괴물의 공격력이 증가합니다.
+
+효과 대상 플레이어 및 괴물의 공격력이 감소합니다.
+
+효과 대상 플레이어, 동물 및 괴물의 체력이 즉시 증가합니다.
+
+효과 대상 플레이어, 동물 및 괴물의 체력이 즉시 감소합니다.
+
+효과 대상 플레이어, 동물 및 괴물의 체력이 서서히 회복합니다.
+
+효과 대상 플레이어, 동물 및 괴물이 불, 용암 및 Blaze의 원거리 공격에 피해를 받지 않게 됩니다.
+
+효과 대상 플레이어, 동물 및 괴물의 체력이 서서히 감소합니다.
+
+예리
+
+강타
+
+절지동물 격파
+
+타격 반동
+
+화염
+
+방어
+
+화염 방어
+
+낙하 방어
+
+폭발 방어
+
+발사체 방어
+
+호흡
+
+수분 친화력
+
+효율성
+
+채굴 정확성
+
+견고
+
+전리품 획득
+
+희귀품 채굴
+
+강화
+
+화염
+
+강타
+
+무한
+
+I
+
+II
+
+III
+
+IV
+
+V
+
+VI
+
+VII
+
+VIII
+
+IX
+
+X
+
+철 또는 그 이상의 곡괭이로 채굴하여 에메랄드를 얻을 수 있습니다.
+
+상자와 비슷하지만, Ender 상자에 넣은 아이템은 플레이어의 모든 Ender 상자에 공유됩니다. 다른 차원에 있는 Ender 상자도 마찬가지입니다.
+
+연결된 트립와이어를 통해 엔티티가 이동하면 작동합니다.
+
+엔티티가 통과하면 연결된 트립와이어 후크를 작동시킵니다.
+
+에메랄드를 쉽게 보관할 수 있습니다.
+
+조약돌로 만들어진 벽입니다.
+
+도구나 무기, 방어구를 만드는 데 사용합니다.
+
+용광로에서 제련하여 지하 석영을 만듭니다.
+
+장식으로 사용합니다.
+
+마을 사람과 거래할 수 있습니다.
+
+장식으로 사용합니다. 꽃, 묘목, 선인장, 버섯을 심을 수 있습니다.
+
+먹으면 {*ICON_SHANK_01*}를 2만큼 회복하며 황금 당근을 만드는 데 사용합니다. 농지에 심을 수 있습니다.
+
+먹어서 {*ICON_SHANK_01*}를 0.5만큼 회복하거나 화로에서 조리할 수 있습니다. 농지에 심을 수 있습니다.
+
+{*ICON_SHANK_01*}를 3만큼 회복합니다. 화로에서 감자를 조리하여 만듭니다.
+
+먹어서 {*ICON_SHANK_01*}를 1만큼 회복하거나 화로에서 조리할 수 있습니다. 농지에 심을 수 있으며 먹으면 중독될 수 있습니다.
+
+{*ICON_SHANK_01*}를 3만큼 회복합니다. 당근과 금덩이를 사용해 만듭니다.
+
+안장 달린 돼지에 올라타 조종할 때 사용합니다.
+
+{*ICON_SHANK_01*}를 4만큼 회복합니다.
+
+모루에서 무기, 도구, 방어구에 효과를 부여할 때 사용합니다.
+
+지하 석영 광석을 채굴해서 만듭니다. 석영 블록으로 만들 수 있습니다.
+
+양털을 사용해 만듭니다. 장식으로 사용합니다.
+
+에메랄드
+
+화분
+
+당근
+
+감자
+
+구운 감자
+
+독성 감자
+
+황금 당근
+
+당근 막대
+
+호박 파이
+
+효과부여 책
+
+지하 석영
+
+에메랄드 광석
+
+Ender 상자
+
+트립와이어 후크
+
+트립와이어
+
+에메랄드 블록
+
+조약돌 벽
+
+이끼 낀 조약돌 벽
+
+화분
+
+당근
+
+감자
+
+모루
+
+모루
+
+약간 망가진 모루
+
+크게 망가진 모루
+
+지하 석영 광석
+
+석영 블록
+
+깎아놓은 석영 블록
+
+석영 블록 기둥
+
+석영 계단
+
+카펫
+
+검은색 카펫
+
+빨간색 카펫
+
+초록색 카펫
+
+갈색 카펫
+
+파란색 카펫
+
+보라색 카펫
+
+청록색 카펫
+
+밝은 회색 카펫
+
+회색 카펫
+
+분홍색 카펫
+
+라임색 카펫
+
+노란색 카펫
+
+밝은 파란색 카펫
+
+자주색 카펫
+
+주황색 카펫
+
+흰색 카펫
+
+깎아놓은 사암
+
+부드러운 사암
+
+{*PLAYER*} {*SOURCE*} 공격 중에 사망
+
+{*PLAYER*} 모루에 깔려 사망
+
+{*PLAYER*} 블록에 깔려 사망
+
+{*PLAYER*} {*DESTINATION*}(으)로 순간이동
+
+{*PLAYER*}의 위치로 순간이동
+
+{*PLAYER*}이(가) 현재 내 위치로 순간이동
+
+가시
+
+석영 발판
+
+어두운 지역을 대낮처럼 밝힙니다. 물속에서도 효과가 있습니다.
+
+영향을 받은 플레이어와 동물, 몬스터를 투명하게 만듭니다.
+
+수리 및 이름
+
+효과부여 비용: %d
+
+비용 부족!
+
+이름 바꾸기
+
+소지:
+
+거래에 필요한 아이템
+
+{*VILLAGER_TYPE*}의 제안: %s
+
+수리
+
+거래
+
+목줄 염색
+
+
+ 이 화면은 모루 인터페이스입니다. 이곳에서 경험치를 지불하고 무기나 도구, 방어구 이름을 바꾸거나, 수리하거나, 효과를 부여합니다.
+
+
+
+ {*B*}
+ 모루 인터페이스에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 모루 인터페이스에 대해 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 아이템으로 작업을 시작하려면 첫 번째 작업 슬롯에 넣으십시오.
+
+
+
+ 올바른 원재료를 두 번째 작업 슬롯에 넣으면(예: 망가진 철제 검 수리 시 철 주괴 필요), 결과 슬롯에 수리 정보가 표시됩니다.
+
+
+
+ 또는 두 번째 슬롯에 같은 아이템을 넣어 두 아이템을 조합할 수 있습니다.
+
+
+
+ 모루에서 아이템에 효과를 부여하려면 효과부여책을 두 번째 작업 슬롯에 넣으십시오.
+
+
+
+ 작업에 소비되는 경험치는 결과 정보 아래에 표시됩니다. 경험치가 부족하면 수리를 할 수 없습니다.
+
+
+
+ 텍스트 상자에 다른 이름을 입력하여 아이템 이름을 바꿀 수 있습니다.
+
+
+
+ 수리한 아이템을 집으면 모루에 넣은 두 아이템과 지정된 경험치가 소모됩니다.
+
+
+
+ 이곳에는 도구 및 무기가 담긴 상자와 모루가 있습니다.
+
+
+
+ {*B*}
+ 모루에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 모루에 대해 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 모루에서 무기와 도구를 수리해 내구도를 올리거나, 이름을 바꾸거나, 효과부여 책으로 효과를 부여할 수 있습니다.
+
+
+
+ 효과부여 책은 던전에서 찾거나 효과부여대에서 일반 책에 효과를 부여해 만듭니다.
+
+
+
+ 모루를 사용하면 경험치를 소비하며, 사용할 때마다 모루가 손상될 수 있습니다.
+
+
+
+ 작업의 종류, 아이템 가치, 부여 효과 수, 기존 작업 수에 따라 수리비가 달라집니다.
+
+
+
+ 아이템 이름을 바꾸면 모든 플레이어에게 보이는 이름도 변경되며, 이전 작업 비용이 영구적으로 감소합니다.
+
+
+
+ 이곳의 상자에서는 손상된 곡괭이, 원재료, 경험치 병, 효과부여 책을 찾을 수 있습니다.
+
+
+
+ 이곳은 마을 사람과 할 수 있는 거래 목록을 보여주는 거래 인터페이스입니다.
+
+
+
+ {*B*}
+ 거래 인터페이스에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 거래 인터페이스에 대해 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 마을 사람들이 원하는 거래 내용은 위쪽에 표시됩니다.
+
+
+
+ 필요한 아이템이 없으면 거래가 빨간색으로 표시되며 진행이 불가능합니다.
+
+
+
+ 마을 사람에게 제시하는 아이템 수량과 종류는 왼쪽의 상자 2개에 표시됩니다.
+
+
+
+ 왼쪽의 상자 2개에서 거래에 필요한 아이템 총 수량을 확인할 수 있습니다.
+
+
+
+ 마을 사람이 원하는 아이템으로 거래하려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.
+
+
+
+ 이곳에는 마을 사람과, 아이템 구매에 필요한 종이가 담긴 상자가 있습니다.
+
+
+
+ {*B*}
+ 거래에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ 거래에 대해 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 소지품에 있는 아이템을 마을 사람들과 거래할 수 있습니다.
+
+
+
+ 마을 사람은 자신의 직업에 맞는 아이템을 거래하고 싶어합니다.
+
+
+
+ 다양한 아이템을 거래하면 마을 사람이 원하는 거래 목록이 추가되거나 업데이트됩니다.
+
+
+
+ 같은 거래를 너무 자주 하면 일시적으로 해당 거래를 할 수 없게 됩니다. 하지만 마을 사람은 항상 최소 1건의 거래 제안을 가지고 있습니다.
+
+
+
+ 상자에서 종이를 꺼내 이곳의 마을 사람들과 거래해 보십시오.
+
+
+
+ 이곳에는 Ender 상자 2개가 있습니다.
+
+
+
+ {*B*}
+ Ender 상자에 대해 더 알아보려면 {*CONTROLLER_VK_A*} 단추를 누르십시오.{*B*}
+ Ender 상자에 대해 이미 알고 있다면 {*CONTROLLER_VK_B*} 단추를 누르십시오.
+
+
+
+ 월드 내의 Ender 상자는 다른 차원에 있는 것까지 포함하여 모두 연결되어 있습니다. Ender 상자에 넣은 아이템은 다른 모든 Ender 상자에서 사용이 가능합니다.
+
+
+
+ 하지만 Ender 상자의 내용물은 플레이어마다 다릅니다.
+
+
+
+ 이에 따라 플레이어는 Ender 상자에 아이템을 넣고, 월드 내 다른 장소에 있는 Ender 상자에서 아이템을 꺼낼 수 있습니다. Ender 상자에 지금 아이템을 넣어 이 기능을 시험해볼 수 있습니다.
+
+
+{*ICON_SHANK_01*}를 2만큼 회복하고 30초 동안 체력을 회복하며 5분 동안 화염 저항 및 방어력이 증가합니다. 사과와 황금 블록을 사용해 만듭니다.
+
+순간이동 가능
+
+순간이동
+
+플레이어에게로 순간이동
+
+나에게로 순간이동
+
+지치지 않게 설정 가능
+
+투명화 사용 가능
+
+투명화 사용 가능
+
+투명화 사용 불가능
+
+비행 가능
+
+비행 불가능
+
+지치지 않게 설정 가능
+
+지치지 않게 설정 불가능
+
+순간이동 가능
+
+순간이동 불가능
+
+{*T3*}플레이 방법 : 모루{*ETW*}{*B*}{*B*}
+경험치 레벨은 모루에서 아이템을 수리하거나, 효과부여하거나, 이름을 바꾸는 데도 사용됩니다.{*B*}
+아이템은 내구도가 있을 때만 수리할 수 있고 효과부여 책을 통해서만 효과를 얻지만, 이름은 어떤 아이템이든 바꿀 수 있습니다.{*B*}
+왼쪽의 작업 슬롯에 아이템을 넣고, 원재료(예: 철제 검 수리 시 철 주괴)나 종류가 같은 다른 아이템을 함께 넣어 수리합니다.{*B*}
+아이템은 모루에서 조합할 때 효과가 더 좋으며, 조합하는 아이템들에 모두 효과가 부여되어 있다면 결과물은 해당 효과들을 모두 이어받을 수 있습니다.{*B*}
+효과부여 책은 효과가 적절할 경우 모루에서 다른 아이템과 조합하여 아이템에 효과를 부여할 수 있습니다. 효과부여 책은 던전에서 얻거나 효과부여대에서 일반 책에 효과를 부여해 만듭니다.{*B*}
+모루를 사용하면 일정 확률로 손상되며, 손상이 심하면 모루가 부서집니다.{*B*}
+
+
+{*T3*}플레이 방법 : 거래{*ETW*}{*B*}{*B*}
+마을 사람들과 아이템을 거래할 수 있습니다. 마을 사람은 농부, 도축업자, 대장장이, 도서관 사서, 사제 등의 직업을 가지고 있으며, 이에 따라 각자 다른 아이템을 거래합니다.{*B*}
+거래 메뉴에서 마을 사람이 제시할 수 있는 모든 거래 목록을 볼 수 있습니다. 플레이어와 거래하면 마을 사람의 거래 가능 목록이 바뀌거나 추가될 수 있으며, 너무 자주 거래하면 일시적으로 거래를 못 하게 될 수도 있습니다.{*B*}
+거래는 주로 아이템을 에메랄드로 구매하거나 판매하는 형태로 이루어집니다. {*B*}
+거래에 필요한 아이템을 가지고 있지 않으면 아이템이 빨간색으로 표시됩니다.{*B*}
+
+
+{*T3*}플레이 방법 : Ender 상자 {*ETW*}{*B*}{*B*}
+월드 안의 모든 Ender 상자는 연결되어 있어, 상자에 든 아이템은 어느 곳의 Ender 상자에서든 꺼낼 수 있습니다. 하지만 내용물은 플레이어마다 다릅니다. 플레이어는 아무 Ender 상자에 아이템을 넣고, 월드 내 다른 장소에 있는 아무 Ender 상자에서 아이템을 꺼낼 수 있습니다.
+
+
+농부
+
+도서관 사서
+
+사제
+
+대장장이
+
+도축업자
+
+마을에서 만날 수 있는 마을 사람은 직업에 따라 다양한 아이템을 팝니다.
+
+큰 상자
+
+
+ 또한 효과부여대에서 효과부여 책을 만들 수 있습니다. 나중에 모루에서 효과부여 책을 사용해 아이템에 효과를 부여할 수 있습니다.
+
+
+
+ 트립와이어 후크 사이의 선을 무언가가 작동시키면 회로에 계속 전력이 공급됩니다.
+
+
+
+ 길들인 늑대는 항상 목줄을 착용하게 됩니다. 목줄은 염색해서 색을 바꿀 수 있습니다.
+
+
+당근과 감자를 심어 재배할 수 있으며, 작물이 땅 위로 모습을 드러내면 수확할 수 있습니다.
+
+
+ 또한 돼지에게 안장을 씌워 타고 다닐 수 있습니다. 막대에 당근을 끼워 사용하면 돼지를 조종할 수 있습니다.
+
+
+
+ {*CONTROLLER_ACTION_MOVE*} 단추를 사용해 광물 수레를 천천히 움직일 수 있습니다. 동력 레일 위에서 광물 수레를 움직이는 데 도움을 줍니다.
+
+
+분활 화면은 고화질(HD) 모드에서만 지원되므로 게임에 참가할 수 없습니다. 참가하려면 다른 모든 플레이어를 로그아웃시킵니다.
+
+치유
+
+Xbox 360
+
+BACK
+
+이 옵션을 켜면 도전 과제를 획득할 수 없으며 순위표에 기록되지 않습니다. 플레이 도중에 옵션을 켜거나 옵션을 켠 후 저장한 게임을 다시 불러와도 마찬가지입니다.
+
+Xbox One용 저장 파일을 업로드합니다.
+
+저장 데이터 업로드
+
+Xbox 360 본체 저장 데이터 하나만 데이터 이전 영역에 보관할 수 있습니다. 다른 Xbox 360 본체 저장 데이터를 업로드하기 전에, 이전 저장 데이터를 Xbox One 본체에 다운로드했는지 확인하십시오.
+
+업로드 중...
+
+업로드 완료!
+
+업로드하지 못했습니다. 나중에 다시 시도하십시오.
+
+음악 디스크 {*progress*}/{*goal*}장을 찾았습니다!
+
+
diff --git a/Minecraft.Client/Xbox/loc/lcl/pt-BR/Minecraft_all.resx b/Minecraft.Client/Xbox/loc/lcl/pt-BR/Minecraft_all.resx
new file mode 100644
index 00000000..35f82d50
--- /dev/null
+++ b/Minecraft.Client/Xbox/loc/lcl/pt-BR/Minecraft_all.resx
@@ -0,0 +1,4563 @@
+
+Não Usado
+
+OK
+
+Voltar
+
+Cancelar
+
+Sim
+
+Não
+
+Salvamento Corrompido
+
+Seus dados de salvamento parecem estar corrompidos. Criar novo salvamento e substituir o corrompido?
+
+Sem Espaço Livre
+
+O dispositivo de armazenamento selecionado não tem espaço livre suficiente para salvar um jogo.
+
+Selecionar novamente
+
+Jogar sem salvar
+
+Criar novo salvamento
+
+Substituir salvamento?
+
+Seu dispositivo de armazenamento selecionado já contém este salvamento. Deseja substituí-lo?
+
+Não substituir
+
+Substituir e salvar
+
+Falha ao salvar
+
+Erro dispositivo armazenamento
+
+O dispositivo de armazenamento está indisponível ou tem um erro
+
+Seu dispositivo de armazenamento está indisponível ou tem um erro. Selecione outro dispositivo de armazenamento.
+
+Selecione outro dispos. armazen.
+
+Nenhum disp. armaz. selecionado
+
+Se não selecionar um dispositivo de armazenamento, o salvamento de jogos será desabilitado.
+
+Selecionar um dispos. de armaz.
+
+Continuar sem salvar
+
+O dispositivo de armazenamento foi removido. Selecione outro dispositivo.
+
+Falha ao carregar
+
+Nomeie o salvamento
+
+Digite um nome para salvar o jogo
+
+Voltar ao Menu Xbox
+
+Tem certeza de que deseja sair do jogo?
+
+Saiu
+
+Você voltou à tela de título porque seu perfil do jogador foi desconectado
+
+A partida terminou porque um perfil do jogador foi desconectado
+
+Continuar jogando
+
+Perfil do jogador não online
+
+Este jogo tem recursos que exigem um perfil do jogador habilitado para Xbox Live, mas você está offline no momento.
+
+Este recurso exige um perfil do jogador que esteja conectado ao Xbox Live.
+
+Conectar ao Xbox Live
+
+Continuar jogando offline
+
+Problema com Brinde de Conquista
+
+ Houve um problema ao acessar seu perfil de jogador. Não foi possível conceder sua conquista no momento.
+
+Problema no perfil do jogador
+
+Falha ao salvar configurações no perfil do jogador.
+
+Perfil do Jogador Convidado
+
+O perfil do jogador convidado não pode acessar este recurso. Use um perfil do jogador diferente.
+
+Salvando…
+
+Salvando conteúdo. Não desligue o console.
+
+Desbloquear Jogo Completo
+
+Esta é a versão de avaliação do jogo Minecraft. Se você já tem a versão integral do jogo, acabou de ganhar uma conquista!
+Desbloqueie a versão integral do jogo para curtir a diversão de Minecraft e para jogar com amigos de todo o mundo pelo Xbox Live.
+Deseja desbloquear a versão integral do jogo?
+
+Você está voltando ao menu principal devido a um problema para ler seu perfil.
+
+O novo Conteúdo para Baixar está disponível! Acesse-o pelo botão Loja Minecraft no Menu Principal.
+
+Você pode mudar o aspecto de seu personagem com um Pacote de Peles da Loja Minecraft. Selecione "Loja Minecraft" no Menu Principal e veja o que está disponível.
+
+Se você jogar este jogo no modo Alta Definição, poderá ter até quatro jogadores em tela dividida no mesmo console!
+
+Conecte os controles extras ao seu console e pressione START neles para entrar em um jogo a qualquer momento.
+
+Altere as configurações de gama para deixar o jogo mais claro ou mais escuro.
+
+Se você definir a dificuldade do jogo para Pacífico, sua energia regenerará automaticamente e nenhum monstro sairá à noite!
+
+Dê um osso a um lobo para torná-lo amigável. Depois, poderá fazê-lo sentar ou seguir você.
+
+Você pode soltar itens que estão no Inventário movendo o cursor para fora do menu e pressionando{*CONTROLLER_VK_A*}
+
+Ao dormir em uma cama à noite, o tempo passará rapidamente no jogo até o nascer do sol, mas todos os jogadores em um jogo multijogador devem estar na cama ao mesmo tempo.
+
+Colha costeletas dos porcos, cozinhe e coma-as para recuperar energia.
+
+Extraia couro das vacas e use-o para fazer armaduras.
+
+Se tiver um balde vazio, poderá enchê-lo com leite de uma vaca, com água ou lava!
+
+Use uma enxada para preparar áreas do solo para plantar.
+
+As aranhas não o atacarão durante o dia, a menos que você as ataque.
+
+Escavar solo ou areia com uma pá é mais rápido que com a mão!
+
+Comer costeletas de porco cozidas dá mais energia que comê-las cruas.
+
+Faça algumas tochas para iluminar áreas à noite. Os monstros evitam as áreas ao redor das tochas.
+
+Chegue aos destinos mais rápido com um carrinho de minas e trilhos!
+
+Plante algumas mudas e elas crescerão e se tornarão árvores.
+
+Os homens-porco não o atacarão, a menos que você os ataque.
+
+Você pode alterar seu ponto de criação no jogo e avançar até o nascer do sol dormindo em uma cama.
+
+Devolva aquelas bolas de fogo para o Ghast!
+
+Ao construir um portal, você poderá viajar para outra dimensão: o Submundo.
+
+Pressione{*CONTROLLER_VK_B*} para soltar o item que está em sua mão!
+
+Use a ferramenta certa para o trabalho!
+
+Se não encontrar carvão para suas tochas, faça carvão vegetal com árvores em uma fornalha.
+
+Cavar diretamente para baixo ou para cima não é uma boa ideia.
+
+O farelo de osso (fabricado com ossos de Esqueleto) pode ser usado como fertilizante e faz as coisas crescerem imediatamente!
+
+Os creepers explodirão se chegarem perto de você!
+
+A obsidiana é criada quando a água encontra um bloco de origem de lava.
+
+A lava poderá demorar alguns minutos para desaparecer COMPLETAMENTE quando o bloco de origem for removido.
+
+O pedregulho é resistente às bolas de fogo do Ghast, o que o torna útil para proteger portais.
+
+Blocos que podem ser usados como fonte de luz derretem neve e gelo. Eles incluem tochas, glowstone e lanternas de abóbora.
+
+Tome cuidado ao construir estruturas feitas de lã ao ar livre, pois relâmpagos de tempestades podem incendiar a lã.
+
+Um único balde de lava pode ser usado em uma fornalha para fundir 100 blocos.
+
+O instrumento tocado por um bloco de nota depende do material abaixo dele.
+
+Zumbis e esqueletos poderão sobreviver à luz do dia se estiverem na água.
+
+Se você atacar um lobo, todos os lobos da vizinhança ficarão hostis e o atacarão. Isso também acontece com os homens-porco zumbis.
+
+Os lobos não podem entrar no Submundo.
+
+Os lobos não atacam os Creepers.
+
+As galinhas põem ovos a cada 5 ou 10 minutos.
+
+A obsidiana só pode ser extraída com uma picareta de diamante.
+
+Os Creepers são a fonte de pólvora mais fácil de se obter.
+
+Se colocar dois baús lado a lado você terá um baú grande.
+
+Lobos mansos mostram a saúde pela posição da cauda. Dê carne a eles para curá-los.
+
+Cozinhe o cacto na fornalha para fazer o corante verde.
+
+Você receberá as últimas informações sobre este jogo de 4J Studios e Kappische no twitter!
+
+Impressione os amigos publicando capturas de tela de suas criações Minecraft no Facebook a partir do menu Pausa do jogo!
+
+Leia a seção O que há de novo nos menus Como jogar para ver as últimas atualizações no jogo.
+
+Agora há cercas empilháveis no jogo!
+
+O minecraftforum tem uma seção dedicada ao Xbox 360 Edition.
+
+Alguns animais seguirão você se tiver trigo na mão.
+
+Se um animal não puder se mover mais de 20 blocos em qualquer direção, ele não se desintegrará.
+
+Música de C418!
+
+Notch tem mais de um milhão de seguidores no twitter!
+
+Nem todas as pessoas na Suécia têm cabelos loiros. Alguns, como Jens de Mojang, são ruivos!
+
+Acreditamos que a 4J Studios removeu Herobrine do jogo no console Xbox 360, mas não temos certeza.
+
+No futuro haverá uma atualização deste jogo!
+
+Quem é Notch?
+
+Mojang tem mais prêmios que ajudantes!
+
+Algumas celebridades jogam Minecraft!
+
+deadmau5 curte o Minecraft!
+
+Não olhe diretamente para os bugs.
+
+Os Creepers nasceram de um bug de código.
+
+Isso é uma galinha ou um pato?
+
+Você estava na Minecon?
+
+Ninguém da Mojang já viu o rosto do Junkboy.
+
+Você sabia que existe um Wiki do Minecraft?
+
+O novo escritório da Mojang é maneiro!
+
+Minecraft: Xbox 360 Edition bateu muitos recordes!
+
+A Minecon 2013 foi em Orlando, na Flórida, EUA!
+
+.party() estava excelente!
+
+Considere os rumores sempre falsos, em vez de considerá-los verdadeiros!
+
+{*T3*}COMO JOGAR: NOÇÕES BÁSICAS{*ETW*}{*B*}{*B*}
+Minecraft é um jogo que consiste em colocar blocos para construir qualquer coisa que imaginar. À noite os monstros aparecem; então, construa um abrigo antes que isso aconteça.{*B*}{*B*}
+Use {*CONTROLLER_ACTION_LOOK*}para olhar à sua volta.{*B*}{*B*}
+Use {*CONTROLLER_ACTION_MOVE*}para se mover.{*B*}{*B*}
+Pressione {*CONTROLLER_ACTION_JUMP*}para pular.{*B*}{*B*}
+Pressione {*CONTROLLER_ACTION_MOVE*}duas vezes para frente rapidamente para correr. Enquanto mantiver {*CONTROLLER_ACTION_MOVE*}pressionado para a frente, o personagem continuará correndo, a não ser que o tempo de corrida acabe ou que a Barra de Alimentos tenha menos de {*ICON_SHANK_03*}.{*B*}{*B*}
+Mantenha {*CONTROLLER_ACTION_ACTION*}pressionado para extrair e cortar usando a mão ou o que estiver segurando. Talvez seja necessário fabricar uma ferramenta para extrair alguns blocos.{*B*}{*B*}
+Se estiver segurando um item na mão, use {*CONTROLLER_ACTION_USE*}para utilizá-lo ou pressione {*CONTROLLER_ACTION_DROP*}para soltá-lo.
+
+{*T3*}COMO JOGAR: HUD{*ETW*}{*B*}{*B*}
+O HUD mostra informações sobre seu status; sua energia, o oxigênio restante quando está debaixo da água, seu nível de fome (é preciso comer para reabastecer) e sua armadura, se estiver usando uma. Se você perder energia, mas tiver uma barrra de alimentos com 9 ou mais {*ICON_SHANK_01*}, sua energia será reabastecida automaticamente. Comer reabastece sua barra de alimentos. {*B*}
+A Barra de Experiência também é mostrada aqui, com um valor numérico que mostra seu Nível de Experiência e a barra que indica quantos Pontos de Experiência são necessários para aumentar seu Nível de Experiência. Você ganha Pontos de Experiência coletando as Esferas de Experiência liberadas por multidões quando elas morrem, ao minerar alguns tipos de blocos, ao criar animais, pescar e fundir minérios na fornalha.{*B*}{*B*}
+Também mostra os itens disponíveis para uso. Use {*CONTROLLER_ACTION_LEFT_SCROLL*}e {*CONTROLLER_ACTION_RIGHT_SCROLL*}para trocar o item em sua mão.
+
+{*T3*}COMO JOGAR: INVENTÁRIO{*ETW*}{*B*}{*B*}
+Use {*CONTROLLER_ACTION_INVENTORY*}para ver seu inventário.{*B*}{*B*}
+Essa tela mostra os itens disponíveis para uso em sua mão e todos os outros itens que está carregando. Sua armadura também é mostrada aqui.{*B*}{*B*}
+Use{*CONTROLLER_MENU_NAVIGATE*}para mover o ponteiro. Use {*CONTROLLER_VK_A*}para pegar um item sob o ponteiro. Se houver mais de um item aqui, ele pegará todos ou você pode usar {*CONTROLLER_VK_X*}para pegar apenas metade deles.{*B*}{*B*}
+Mova o item com o ponteiro sobre outro espaço no inventário e coloque-o lá usando {*CONTROLLER_VK_A*}. Se tiver vários itens no ponteiro, use {*CONTROLLER_VK_A*}para colocar todos ou {*CONTROLLER_VK_X*}para colocar apenas um.{*B*}{*B*}
+Se o item sobre o qual você estiver for uma armadura, aparecerá uma dica de ferramenta para permitir a movimentação rápida para o espaço da armadura à direita no inventário.
+É possível mudar a cor da sua Armadura de Couro, tingindo-a. Faça isso no menu do estoque, segurando a tinta com o cursor, e em seguida apertando{*CONTROLLER_VK_X*} enquanto o cursor estiver sobre a peça que deseja tingir.
+
+
+{*T3*}COMO JOGAR: BAÚ{*ETW*}{*B*}{*B*}
+Depois de criar um baú, poderá colocá-lo no mundo e usá-lo com{*CONTROLLER_ACTION_USE*} para guardar itens do seu inventário.{*B*}{*B*}
+Use o ponteiro para mover itens entre o inventário e o baú.{*B*}{*B*}
+Os itens no baú ficarão guardados lá para você até devolvê-los ao inventário mais tarde.
+
+
+{*T3*}COMO JOGAR: BAÚ GRANDE{*ETW*}{*B*}{*B*}
+Dois baús colocados lado a lado serão combinados para formar um Baú Grande. Ele pode guardar ainda mais itens. {*B*}{*B*}
+É usado da mesma maneira que um baú normal.
+
+
+{*T3*}COMO JOGAR: FABRICAÇÃO{*ETW*}{*B*}{*B*}
+Na interface de fabricação, você pode combinar itens do seu inventário para criar novos tipos de itens. Use{*CONTROLLER_ACTION_CRAFTING*}para abrir a interface de fabricação.{*B*}{*B*}
+Role pelas guias na parte superior usando{*CONTROLLER_VK_LB*}e{*CONTROLLER_VK_RB*}para selecionar o tipo de item que deseja criar e, em seguida, use {*CONTROLLER_MENU_NAVIGATE*}para selecionar o item a ser criado.{*B*}{*B*}
+A área de fabricação mostra os itens necessários para criar o novo item. Pressione {*CONTROLLER_VK_A*}para criar o item e colocá-lo no inventário.
+
+
+{*T3*}COMO JOGAR: BANCADA{*ETW*}{*B*}{*B*}
+Você pode criar itens maiores usando uma bancada.{*B*}{*B*}
+Coloque a bancada no mundo e pressione{*CONTROLLER_ACTION_USE*} para usá-la.{*B*}{*B*}
+A fabricação de itens na bancada funciona da mesma maneira que a fabricação básica, mas você terá uma área maior para trabalhar e uma variedade maior de itens para criar.
+
+
+{*T3*}COMO JOGAR: FORNALHA{*ETW*}{*B*}{*B*}
+Com a fornalha você pode alterar os itens queimando-os. Por exemplo, você pode transformar minério de ferro em barras de ferro na fornalha.{*B*}{*B*}
+Coloque a fornalha no mundo e pressione{*CONTROLLER_ACTION_USE*} para usá-la.{*B*}{*B*}
+Você deve colocar combustível sob a fornalha e o item a ser queimado na parte superior. A fornalha acenderá e começará a funcionar.{*B*}{*B*}
+Quando os itens estiverem queimados, você poderá movê-los da área de saída para seu inventário.{*B*}{*B*}
+Se o item que você estiver examinando for um ingrediente ou combustível para a fornalha, aparecerão dicas de ferramenta para permitir a movimentação rápida para a fornalha.
+
+
+{*T3*}COMO JOGAR: DISTRIBUIDOR{*ETW*}{*B*}{*B*}
+O distribuidor é usado para projetar itens. Você deve colocar um acionador, como uma alavanca, ao lado do distribuidor para acioná-lo.{*B*}{*B*}
+Para encher o distribuidor com itens, pressione{*CONTROLLER_ACTION_USE*} e mova os itens desejados do inventário para ele.{*B*}{*B*}
+Então, quando usar o acionador, o distribuidor projetará um item.
+
+
+{*T3*}COMO JOGAR : POÇÕES{*ETW*}{*B*}{*B*}
+A criação de poções exige uma Barraca de Poções, que pode ser construída em uma bancada. Toda poção começa com uma garrafa de água, que é feita enchendo uma Garrafa de Vidro com água de um Caldeirão, ou de uma fonte de água.{*B*}
+A Barraca de Poções tem três espaços para garrafas, para fazer três poções ao mesmo tempo. Um ingrediente pode ser usado em todas as três garrafas, então sempre faça três poções ao mesmo tempo para aproveitar melhor seus recursos.{*B*}
+Ao colocar um ingrediente de poção na posição superior da Barraca de Poções, você terá uma poção básica depois de algum tempo. Ela não tem nenhum efeito por si só, mas se você colocar outro ingrediente com esta poção básica, terá uma poção com efeito.{*B*}
+Depois que você tiver esta poção, pode adicionar um terceiro ingrediente para fazer o efeito durar mais tempo (usando pó de Redstone), para ser mais intenso (usando Pó de Glowstone) ou para ser uma poção maligna (usando o Olho de Aranha Fermentado).{*B*}
+Você também pode adicionar pólvora a qualquer poção para transformá-la em uma Poção Tchibum, que pode ser atirada. Ao ser atirada, a Poção Tchibum aplicará o efeito da poção sobre toda a área em que cair.{*B*}
+
+Os ingredientes de origem das poções são :{*B*}{*B*}
+* {*T2*}Verruga do Submundo{*ETW*}{*B*}
+* {*T2*}Olho de Aranha{*ETW*}{*B*}
+* {*T2*}Açúcar{*ETW*}{*B*}
+* {*T2*}Lágrima de Ghast{*ETW*}{*B*}
+* {*T2*}Pó de Chamas{*ETW*}{*B*}
+* {*T2*}Creme de Magma{*ETW*}{*B*}
+* {*T2*}Melão Cintilante{*ETW*}{*B*}
+* {*T2*}Pó de Redstone{*ETW*}{*B*}
+* {*T2*}Pò de Glowstone{*ETW*}{*B*}
+* {*T2*}Olho de Aranha Fermentado{*ETW*}{*B*}{*B*}
+
+Você deve experimentar todas as combinações de ingredientes para descobrir todas as poções que pode fazer.
+
+
+{*T3*}INSTRUÇÕES DE JOGO: FEITIÇOS{*ETW*}{*B*}{*B*}
+Os Pontos de Experiência recolhidos quando um habitante morre ou quando certos blocos são extraídos ou fundidos numa fornalha podem ser usados para enfeitiçar algumas ferramentas, armaduras e livros.{*B*}
+Quando é colocada uma Espada, Arco, Machado, Picareta, Pá, Armadura ou Livro no orifício por baixo do livro na Mesa de Feitiços, os três botões à direita do orifício apresentam alguns feitiços e os respectivos custos em Níveis de Experiência.{*B*}
+Se você não tem Níveis de Experiência suficientes para usar, o custo aparecerá em vermelho, caso contrário, verde.{*B*}{*B*}
+O feitiço aplicado é selecionado aleatoriamente com base no custo apresentado.{*B*}{*B*}
+Se a Mesa de Feitiços estiver rodeada de Estantes (até um máximo de 15 Estantes), com um bloco de intervalo entre a Estante e a Mesa de Feitiços, o poder dos feitiços irá aumentar e serão vistos glifos misteriosos saindo do livro na Mesa de Feitiços.{*B*}{*B*}
+Todos os ingredientes para uma Mesa de Feitiços podem ser encontrados nas aldeias, extraindo nas minas ou cultivando no mundo.{*B*}{*B}
+Os Livros Encantados são usados na Bigorna para aplicar feitiços aos itens. Desta forma você tem maior controle sobre os feitiços que deseja em seus itens.{*B*}
+
+
+{*T3*}COMO JOGAR: CRIAÇÃO DE ANIMAIS{*ETW*}{*B*}{*B*}
+Para manter seus animais em um só lugar, construa uma área cercada de menos de 20x20 blocos e coloque seus animais nela. Isso fará com que ainda estejam lá quando você voltar para vê-los.
+
+
+{*T3*}COMO JOGAR: REPRODUÇÃO DE ANIMAIS{*ETW*}{*B*}{*B*}
+Os animais do Minecraft podem se reproduzir e produzir seus próprios filhotes!{*B*}
+Para que os animais se reproduzam, você deve dar a comida certa a eles para que entrem no "Modo do Amor".{*B*}
+Dê Trigo para uma vaca, vacogumelo ou ovelha, dê cenouras para um porco, dê Sementes de Trigo ou Verruga do Submundo a uma galinha ou dê qualquer tipo de carne a um lobo e eles começarão a procurar outro animal da mesma espécie que também esteja no Modo do Amor.{*B*}
+Quando dois animais da mesma espécie se encontrarem e ambos estiverem no Modo do Amor, eles se beijarão por alguns segundos e um filhote aparecerá. O filhote seguirá seus pais durante algum tempo, até crescer e se transformar em um animal adulto.{*B*}
+Depois de ficar no Modo do Amor, o animal não poderá entrar nele de novo por cinco minutos.{*B*}
+Há um limite para o número de animais que é possível ter em um mundo; portanto, os animais não se reproduzirão quando você já tiver muitos.
+
+{*T3*}COMO JOGAR: PORTAL DO SUBMUNDO{*ETW*}{*B*}{*B*}
+Pelo Portal do Submundo, o jogador pode viajar entre o mundo da Superfície e o Submundo. O Submundo pode ser usado para viajar rapidamente na Superfície, pois a distância de viagem, um bloco no Submundo, equivale a 3 blocos na Superfície; portanto, ao construir um portal no Submundo e sair por ele, você estará 3 vezes mais longe do seu ponto de entrada.{*B*}{*B*}
+São necessários no mínimo 3 blocos de Obsidiana para construir o portal, que deve ter 5 blocos de altura, 4 blocos de largura e 1 bloco de espessura. Quando a estrutura do portal estiver pronta, o espaço interno deverá ser queimado para ativá-lo. Isso pode ser feito usando o item Sílex e Aço ou o item Carga de Fogo.{*B*}{*B*}
+Exemplos de construção de portais são mostrados na figura à direita.
+
+
+{*T3*}COMO JOGAR: MULTIJOGADOR{*ETW*}{*B*}{*B*}
+O Minecraft no console Xbox 360 é um jogo multijogador por padrão. Se você estiver jogando em um modo de Alta Definição, poderá incluir outros jogadores conectando os controles e pressionando START em qualquer ponto durante o jogo.{*B*}{*B*}
+Ao iniciar ou participar de um jogo online, ele estará visível para as pessoas de sua lista de amigos (a não ser que você tenha selecionado Só Convidados como host do jogo) e, se eles entrarem no jogo, também estará visível para as pessoas da lista de amigos deles (se você tiver selecionado a opção Permitir Amigos dos Amigos).
+Quando estiver em um jogo, você poderá pressionar o botão BACK para ver a lista de todos os outros jogadores, ver os Cartões de Jogador deles, expulsar jogadores do jogo e convidar outras pessoas.
+
+
+{*T3*}COMO JOGAR: COMPARTILHANDO CAPTURAS DE TELA{*ETW*}{*B*}{*B*}
+Você pode capturar uma tela de seu jogo abrindo o menu Pausar e pressionando{*CONTROLLER_VK_Y*} para compartilhar no Facebook. Você verá uma versão em miniatura da captura de tela e poderá editar o texto associado à postagem no Facebook.{*B*}{*B*}
+Há um modo de câmera especial para essas capturas de tela, para que você possa ver a frente do seu personagem na captura: pressione {*CONTROLLER_ACTION_CAMERA*}até ter uma visão frontal do personagem antes de pressionar {*CONTROLLER_VK_Y*}para compartilhar.{*B*}{*B*}
+Gamertags não serão exibidas na captura de tela.
+
+
+{*T3*}COMO JOGAR: BANINDO NÍVEIS{*ETW*}{*B*}{*B*}
+Se você encontrar conteúdo ofensivo em um nível em que estiver jogando, poderá optar por adicioná-lo à sua lista de Níveis Banidos.
+Para isso, abra o menu Pausar e pressione {*CONTROLLER_VK_RB*}para selecionar a dica de ferramenta de Banir Nível.
+Se você tentar entrar nesse nível no futuro, será notificado de que ele está em sua lista de Níveis Banidos e poderá removê-lo da lista e continuar no nível ou sair.
+
+{*T3*}COMO JOGAR: MODO CRIATIVO{*ETW*}{*B*}{*B*}
+A interface do modo criativo permite que qualquer item do jogo seja movido para o inventário do jogador sem precisar minerar ou fabricar aquele item.
+Os itens no inventário do jogador não serão removidos quando forem colocados ou usados no mundo, e desta forma o jogador pode se concentrar na construção, em vez de coletar recursos.{*B*}
+Se você criar, carregar ou salvar um mundo no Modo Criativo, as atualizações de conquistas e de placar de líderes estarão desabilitadas nesse mundo, mesmo que ele seja carregado depois no Modo Sobrevivência.{*B*}
+Para voar quando estiver no Modo Criativo, pressione {*CONTROLLER_ACTION_JUMP*}duas vezes rapidamente. Para parar de voar, repita a ação. Para voar mais rápido, pressione {*CONTROLLER_ACTION_MOVE*}rapidamente duas vezes para frente enquanto estiver voando.
+No modo de voo, você pode manter pressionado {*CONTROLLER_ACTION_JUMP*}para se mover para cima e {*CONTROLLER_ACTION_SNEAK*}para se mover para baixo ou usar {*CONTROLLER_ACTION_DPAD_UP*}para se mover para cima, {*CONTROLLER_ACTION_DPAD_DOWN*}para se mover para baixo,
+{*CONTROLLER_ACTION_DPAD_LEFT*}para se mover para a esquerda e {*CONTROLLER_ACTION_DPAD_RIGHT*}para se mover para a direita.
+
+{*T3*}COMO JOGAR: OPÇÕES DE HOST E JOGADOR{*ETW*}{*B*}{*B*}
+
+{*T1*}Opções de Jogo{*ETW*}{*B*}
+Ao carregar ou criar um mundo, você pode pressionar o botão "Mais Opções" para entrar em um menu que permita maior controle sobre o jogo.{*B*}{*B*}
+
+ {*T2*}Jogador x Jogador{*ETW*}{*B*}
+ Quando habilitado, os jogadores podem causar danos a outros jogadores. Afeta somente o modo Sobrevivência.{*B*}{*B*}
+
+ {*T2*}Confiar nos Jogadores{*ETW*}{*B*}
+ Quando desabilitado, os jogadores que entram no jogo têm restrições quanto ao que podem fazer. Eles não podem minerar nem usar itens, colocar blocos, usar portas e interruptores, usar recipientes nem atacar jogadores ou animais. Você pode mudar estas opções de um jogador específico usando o menu do jogo.{*B*}{*B*}
+
+ {*T2*}Fogo Espalha{*ETW*}{*B*}
+ Quando habilitado, o fogo poderá se espalhar até blocos inflamáveis próximos. Esta opção também pode ser mudada no jogo.{*B*}{*B*}
+
+ {*T2*}TNT Explode{*ETW*}{*B*}
+ Quando habilitado, a TNT explodirá quando ativada. Esta opção também pode ser mudada no jogo.{*B*}{*B*}
+
+ {*T2*}Privilégios do Host{*ETW*}{*B*}
+ Quando habilitado, o host pode ativar ou desativar no menu do jogo sua habilidade de voar, desativar a exaustão e ficar invisível. {*DISABLES_ACHIEVEMENTS*}{*B*}{*B*}
+
+{*T1*}Opções de Geração de Mundo{*ETW*}{*B*}
+Ao criar um novo mundo, há algumas opções adicionais.{*B*}{*B*}
+
+ {*T2*}Gerar Estruturas{*ETW*}{*B*}
+ Quando habilitado, estruturas como Vilas ou Fortalezas serão geradas no mundo.{*B*}{*B*}
+
+ {*T2*}Mundo Superplano{*ETW*}{*B*}
+ Quando habilitado, um mundo completamente plano será gerado na Superfície e no Submundo.{*B*}{*B*}
+
+ {*T2*}Baú de Bônus{*ETW*}{*B*}
+ Quando habilitado, um baú contendo alguns itens úteis será criado perto do ponto de criação do jogador.{*B*}{*B*}
+
+ {*T2*}Reiniciar Submundo{*ETW*}{*B*}
+ Quando ativado, o Submundo é recriado. É útil quando se tem um jogo salvo mais antigo em que as Fortalezas do Submundo não estavam presentes.{*B*}{*B*}
+
+ {*T1*}Opções no Jogo{*ETW*}{*B*}
+ Durante o jogo, várias opções podem ser acessadas pressionando BACK para abrir o menu do jogo.{*B*}{*B*}
+
+ {*T2*}Opções do Host{*ETW*}{*B*}
+ O jogador host e os jogadores definidos como moderadores podem acessar o menu "Opção do Host". Neste menu, eles podem habilitar e desabilitar as opções Fogo Espalha e TNT Explode.{*B*}{*B*}
+
+{*T1*}Opções do Jogador{*ETW*}{*B*}
+Para modificar os privilégios de um jogador, selecione o nome dele e pressione {*CONTROLLER_VK_A*} para abrir o menu privilégios do jogador, onde você poderá usar as opções a seguir.{*B*}{*B*}
+
+ {*T2*}Pode Construir e Minerar{*ETW*}{*B*}
+ Esta opção só está disponível quando "Confiar nos Jogadores" está ativado. Quando esta opção está habilitada, o jogador pode interagir com o mundo normalmente. Quando está desativada, o jogador não pode colocar nem destruir blocos, nem interagir com muitos itens e blocos.{*B*}{*B*}
+
+ {*T2*}Pode utilizar portas e interruptores{*ETW*}{*B*}
+ Esta opção só está disponível quando “Confiar nos Jogadores” está desativada. Quando esta opção estiver desabilitada, o jogador não poderá utilizar portas e interruptores.{*B*}{*B*}
+
+ {*T2*}Pode abrir containers{*ETW*}{*B*}
+ Esta opção só está disponível quando “Confiar nos Jogadores” está desativada. Quando esta opção estiver desabilitada, o jogador não poderá abrir containers, tais como baús.{*B*}{*B*}
+
+ {*T2*}Pode Atacar Jogadores{*ETW*}{*B*}
+ Esta opção só está disponível quando "Confiar nos Jogadores" está desativado. Quando esta opção estiver desabilitada o jogador não poderá causar danos a outros jogadores.{*B*}{*B*}
+
+ {*T2*}Pode atacar animais{*ETW*}{*B*}
+ Esta opção só está disponível quando “Confiar nos Jogadores” está desativada. Quando a opção estiver desabilitada, o jogador não poderá causar nenhum dano em animais.{*B*}{*B*}
+
+ {*T2*}Moderador{*ETW*}{*B*}
+ Quando esta opção está habilitada, o jogador pode usar algumas das opções do menu do jogo para mudar privilégios de outros jogadores e algumas opções de mundo.{*B*}{*B*}
+
+ {*T2*}Expulsar Jogador{*ETW*}{*B*}
+ Para os jogadores que não estão no mesmo console {*PLATFORM_NAME*} que o jogador host, selecionar esta opção faz o jogador e todos os jogadores que estiverem no console {*PLATFORM_NAME*} dele serem expulsos do jogo. Este jogador não poderá voltar ao jogo até que ele seja reiniciado.{*B*}{*B*}
+
+{*T1*}Opções do Jogador Host{*ETW*}{*B*}
+Se "Privilégios do Host" estiver habilitado, o jogador host poderá modificar alguns privilégios para si mesmo. Para modificar os privilégios de um jogador, selecione o nome dele e pressione {*CONTROLLER_VK_A*} para abrir o menu privilégios do jogador, onde você pode usar as opções a seguir.{*B*}{*B*}
+
+ {*T2*}Pode Voar{*ETW*}{*B*}
+ Quando esta opção está habilitada, o jogador pode voar. Esta opção só afeta o modo de Sobrevivência, pois todos os jogadores podem voar no modo Criativo.{*B*}{*B*}
+
+ {*T2*}Desabilitar Exaustão{*ETW*}{*B*}
+ Esta opção só afeta o modo de Sobrevivência. Quando habilitado, as atividades físicas (voar/correr/pular etc.) não diminuem a barra de alimentos. Entretanto, se o jogador estiver ferido, a barra de alimentos diminuirá lentamente enquanto ele estiver se curando.{*B*}{*B*}
+
+ {*T2*}Invisível{*ETW*}{*B*}
+ Quando esta opção está habilitada, o jogador não está visível para outros jogadores e é invulnerável.{*B*}{*B*}
+
+ {*T2*}É possível Teleportar{*ETW*}{*B*}
+ Isto permite que o jogador mova a si mesmo ou outros jogadores para outros jogadores no mundo.
+
+
+Próxima Página
+
+Página Anterior
+
+Noções Básicas
+
+HUD
+
+Inventário
+
+Baús
+
+Fabricação
+
+Fornalha
+
+Distribuidor
+
+Criação de Animais
+
+Reprodução de Animais
+
+Poções
+
+Feitiços
+
+Portal do Submundo
+
+Multijogador
+
+Compartilhando Capturas de Tela
+
+Banindo Níveis
+
+Modo Criativo
+
+Opções de Host e Jogador
+
+Negociando
+
+Bigorna
+
+Final
+
+{*T3*}COMO JOGAR: O FINAL{*ETW*}{*B*}{*B*}
+O Final é outra dimensão no jogo que se alcança através de um Portal Final ativo. O Portal Final pode ser encontrado em uma Fortaleza, nas profundezas da Superfície.{*B*}
+Para ativar o Portal Final, você terá de colocar um Olho de Ender em qualquer Estrutura do Portal Final que não tenha um.{*B*}
+Quando o portal estiver ativo, pule nele para ir para o Final.{*B*}{*B*}
+No Final você encontrará o Dragão Ender, um inimigo violento e poderoso, além de muitos Endermens; então, prepare-se muito bem para a batalha antes de ir para lá!{*B*}{*B*}
+Você encontrará Cristais de Ender sobre oito estacas de Obsidiana que o Dragão Ender usa para se curar;
+portanto, a primeira etapa da batalha é destruir cada uma delas.{*B*}
+As primeiras é possível alcançar com flechas, mas as últimas estão protegidas por uma gaiola com Cerca de Ferro e você terá de chegar até elas.{*B*}{*B*}
+Enquanto estiver fazendo isso, o Dragão Ender estará atacando você, voando em você e cuspindo bolas de ácido Ender.{*B*}
+Se você se aproximar do Pódio do Ovo no centro das estacas, o Dragão Ender voará para baixo e o atacará e é nesse momento que você pode realmente causar algum dano a ele!{*B*}
+Evite o sopro ácido e mire nos olhos do Dragão Ender para obter os melhores resultados. Se possível, traga alguns amigos para o Final para ajudá-lo na batalha.{*B*}{*B*}
+Quando você estiver no Final, seus amigos poderão ver a localização do Portal Final dentro da Fortaleza nos respectivos mapas;
+portanto, poderão facilmente se juntar a você.
+
+
+Correr
+
+O Que Há de Novo
+
+
+{*T3*}Alterações e adições {*ETW*}{*B*}{*B*}
+- Novos itens adicionados -Esmeralda, Minério de Esmeralda, Bloco de Esmeralda, Baú Ender, Gancho Disparador, Maçã Dourada Encantada, Bigorna, Vaso de Flor, Parede de Paralelepípedos, Paredes de Parelelepípedos com Musgo, Pintura Podre, Batata, Batata Cozida, Batata Venenosa, Cenoura, Cenoura Dourada, Cenoura na Vareta, Torta de Abóbora, Poção de Visão Noturna, Poção da Invisibilidade, Quartzo, Minério de Quartzo, Bloco de Quartzo, Laje de Quartzo, Escada de Quartzo, Bloco de Quartzo Cinzelado, Coluna de Bloco de Quartzo, Livro Encantado, Tapete.{*B*}
+- Novos recipientes adicionados para arenito macio e arenito cinzelado.{*B*}
+- Nova multidão adicionada - Aldeões zumbis.{*B*}
+- Adicionados novos recursos de geração de terreno - Templos do Deserto, Aldeias Desertas, Templos de Selva.{*B*}
+- Adicionado o comércio com aldeões.{*B*}
+- Adicionada interface de bigorna.{*B*}
+- Armadura de couro tingido.{*B*}
+- Colar de lobo tingido.{*B*}
+- Montaria no porco com uma cenoura na vareta.{*B*}
+- Bônus de baú melhorado contendo mais itens.{*B*}
+- Alteradas as posições de meio blocos e outros blocos em meio blocos.{*B*}
+- Alteradas as posições de escadas invertidas e lajes.{*B*}
+- Adicionadas profissões de cidadões.{*B*}
+- Cidadãos vindos de ovos terão uma profissão aleatória.{*B*}
+- Adicionado log unilateral.{*B*}
+- Fornos podem usar ferramentas de madeira como combustível.{*B*}
+- Painéis de gelo e vidro podem ser coletados com pequenos toques de ferramentas encantadas.{*B*}
+- Botões de madeira e pratos de pressão de madeira podem ser ativados com flechas.{*B*}
+- Pequenas multidões podem aparecer em portais no submundo.{*B*}
+- Rastejantes e aranhas são agressivos com o último jogador que acertá-los.{*B*}
+- Multidões no modo criativo ficam neutras novamente depois de um curto período.{*B*}
+- Contra-ataque removido quando afogar.{*B*}
+- Portas sendo quebradas por zumbis mostram danos.{*B*}
+- Gelo derrete no submundo.{*B*}
+- Calderões enchem quando estiver sem chuva.{*B*}
+- Pistões levam o dobro de tempo para melhorar.{*B*}
+- O Porco derruba a cela ao ser morto (se tiver uma).{*B*}
+- Cor do céu No Fim alterada.{*B*}
+- Barbante pode ser substituído (por corda).{*B*}
+- Chuva pinga das folhas.{*B*}
+- Alavancas podem ser colocadas em baixo dos blocos.{*B*}
+- TNT causa dano variável dependendo da configuração de dificuldade.{*B*}
+- Livro de receitas alterado.{*B*}
+- Barcos quebram lírios, ao invés de lírios quebrarem barcos.{*B*}
+- Porcos oferecem mais costeletas.{*B*}
+- Lodos aparecem menos em mundos retos.{*B*}
+- Rastejadores têm danos variáveis baseado na configuração de dificuldade, mais contra-ataque.{*B*}
+- Endermen consertados para não abrir suas mandíbulas.{*B*}
+- Adicionado teleporte de jogadores (usando o menu {*BACK_BUTTON*} no jogo).{*B*}
+-Adicionados novas opções de vôo, invisibilidade e invulnerabilidade para jogadores remotos.{*B*}
+- Adicionados novos tutoriais para o Mundo do Tutorial para novos itens e recursos.{*B*}
+- Melhorada a posição para o baú de discos musicais no Mundo do Tutorial.{*B*}
+
+
+{*ETB*}Bem-vindo de volta! Talvez você não tenha notado que o seu Minecraft foi atualizado.{*B*}{*B*}
+Há muitos recursos novos para você e seus amigos experimentarem, aqui estão apenas alguns destaques. Dê uma lida e divirta-se!{*B*}{*B*}
+{*T1*}Novos itens{*ETB*} - Esmeralda, Minério de Esmeralda, Bloco de Esmeralda, Baú Ender, Gancho Disparador, Maçã Dourada Encantada, Bigorna, Vaso de Flor, Parede de Paralelepípedos, Paredes de Parelelepípedos com Musgo, Pintura Podre, Batata, Batata Cozida, Batata Venenosa, Cenoura, Cenoura Dourada, Cenoura na Vareta, Torta de Abóbora, Poção de Visão Noturna, Poção da Invisibilidade, Quartzo, Minério de Quartzo, Bloco de Quartzo, Laje de Quartzo, Escada de Quartzo, Bloco de Quartzo Cinzelado, Coluna de Bloco de Quartzo, Livro Encantado, Tapete{*B*}{*B*}
+{*T1*}Novas multidões{*ETB*} - Aldeões zumbis.{*B*}{*B*}\r\n{*T1*}Novos recursos{*ETB*} - Comércio com aldeões, consertar ou encantar armas e ferramentas com uma Bigorna, armazenar itens em um Baú Ender, controle de um porco enquanto o monta usando uma cenoura na vareta!{*B*}{*B*}\r\n{*T1*}Novos Mini-tutoriais{*ETB*} – Saiba como usar os novos recursos no Tutorial do Mundo!{*B*}{*B*}\r\n{*T1*}Novos "Ovos de Páscoa"{*ETB*} – Movemos todos os Discos de música secretos no Mundo do Tutorial. Veja se consegue encontrá-los novamente!{*B*}{*B*}\r\n
+
+Causa mais danos que à mão.
+
+Usada para cavar terra, grama, areia, cascalho e neve mais rápido que à mão. As pás são necessárias para cavar bolas de neve.
+
+Necessário para extrair blocos relacionados à pedra e minério.
+
+Usado para cortar blocos relacionados à madeira mais rápido que à mão.
+
+Usada para trabalhar blocos de terra e grama para preparar para plantação.
+
+Portas de madeira são ativadas quando usadas, atingidas ou com Redstone.
+
+Portas de ferro só podem ser abertas com Redstone, botões ou acionadores.
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+Fornece 1 de Armadura ao usuário.
+
+Dá ao usuário 3 de Armadura quando usado.
+
+Fornece 2 de Armadura ao usuário.
+
+Fornece 1 de Armadura ao usuário.
+
+Fornece 2 de Armadura ao usuário.
+
+Fornece 5 de Armadura ao usuário.
+
+Dá ao usuário 4 de Armadura quando usado.
+
+Fornece 1 de Armadura ao usuário.
+
+Fornece 2 de Armadura ao usuário.
+
+Fornece 6 de Armadura ao usuário.
+
+Fornece 5 de Armadura ao usuário.
+
+Fornece 2 de Armadura ao usuário.
+
+Fornece 2 de Armadura ao usuário.
+
+Fornece 5 de Armadura ao usuário.
+
+Dá ao usuário 3 de Armadura quando usado.
+
+Fornece 1 de Armadura ao usuário.
+
+Dá ao usuário 3 de Armadura quando usado.
+
+Fornece 8 de Armadura ao usuário.
+
+Fornece 6 de Armadura ao usuário.
+
+Dá ao usuário 3 de Armadura quando usado.
+
+Uma barra brilhante que pode ser usada para fabricar ferramentas desse material. Criada ao fundir minério na fornalha.
+
+Permite fabricar barras, pedras preciosas ou corantes em blocos posicionáveis. Pode ser usado como um bloco caro de construção ou para armazenamento compacto do minério.
+
+Usado para enviar carga elétrica quando pisado por um jogador, animal ou monstro. As chapas de pressão de madeira também podem ser ativadas deixando algo cair sobre elas.
+
+Usada para obter escadas compactas.
+
+Usado para fazer escadas longas. Dois degraus colocados um sobre o outro criam um bloco de degrau duplo de tamanho normal.
+
+Usado para fazer escadas longas. Dois degraus colocados um sobre o outro criarão um bloco com dois degraus e com tamanho normal.
+
+Usada para iluminar. As tochas também derretem neve e gelo.
+
+Usada como material de construção; pode ser usada para fabricar muitas coisas. Pode ser fabricada com qualquer tipo de madeira.
+
+Usado como material de construção. Não sofre ação da gravidade como a areia normal.
+
+Usado como material de construção.
+
+Usado para fabricar tochas, flechas, placas, escadas de mão, cercas e como cabos de ferramentas e armas.
+
+Usada para adiantar o tempo de qualquer ponto da noite até a manhã, se todos os jogadores no mundo estiverem na cama, e mudar o ponto de criação do jogador.
+As cores da cama são sempre as mesmas, independentemente da cor da lã usada.
+
+Permite fabricar maior variedade de itens que a fabricação normal.
+
+Permite fundir minério, fazer carvão e vidro e cozinhar peixe e costeletas de porco.
+
+Armazena blocos e itens no interior. Coloque dois baús lado a lado para criar um baú maior com o dobro da capacidade.
+
+Usado como barreira que não pode ser pulada. Conta como 1,5 bloco de altura para jogadores, animais e monstros, mas como 1 bloco de altura para outros blocos.
+
+Usada para escalar verticalmente.
+
+Ativados quando usados, atingidos ou com Redstone. Funcionam como portas normais, mas são blocos de um por um e são colocados diretamente no chão.
+
+Mostra o texto digitado por você ou por outros jogadores.
+
+Usado para iluminar mais que tochas. Derrete neve/gelo e pode ser usado embaixo d'água.
+
+Usado para causar explosões. Ativado após a colocação com ignição por Sílex e Aço ou com carga elétrica.
+
+Usada para guardar sopa de cogumelo. Você fica com a vasilha depois de comer a sopa.
+
+Usado para guardar e transportar água, lava e leite.
+
+Usado para armazenar e transportar água.
+
+Usado para armazenar e transportar lava.
+
+Usado para armazenar e transportar leite.
+
+Usado para criar fogo, detonar TNT e abrir um portal depois de construído.
+
+Usada para pegar peixes.
+
+Mostra as posições do sol e da lua.
+
+Aponta para seu ponto inicial.
+
+Cria uma imagem da área explorada enquanto você o segura. Pode ser usado para encontrar caminhos.
+
+Permite ataques à distância usando flechas.
+
+Usada como munição para arcos.
+
+Restaura 2,5{*ICON_SHANK_01*}.
+
+Restaura 1{*ICON_SHANK_01*}. Pode ser usado 6 vezes.
+
+Restaura 1{*ICON_SHANK_01*}.
+
+Restaura 1{*ICON_SHANK_01*}.
+
+Restaura 3{*ICON_SHANK_01*}.
+
+Restaura 1{*ICON_SHANK_01*}, ou pode ser cozinhado na fornalha. Comer assim pode te envenenar.
+
+Restaura 3{*ICON_SHANK_01*}. Criado ao cozinhar a carne crua na fornalha.
+
+Restaura 1,5{*ICON_SHANK_01*}, ou pode ser cozinhado na fornalha.
+
+Restaura 4{*ICON_SHANK_01*}. Criado ao cozinhar a carne crua na fornalha.
+
+Restaura 1.5{*ICON_SHANK_01*}, ou pode ser cozinhado na fornalha.
+
+Restaura 4{*ICON_SHANK_01*}. Criado ao cozinhar a carne crua na fornalha.
+
+Restaurar 1{*ICON_SHANK_01*} ou pode ser cozinhado na fornalha. Também pode ser dado para o Ocelote comer, para torná-lo amigável.
+
+Restaurar 2,5{*ICON_SHANK_01*}. Criado ao cozinhar a carne crua na fornalha.
+
+Restaura 2{*ICON_SHANK_01*} e pode ser usada para fabricar uma maçã dourada.
+
+Restaura 2{*ICON_SHANK_01*} e regenera a energia por 4 segundos. Criado com uma maçã e barras de ouro.
+
+Restaura 2{*ICON_SHANK_01*}. Comer isso pode te envenenar.
+
+Usado em receita de bolo, e como ingrediente de poções.
+
+Usado para enviar uma carga elétrica ao ser ligado ou desligado. Fica na posição ligado ou desligado até ser apertado novamente.
+
+Envia constantemente uma carga elétrica ou pode ser usado como receptor/transmissor quando conectado à lateral de um bloco.
+Também pode ser usado para pouca iluminação.
+
+Usado em circuitos de Redstone como repetidor, retardador e/ou diodo.
+
+Usado para enviar uma carga elétrica ao ser pressionado. Continua ativado por cerca de um segundo antes de desligar novamente.
+
+Usado para guardar e projetar itens em ordem aleatória quando recebe uma carga de Redstone.
+
+Reproduz uma nota quando acionado. Acerte-o para alterar o tom da nota. Se for colocado sobre blocos diferentes, alterará o tipo de instrumento.
+
+Usado para guiar carrinhos de minas.
+
+Quando ativado, acelera os carrinhos de minas que passam sobre ele. Quando desativado, faz os carrinhos pararem nele.
+
+Funciona como uma chapa de pressão (envia um sinal Redstone quando ativado), mas só pode ser ativado por um carrinho de minas.
+
+Usado para transportar você, um animal ou um monstro sobre trilhos.
+
+Usado para transportar mercadorias sobre trilhos.
+
+Andará sobre trilhos e poderá empurrar outros carrinhos de minas, se for colocado carvão nele.
+
+Usado para viajar pela água mais rapidamente do que nadando.
+
+Coletada das ovelhas, pode ser tingida com corantes.
+
+Usado como material de construção e pode ser tingido com corantes. Esta receita não é recomendada porque a lã pode ser obtida facilmente das ovelhas.
+
+Usado como corante para criar lã preta.
+
+Usado como corante para criar lã verde.
+
+Usado como corante para criar lã marrom, como ingrediente de biscoitos ou para cultivar Vagens de Cacau.
+
+Usado como corante para criar lã prateada.
+
+Usado como corante para criar lã amarela.
+
+Usado como corante para criar lã vermelha.
+
+Usado para fazer brotar instantaneamente colheitas, árvores, grama alta, cogumelos enormes e flores. Pode ser usado em receitas de corantes.
+
+Usado como corante para criar lã rosa.
+
+Usado como corante para criar lã laranja.
+
+Usado como corante para criar lã verde-lima.
+
+Usado como corante para criar lã cinza.
+
+Usado como corante para criar lã cinzenta.
+(Observação: o corante cinzento também pode ser criado combinando corante cinza com farelo de osso, permitindo criar quatro corantes cinzentos com cada saco de tinta, em vez de três.)
+
+Usado como corante para criar lã azul-claro.
+
+Usado como corante para criar lã ciano.
+
+Usado como corante para criar lã roxa.
+
+Usado como corante para criar lã magenta.
+
+Usado como corante para criar lã azul.
+
+Toca discos de música.
+
+Usado para criar ferramentas, armas ou armaduras muito fortes.
+
+Usado para iluminar mais que tochas. Derrete neve/gelo e pode ser usado embaixo d'água.
+
+Usado para criar livros e mapas.
+
+Usado para criar uma estante de livros ou enfeitiçado para fazer Livros Encantados.
+
+Permite a criação de feitiços mais poderosos quando colocado ao redor de uma Mesa de Feitiços.
+
+Usada como decoração.
+
+Pode ser extraído com uma picareta de ferro ou de material melhor e depois fundido na fornalha para produzir barras de ouro.
+
+Pode ser extraído com uma picareta de pedra ou de material melhor e depois fundido na fornalha para produzir barras de ferro.
+
+Pode ser extraído com uma picareta para coletar carvão.
+
+Pode ser extraído com uma picareta de pedra ou de material melhor para coletar lápis-azul.
+
+Pode ser extraído com uma picareta de ferro ou de material melhor para coletar diamantes.
+
+Pode ser extraído com uma picareta de ferro ou de material melhor para coletar pó de redstone.
+
+Pode ser extraída com uma picareta para coletar pedregulhos.
+
+Coletada com uma pá. Pode ser usada para construção.
+
+Pode ser plantada e quando crescer será uma árvore.
+
+Não pode ser quebrada.
+
+Ateia fogo em qualquer coisa que a toca. Pode ser coletada em um balde.
+
+Coletada com uma pá. Pode ser fundida em vidro usando a fornalha. Sofrerá ação da gravidade se não houver outra peça sob ela.
+
+Coletado com uma pá. Pode produzir sílex quando cavado. Sofrerá ação da gravidade se não houver outra peça sob ele.
+
+Cortada com um machado; pode ser usada para fabricar tábuas ou como combustível.
+
+Criado na fornalha ao fundir areia. Pode ser usado para construção, mas quebrará se tentar extraí-lo.
+
+Extraído de pedra usando uma picareta. Pode ser usado para construir uma fornalha ou ferramentas de pedra.
+
+Argila cozida na fornalha.
+
+Pode ser cozida na fornalha para fazer tijolos.
+
+Quando quebrado, derruba bolas de argila que podem ser cozidas para fazer tijolos na fornalha.
+
+Um modo compacto de armazenar bolas de neve.
+
+Pode ser cavada com uma pá para criar bolas de neve.
+
+Pode produzir sementes de trigo quando quebrada.
+
+Pode ser usada para fabricar corante.
+
+Pode ser combinado com uma vasilha para fabricar sopa.
+
+Só pode ser extraída com uma picareta de diamante. É produzida pelo encontro de água e lava parada e é usada para construir um portal.
+
+Gera monstros no mundo.
+
+É colocado no chão para transportar uma carga elétrica. Quando cozido com uma poção, aumentará a duração do efeito.
+
+Quando alcançarem a fase de pleno crescimento, as colheitas poderão ser coletadas para obter trigo.
+
+Solo que foi preparado para o plantio de sementes.
+
+Pode ser cozido em uma fornalha para fabricar corante verde.
+
+Pode ser usada para fabricar açúcar.
+
+Pode ser usada como capacete ou combinada com uma tocha para fabricar uma lanterna de abóbora. Também é o ingrediente principal da Torta de Abóbora.
+
+Queima para sempre se for acesa.
+
+Torna mais lento o movimento de quem anda sobre ele.
+
+Pare no portal para atravessar entre a Superfície e o Submundo.
+
+Usado como combustível na fornalha ou para fabricar uma tocha.
+
+Coletado ao matar uma aranha e pode ser usado para fabricar um arco ou vara de pescar, ou colocado no chão para criar um Disparador.
+
+Coletada ao matar uma galinha e pode ser usada para fabricar uma flecha.
+
+Coletada ao matar um creeper e pode ser usada para fabricar TNT, ou usada como ingrediente em poções.
+
+Pode ser plantada no campo para colheita. Verifique se há luz suficiente para as sementes crescerem!
+
+Coletado nas colheitas e pode ser usado para fabricar alimentos.
+
+Coletado ao cavar cascalho e pode ser usado para fabricar sílex e aço.
+
+Quando usada em um porco, permite montar nele. O porco poderá ser direcionado usando uma cenoura na vareta.
+
+Coletada ao cavar neve e pode ser atirada.
+
+Coletado ao matar uma vaca e pode ser usado para fabricar uma armadura ou para fazer livros.
+
+Coletado ao matar um slime, e usado como ingrediente de poções ou fabricar Pistões Aderentes.
+
+As galinhas soltam aleatoriamente e pode ser usado para fabricar alimentos.
+
+Coletado ao extrair Glowstone e pode ser usado para fabricar blocos de Glowstone novamente ou cozido com uma poção para aumentar a potência do efeito.
+
+Coletado ao matar um esqueleto. Pode ser usado para fabricar farelo de osso. Você pode alimentar um lobo com isto para domá-lo.
+
+Coletado ao fazer um esqueleto matar um creeper. Pode ser tocado em uma jukebox.
+
+Apaga o fogo e ajuda as plantações a crescerem. Pode ser coletada em um balde.
+
+Quando quebrada, às vezes derruba uma muda que pode ser replantada para se tornar uma árvore.
+
+Encontrada em masmorras, pode ser usada para construção e decoração.
+
+Usado para obter lã da ovelha e colher blocos de folhas.
+
+Quando acionado (usando um botão, alavanca, placa de pressão, tocha de redstone ou redstone com algum destes), um pistão estende-se, se possível, e empurra blocos.
+
+Quando acionado (usando um botão, alavanca, placa de pressão, tocha de redstone ou redstone com algum destes), um pistão estende-se, se possível, e empurra blocos. Quando se retrai, puxa o bloco novamente, tocando a parte estendida do pistão.
+
+Feita com blocos de pedra, geralmente encontrada em Fortalezas.
+
+Usado como barreira, semelhante às cercas.
+
+Semelhante a uma porta, mas usado principalmente com cercas.
+
+Pode ser fabricado com Fatias de Melão.
+
+Blocos transparentes que podem ser usados no lugar dos blocos de vidro.
+
+Podem ser plantadas para cultivar abóboras.
+
+Podem ser plantadas para cultivar melões.
+
+Derrubado pelo Enderman quando ele morre. Quando atirado, o jogador será teleportado até a posição em que a Pérola do Ender cair e perderá um pouco de energia.
+
+Um bloco de terra com grama crescendo sobre ela. Coletado usando uma pá. Pode ser usado para construção.
+
+Pode ser usada para construção e decoração.
+
+Deixa o movimento mais lento quando atravessada. Pode ser destruída usando tosquiadeiras para coletar fios.
+
+Cria uma Traça quando destruída. Também pode criar Traças se estiver perto de outra Traça que esteja sendo atacada.
+
+Cresce ao longo do tempo quando colocada. Pode ser coletada usando tosquiadeiras. Pode ser escalada como uma escada.
+
+É escorregadio. Transforma-se em água se estiver sobre outro bloco quando destruído. Derrete se estiver muito perto de uma fonte de luz ou quando colocado no Submundo.
+
+Pode ser usado como decoração.
+
+Usado para fazer poções e para localizar Fortalezas. É derrubado pelas Chamas que ficam dentro ou perto das Fortalezas do Submundo.
+
+Usado para fazer poções. É derrubado pelos Ghasts, quando eles morrem.
+
+É derrubado pelos Homens-Porco Zumbis quando eles morrem. Os Homens-Porco Zumbis podem ser encontrados no Submundo. É usado como ingrediente de poções.
+
+Usado para fazer poções. Pode ser encontrado naturalmente nas Fortalezas do Submundo. Também pode ser plantado na Areia Movediça.
+
+Quando usada pode ter vários efeitos, dependendo de onde for usada.
+
+Pode ser enchida com água e usada como o ingrediente inicial de uma poção na Barraca de Poções.
+
+Este é um alimento venenoso e item de poção. É derrubado quando uma Aranha ou Aranha de Caverna é morta por um jogador.
+
+Usado para fazer poções, especialmente para criar poções com efeito negativo.
+
+Usado para fazer poções ou fabricado com outros itens para fazer o Olho de Ender ou o Creme de Magma.
+
+Usado para fazer poções.
+
+Usado para fazer Poções e Poções Tchibum.
+
+Pode ser enchido com água usando um balde de água, e pode ser usado para encher Garrafas de Vidro com água.
+
+Quando atirado, mostrará a direção para um Portal Final. Quando doze deles forem colocados nas estruturas do Portal Final, o Portal Final será ativado.
+
+Usado para fazer poções.
+
+Similar aos Blocos de Grama, mas muito bom para cultivar cogumelos.
+
+Flutua na água e permite andar em cima.
+
+Usado para construir Fortalezas do Submundo. É imune às bolas de fogo do Ghast.
+
+Usado em Fortalezas do Submundo.
+
+Encontrado em Fortalezas do Submundo; derruba Verrugas do Submundo quando quebrado.
+
+Desta forma os jogadores podem enfeitiçar Espadas, Picaretas, Machados, Pás, Arcos e Armadura, usando os Pontos de Experiência do jogador.
+
+Isto pode ser ativado usando doze Olhos de Ender, e o jogador poderá viajar até a dimensão Final.
+
+Usado para formar um Portal Final.
+
+Um tipo de bloco encontrado no Final. Ele tem resistência muito alta a explosões, portanto, é bem útil para construções.
+
+Este bloco é criado ao derrotar o Dragão no Final.
+
+Quando atirada, derruba Esferas de Experiência que aumentam seus pontos de experiência quando coletadas.
+
+Útil para incendiar as coisas, ou para iniciar fogos aleatórios quando lançado de um Distribuidor.
+
+É semelhante a uma vitrine e exibirá o item ou bloco colocado nele.
+
+Quando lançado pode criar uma criatura do tipo indicado.
+
+Usado para fazer escadas longas. Dois degraus colocados um sobre o outro criam um bloco de degrau duplo de tamanho normal.
+
+Usado para fazer escadas longas. Dois degraus colocados um sobre o outro criam um bloco de degrau duplo de tamanho normal.
+
+Criado pela fusão de Pedra Inflamável em uma fornalha. Pode ser transformado em Blocos do Submundo.
+
+Quando carregado, ele emite luz.
+
+Pode ser cultivado para coletar grãos de cacau.
+
+As Cabeças de multidão podem ser colocadas como decoração, ou usadas como máscara na abertura do capacete.
+
+Lula
+
+Solta sacos de tinta quando morta.
+
+Vaca
+
+Solta couro quando morta. Pode ser ordenhada com um balde.
+
+Ovelha
+
+Solta lã quando tosquiada (se já não tiver sido tosquiada). Pode ser tingida para produzir lã de cores diferentes.
+
+Galinha
+
+Solta penas quando morta e põe ovos aleatoriamente.
+
+Porco
+
+Solta costeletas quando morto. Pode ser montado usando uma sela.
+
+Lobo
+
+Dócil até ser atacado, quando atacará de volta. Pode ser domado usando ossos, o que faz o lobo segui-lo e atacar qualquer coisa que ataque você.
+
+Creeper
+
+Explode se você chegar muito perto!
+
+Esqueleto
+
+Dispara flechas em você. Solta flechas quando morto.
+
+Aranha
+
+Ataca quando você chega perto. Escala paredes. Solta fio quando morta.
+
+Zumbi
+
+Ataca quando você chega perto.
+
+Homem-porco zumbi
+
+Inicialmente dócil, mas ataca em grupos se você ataca um deles.
+
+Ghast
+
+Atira bolas de fogo em você, que explodem ao contato.
+
+Slime
+
+Divide-se em slimes menores quando atingido.
+
+Enderman
+
+Atacará se você olhar para ele. Também pode mover blocos.
+
+Traça
+
+Atrai as Traças próximas quando atacada. Esconde-se em blocos de pedra.
+
+Aranha de Caverna
+
+Tem uma mordida venenosa.
+
+Vacogumelo
+
+Faz sopa de cogumelo quando usada com uma vasilha. Derruba cogumelos e torna-se uma vaca normal depois de tosquiada.
+
+Golem de Neve
+
+O Golem de Neve pode ser criado pelos jogadores usando blocos de neve e uma abóbora. Ele atira bolas de neve nos inimigos dos seus criadores.
+
+Dragão Ender
+
+Este é um grande dragão negro encontrado no Final.
+
+Chama
+
+Estes são inimigos encontrados no Submundo, geralmente dentro das Fortalezas do Submundo. Derrubam Varas de Chamas quando são mortos.
+
+Cubo de Magma
+
+Eles são encontrados no Submundo. Similares aos Slimes, dividem-se em versões menores quando são mortos.
+
+Aldeão
+
+Ocelote
+
+Estes podem ser encontrados nas florestas. Eles podem ser domesticados, alimentando-os com Peixe Cru. Mas você deve deixar o Ocelote se aproximar, pois quaisquer movimentos bruscos podem assustá-lo e fazê-lo fugir.
+
+Golem de Ferro
+
+Aparece em vilas para protegê-las e podem ser criados usando blocos de ferro e abóboras.
+
+Explosives Animator
+
+Concept Artist
+
+Number Crunching and Statistics
+
+Bully Coordinator
+
+Original Design and Code by
+
+Project Manager/Producer
+
+Rest of Mojang Office
+
+Lead Game Programmer Minecraft PC
+
+Ninja Coder
+
+CEO
+
+White Collar Worker
+
+Customer Support
+
+Office DJ
+
+Designer/Programmer Minecraft - Pocket Edition
+
+Developer
+
+Chief Architect
+
+Art Developer
+
+Game Crafter
+
+Director of Fun
+
+Music and Sounds
+
+Programming
+
+Art
+
+QA
+
+Executive Producer
+
+Lead Producer
+
+Producer
+
+Test Lead
+
+Lead Tester
+
+Design Team
+
+Development Team
+
+Release Management
+
+Director, XBLA Publishing
+
+Business Development
+
+Portfolio Director
+
+Product Manager
+
+Marketing
+
+ Community Manager
+
+Europe Localization Team
+
+Redmond Localization Team
+
+Asia Localization Team
+
+User Research Team
+
+MGS Central Teams
+
+Milestone Acceptance Tester
+
+Special Thanks
+
+Test Manager
+
+Senior Test Lead
+
+SDET
+
+Project STE
+
+Additional STE
+
+Test Associates
+
+Jon Kågström
+
+Tobias Möllstam
+
+Risë Lugo
+
+Espada de Madeira
+
+Espada de Pedra
+
+Espada de Ferro
+
+Espada de Diamante
+
+Espada de Ouro
+
+Pá de Madeira
+
+Pá de Pedra
+
+Pá de Ferro
+
+Pá de Diamante
+
+Pá de Ouro
+
+Picareta de Madeira
+
+Picareta de Pedra
+
+Picareta de Ferro
+
+Picareta de Diamante
+
+Picareta de Ouro
+
+Machado de Madeira
+
+Machado de Pedra
+
+Machado de Ferro
+
+Machado de Diamante
+
+Machado de Ouro
+
+Enxada de Madeira
+
+Enxada de Pedra
+
+Enxada de Ferro
+
+Enxada de Diamante
+
+Enxada de Ouro
+
+Porta de Madeira
+
+Porta de Ferro
+
+Capacete de Malha
+
+Peitoral de Malha
+
+Perneiras de Malha
+
+Botas de Malha
+
+Chapéu de Couro
+
+Capacete de Ferro
+
+Capacete de Diamante
+
+Capacete de Ouro
+
+Túnica de Couro
+
+Peitoral de Ferro
+
+Peitoral de Diamante
+
+Peitoral de Ouro
+
+Calças de Couro
+
+Perneiras de Ferro
+
+Perneiras de Diamante
+
+Perneiras de Ouro
+
+Botas de Couro
+
+Botas de Ferro
+
+Botas de Diamante
+
+Botas de Ouro
+
+Barra de Ferro
+
+Barra de Ouro
+
+Balde
+
+Balde de Água
+
+Balde de Lava
+
+Sílex e Aço
+
+Maçã
+
+Arco
+
+Flecha
+
+Carvão
+
+Carvão Vegetal
+
+Diamante
+
+Vareta
+
+Vasilha
+
+Sopa de Cogumelo
+
+Fio
+
+Pena
+
+Pólvora
+
+Sementes de Trigo
+
+Trigo
+
+Pão
+
+Sílex
+
+Costeleta de Porco Crua
+
+Costeleta de Porco Cozida
+
+Pintura
+
+Maçã de Ouro
+
+Placa
+
+Carrinho de Minas
+
+Sela
+
+Redstone
+
+Bola de Neve
+
+Barco
+
+Couro
+
+Balde de Leite
+
+Tijolo
+
+Argila
+
+Cana-de-açúcar
+
+Papel
+
+Livro
+
+Slimeball
+
+Carrinho com Baú
+
+Carrinho com Fornalha
+
+Ovo
+
+Bússola
+
+Vara de Pescar
+
+Relógio
+
+Pó de Glowstone
+
+Peixe Cru
+
+Peixe Cozido
+
+Corante em Pó
+
+Saco de Tinta
+
+Rosa Vermelha
+
+Verde Cacto
+
+Grãos de Cacau
+
+Lápis-azul
+
+Corante Roxo
+
+Corante Ciano
+
+Corante Cinzento
+
+Corante Cinza
+
+Corante Rosa
+
+Corante Verde-lima
+
+Amarelo-narciso
+
+Corante Azul-claro
+
+Corante Magenta
+
+Corante Laranja
+
+Farelo de Osso
+
+Osso
+
+Açúcar
+
+Bolo
+
+Cama
+
+Repetidor de Redstone
+
+Biscoito
+
+Mapa
+
+Disco - "13"
+
+Disco de Música - "cat"
+
+Disco de Música - "blocks"
+
+Disco de Música - "chirp"
+
+Disco de Música - "far"
+
+Disco de Música - "mall"
+
+Disco de Música - "mellohi"
+
+Disco de Música - "stal"
+
+Disco de Música - "strad"
+
+Disco de Música - "ward"
+
+Disco - "11"
+
+Disco de Música - "where are we now"
+
+Tosquiadeira
+
+Sementes de Abóbora
+
+Sementes de Melão
+
+Frango Cru
+
+Frango Cozido
+
+Carne Crua
+
+Bife
+
+Carne Podre
+
+Pérola do Ender
+
+Fatia de Melão
+
+Vara de Chamas
+
+Lágrima de Ghast
+
+Pepita de Ouro
+
+Verruga do Submundo
+
+{*splash*}{*prefix*}Poção {*postfix*}
+
+Garrafa de Vidro
+
+Garrafa de Água
+
+Olho de Aranha
+
+Olho de Aranha Fermentado
+
+Pó de Chamas
+
+Creme de Magma
+
+Barraca de Poções
+
+Caldeirão
+
+Olho de Ender
+
+Melão Cintilante
+
+Garrafa de Feitiços
+
+Carga de Fogo
+
+Carga de Fogo (Carvão Vegetal)
+
+Carga de Fogo (Carvão)
+
+Quadro de Item
+
+Criar {*CREATURE*}
+
+Bloco do Submundo
+
+Caveira
+
+Caveira do esqueleto
+
+Caveira do esqueleto murcho
+
+Cabeça de zumbi
+
+Cabeça
+
+Cabeça de %s
+
+Cabeça de creeper
+
+Pedra
+
+Bloco de Grama
+
+Terra
+
+Pedregulho
+
+Tábuas de Carvalho
+
+Tábuas de Abeto
+
+Tábuas de Bétula
+
+Tábua de madeira de floresta
+
+Muda
+
+Muda de Carvalho
+
+Muda de Abeto
+
+Muda de Bétula
+
+Broto de árvore da floresta
+
+Pedra Indestrutível
+
+Água
+
+Lava
+
+Areia
+
+Arenito
+
+Cascalho
+
+Minério de Ouro
+
+Minério de Ferro
+
+Minério de Carvão
+
+Madeira
+
+Madeira de Carvalho
+
+Madeira de Abeto
+
+Madeira de Bétula
+
+Madeira de floresta
+
+Carvalho
+
+Abeto
+
+Bétula
+
+Folhas
+
+Folhas de Carvalho
+
+Folhas de Abeto
+
+Folhas de Bétula
+
+Folhas de floresta
+
+Esponja
+
+Vidro
+
+Lã
+
+Lã Preta
+
+Lã Vermelha
+
+Lã Verde
+
+Lã Marrom
+
+Lã Azul
+
+Lã Roxa
+
+Lã Ciano
+
+Lã Cinzenta
+
+Lã Cinza
+
+Lã Rosa
+
+Lã Verde-lima
+
+Lã Amarela
+
+Lã Azul-claro
+
+Lã Magenta
+
+Lã Laranja
+
+Lã Branca
+
+Flor
+
+Rosa
+
+Cogumelo
+
+Bloco de Ouro
+
+Uma forma compacta de armazenar ouro.
+
+Uma forma compacta de armazenar ferro.
+
+Bloco de Ferro
+
+Degrau de Pedra
+
+Degrau de Pedra
+
+Degrau de Arenito
+
+Degrau de Carvalho
+
+Degrau de Pedregulho
+
+Degrau de Tijolo
+
+Degrau Bloc. Pedra
+
+Degrau de Carvalho
+
+Degrau de Abeto
+
+Degrau de Bétula
+
+Chapa de madeira de floresta
+
+Degrau de Bloco do Submundo
+
+Tijolos
+
+TNT
+
+Estante de Livros
+
+Pedra de Musgo
+
+Obsidiana
+
+Tocha
+
+Tocha (Carvão)
+
+Tocha (Carvão Vegetal)
+
+Fogo
+
+Criador de Monstros
+
+Escada de Carvalho
+
+Baú
+
+Pó de Redstone
+
+Minério de Diamante
+
+Bloco de Diamante
+
+Uma forma compacta de armazenar diamantes.
+
+Bancada
+
+Colheitas
+
+Campo
+
+Fornalha
+
+Placa
+
+Porta de Madeira
+
+Escada de Mão
+
+Trilho
+
+Trilho com Propulsão
+
+Trilho Detector
+
+Escadas de Pedra
+
+Alavanca
+
+Chapa de Pressão
+
+Porta de Ferro
+
+Minério de Redstone
+
+Tocha de Redstone
+
+Botão
+
+Neve
+
+Gelo
+
+Cacto
+
+Argila
+
+Cana-de-açúcar
+
+Jukebox
+
+Cerca
+
+Abóbora
+
+Lanterna de Abóbora
+
+Pedra Inflamável
+
+Areia Movediça
+
+Glowstone
+
+Portal
+
+Minério de Lápis-azul
+
+Bloco Lápis-azul
+
+Uma forma compacta de armazenar lápis lazuli.
+
+Distribuidor
+
+Bloco de Nota
+
+Bolo
+
+Cama
+
+Teia
+
+Grama Alta
+
+Arbusto Seco
+
+Diodo
+
+Baú Trancado
+
+Alçapão
+
+Lã (qualquer cor)
+
+Pistão
+
+Pistão Aderente
+
+Bloco Traça
+
+Blocos de Pedra
+
+Blocos de Pedra com Musgo
+
+Blocos de Pedra Rachada
+
+Tijolos de pedra cinzentos
+
+Cogumelo
+
+Cogumelo
+
+Barras de Ferro
+
+Painel de Vidro
+
+Melão
+
+Broto de Abóbora
+
+Broto de Melão
+
+Vinhas
+
+Portão de Cerca
+
+Escadas de Blocos
+
+Escadas de Blocos de Pedra
+
+Pedra Traça
+
+Pedregulho de Traça
+
+Bloco de pedra de Traça
+
+Micélio
+
+Vitória Régia
+
+Bloco do Submundo
+
+Cerca de Blocos do Submundo
+
+Escadas de Blocos do Submundo
+
+Verruga do Submundo
+
+Bancada de Feitiços
+
+Barraca de Poções
+
+Caldeirão
+
+Portal Final
+
+Estrutura do Portal Final
+
+Pedra Final
+
+Ovo de Dragão
+
+Arbusto
+
+Samambaia
+
+Escada de Arenito
+
+Escada de Abeto
+
+Escada de Bétula
+
+Escada de madeira de floresta
+
+Lâmpada de Redstone
+
+Cacau
+
+Caveira
+
+Controles Atuais
+
+Estilo
+
+Mover/Correr
+
+Olhar
+
+Pausar
+
+Pular
+
+Pular/Voar Acima
+
+Inventário
+
+Rodízio de Itens
+
+Ação
+
+Usar
+
+Fabricação
+
+Soltar
+
+Esgueirar-se
+
+Esgueirar-se/Voar Abaixo
+
+Alterar Modo de Câmera
+
+Jogadores/Convidar
+
+Movimento (Ao Voar)
+
+Estilo 1
+
+Estilo 2
+
+Estilo 3
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+
]]>
+
+{*B*}Pressione{*CONTROLLER_VK_A*} para continuar.
+
+{*B*}Pressione{*CONTROLLER_VK_A*} para iniciar o tutorial.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se achar que está pronto para jogar sozinho.
+
+Minecraft é um jogo onde você coloca blocos para construir qualquer coisa que imaginar.
+À noite os monstros aparecem; então, construa um abrigo antes que isso aconteça.
+
+Use{*CONTROLLER_ACTION_LOOK*} para olhar para cima, para baixo e ao redor.
+
+Use{*CONTROLLER_ACTION_MOVE*} para se mover.
+
+Para correr, pressione {*CONTROLLER_ACTION_MOVE*}para frente rapidamente duas vezes. Enquanto mantiver {*CONTROLLER_ACTION_MOVE*}pressionado, o personagem continuará a correr, a não ser que o tempo de corrida ou o alimento acabe.
+
+Pressione{*CONTROLLER_ACTION_JUMP*} para pular.
+
+Mantenha{*CONTROLLER_ACTION_ACTION*} pressionado para extrair e cortar usando a mão ou o que estiver segurando. Talvez seja necessário fabricar uma ferramenta para extrair alguns blocos...
+
+Mantenha{*CONTROLLER_ACTION_ACTION*} pressionado para cortar 4 blocos de madeira (troncos de árvore).{*B*}Quando um bloco quebra, você pode pegá-lo ficando perto do item flutuante exibido, fazendo-o aparecer em seu inventário.
+
+Pressione{*CONTROLLER_ACTION_CRAFTING*} para abrir a interface de fabricação.
+
+Conforme você coleta e fabrica itens, seu inventário vai enchendo.{*B*}
+ Pressione{*CONTROLLER_ACTION_INVENTORY*} para abrir o inventário.
+
+Conforme você se move, extrai ou ataca, sua barra de alimentos vai esvaziando {*ICON_SHANK_01*}. Correr e correr pulando consomem muito mais alimento que caminhar e correr normalmente.
+
+Se você perder energia mas tiver uma barra de alimentos com 9 ou mais {*ICON_SHANK_01*}, sua energia será preenchida automaticamente. Comer preenche sua barra de alimentos.
+
+Com um item de comida na mão, mantenha pressionado {*CONTROLLER_ACTION_USE*}para comer e preencher sua barra de alimentos. Você não poderá comer se a sua barra de alimentos estiver cheia.
+
+Sua barra de alimentos está baixa e você perdeu energia. Coma o bife do seu inventário para preencher sua barra de alimentos e começar a cura.{*ICON*}364{*/ICON*}
+
+A madeira que você coletou pode ser usada para fabricar tábuas. Abra a interface de fabricação para fabricá-las.{*PlanksIcon*}
+
+Muitas tarefas de fabricação envolvem diversas etapas. Agora você tem algumas tábuas e pode fabricar mais itens. Crie uma bancada.{*CraftingTableIcon*}
+
+Para coletar blocos mais rapidamente, você pode construir ferramentas próprias para o trabalho. Algumas ferramentas têm cabo feito de varetas. Fabrique algumas varetas agora.{*SticksIcon*}
+
+Use {*CONTROLLER_ACTION_LEFT_SCROLL*}e {*CONTROLLER_ACTION_RIGHT_SCROLL*}para alterar o item que está segurando.
+
+Use{*CONTROLLER_ACTION_USE*} para usar itens, interagir com objetos e colocar alguns itens. Os itens colocados podem ser coletados novamente se extraídos com a ferramenta correta.
+
+Com a bancada selecionada, aponte o cursor para o local desejado e use{*CONTROLLER_ACTION_USE*} para colocar a bancada.
+
+Aponte o cursor para a bancada e pressione{*CONTROLLER_ACTION_USE*} para abri-la.
+
+A pá ajuda a cavar blocos macios, como terra e neve, mais rapidamente. Quando coletar mais materiais poderá fabricar ferramentas mais rápidas e duráveis. Crie uma pá de madeira.{*WoodenShovelIcon*}
+
+O machado ajuda a cortar madeira e peças de madeira mais rapidamente. Quando coletar mais materiais poderá fabricar ferramentas mais rápidas e duráveis. Crie um machado de madeira. {*WoodenHatchetIcon*}
+
+A picareta ajuda a cavar blocos duros, como pedra e minério, mais rapidamente. Quando coletar mais materiais poderá fabricar ferramentas mais rápidas e duráveis e poderá extrair materiais mais duros. Crie uma picareta de madeira.{*WoodenPickaxeIcon*}
+
+Abrir o recipiente
+
+
+ A noite pode cair rapidamente e é perigoso ficar lá fora sem estar preparado. Você pode fabricar armaduras e armas, mas é melhor ter um abrigo seguro.
+
+
+
+ Aqui perto há um abrigo abandonado de mineiro que você pode concluir para passar a noite em segurança.
+
+
+
+ Você precisará coletar os recursos para concluir o abrigo. As paredes e o teto podem ser feitos com peças de qualquer tipo, mas você precisará criar uma porta, algumas janelas e iluminação.
+
+
+Use a picareta para extrair alguns blocos de pedra. Blocos de pedra produzem pedregulho quando extraídos. Se coletar 8 blocos de pedregulho poderá construir uma fornalha. Talvez seja necessário cavar a terra para chegar à pedra; então, use a pá para isso.{*StoneIcon*}
+
+Você coletou pedregulho suficiente para construir uma fornalha. Use a bancada para criar uma.
+
+Use{*CONTROLLER_ACTION_USE*} para colocar a fornalha no mundo e abra-a.
+
+Use a fornalha para criar carvão vegetal. Enquanto espera ficar pronto, que tal coletar mais materiais para terminar o abrigo?
+
+Use a fornalha para criar vidro. Enquanto espera ficar pronto, que tal coletar mais materiais para terminar o abrigo?
+
+Um bom abrigo precisa de porta para você poder entrar e sair sem precisar extrair e repor as paredes. Fabrique uma porta de madeira agora. {*WoodenDoorIcon*}
+
+Use{*CONTROLLER_ACTION_USE*} para colocar a porta. Você pode usar{*CONTROLLER_ACTION_USE*} para abrir e fechar a porta de madeira no mundo.
+
+À noite pode ficar bem escuro; então, é bom ter alguma iluminação no interior do abrigo para poder enxergar. Fabrique uma tocha agora com varetas e carvão vegetal, usando a interface de fabricação.{*TorchIcon*}
+
+
+ Você concluiu a primeira parte do tutorial.
+
+
+
+ {*B*}
+ Pressione{*CONTROLLER_VK_A*} para continuar o tutorial.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se achar que está pronto para jogar sozinho.
+
+
+
+ Este é seu inventário. Ele mostra os itens disponíveis para uso em sua mão e todos os outros itens que está carregando. Sua armadura também é mostrada aqui.
+
+
+{*B*}
+ Pressione{*CONTROLLER_VK_A*} para continuar.{*B*}
+ Pressione {*CONTROLLER_VK_B*} se já souber usar o inventário.
+
+
+
+ Use{*CONTROLLER_MENU_NAVIGATE*}para mover o ponteiro. Use{*CONTROLLER_VK_A*}para pegar um item sob o ponteiro.
+ Se houver mais de um item aqui, esta ação pegará todos; você também pode usar{*CONTROLLER_VK_X*}para pegar apenas metade deles.
+
+
+
+ Mova este item com o ponteiro sobre outro espaço no inventário e coloque-o usando{*CONTROLLER_VK_A*}.
+ Com vários itens no ponteiro, use{*CONTROLLER_VK_A*} para colocar todos ou{*CONTROLLER_VK_X*} para colocar apenas um.
+
+
+
+ Se você mover o ponteiro para fora da borda da interface com um item nele, poderá derrubar o item.
+
+
+
+ Para obter mais informações sobre um item, passe o ponteiro do mouse sobre ele e pressione {*CONTROLLER_VK_RT*}.
+
+
+
+ Pressione{*CONTROLLER_VK_B*} agora para sair do inventário.
+
+
+
+ Este é o inventário do modo criativo. Ele mostra os itens disponíveis para usar na sua mão e todos os outros itens que pode escolher.
+
+
+{*B*}
+ Pressione {*CONTROLLER_VK_A*}para continuar.{*B*}
+ Pressione {*CONTROLLER_VK_B*}se já souber usar o inventário do modo criativo.
+
+
+
+ Use {*CONTROLLER_MENU_NAVIGATE*}para mover o ponteiro.
+ Quando estiver na lista de itens, use {*CONTROLLER_VK_A*}para pegar o item sob o ponteiro e use {*CONTROLLER_VK_Y*}para pegar a pilha toda do item.
+
+
+
+ O ponteiro será movido automaticamente para um espaço na linha de uso. Você pode colocá-lo usando {*CONTROLLER_VK_A*}. Depois de colocar o item, o ponteiro retornará à lista de itens, onde você poderá selecionar outro item.
+
+
+
+ Se você mover o ponteiro para fora da borda da interface com um item nele, poderá derrubar o item no mundo. Para limpar todos os itens da barra de seleção rápida, pressione {*CONTROLLER_VK_X*}.
+
+
+
+ Role pelas guias de Tipo de Grupo na parte superior usando {*CONTROLLER_VK_LB*}e {*CONTROLLER_VK_RB*}para selecionar o tipo de grupo do item que deseja pegar.
+
+
+
+ Para obter mais informações sobre um item, passe o ponteiro do mouse sobre ele e pressione {*CONTROLLER_VK_RT*}.
+
+
+
+ Pressione {*CONTROLLER_VK_B*}agora para sair do inventário do modo criativo.
+
+
+
+ Esta é a interface de fabricação, onde você pode combinar os itens coletados para fazer novos itens.
+
+
+{*B*}
+ Pressione{*CONTROLLER_VK_A*} para continuar.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se já souber fabricar.
+
+
+{*B*}
+ Pressione{*CONTROLLER_VK_X*} para mostrar a descrição do item.
+
+
+{*B*}
+ Pressione{*CONTROLLER_VK_X*} para mostrar os ingredientes necessários para fazer o item atual.
+
+
+{*B*}
+ Pressione{*CONTROLLER_VK_X*} para mostrar novamente o inventário.
+
+
+
+ Role pelas guias de Tipo de Grupo na parte superior usando{*CONTROLLER_VK_LB*}e{*CONTROLLER_VK_RB*}para selecionar o tipo de grupo do item que deseja fabricar. Em seguida, use{*CONTROLLER_MENU_NAVIGATE*}para selecionar o item a ser fabricado.
+
+
+
+ A área de fabricação mostra os itens necessários para fabricar o novo item. Pressione{*CONTROLLER_VK_A*} para fabricar o item e colocá-lo no inventário.
+
+
+
+ Você pode fabricar uma seleção maior de itens usando uma bancada. A fabricação na bancada funciona da mesma maneira que a fabricação básica, mas você terá uma área maior de fabricação e uma variedade maior de itens para fabricar.
+
+
+
+ A parte inferior direita da interface de fabricação mostra seu inventário. Essa área também pode mostrar a descrição do item selecionado e os ingredientes necessários para fabricá-lo.
+
+
+
+ A descrição do item selecionado é exibida. Com a descrição você pode ter uma ideia de como o item pode ser usado.
+
+
+
+ A lista dos ingredientes necessários para fabricar o item é exibida.
+
+
+A madeira que você coletou pode ser usada para fabricar tábuas. Selecione o ícone de tábuas e pressione{*CONTROLLER_VK_A*} para criá-las.{*PlanksIcon*}
+
+
+ Você já construiu uma bancada e agora deve colocá-la no mundo para poder construir uma variedade maior de itens.{*B*}
+ Pressione{*CONTROLLER_VK_B*} agora para sair da interface de fabricação.
+
+
+
+ Pressione{*CONTROLLER_VK_LB*} e{*CONTROLLER_VK_RB*} para alterar para o tipo de grupo dos itens que deseja fabricar. Selecione o grupo de ferramentas.{*ToolsIcon*}
+
+
+
+ Pressione{*CONTROLLER_VK_LB*} e{*CONTROLLER_VK_RB*} para alterar para o tipo de grupo de itens que deseja fabricar. Selecione o grupo de estruturas.{*StructuresIcon*}
+
+
+
+ Use{*CONTROLLER_MENU_NAVIGATE*}para alterar para o item que deseja fabricar. Alguns itens têm várias versões, dependendo dos materiais usados. Selecione a pá de madeira.{*WoodenShovelIcon*}
+
+
+
+ Muitas tarefas de fabricação envolvem diversas etapas. Agora que você tem algumas tábuas, pode fabricar mais itens. Use{*CONTROLLER_MENU_NAVIGATE*}para alterar para o item que deseja fabricar. Selecione a bancada.{*CraftingTableIcon*}
+
+
+
+ Com as ferramentas que construiu, você está pronto para começar bem e poderá coletar diversos materiais com mais eficiência.{*B*}
+ Pressione{*CONTROLLER_VK_B*} agora para sair da interface de fabricação.
+
+
+
+ Alguns itens não podem ser criados usando a bancada, mas precisam da fornalha. Fabrique a fornalha agora.{*FurnaceIcon*}
+
+
+
+ Coloque no mundo a fornalha que fabricou. É bom colocá-la dentro do seu abrigo.{*B*}
+ Pressione{*CONTROLLER_VK_B*} agora para sair da interface de fabricação.
+
+
+
+ Esta é a interface da fornalha. Com ela você pode alterar os itens queimando-os. Por exemplo, nela você pode transformar minério de ferro em barras de ferro.
+
+
+{*B*}
+ Pressione{*CONTROLLER_VK_A*} para continuar.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se já souber usar a fornalha.
+
+
+
+ Você precisa colocar um pouco de combustível na abertura inferior da fornalha e o item a ser queimado na abertura superior. A fornalha acenderá e começará a funcionar, colocando o resultado na abertura à direita.
+
+
+
+ Muitos itens de madeira podem ser usados como combustível, mas nem tudo demora o mesmo tempo para queimar. Você pode descobrir outros itens no mundo que podem ser usados como combustível.
+
+
+
+ Depois de queimar os itens, você poderá movê-los da área de saída para o inventário. Experimente ingredientes diferentes para ver o que pode fazer.
+
+
+
+ Se usar madeira como ingrediente, você poderá fazer carvão vegetal. Coloque um pouco de combustível na fornalha e madeira na abertura do ingrediente. Pode demorar algum tempo para que a fornalha crie o carvão vegetal; se preferir, vá fazer outra coisa e volte para verificar o progresso.
+
+
+
+ O carvão vegetal pode ser usado como combustível e também ser combinado com uma vareta para fabricar uma tocha.
+
+
+
+ Se colocar areia na abertura do ingrediente, você poderá fazer vidro. Crie alguns blocos de vidro para usar como janelas no seu abrigo.
+
+
+
+ Esta é a interface de poções. Você pode usar isto para criar poções com diversos efeitos diferentes.
+
+
+{*B*}
+ Pressione{*CONTROLLER_VK_A*} para continuar.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se já souber usar a barraca de poções.
+
+
+
+ Para fazer poções você deve colocar um ingrediente no slot superior e uma poção ou garrafa de água nos slots de baixo (é possível fazer até 3 poções de uma vez). Depois que uma combinação válida for colocada, o processo começará e a poção será criada depois de pouco tempo.
+
+
+
+ Todas as poções começam com uma Garrafa de Água. A maioria das poções é criada usando primeiro uma Verruga do Submundo para fazer uma Poção Maligna, e precisa de pelo menos mais um ingrediente para fazer a poção final.
+
+
+
+ Depois que tiver uma poção, você pode modificar seus efeitos. Se adicionar Pó de Redstone, a duração do efeito aumenta, e se adicionar Pó de Glowstone, o efeito será mais poderoso.
+
+
+
+ A adição de Olho de Aranha Fermentado corrompe a poção e a transforma em uma poção com o efeito contrário, e a adição de Pólvora transforma a poção em uma Poção Tchibum, que pode ser atirada para aplicar seus efeitos a uma área próxima.
+
+
+
+ Crie uma Poção de Resistência ao Fogo primeiro adicionando Verruga do Submundo a uma Garrafa de Água, e depois adicionando Creme de Magma.
+
+
+
+ Pressione {*CONTROLLER_VK_B*}agora para sair da interface de poções.
+
+
+
+ Nesta área há uma Barraca de Poções, um Caldeirão e um baú cheio de itens para fazer poções.
+
+
+{*B*}
+ Pressione{*CONTROLLER_VK_A*} para saber mais sobre como fazer poções.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se já souber como fazer poções.
+
+
+
+ A primeira etapa para fazer uma poção é criar uma Garrafa de Água. Pegue uma Garrafa de Vidro no baú.
+
+
+
+ Você pode encher a garrafa de vidro com um Caldeirão que tenha água dentro, ou com um bloco de água. Encha a garrafa de vidro agora apontando para uma fonte de água e pressionando{*CONTROLLER_ACTION_USE*}.
+
+
+
+ Se o caldeirão ficar vazio, você pode enchê-lo com um Balde de Água.
+
+
+
+ Use a barraca de poções para criar uma Poção de Resistência ao Fogo. Você precisará de uma Garrafa de Água, Verruga do Submundo e Creme de Magma.
+
+
+
+ Com a poção na mão, segure{*CONTROLLER_ACTION_USE*} para usá-la. Se for uma poção normal, você pode bebê-la e aplicar o efeito em si mesmo, e se for uma Poção Tchibum, você pode atirá-la e aplicar o efeito nas criaturas próximas de onde ela acertar.
+ As poções tchibum podem ser criadas adicionando pólvora a poções normais.
+
+
+
+ Use sua Poção de Resistência ao fogo em si mesmo.
+
+
+
+ Agora que você está resistente ao fogo e à lava, veja se há lugares em que você consegue chegar que não conseguia antes.
+
+
+
+ Esta é a interface de feitiços, que você pode usar para adicionar feitiços a armas, armadura e a algumas ferramentas.
+
+
+{*B*}
+ Pressione{*CONTROLLER_VK_A*} para saber mais sobre a interface de feitiços.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se já souber usar a interface de feitiços.
+
+
+
+ Para enfeitiçar um item, primeiro coloque-o no slot de feitiços. Armas, armadura e algumas ferramentas podem ser enfeitiçados para adicionar efeitos especiais como maior resistência a danos ou aumento do número de itens produzidos ao minerar um bloco.
+
+
+
+ Quando um item for colocado no slot de feitiços, os botões da direita mudarão para uma seleção de feitiços aleatórios.
+
+
+
+ O número no botão representa o custo em níveis de experiência para aplicar esse feitiço ao item. Se você não tiver o nível necessário, o botão estará desabilitado.
+
+
+
+ Selecione um feitiço e pressione{*CONTROLLER_VK_A*} para enfeitiçar o item. Isso irá diminuir seu nível de experiência correspondente ao custo do feitiço.
+
+
+
+ Apesar dos feitiços serem aleatórios, alguns dos melhores feitiços só estarão disponíveis se você tiver um nível de experiência alto e muitas estantes ao redor da Bancada de Feitiços para aumentar seu poder.
+
+
+
+ Nesta área há uma Bancada de Feitiços e alguns outros itens para você aprender mais sobre feitiços.
+
+
+{*B*}
+ Pressione{*CONTROLLER_VK_A*} para saber mais sobre os encantos.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se já souber usar os encantos.
+
+
+
+ Ao usar a Bancada de Feitiços, você poderá adicionar efeitos especiais a armas, armadura e a algumas ferramentas, como o aumento do número de itens produzidos ao minerar um bloco ou a maior resistência a danos.
+
+
+
+ Colocar estantes de livros ao redor da Bancada de Feitiços aumenta seu poder e permite o acesso a feitiços de nível mais alto.
+
+
+
+ Enfeitiçar itens custa Níveis de Exp. que podem ser conquistados coletando Esferas de Exp. produzidas ao matar monstros e animais, minerar minérios, criar animais, pescar e fundir/cozinhar algumas coisas na fornalha.
+
+
+
+ Também pode conquistar níveis de exp. usando a Garrafa de Feitiços, que ao ser atirada cria Esferas de Exp. perto de onde cair. Essas esferas podem ser coletadas.
+
+
+
+ Nos baús desta área encontrará alguns itens enfeitiçados, Garrafas de Feitiços e alguns itens que ainda não foram enfeitiçados, para experimentar na Bancada de Feitiços.
+
+
+
+ Agora você está andando no carrinho de minas. Para sair do carrinho, aponte o cursor para ele e pressione{*CONTROLLER_ACTION_USE*}.{*MinecartIcon*}
+
+
+{*B*}
+ Pressione{*CONTROLLER_VK_A*} para saber mais sobre os carrinhos de minas.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se já souber usar os carrinhos de minas.
+
+
+
+ O carrinho de minas corre sobre trilhos. Você também pode fabricar um carrinho com propulsão com uma fornalha e um carrinho de minas com um baú nele.
+ {*RailIcon*}
+
+
+
+ Você também pode fabricar trilhos com propulsão, que usam a energia de tochas e circuitos de redstone para acelerar o carrinho. Eles podem ser conectados a acionadores, alavancas e chapas de pressão para criar sistemas complexos.
+ {*PoweredRailIcon*}
+
+
+
+ Agora você está andando de barco. Aponte o cursor para o barco e pressione {*CONTROLLER_ACTION_USE*} para sair.{*BoatIcon*}
+
+
+
+ {*B*}
+ Pressione{*CONTROLLER_VK_A*} para saber mais sobre barcos.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se já souber usar barcos.
+
+
+
+ Com o barco é possível viajar mais rapidamente sobre a água. Você pode navegá-lo usando{*CONTROLLER_ACTION_MOVE*} e{*CONTROLLER_ACTION_LOOK*}.
+ {*BoatIcon*}
+
+
+
+ Agora você está usando uma vara de pescar. Pressione{*CONTROLLER_ACTION_USE*} para usá-la.{*FishingRodIcon*}
+
+
+
+ {*B*}
+ Pressione{*CONTROLLER_VK_A*} para saber mais sobre pesca.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se já souber pescar.
+
+
+
+ Pressione{*CONTROLLER_ACTION_USE*} para jogar a linha e começar a pescar. Pressione{*CONTROLLER_ACTION_USE*} novamente para puxar a linha de pesca.
+ {*FishingRodIcon*}
+
+
+
+ Se esperar a boia afundar antes de puxar a linha, você poderá pegar um peixe. Os peixes podem ser comidos crus ou cozidos na fornalha para restaurar a energia.
+ {*FishIcon*}
+
+
+
+ Como outras ferramentas, a vara de pescar tem um número determinado de utilidades. Mas elas não se limitam a pegar peixes. Experimente para ver o que mais pode ser pego ou ativado com ela...
+ {*FishingRodIcon*}
+
+
+
+ Esta é uma cama. Pressione{*CONTROLLER_ACTION_USE*} ao apontar para ela à noite para dormir a noite toda e despertar de manhã.{*ICON*}355{*/ICON*}
+
+
+
+ {*B*}
+ Pressione{*CONTROLLER_VK_A*} para saber mais sobre camas.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se já souber como funcionam as camas.
+
+
+
+ A cama deve ser colocada em um lugar seguro e bem iluminado para que os monstros não o acordem no meio da noite. Depois de usar uma cama, se você morrer renascerá nela.
+ {*ICON*}355{*/ICON*}
+
+
+
+ Se houver outros jogadores no jogo, todos deverão estar em uma cama ao mesmo tempo para poderem dormir.
+ {*ICON*}355{*/ICON*}
+
+
+
+ Nesta área, há alguns circuitos simples de redstone e pistão, além de um baú com mais itens para ampliar esses circuitos.
+
+
+
+ {*B*}
+ Pressione {*CONTROLLER_VK_A*}para saber mais sobre circuitos de redstone e pistões.{*B*}
+ Pressione {*CONTROLLER_VK_B*}se já souber usar circuitos de redstone e pistões.
+
+
+
+ Alavancas, botões, chapas de pressão e tochas de redstone podem fornecer energia aos circuitos, seja conectando-os diretamente ao item a ser ativado ou conectando-os com pó de redstone.
+
+
+
+ A posição e a direção em que você coloca uma fonte de energia podem mudar a maneira como ela afeta os blocos ao redor. Por exemplo, uma tocha de redstone ao lado de um bloco poderá ser apagada se o bloco for acionado por outra fonte.
+
+
+
+ O pó de redstone é obtido pela extração de minério de redstone com uma picareta de ferro, diamante ou ouro. Você pode usá-lo para transmitir energia para até 15 blocos e ele pode viajar um bloco acima ou abaixo na altura.
+ {*ICON*}331{*/ICON*}
+
+
+
+ Repetidores de redstone podem ser usados para ampliar a distância que a energia é transportada ou colocar um atraso no circuito.
+ {*ICON*}356{*/ICON*}
+
+
+
+ Quando acionado, um pistão se estenderá, empurrando até 12 blocos. Quando retraídos, os Pistões aderentes podem puxar um bloco da maioria dos tipos.
+ {*ICON*}33{*/ICON*}
+
+
+
+ No baú desta área há alguns componentes para fabricar circuitos com pistões. Tente usar ou completar os circuitos desta área ou formar você mesmo. Há mais exemplos fora da área do tutorial.
+
+
+
+ Nesta área há um Portal para o Submundo!
+
+
+
+ {*B*}
+ Pressione{*CONTROLLER_VK_A*} para saber mas sobre Portais e o Submundo.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se já souber como funcionam os Portais e o Submundo.
+
+
+
+ Os portais são criados colocando blocos de Obsidiana em uma estrutura com quatro blocos de largura e cinco blocos de altura. Os blocos de canto não são necessários.
+
+
+
+ Para ativar um Portal do Submundo, incendeie os blocos de Obsidiana dentro da estrutura com Sílex e Aço. Os Portais podem ser desativados se a estrutura estiver quebrada, se ocorrer uma explosão próxima ou se algum líquido fluir através deles.
+
+
+
+ Para usar um Portal do Submundo, fique de pé dentro dele. Sua tela ficará roxa e um som será tocado. Depois de alguns segundos você será transportado para outra dimensão.
+
+
+
+ O Submundo pode ser um lugar perigoso, cheio de lava, mas pode ser útil para coletar Pedra Inflamável, que queima para sempre quando acesa, e Glowstone, que produz luz.
+
+
+
+ O mundo do Submundo pode ser usado para viajar rapidamente na Superfície - viajar a uma distância de um bloco no Submundo equivale a viajar 3 blocos na Superfície.
+
+
+
+ Agora você está no Modo Criativo.
+
+
+
+ {*B*}
+ Pressione{*CONTROLLER_VK_A*} para saber mais sobre o Modo Criativo.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se já souber usar o Modo Criativo.
+
+
+No modo Criativo você tem um número infinito de todos os itens e blocos disponíveis, pode destruir blocos com um clique sem uma ferramenta, você é invulnerável e pode voar.
+
+Se pressionar {*CONTROLLER_ACTION_JUMP*}rapidamente duas vezes você poderá voar. Para parar de voar, repita a ação. Para voar mais rápido, pressione {*CONTROLLER_ACTION_MOVE*}para a frente duas vezes rapidamente ao voar.
+No modo de voo, mantenha pressionado {*CONTROLLER_ACTION_JUMP*}para se mover para cima e {*CONTROLLER_ACTION_SNEAK*}para se mover para baixo ou use o direcional para se mover para cima, para baixo, para a esquerda ou para a direita.
+
+Pressione{*CONTROLLER_ACTION_CRAFTING*} para abrir a interface do inventário criativo.
+
+Vá até o lado oposto deste buraco para continuar.
+
+Você já concluiu o tutorial do modo Criativo.
+
+
+ Nesta área foi estabelecida uma fazenda. Se você a cultivar, terá uma fonte renovável de comida e outros itens.
+
+
+
+ {*B*}
+ Pressione{*CONTROLLER_VK_A*} para saber mais sobre como cuidar de fazendas.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se já souber cuidar de uma fazenda.
+
+
+Trigo, abóboras e melões são cultivados a partir de sementes. As sementes de trigo são coletadas quebrando Grama Alta ou colhendo trigo, e as sementes de abóbora e melão são fabricadas a partir de abóboras e melões, respectivamente.
+
+Antes de plantar as sementes os blocos de terra devem ser transformados em Campo usando uma Enxada. Uma fonte próxima de água ajudará a manter o Campo hidratado e fará as colheitas crescerem mais rápido, além de manter a área iluminada.
+
+O trigo passa por várias etapas enquanto está crescendo, e está pronto para ser colhido quando fica mais escuro.{*ICON*}59:7{*/ICON*}
+
+As abóboras e melões também precisam de um bloco próximo de onde as sementes foram plantadas, para que os frutos cresçam assim que os caules estiverem crescidos.
+
+A cana-de-açúcar deve ser plantada em um bloco de Grama, Terra ou Areia que esteja ao lado de um bloco de água. Se você cortar um bloco de Cana-de-açúcar, também derrubará todos os blocos que estão acima dele.{*ICON*}83{*/ICON*}
+
+Os Cactos devem ser plantados na Areia, e crescerão com até três blocos de altura. Da mesma forma que a Cana-de-açúcar, se o bloco inferior for destruído, você também coletará os blocos que estão acima dele.{*ICON*}81{*/ICON*}
+
+Os Cogumelos devem ser plantados em uma área com pouca iluminação e se espalharão para os blocos próximos pouco iluminados.{*ICON*}39{*/ICON*}
+
+O Farelo de osso pode ser usado para as plantações chegarem à etapa mais desenvolvida, ou para fazer os Cogumelos se transformarem em Cogumelos Enormes.{*ICON*}351:15{*/ICON*}
+
+Agora você completou o tutorial da fazenda.
+
+
+ Nesta área os animais foram cercados. Você pode criar animais, para produzir filhotes deles mesmos.
+
+
+
+ {*B*}
+ Pressione{*CONTROLLER_VK_A*} para saber mais sobre criação e animais.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se já souber sobre criação e animais.
+
+
+Para que os animais se reproduzam, você deve dar a comida certa a eles para que entrem no "Modo do Amor".
+
+Dê Trigo para uma vaca, vacogumelo ou ovelha, cenouras para os porcos, sementes de trigo ou verruga do Submundo para uma galinha, ou dê qualquer tipo de carne para um lobo e eles começarão a procurar outro animal da mesma espécie que também esteja no Modo do Amor.
+
+Quando dois animais da mesma espécie se encontrarem e ambos estiverem no Modo do Amor, eles se beijarão por alguns segundos e um filhote aparecerá. O filhote seguirá seus pais durante algum tempo, até crescer e se transformar em um animal adulto.
+
+Depois de ficar no Modo do Amor, o animal não poderá entrar nele de novo por cinco minutos.
+
+Alguns animais seguirão você se estiver com a comida deles na mão. Desta forma é mais fácil agrupar os animais para reproduzi-los.{*ICON*}296{*/ICON*}
+
+
+ Lobos selvagens podem ser domados com ossos. Assim que domados, coraçõezinhos aparecerão em torno deles. Lobos domados seguirão e defenderão o jogador, caso não tenham sido ordenados a sentar.
+
+
+Você concluiu o tutorial de criação e de animais.
+
+
+ Nesta área há algumas abóboras e blocos para fazer um Golem de Neve e um Golem de Ferro.
+
+
+
+ {*B*}
+ Pressione{*CONTROLLER_VK_A*} para saber mais sobre Golems.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se já souber como usar Golems.
+
+
+Os Gólens são criados colocando uma abóbora sobre uma pilha de blocos.
+
+Os Gólens de Neve são criados com dois Blocos de Neve, um sobre o outro, e uma abóbora sobre eles. Os Gólens lançam bolas de neve em seus inimigos.
+
+Os Gólens de Ferro são criados com quatro Blocos de Ferro no padrão mostrado, com uma abóbora sobre o bloco do meio. Os Gólens de Ferro atacam seus inimigos.
+
+Os Gólens de Ferro também aparecem naturalmente para proteger vilas e o atacarão se você atacar algum aldeão.
+
+Você só poderá sair desta área quando concluir o tutorial.
+
+Ferramentas diferentes são melhores para obter materiais diferentes. Você deve usar uma pá para extrair materiais macios como terra ou areia.
+
+Ferramentas diferentes são melhores para obter materiais diferentes. Você deve usar um machado para cortar troncos de árvores.
+
+Ferramentas diferentes são melhores para obter materiais diferentes. Você deve usar uma picareta para extrair pedra e minério. Talvez seja necessário fabricar sua picareta com materiais melhores para obter recursos de alguns blocos.
+
+Algumas ferramentas são melhores para atacar inimigos. Pense em usar uma espada para atacar.
+
+Dica: mantenha {*CONTROLLER_ACTION_ACTION*}pressionado para extrair e cortar usando a mão ou o que estiver segurando. Talvez seja necessário fabricar uma ferramenta para extrair alguns blocos...
+
+A ferramenta que está usando está danificada. Sempre que você usa uma ferramenta ela sofre danos e pode quebrar. A barra colorida abaixo do item no inventário mostra o estado atual dos danos.
+
+Mantenha{*CONTROLLER_ACTION_JUMP*} pressionado para nadar.
+
+Nesta área há um carrinho de minas sobre um trilho. Para entrar no carrinho, aponte o cursor para ele e pressione{*CONTROLLER_ACTION_USE*}. Use{*CONTROLLER_ACTION_USE*} no botão para mover o carrinho.
+
+No baú ao lado do rio há um barco. Para usar o barco, aponte o cursor para a água e pressione{*CONTROLLER_ACTION_USE*}. Use{*CONTROLLER_ACTION_USE*} ao apontar para o barco para entrar nele.
+
+No baú ao lado do lago há uma vara de pescar. Tire a vara do baú e selecione-a como o item atual em sua mão para usá-la.
+
+Este mecanismo de pistão mais avançado cria uma ponte que se conserta automaticamente. Pressione o botão para ativar e veja como os componentes interagem para aprender mais.
+
+Se você mover o ponteiro para fora da interface ao segurar um item, poderá derrubá-lo.
+
+Você não tem todos os ingredientes necessários para fazer este item. A caixa no canto inferior esquerdo mostra os ingredientes necessários para fabricá-lo.
+
+
+ Parabéns, você concluiu o tutorial. O tempo no jogo agora passará no ritmo normal e não falta muito para a noite, quando os monstros aparecem. Termine seu abrigo!
+
+
+{*EXIT_PICTURE*} Quando estiver pronto para explorar mais, há uma escada nesta área perto do abrigo do mineiro que leva a um pequeno castelo.
+
+Lembrete:
+
+
]]>
+
+Novos recursos foram adicionados ao jogo na versão mais recente, incluindo novas áreas no mundo do tutorial.
+
+{*B*}Pressione {*CONTROLLER_VK_A*}para jogar no tutorial normalmente.{*B*}
+ Pressione {*CONTROLLER_VK_B*}para pular o tutorial principal.
+
+Nesta área, você encontrará áreas configuradas para ajudá-lo a aprender sobre pesca, barcos, pistões e redstone.
+
+Fora desta área, você encontrará exemplos de construções, cultivo, carrinhos de mineração e trilhos, feitiços, poções, negócios, ferraria e muito mais!
+
+
+ Sua barra de alimentos chegou a um nível em que não há mais cura.
+
+
+
+ {*B*}
+ Pressione {*CONTROLLER_VK_A*}para saber mais sobre a barra de alimentos e como comer.{*B*}
+ Pressione {*CONTROLLER_VK_B*}se já souber usar a barra de alimentos e como comer.
+
+
+Selecionar
+
+Usar
+
+Voltar
+
+Sair
+
+Cancelar
+
+Cancelar Entrada
+
+Selec. Disp. Armazenamento
+
+Dispositivo de Armazenamento
+
+Lista de Jogos Online
+
+Jogos de Grupo
+
+Todos os Jogos
+
+Alterar Grupo
+
+Mostrar Inventário
+
+Mostrar Descrição
+
+Mostrar Ingredientes
+
+Fabricação
+
+Criar
+
+Pegar/Colocar
+
+Pegar
+
+Pegar tudo
+
+Pegar metade
+
+Colocar
+
+Colocar tudo
+
+Colocar um
+
+Soltar
+
+Soltar tudo
+
+Soltar um
+
+Trocar
+
+Mover rápido
+
+Limpar Seleção Rápida
+
+O que é isto?
+
+Compartilhar no Facebook
+
+Alterar Filtro
+
+Exibir Cartão de Jogador
+
+Exibir Perfil do Jogador
+
+Enviar Pedido de Amigo
+
+Página Abaixo
+
+Página Acima
+
+Próximo
+
+Anterior
+
+Expulsar
+
+Tingir
+
+Extrair
+
+Alimentar
+
+Domar
+
+Curar
+
+Sentar
+
+Seguir-me
+
+Ejetar
+
+Esvaziar
+
+Selar
+
+Colocar
+
+Atingir
+
+Ordenhar
+
+Coletar
+
+Comer
+
+Dormir
+
+Acordar
+
+Jogar
+
+Montar
+
+Velejar
+
+Cultivar
+
+Nadar
+
+Abrir
+
+Alterar Tom
+
+Detonar
+
+Ler
+
+Pendurar
+
+Atirar
+
+Plantar
+
+Arar
+
+Colher
+
+Continuar
+
+Desbloquear Jogo Completo
+
+Excluir Salvamento
+
+Excluir
+
+Opções
+
+Convidar para Grupo Xbox Live
+
+Convidar Amigos
+
+Aceitar
+
+Tosquiar
+
+Banir Nível
+
+Selecionar Capa
+
+Acender
+
+Navegar
+
+Instalar Versão Completa
+
+Instalar Versão de Avaliação
+
+Instalar
+
+Reinstalar
+
+Opções de Salvamento
+
+Executar Comando
+
+Criativo
+
+Mover Ingrediente
+
+Mover Combustível
+
+Ferramenta Mover
+
+Mover Armadura
+
+Mover Arma
+
+Equipar
+
+Desenhar
+
+Lançar
+
+Privilégios
+
+Bloco
+
+Página Acima
+
+Página Abaixo
+
+Modo do Amor
+
+Beber
+
+Girar
+
+Ocultar
+
+Carregar para Xbox One
+
+Limpar todos os slots
+
+Carregar jogo salvo para o Xbox One
+
+OK
+
+Cancelar
+
+Loja Minecraft
+
+Tem certeza de que deseja sair do jogo atual e entrar no novo jogo? Você perderá o progresso não salvo.
+
+Sair do Jogo
+
+Salvar Jogo
+
+Sair sem salvar
+
+Tem certeza de que deseja substituir o salvamento anterior deste mundo pela versão atual dele?
+
+Tem certeza de que deseja sair sem salvar? Você perderá todo o progresso neste mundo!
+
+Iniciar Jogo
+
+Se você criar, carregar ou salvar um mundo no Modo Criativo, esse mundo terá desabilitadas as atualizações de conquistas e de placares de líderes, mesmo que seja carregado no Modo Sobrevivência. Tem certeza de que deseja continuar?
+
+Este mundo já foi salvo no Modo Criativo e as atualizações de conquistas e de placares de líderes estarão desabilitadas nele. Tem certeza de que deseja continuar?
+
+Este mundo já foi salvo no Modo Criativo e terá as atualizações de conquistas e de placar de líderes desabilitadas.
+
+Se você criar, carregar ou salvar um mundo com os Privilégios do Host habilitados, esse mundo terá desabilitadas as atualizações de conquistas e de placares de líderes, mesmo que ele seja posteriormente carregado com essas opções desativadas. Tem certeza de que deseja continuar?
+
+Jogo danificado
+
+Este jogo salvo está corrompido ou danificado. Gostaria de excluí-lo?
+
+Tem certeza de que deseja sair para o menu principal e desconectar todos os jogadores do jogo? Você perderá o progresso não salvo.
+
+Sair e salvar
+
+Sair sem salvar
+
+Tem certeza de que deseja sair para o menu principal? Você perderá o progresso não salvo.
+
+Tem certeza de que deseja sair para o menu principal? Seu progresso será perdido!
+
+Criar Novo Mundo
+
+Jogar Tutorial
+
+Tutorial
+
+Nomear Mundo
+
+Digite um nome para o mundo.
+
+Insira a semente para a criação do seu mundo.
+
+Carregar Mundo Salvo
+
+Pressione START para entrar no jogo
+
+Saindo do jogo.
+
+Erro. Saindo para o menu principal.
+
+Falha na conexão.
+
+Conexão perdida
+
+A conexão com o servidor foi perdida. Saindo para o menu principal.
+
+A conexão com o Xbox Live foi perdida. Saindo para o menu principal.
+
+A conexão com o Xbox Live foi perdida.
+
+Desconectado pelo servidor.
+
+Você foi expulso do jogo.
+
+Você foi expulso do jogo por voar.
+
+A tentativa de conexão demorou muito.
+
+O servidor está cheio
+
+O host saiu do jogo.
+
+Você não pode entrar neste jogo, pois não é amigo de nenhuma pessoa no jogo.
+
+Você não pode entrar neste jogo, pois já foi expulso antes pelo host.
+
+Você não pode entrar neste jogo, pois o jogador com o qual está tentando jogar está executando uma versão anterior do jogo.
+
+Você não pode entrar neste jogo, pois o jogador com o qual está tentando jogar está executando uma versão mais nova do jogo.
+
+Novo Mundo
+
+Brinde Desbloqueado!
+
+Oba! Você ganhou uma imagem do jogador com o Steve do Minecraft!
+
+Oba! Você ganhou uma imagem do jogador com um Creeper!
+
+Oba! Você ganhou um item de avatar: uma camiseta do Minecraft: Xbox 360 Edition!
+Vá até o menu para colocar a camiseta no seu avatar.
+
+Oba! Você ganhou um item de avatar: um relógio do Minecraft: Xbox 360 Edition!
+Vá até o menu para colocar o relógio no seu avatar.
+
+Oba! Você ganhou um item de avatar: um boné de beisebol do Creeper!
+Vá até o menu para colocar o boné no seu avatar.
+
+Oba! Você ganhou o tema do Minecraft: Xbox 360 Edition!
+Vá até o menu para selecioná-lo.
+
+Desbloquear Jogo Completo
+
+Você está jogando a versão de avaliação, mas precisa da versão integral para poder salvar seu jogo.
+Deseja desbloquear a versão integral do jogo agora?
+
+Esta é a versão de avaliação do jogo Minecraft: Xbox 360 Edition. Se você tivesse a versão integral do jogo, ganharia uma conquista!
+Deseja desbloquear a versão integral do jogo?
+
+Esta é a versão de avaliação do jogo Minecraft: Xbox 360 Edition. Se você tivesse a versão integral do jogo, ganharia um brinde de avatar!
+Deseja desbloquear a versão integral do jogo?
+
+Esta é a versão de avaliação do jogo Minecraft: Xbox 360 Edition. Se você tivesse a versão integral do jogo, ganharia uma imagem de jogador!
+Deseja desbloquear a versão integral do jogo?
+
+Esta é a versão de avaliação do jogo Minecraft: Xbox 360 Edition. Se você tivesse a versão integral do jogo, ganharia um tema!
+Deseja desbloquear a versão integral do jogo?
+
+Este é a versão de avaliação do jogo Minecraft: Xbox 360 Edition. Você precisa ter a versão integral do jogo para poder aceitar este convite.
+Deseja desbloquear a versão integral do jogo?
+
+Os jogadores convidados não podem desbloquear a versão integral do jogo. Entre com uma ID de usuário do Xbox Live.
+
+Aguarde
+
+Sem resultados
+
+Filtro:
+
+Amigos
+
+Minha Pontuação
+
+Geral
+
+Entradas:
+
+Posto
+
+Gamertag
+
+Preparando para Salvar Nível
+
+Preparando Partes...
+
+Finalizando...
+
+Construindo Terreno
+
+Simulando o mundo um pouquinho
+
+Inicializando o servidor
+
+Produzindo área de criação
+
+Carregando área de criação
+
+Entrando no Submundo
+
+Saindo do Submundo
+
+Criando Novamente
+
+Criando nível
+
+Carregando nível
+
+Salvando jogadores
+
+Conectando ao host
+
+Baixando terreno
+
+Alternando para jogo offline
+
+Aguarde enquanto o host salva o jogo
+
+Entrando no FINAL
+
+Saindo do FINAL
+
+Encontrando semente para o gerador de mundos
+
+Esta cama está ocupada
+
+Você só pode dormir à noite
+
+%s está dormindo na cama. Para pular para o nascer do sol, todos os jogadores devem estar dormindo nas camas ao mesmo tempo.
+
+A cama de sua casa estava desaparecida ou obstruída.
+
+Você não pode descansar agora, há monstros por perto
+
+Você está dormindo na cama. Para pular para o nascer do sol, todos os jogadores devem estar dormindo nas camas ao mesmo tempo.
+
+Ferramentas e Armas
+
+Armas
+
+Alimentos
+
+Estruturas
+
+Armadura
+
+Mecanismos
+
+Transporte
+
+Decorações
+
+Blocos de Construção
+
+Redstone e Transporte
+
+Diversos
+
+Poções
+
+Poções
+
+Ferramentas, Armas e Armaduras
+
+Materiais
+
+Saiu
+
+Você retornou à tela de título porque seu perfil do jogador foi desconectado.
+
+Dificuldade
+
+Música
+
+Som
+
+Gama
+
+Sensibilidade do Jogo
+
+Sensibilidade da Interface
+
+Pacífico
+
+Fácil
+
+Normal
+
+Difícil
+
+Neste modo, o jogador ganha energia com o tempo e não há inimigos no ambiente.
+
+Neste modo, inimigos são gerados no ambiente, mas causam menos danos ao jogador que no modo Normal.
+
+Neste modo, inimigos são gerados no ambiente e causam uma quantidade padrão de danos ao jogador.
+
+Neste modo, inimigos são gerados no ambiente e causam muitos danos ao jogador. Tome cuidado também com os creepers, pois eles não podem cancelar o ataque explosivo quando você se afasta deles!
+
+Tempo Limite de Avaliação
+
+Você já jogou a versão de avaliação de Minecraft: Xbox 360 Edition pelo máximo de tempo permitido. Para continuar a diversão, gostaria de desbloquear a versão integral do jogo?
+
+Versão integral
+
+Falha ao entrar no jogo, pois não há espaços restantes
+
+Digitar Texto da Placa
+
+Digite uma linha de texto para sua placa.
+
+Digitar Título
+
+Digite um título para sua postagem.
+
+Digitar Legenda
+
+Digite uma legenda para sua postagem.
+
+Digitar Descrição
+
+Digite uma descrição para sua postagem.
+
+Inventário
+
+Ingredientes
+
+Barraca de Poções
+
+Baú
+
+Feitiço
+
+Fornalha
+
+Ingrediente
+
+Combustível
+
+Distribuidor
+
+Não há ofertas de conteúdo para baixar desse tipo disponíveis para este título no momento.
+
+%s entrou no jogo.
+
+%s saiu do jogo.
+
+%s foi expulso do jogo.
+
+Tem certeza de que deseja excluir este jogo salvo?
+
+A confirmar
+
+Censurado
+
+Jogando agora:
+
+Redefinir Configurações
+
+Tem certeza de que deseja redefinir suas configurações para os valores padrão?
+
+Erro de carregamento
+
+"Minecraft: Xbox 360 Edition" falhou ao carregar e não é possível continuar.
+
+Jogo de %s
+
+Jogo com host desconhecido
+
+Convidado saiu
+
+Um jogador convidado saiu, fazendo todos os jogadores convidados serem removidos do jogo.
+
+Entrar
+
+Você não está conectado. Para jogar este jogo, você deve estar conectado. Deseja conectar agora?
+
+Multijogador não é permitido
+
+Falha ao entrar no jogo, pois um ou mais jogadores não têm permissão para jogos multijogador no Xbox Live.
+
+Falha ao criar um jogo online, pois um ou mais jogadores não têm permissão para jogos multijogador no Xbox Live. Desmarque a caixa "Jogo Online" para começar um jogo offline.
+
+Você não tem permissão para entrar nesta sessão de jogo porque sua configuração de privilégio de Conteúdo de Assinante é muito restrita. Altere essa configuração na parte Configurações Privacidade & Online do menu Xbox se quiser entrar nesta sessão.
+
+Você não tem permissão para entrar nesta sessão de jogo porque a configuração de privilégio de Conteúdo de Assinante de um de seus jogadores locais é muito restrita.
+
+Você não tem permissão para entrar nesta sessão de jogo porque a configuração de privilégio de Conteúdo de Assinante de um jogador na sessão é de Somente Amigos, e você não está na Lista de Amigos dele.
+
+Falha ao criar jogo
+
+Você não tem permissão para criar esta sessão de jogo porque a configuração de privilégio de Conteúdo de Assinante de um de seus jogadores locais é muito restrita. Desmarque a caixa "Jogo Online" para começar um jogo offline, ou altere essa configuração na parte Configurações Privacidade & Online do menu Xbox.
+
+Seleção automática
+
+Nenhum Pacote: Capas Padrão
+
+Capas favoritas
+
+Nível Banido
+
+O jogo em que está entrando está em sua lista de níveis banidos.
+Se você optar por participar desse jogo, o nível será removido de sua lista de níveis banidos.
+
+Banir este nível?
+
+Tem certeza de que deseja adicionar este nível à lista de níveis banidos?
+Selecionar OK também fechará este jogo.
+
+Remover da Lista de Banidos
+
+Intervalo do Salvamento Automático
+
+Intervalo do salvamento automático: NÃO
+
+Min.
+
+Não é possível colocar aqui!
+
+Não é permitido colocar lava perto do ponto de criação do nível devido à possibilidade de morte imediata dos jogadores criados.
+
+Este jogo tem o recurso de salvamento automático de nível. Quando você vir o ícone acima sendo exibido, o jogo está salvando seus dados.
+Não desligue o console Xbox 360 enquanto este ícone estiver na tela.
+
+Opacidade da Interface
+
+Preparando salvamento automático do nível
+
+Tamanho do HUD
+
+Tamanho do HUD (Tela Dividida)
+
+Semente
+
+Desbloquear Pacote de Capas
+
+Para usar a capa selecionada, você precisa desbloquear este pacote de capas.
+Deseja desbloquear o pacote de capas agora?
+
+Desbloquear pacote de textura
+
+Para usar este pacote de textura no seu mundo, você precisa desbloqueá-lo.
+Você deseja desbloquear ele agora?
+
+Pacote de texturas para avaliação
+
+Você está usando uma versão de avaliação do pacote de texturas. Você não poderá salvar este mundo até desbloquear a versão completa.
+ Gostaria de desbloquear a versão completa do pacote de texturas?
+
+Pacote de textura não disponível
+
+Desbloquear a versão completa
+
+Baixar versão de avaliação
+
+Baixar versão completa
+
+Este mundo usa um pacote de combinações ou pacote de texturas que você não tem!
+Deseja instalar o pacote de combinações ou o pacote de texturas agora?
+
+Obter Versão de Avaliação
+
+Obter Versão Completa
+
+Expulsar
+
+Tem certeza de que deseja expulsar este jogador do jogo? Eles não poderão entrar de novo até que você reinicie o mundo.
+
+Pacotes de Imagens do jogador
+
+Temas
+
+Pacotes de Capas
+
+Permite os amigos dos amigos
+
+Você não pode entrar neste jogo porque ele foi limitado aos jogadores que são amigos do host.
+
+Não é possível entrar no jogo
+
+Selecionado
+
+Capa selecionada:
+
+Conteúdo para Baixar Corrompido
+
+Este conteúdo para baixar está corrompido e não pode ser usado. Você deve excluí-lo e reinstalá-lo a partir do menu da Loja Minecraft.
+
+Alguns conteúdos para baixar estão corrompidos e não podem ser usados. Você deve excluí-los e reinstalá-los a partir do menu da Loja Minecraft.
+
+Seu modo de jogo foi alterado
+
+Renomeie Seu Mundo
+
+Digite o novo nome para seu mundo
+
+Modo Jogo Sobrevivência
+
+Modo Jogo Criativo
+
+Sobrevivência
+
+Criativo
+
+Criado em Sobrevivência
+
+Criado em Criativo
+
+Renderizar Nuvens
+
+O que deseja fazer com este jogo salvo?
+
+Renomear Salvamento
+
+Salvando automaticamente em %d...
+
+Ativado
+
+Desativado
+
+Normal
+
+Superplano
+
+Quando habilitado, o jogo será um jogo online.
+
+Quando habilitado, apenas jogadores convidados poderão entrar.
+
+Quando habilitado, os amigos das pessoas em sua Lista de Amigos poderão entrar no jogo.
+
+Quando habilitado, os jogadores podem causar danos a outros jogadores. Afeta somente o modo Sobrevivência.
+
+Quando desabilitado, os jogadores que entrarem no jogo não poderão construir nem minerar sem autorização.
+
+Quando habilitado, o fogo poderá se espalhar até blocos inflamáveis próximos.
+
+Quando habilitado, a TNT explodirá quando ativada.
+
+Quando habilitado, o host pode alternar o vôo, desabilitar exaustão e ficar invisível pelo menu do jogo. Desabilita atualizações de conquistas e de placar de líderes.
+
+Quando ativado, o Submundo é recriado. É útil quando se tem um jogo salvo mais antigo em que as Fortalezas do Submundo não estavam presentes.
+
+Quando habilitado, estruturas como Vilas e Fortalezas serão geradas no mundo.
+
+Quando habilitado, um mundo completamente plano será gerado na Superfície e no Submundo.
+
+Quando habilitado, um baú contendo alguns itens úteis será criado perto do ponto de criação do jogador.
+
+Pacotes de Capas
+
+Temas
+
+Imagens do Jogador
+
+Itens de Avatar
+
+Pacotes de Texturas
+
+Pacotes de Combinações
+
+{*PLAYER*} incendiou-se
+
+{*PLAYER*} queimou até a morte
+
+{*PLAYER*} tentou nadar na lava
+
+{*PLAYER*} asfixiou-se em uma parede
+
+{*PLAYER*} afogou-se
+
+{*PLAYER*} morreu de fome
+
+{*PLAYER*} foi espetado até a morte
+
+{*PLAYER*} atingiu o chão com muita força
+
+{*PLAYER*} caiu para fora do mundo
+
+{*PLAYER*} morreu
+
+{*PLAYER*} explodiu
+
+{*PLAYER*} foi morto por magia
+
+{*PLAYER*} foi morto pelo sopro do Dragão Ender
+
+{*PLAYER*} foi assassinado por {*SOURCE*}
+
+{*PLAYER*} foi assassinado por {*SOURCE*}
+
+{*PLAYER*} levou um tiro de {*SOURCE*}
+
+{*PLAYER*} foi atingido por uma bola de fogo de {*SOURCE*}
+
+{*PLAYER*} foi esmurrado por {*SOURCE*}
+
+{*PLAYER*} foi morto por {*SOURCE*}
+
+Neblina Base
+
+Exibir HUD
+
+Exibir Mão
+
+Gamertags na Tela Dividida
+
+Mensagens de Morte
+
+Personagem Animado
+
+Animação pessoal de capa
+
+Você não pode mais minerar nem usar itens
+
+Agora você pode minerar e usar itens
+
+Você não pode mais colocar blocos
+
+Agora você pode colocar blocos
+
+Agora você pode usar portas e acionadores
+
+Você não pode mais usar portas e acionadores
+
+Agora você pode usar recipientes (por ex., baús)
+
+Você não pode mais usar recipientes (por ex., baús)
+
+Você não pode mais atacar multidões
+
+Agora você pode atacar multidões
+
+Você não pode mais atacar jogadores
+
+Agora você pode atacar jogadores
+
+Você não pode mais atacar animais
+
+Agora você pode atacar animais
+
+Agora você é um moderador
+
+Você não é mais um moderador
+
+Agora você pode voar
+
+Você não pode mais voar
+
+Você não vai mais ficar cansado
+
+Agora você vai ficar cansado
+
+Agora você é invisível
+
+Você não é mais invisível
+
+Agora você é invulnerável
+
+Você não é mais invulnerável
+
+%d MSP
+
+Dragão Ender
+
+%s entrou no Final
+
+%s saiu do Final
+
+
+{*C3*}Vejo o jogador ao qual você se refere.{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}?{*EF*}{*B*}{*B*}
+{*C3*}Sim. Tome cuidado. Ele está em um nível superior agora. Ele pode ler nossos pensamentos.{*EF*}{*B*}{*B*}
+{*C2*}Mas isso não importa. Acho que faz parte do jogo.{*EF*}{*B*}{*B*}
+{*C3*}Gosto desse jogador. Ele jogou bem. Não desistiu.{*EF*}{*B*}{*B*}
+{*C2*}Está lendo nossos pensamentos como se fossem palavras em uma tela.{*EF*}{*B*}{*B*}
+{*C3*}É como ele escolhe imaginar muitas coisas, quando vai fundo em um jogo.{*EF*}{*B*}{*B*}
+{*C2*}As palavras formam uma interface maravilhosa. Muito flexível. E menos aterrorizante que a realidade por trás da tela.{*EF*}{*B*}{*B*}
+{*C3*}Eles costumavam ouvir vozes. Antes de os jogadores poderem ler. Na época em que aqueles que não jogavam chamavam os jogadores de bruxos e feiticeiros. E os jogadores sonhavam em voar em vassouras movidas por demônios.{*EF*}{*B*}{*B*}
+{*C2*}Qual era o sonho desse jogador?{*EF*}{*B*}{*B*}
+{*C3*}Ele sonhava com luz do sol e árvores. Fogo e água. Ele sonhou e criou. E ele sonhou e destruiu. Ele sonhou e perseguiu, e foi perseguido. Ele sonhou com abrigo.{*EF*}{*B*}{*B*}
+{*C2*}Ah, a interface original. Um milhão de anos atrás e ainda funciona. Mas qual foi a estrutura que esse jogador criou na realidade por trás da tela?{*EF*}{*B*}{*B*}
+{*C3*}Ele trabalhou, com muitos outros, para esculpir um mundo real em uma comunidade de {*EF*}{*NOISE*}{*C3*} e criou um {*EF*}{*NOISE*}{*C3*} para {*EF*}{*NOISE*}{*C3*}, no {*EF*}{*NOISE*}{*C3*}.{*EF*}{*B*}{*B*}
+{*C2*}Ele não pode ler esse pensamento.{*EF*}{*B*}{*B*}
+{*C3*}Não. Ele ainda não alcançou esse nível mais elevado. Deverá alcançá-lo no longo sonho da vida e não no curto sonho de um jogo.{*EF*}{*B*}{*B*}
+{*C2*}Ele sabe que o adoramos? Que o universo é bom?{*EF*}{*B*}{*B*}
+{*C3*}Às vezes, em meio aos seus pensamentos, ele ouve o universo.{*EF*}{*B*}{*B*}
+{*C2*}Mas há vezes em que fica triste no longo sonho. Ele cria mundos que não têm verão e estremecem sob um sol negro e transforma sua criação triste em realidade.{*EF*}{*B*}{*B*}
+{*C3*}Para curá-lo da aflição ele o destrói. A aflição faz parte de sua tarefa. Não podemos interferir.{*EF*}{*B*}{*B*}
+{*C2*}Às vezes, quando estão mergulhados em sonhos, quero dizer a eles que estão construindo mundos reais. Às vezes, quero lhes falar da importância deles para o universo. Às vezes, quando não conseguem uma conexão real, quero lhes ajudar a dizer a palavra que temem.{*EF*}{*B*}{*B*}
+{*C3*}Ele lê nossos pensamentos.{*EF*}{*B*}{*B*}
+{*C2*}Algumas vezes eu não me importo. Outras vezes desejo dizer a eles que esse mundo que pensam ser verdadeiro é meramente {*EF*}{*NOISE*}{*C2*} e {*EF*}{*NOISE*}{*C2*}, quero dizer a eles que são {*EF*}{*NOISE*}{*C2*} no {*EF*}{*NOISE*}{*C2*}. Eles veem tão pouco da realidade, no longo sonho.{*EF*}{*B*}{*B*}
+{*C3*}E ainda assim participam do jogo.{*EF*}{*B*}{*B*}
+{*C2*}Mas seria tão fácil dizer a eles...{*EF*}{*B*}{*B*}
+{*C3*}Tão forte para esse sonho. Contar que viver é impedi-los de viver.{*EF*}{*B*}{*B*}
+{*C2*}Não vou dizer ao jogador como viver.{*EF*}{*B*}{*B*}
+{*C3*}O jogador cresce incansavelmente.{*EF*}{*B*}{*B*}
+{*C2*}Vou contar uma história ao jogador.{*EF*}{*B*}{*B*}
+{*C3*}Mas não a verdade.{*EF*}{*B*}{*B*}
+{*C2*}Não. A história que contém a verdade está a salvo em uma gaiola de palavras. Não a verdade nua e crua que pode queimar a qualquer distância.{*EF*}{*B*}{*B*}
+{*C3*}Dar a ela um corpo novamente.{*EF*}{*B*}{*B*}
+{*C2*}Sim. Jogador...{*EF*}{*B*}{*B*}
+{*C3*}Use seu nome.{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}. Jogador dos jogos.{*EF*}{*B*}{*B*}
+{*C3*}Muito bom.{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}Respire fundo agora. Respire novamente. Sinta o ar em seus pulmões. Deixe seus braços voltarem. Isso, mova seus dados. Sinta seu corpo novamente, sob a gravidade, no ar. Volte a existir no longo senha. Ai está você. Seu corpo tocando o universo novamente em cada ponto, como se você fosse coisas separadas. Como se nós fossemos coisas separadas.{*EF*}{*B*}{*B*}
+{*C3*}Quem somos nós? Já fomos chamados de espírito da montanha. Pai sol, mãe lua. Espíritos ancestrais, espíritos animais. Jinn. Fantasmas. O homem verde. Depois deuses e demônios. Anjos. Poltergeists. Alienígenas, extraterrestres. Léptons, quarks. As palavras mudam. Nós não.{*EF*}{*B*}{*B*}
+{*C2*}Somos o universo. Somos tudo o que não é você. Você está olhando para nós agora, pela pele e por seus olhos. E por que o universo toca sua pele e lança luz sobre você? Para vê-lo, jogador. Para conhecê-lo. E para ser conhecido. Quero lhe contar uma história.{*EF*}{*B*}{*B*}
+{*C2*}Era uma vez um jogador.{*EF*}{*B*}{*B*}
+{*C3*}Esse jogador era você, {*PLAYER*}.{*EF*}{*B*}{*B*}
+{*C2*}Às vezes se julgava humano, na crosta fina de um globo girando de rocha pastosa. A bola de rocha pastosa circundava uma bola de gás flamejante 330 mil vezes mais compacta que ela. Estavam tão longe que a luz levava oito minutos para cruzar a distância. A luz era informação de uma estrela e podia queimar sua pela a 150 milhões de quilômetros de distância.{*EF*}{*B*}{*B*}
+{*C2*}Às vezes o jogador sonhava que era um mineiro, na superfície de um mundo plano e infinito. O sol era um quadrado branco. Os dias eram curtos; havia muito a fazer; e a morte era uma inconveniência temporária.{*EF*}{*B*}{*B*}
+{*C3*}Às vezes o jogador sonhava que estava perdido em uma história.{*EF*}{*B*}{*B*}
+{*C2*}Às vezes sonhava que era outras coisas, em outros lugares. Às vezes esses sonhos eram perturbadores. Outras eram bem bonitos. Às vezes o jogador acordava de um sonho em outro, depois acordava desse em um terceiro.{*EF*}{*B*}{*B*}
+{*C3*}Às vezes o jogador sonhava que via palavras em uma tela.{*EF*}{*B*}{*B*}
+{*C2*}Vamos voltar.{*EF*}{*B*}{*B*}
+{*C2*}Os átomos do jogador estavam espalhados na grama, nos rios, no ar, no chão. Uma mulher recolheu os átomos; ela bebeu, comeu e inalou; e a mulher montou o jogador no próprio corpo.{*EF*}{*B*}{*B*}
+{*C2*}E o jogador despertou do mundo quente e escuro do corpo de sua mãe para o longo sonho.{*EF*}{*B*}{*B*}
+{*C2*}E o jogador estava em uma nova história, nunca antes contada, escrita nas letras do DNA. E o jogador era um novo programa, nunca antes executado, gerado por um código-fonte de um bilhão de anos. E o jogador era um novo ser humano, que nunca viveu antes, feito de nada além de leite e amor.{*EF*}{*B*}{*B*}
+{*C3*}Você é o jogador. A história. O programa. O ser humano. Feito de nada além de leite e amor.{*EF*}{*B*}{*B*}
+{*C2*}Vamos retroceder um pouco mais.{*EF*}{*B*}{*B*}
+{*C2*}Os sete bilhões, bilhões e bilhões de átomos do corpo do jogador foram criados, muito antes deste jogo, no coração de uma estrela. Então, o jogador também é informação de uma estrela. E o jogador move-se por uma história, que é uma floresta de informações plantadas por um homem chamado Julian, em um mundo plano e infinido criado por um homem chamado Markus, que existe dentre de um pequeno mundo particular criado pelo jogador, que habita um universo criado por...{*EF*}{*B*}{*B*}
+{*C3*}Silêncio. Às vezes o jogador criava um mundo pequeno e particular que era tranquilo, quente e simples. Outras difícil, frio e complicado. Às vezes criava um modelo do universo em sua cabeça; sinais de energia movendo-se por vastos espaços vazios. Às vezes chamava esses sinais de "elétrons" e "prótons".{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}Às vezes os chamavam de "planetas" e "estrelas".{*EF*}{*B*}{*B*}
+{*C2*}Às vezes acreditava estar em um universo feito de energia composta de coisas ocasionais; zeros e uns; linhas de código. Outras vezes achava que estava participando de um jogo. Às vezes acreditava estar lendo palavras em uma tela.{*EF*}{*B*}{*B*}
+{*C3*}Você é o jogador, lendo palavras...{*EF*}{*B*}{*B*}
+{*C2*}Silêncio... Às vezes o jogador lê linhas do código em uma tela. Decodificadas em palavras; palavras decodificadas em significado; significado decodificado em sentimentos, emoções, teorias, ideias, e o jogador começou a respirar mais rápido e mais profundo e percebeu que estava vivo, era um ser vivo, aquelas milhares de mortes não eram reais, o jogador estava vivo.{*EF*}{*B*}{*B*}
+{*C3*}Você. Você. Você está vivo.{*EF*}{*B*}{*B*}
+{*C2*}E às vezes o jogador acreditava que o universo falara com ele através da luz do sol que atravessava as folhas das árvores do verão{*EF*}{*B*}{*B*}
+{*C3*}e outras acreditava que o universo falara com ele através da luz que atravessava o céu claro da noite de inverno, onde um sinal de luz no canto do olho do jogador pode ser uma estrela um milhão de vezes maior que o sol, mergulhando seus planetas em plasma para ser vista, por um momento, pelo jogador, indo para casa no lado distante do universo, repentinamente sentindo o cheiro de comida, quase na porta familiar, prestes a sonhar novamente{*EF*}{*B*}{*B*}
+{*C2*}e às vezes o jogador acreditava que o universo falara com ele através dos zeros e uns, da eletricidade do mundo, nas palavras rolando em uma tela no final de um sonho{*EF*}{*B*}{*B*}
+{*C3*}e o universo disse eu amo você{*EF*}{*B*}{*B*}
+{*C2*}e o universo disse que você jogou bem{*EF*}{*B*}{*B*}
+{*C3*}e o universo disse que tudo o que precisa está dentro de você{*EF*}{*B*}{*B*}
+{*C2*}e o universo disse que você é mais forte do que pensa{*EF*}{*B*}{*B*}
+{*C3*}e o universo disse que você é a luz do dia{*EF*}{*B*}{*B*}
+{*C2*}e o universo disse que você é a noite{*EF*}{*B*}{*B*}
+{*C3*}e o universo disse que a escuridão contra a qual luta está dentro de você{*EF*}{*B*}{*B*}
+{*C2*}e o universo disse que a luz que busca está dentro de você{*EF*}{*B*}{*B*}
+{*C3*}e o universo disse que você não está sozinho{*EF*}{*B*}{*B*}
+{*C2*}e o universo disse que você não está separado das demais coisas{*EF*}{*B*}{*B*}
+{*C3*}e o universo disse que você é o universo se provando, conversando consigo mesmo, lendo seu próprio código{*EF*}{*B*}{*B*}
+{*C2*}e o universo disse eu amo você porque você é amor.{*EF*}{*B*}{*B*}
+{*C3*}E o jogo acabou e o jogador acordou do sonho. E o jogador começou um novo sonho. E o jogador sonhou novamente e sonhou melhor. E o jogador era o universo. E o jogador era amor.{*EF*}{*B*}{*B*}
+{*C3*}Você é o jogador.{*EF*}{*B*}{*B*}
+{*C2*}Acorde.{*EF*}
+
+
+Reiniciar Submundo
+
+Tem certeza de que quer redefinir o Submundo para o estado padrão neste jogo salvo? Você perderá tudo o que construiu no Submundo!
+
+Reiniciar Submundo
+
+Não redefinir Submundo
+
+Não é possível cortar este Vacogumelo no momento. O número máximo de Porcos, Ovelhas, Vacas e Gatos foi alcançado.
+
+Não é possível usar Ovo de Geração no momento. O número máximo de Porcos, Ovelhas, Vacas e Gatos foi alcançado.
+
+Não é possível usar o ovo spawn no momento. O número máximo de vacogumelos foi alcançado.
+
+Não é possível usar o ovo spawn no momento. O número máximo de lobos em um mundo foi alcançado.
+
+Não é possível usar o ovo spawn no momento. O número máximo de frangos em um mundo foi alcançado.
+
+Não é possível usar o ovo spawn no momento. O número máximo de lulas em um mundo foi alcançado.
+
+Não é possível usar o Ovo de Criação no momento. O número máximo de inimigos no mundo já foi alcançado.
+
+Não é possível usar o Ovo de Criação no momento. O número máximo de aldeões no mundo já foi alcançado.
+
+O número máximo de pinturas/quadros de itens foi alcançado.
+
+Você não pode gerar inimigos no Modo Paz.
+
+Este animal não pode entrar no Modo Amor. O número máximo de Porcos, Ovelhas, Vacas e Gatos de criação foi alcançado.
+
+Este animal não pode entrar em Modo Amor. O número máximo de lobos foi alcançado.
+
+Este animal não pode entrar em Modo Amor. O número máximo de frangos foi alcançado.
+
+Este animal não pode entrar em Modo Amor. O número máximo de vacogumelos foi alcançado.
+
+O número máximo de barcos em um mundo foi alcançado.
+
+O número máximo de Cabeças de multidão no mundo foi alcançado.
+
+Inverter
+
+Canhoto
+
+Morreu!
+
+Gerar Novamente
+
+Conteúdo para Baixar
+
+Alterar Capa
+
+Como Jogar
+
+Controles
+
+Configurações
+
+Créditos
+
+Reinstalar Conteúdo
+
+Configurações de Depuração
+
+Fogo Espalha
+
+TNT Explode
+
+Jogador x Jogador
+
+Confiar nos Jogadores
+
+Privilégios do Host
+
+Gerar Estruturas
+
+Mundo Superplano
+
+Baú de Bônus
+
+Opções de Mundo
+
+Pode Construir e Minerar
+
+Pode Usar Portas e Acionadores
+
+Pode Abrir Recipientes
+
+Pode Atacar Jogadores
+
+Pode Atacar Animais
+
+Moderador
+
+Expulsar
+
+Pode Voar
+
+Desabilitar Exaustão
+
+Invisível
+
+Opções do Host
+
+Jogadores/Convidar
+
+Jogo online
+
+Só convidados
+
+Mais Opções
+
+Carregar
+
+Novo Mundo
+
+Nome do Mundo
+
+Semente para Criação de Mundo
+
+Deixar em branco para semente aleatória
+
+Jogadores
+
+Entrar no Jogo
+
+Iniciar Jogo
+
+Nenhum Jogo Encontrado
+
+Jogar
+
+Placares de Líderes
+
+Conquistas
+
+Ajuda e Opções
+
+Desbloquear Jogo Completo
+
+Continuar Jogo
+
+Salvar Jogo
+
+Dificuldade:
+
+Tipo de Jogo:
+
+Gamertags:
+
+Estruturas:
+
+Tipo de Nível:
+
+JxJ:
+
+Confiar Jogadores:
+
+TNT:
+
+Fogo Espalha:
+
+Reinstalar Tema
+
+Reinstalar Imagem do Jogador 1
+
+Reinstalar Imagem do Jogador 2
+
+Reinstalar Item de Avatar 1
+
+Reinstalar Item de Avatar 2
+
+Reinstalar Item de Avatar 3
+
+Opções
+
+Áudio
+
+Controle
+
+Gráficos
+
+Interface do Usuário
+
+Restaurar Padrões
+
+Exibir Oscilação
+
+Dicas
+
+Dicas de Ferramentas do Jogo
+
+Gamertags no Jogo
+
+Dividir Tela p/ 2 Jogadores
+
+Concluído
+
+Editar mensagem da placa:
+
+Preencha os detalhes que acompanharão sua captura de tela
+
+Legenda
+
+Captura de tela do jogo
+
+Editar mensagem da placa:
+
+Vejam o que fiz no Minecraft: Xbox 360 Edition!
+
+Texturas, ícones e interface do usuário clássicos do Minecraft!
+
+Mostrar todos os mundos de Combinações
+
+Selecionar slot para salvar transferência
+
+Slot vazio
+
+Carregando metadados salvos
+
+Carregando dados salvos
+
+Carregando jogo salvo para Xbox One
+
+Carregamento cancelado
+
+Você cancelou o carregamento deste salvamento para a área de transferência.
+
+Sem efeitos
+
+Velocidade
+
+Lentidão
+
+Pressa
+
+Fadiga do Minerador
+
+Força
+
+Fraqueza
+
+Saúde Imediata
+
+Dano Imediato
+
+Salto Turbinado
+
+Náuseas
+
+Regeneração
+
+Resistência
+
+Resistência ao Fogo
+
+Respirar na Água
+
+Invisibilidade
+
+Cegueira
+
+Visão Noturna
+
+Fome
+
+Veneno
+
+de Rapidez
+
+de Lentidão
+
+de Pressa
+
+de Lentidão
+
+de Força
+
+de Fraqueza
+
+Cura
+
+de Dano
+
+de Salto
+
+de Náuseas
+
+de Regeneração
+
+de Resistência
+
+de Resistência ao Fogo
+
+de Respirar na Água
+
+de Invisibilidade
+
+de Cegueira
+
+de Visão Noturna
+
+de Fome
+
+de Veneno
+
+
+
+II
+
+III
+
+IV
+
+Tchibum
+
+Mundano
+
+Desinteressante
+
+Tranquilo
+
+Limpo
+
+Leitoso
+
+Difuso
+
+Sem Artifícios
+
+Fino
+
+Maligno
+
+Plano
+
+Grande
+
+Desajeitado
+
+Amanteigado
+
+Suave
+
+Suave
+
+Sofisticado
+
+Grosso
+
+Elegante
+
+Chique
+
+Charmoso
+
+Ousado
+
+Refinado
+
+Cordial
+
+Cintilante
+
+Potente
+
+Desagradável
+
+Inodoro
+
+Classificação
+
+Severo
+
+Amargo
+
+Grosseiro
+
+Fedido
+
+Usada como base de todas as poções. Use em uma barraca de poções para criar poções.
+
+Não tem efeitos, pode ser usada em uma barraca de poções para criar poções adicionando mais ingredientes.
+
+Aumenta a velocidade de movimento dos jogadores, animais e monstros afetados, e a velocidade de corrida, a extensão dos saltos e o campo de visão dos jogadores.
+
+Reduz a velocidade de movimento dos jogadores, animais e monstros afetados, e a velocidade de corrida, a extensão dos saltos e o campo de visão dos jogadores.
+
+Aumenta os danos causados pelos jogadores e monstros afetados durante o ataque.
+
+Reduz os danos causados pelos jogadores e monstros afetados durante o ataque.
+
+Aumenta imediatamente a saúde dos jogadores, animais e monstros afetados.
+
+Reduz imediatamente a saúde dos jogadores, animais e monstros afetados.
+
+Restaura a saúde dos jogadores, animais e monstros afetados com o tempo.
+
+Torna os jogadores, animais e monstros afetados imunes a danos do fogo, lava e ataques de Chamas à distância.
+
+Reduz a saúde dos jogadores, animais e monstros afetados com o tempo.
+
+Nitidez
+
+Atacar
+
+Veneno de Artrópodes
+
+Coice
+
+Aspecto de Fogo
+
+Proteção
+
+Proteção contra Fogo
+
+Queda de Pena
+
+Proteção contra Explosão
+
+Proteção contra Projétil
+
+Respiração
+
+Afinidade com a Água
+
+Eficiência
+
+Toque de Seda
+
+Inquebrável
+
+Pilhagem
+
+Sorte
+
+Poder
+
+Chama
+
+Soco
+
+Infinito
+
+I
+
+II
+
+III
+
+IV
+
+V
+
+VI
+
+VII
+
+VIII
+
+IX
+
+X
+
+Pode ser minerado com uma picareta de ferro ou melhor para pegar esmeraldas.
+
+Similar a um baú, porém os itens colocados dentro do Cofre Ender ficam disponíveis em todos os Cofres Ender do jogador, mesmo em uma dimensão diferente.
+
+É ativado quando uma entidade passa por um disparador conectado.
+
+Ativa um gancho disparador conectado quando uma entidade passa sobre ele.
+
+Uma maneira compacta de armazenar esmeraldas.
+
+Uma parede feita de paralelepípedos.
+
+Pode ser usado para consertar armas, ferramentas e armaduras.
+
+Fundido em fornalha para produzir quartzo.
+
+Usado como decoração.
+
+Pode ser negociado com os aldeões.
+
+Usado como decoração. Flores, mudas, cactos e cogumelos podem ser plantadas nele.
+
+Restaura 2{*ICON_SHANK_01*} e pode ser transformada em uma cenoura dourada. Pode ser plantada na fazenda.
+
+Restaura 0.5{*ICON_SHANK_01*}, ou pode ser preparado em fornalha, ou plantado na fazenda.
+
+Restaura 3{*ICON_SHANK_01*}. Criado ao cozinhar uma batata na fornalha.
+
+Restaura 1{*ICON_SHANK_01*}, ou pode ser cozinhado em uma fornalha. Pode ser plantado na fazenda. Comer isso pode te envenenar.
+
+Restaura 3{*ICON_SHANK_01*}. Criado com uma cenoura e barras de ouro.
+
+Usado para controlar um porco encilhado quando estiver montando.
+
+Restaura 4{*ICON_SHANK_01*}.
+
+Usado com uma bigorna para encantar armas, ferramentas ou armaduras.
+
+Criado ao minerar quartzo fundido. Pode ser moldado em um bloco de quartzo.
+
+Produzido com Lã. Usado como decoração.
+
+Esmeralda
+
+Vaso de Flor
+
+Cenoura
+
+Batata
+
+Batata Cozida
+
+Batata Venenosa
+
+Cenoura Dourada
+
+Cenoura na Vareta
+
+Torta de Abóbora
+
+Livro Encantado
+
+Quartzo do Submundo
+
+Minério de Esmeralda
+
+Cofre Ender
+
+Gancho Disparador
+
+Disparador
+
+Bloco de Esmeraldas
+
+Parede de Paralelepípedos
+
+Parede de Paralelepípedos com Musgo
+
+Vaso de Flor
+
+Cenouras
+
+Batatas
+
+Bigorna
+
+Bigorna
+
+Bigorna pouco danificada
+
+Bigorna muito danificada
+
+Minério de Quartzo do Submundo
+
+Bloco de Quartzo
+
+Bloco de Quartzo Cinzelado
+
+Pilar de Bloco de Quartzo
+
+Escada de Quartzo
+
+Tapete
+
+Tapete Preto
+
+Tapete Vermelho
+
+Tapete Verde
+
+Tapete Marrom
+
+Tapete Azul
+
+Tapete Roxo
+
+Tapete Ciano
+
+Tapete Cinza Claro
+
+Tapete Cinza
+
+Tapete Rosa
+
+Tapete Verde
+
+Tapete Amarelo
+
+Tapete Azul-claro
+
+Tapete Magenta
+
+Tapete Laranja
+
+Tapete Branco
+
+Arenito Cinzelado
+
+Arenito Macio
+
+{*PLAYER*} foi morto tentando machucar {*SOURCE*}
+
+{*PLAYER*} foi esmagado por uma Bigorna que caiu.
+
+{*PLAYER*} foi esmagado por um bloco que caiu.
+
+Teleportou {*PLAYER*} para {*DESTINATION*}
+
+{*PLAYER*} teleportou você até a posição dele
+
+{*PLAYER*} teleportou-se até você
+
+Espinhos
+
+Laje de Quartzo
+
+Faz as áreas escuras aparecerem claras como se fosse dia, até mesmo as submersas.
+
+Deixa invisíveis os jogadores, animais e monstros afetados.
+
+Consertar e Nomear
+
+Custo do Feitiço: %d
+
+Muito caro!
+
+Renomear
+
+Você tem:
+
+Itens necessários para negociar
+
+{*VILLAGER_TYPE*} oferece %s
+
+Consertar
+
+Negociar
+
+Tingir coleira
+
+
+ Esta é uma interface de bigorna, que pode ser usada para renomear, consertar e aplicar feitiços em armas, armaduras ou ferramentas ao custo de níveis de experiência.
+
+
+
+ {*B*}
+ Pressione{*CONTROLLER_VK_A*} para saber mais sobre a interface de bigorna.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se vocÇe já sabe usar a interface de bigorna.
+
+
+
+ Para começar a trabalhar em um item, coloque-o no primeiro espaço disponível.
+
+
+
+ Quando a matéria-prima correta é colocada no segundo espaço (ex.: lingotes de ferro para uma espada danificada), o reparo proposto aparece no outro espaço.
+
+
+
+ Como alternativa, um segundo item idêntico pode ser colocado no segundo espaço para combinar os dois itens.
+
+
+
+ Para enfeitiçar itens na bigorna, coloque um Livro Encantado no segundo espaço.
+
+
+
+ O número de níveis de experiência que o trabalho custará é mostrado abaixo da saída. Se você não tiver níveis de experiência suficientes, o reparo não será concluído.
+
+
+
+ É possível renomear o item editando o texto da caixa de textos.
+
+
+
+ Pegar o item consertado consumirá ambos os itens usados pela bigorna e diminuirá seu nível de experiência pela quantidade informada.
+
+
+
+ Nesta área há uma bigorna e um baú contendo ferramentas e armas para serem trabalhadas.
+
+
+
+ {*B*}
+ Pressione{*CONTROLLER_VK_A*} para saber mais sobre a bigorna.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se você já sabe o que precisa sobre a bigorna.
+
+
+
+ Com uma bigorna, armas e ferramentas podem ser consertadas para restaurar sua durabilidade, renomear ou enfeitiçar com Livros Encantados.
+
+
+
+ Livros Encantados podem ser encontrados dentro de Baús nas masmorras, ou encantados através de livros normais na Mesa de Feitiços.
+
+
+
+ Usar a bigorna custa níveis de experiência e cada uso tem uma chance de danificá-la.
+
+
+
+ O tipo de trabalho que deve ser feito, valor do item, número de feitiços e quantidade de trabalho prévio afetam no custo do reparo.
+
+
+
+ Renomear um item altera o nome exibido para todos os jogadores e reduz permanentemente o custo do trabalho prévio.
+
+
+
+ Dentro do baú nesta área você encontrará picaretas danificadas, matérias-primas, garrafas de feitiços e livros de encantos para serem experimentados.
+
+
+
+ Esta é a interface de comércio que mostra os negócios que podem ser feitos com um aldeão.
+
+
+
+ {*B*}
+ Pressione{*CONTROLLER_VK_A*} para saber mais sobre a interface de comércio.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se você já sabe o que precisa sobre a interface de comércio.
+
+
+
+ Todos os negócios que o aldeão quer fazer no momento são exibidos no topo.
+
+
+
+ Os negócios aparecem em vermelho e não estarão disponíveis se você não tiver itens suficientes.
+
+
+
+ A quantidade e tipo de itens que você fornece para o aldeão aparecem dentro das duas caixas à esquerda.
+
+
+
+ Você pode ver o total de itens necessários para negociar nas duas caixas à esquerda.
+
+
+
+ Pressione{*CONTROLLER_VK_A*} para negociar os itens que o aldeão quer para o item ofertado.
+
+
+
+ Neste área há um aldeão e um baú contendo papel para comprar itens.
+
+
+
+ {*B*}
+ Pressione{*CONTROLLER_VK_A*} para saber mais sobre negociar.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se você já sabe o que precisa sobre negociar.
+
+
+
+ Jogadores podem negociar itens de seus estoques com os aldeões.
+
+
+
+ Os produtos de um aldeão dependem da sua profissão.
+
+
+
+ Efetuar uma mistura de negócios adicionará aleatoriamente ou melhorará os produtos disponíveis do aldeão.
+
+
+
+ Produtos que foram negociados frequentemente pode ser removidos temporariamente, mas um aldeão sempre terá algo para negociar.
+
+
+
+ Pegue um papel do baú e tente negociar com o aldeão.
+
+
+
+ Nesta área há dois Cofres Ender.
+
+
+
+ {*B*}
+ Pressione{*CONTROLLER_VK_A*} para saber mais sobre Cofres Ender.{*B*}
+ Pressione{*CONTROLLER_VK_B*} se você já sabe o suficiente sobre Cofres Ender.
+
+
+
+ Todos os Cofres Ender em um mundo são interconectados, até mesmo em dimensões diferentes. Os itens colocados em um Cofre Ender estarão disponíveis em qualquer outro Cofre Ender.
+
+
+
+ Contudo, os conteúdos dos Baús Ender são diferentes para cada jogador.
+
+
+
+ Isso permite que os jogadores armazenem itens em qualquer Cofre Ender e os recuperem em outro Cofre Ender em um lugar diferente do mundo. Você pode experimentar isso agora colocando itens em ambos os Cofres Ender.
+
+
+Restaura 2{*ICON_SHANK_01*}, regenera saúde por 30 segundos e concede resistência ao fogo e resistência a danos por 5 minutos. Feita com uma maçã e blocos de ouro.
+
+Pode teleportar
+
+Teleportar
+
+Teleportar para o jogador
+
+Teleportar para mim
+
+Pode desativar a exaustão
+
+Pode ficar invisível
+
+Agora você pode ativar a invisibilidade
+
+Você não pode mais ativar a invisbilidade
+
+Agora você pode ativar voo
+
+Você não pode mais ativar voo
+
+Agora você pode desativar a exaustão
+
+Você não pode mais desativar a exaustão
+
+Agora você pode teleportar
+
+Você não pode mais teleportar
+
+{*T3*}COMO JOGAR: BIGORNA{*ETW*}{*B*}{*B*}
+Níveis de experiência também podem ser utilizados para consertar, encantar ou renomear itens com a Bigorna.{*B*}
+Todos os itens podem ser renomeados, embora apenas itens com durabilidade podem ser consertados ou ser encantados com Livros Encantados aplicados a eles.{*B*}
+Um item pode ser consertado ao colocá-lo em um dos espaços à esquerda, junto com a matéria-prima do produto, como Lingotes de ferro para uma Espada de ferro, ou combinados com outro item do mesmo tipo.{*B*}
+Combinar itens é mais eficiente quando feito com uma Bigorna, e ainda, se algun dos itens tiver sido encantado, o produto final pode ter encantos de ambas as origens.{*B*}
+Livros encantados podem aplicar encantos em itens ao combiná-los em uma Bigorna, desde que o encanto dos Livros seja adequado. Livros encantados podem ser encontrados em Baús nas masmorras ou encantados a partir de livros normais na Mesa de Feitiços.{*B*}
+Há uma chance da Bigorna ser danificada a cada uso, e com o uso continuado ela se destruirá.{*B*}
+
+
+{*T3*}COMO JOGAR: NEGOCIANDO{*ETW*}{*B*}{*B*}
+É possível comprar e vender itens com os aldeões. Cada aldeão tem uma profissão; eles podem ser Fazendeiros, Açougueiros, Ferreiros, Bibliotecários ou Padres, e isso afeta o tipo de itens que eles podem negociar.{*B*}
+Você encontra uma lista de todos os itens que um aldeão oferece no menu de negociações. Um aldeão pode modificar ou adicionar aos seus negócios sempre que um jogador negocia com ele, embora uma negociação possa ficar temporariamente desabilitada se usada com muita frequência.{*B*}
+Os negócios normalmente envolvem vender ou comprar diversos itens por esmeraldas.{*B*}
+Se você não tem os itens necessários para um negócio, os espaços ficarão vermelhos.{*B*}
+
+
+{*T3*}COMO JOGAR: BAÚ ENDER {*ETW*}{*B*}{*B*}
+Todos os Baús Ender em um mundo são vinculados; itens colocados em um Baú Ender são acessíveis em qualquer outro. Porém, o conteúdo dos Baús Ender são diferentes para cada jogador. Desta forma os jogadores podem armazenar itens em um Baú Ender e recuperá-lo em outros Baús Ender em outros locais do mundo.
+
+
+Fazendeiro
+
+Bibliotecário
+
+Padre
+
+Ferreiro
+
+Açogueiro
+
+Encontrados nas aldeias, os aldeões se oferecerão para vender itens para o jogador de acordo com sua profissão.
+
+Baú grande
+
+
+ Você também pode criar Livros Encantados na Mesa de Feitiços, que pode ser usada depois na Bigorna para aplicar seu feitiço em um item.
+
+
+
+ Ganchos com Cordas também providenciarão força para um circuito enquanto algo estiver acionando a corda entre eles.
+
+
+
+ Uma vez domado, um lobo usará sempre uma coleira. A cor da coleira pode ser alterada com tingimento.
+
+
+Cenouras e Batatas são cultivadas ao plantar Cenouras ou Batatas, e estarão prontas para a colheita quando o vegetal estiver visível no solo.
+
+
+ E mais, porcos podem ser encilhados, montados e guiados pelo jogador. Controle-os atiçando com uma Cenoura na vareta.
+
+
+
+ Se necessário, você pode mover seu carrinho de mina lentamente usando {*CONTROLLER_ACTION_MOVE*}. Isso ajuda a ativar o carrinho de mina colocando-o sobre um trilho com propulsão.
+
+
+Você não pode entrar neste jogo, pois a tela dividida só é compatível com o modo de Alta Definição. Remova todos os outros jogadores se quiser entrar.
+
+Cura
+
+Xbox 360
+
+Voltar
+
+Esta opção desativa as atualizações de Conquistas e do placar de líderes nesse mundo enquanto estiver jogando e se for carregá-lo novamente depois de salvar com esta opção ativada.
+
+Carregar jogo salvo para o Xbox One
+
+Carregar Salvamento
+
+Só é possível armazenar um salvamento do Xbox 360 por vez na área de transferência. Certifique-se de que baixou o salvamento atual no seu console Xbox One antes de enviar outro salvamento de Xbox 360.
+
+Enviando...
+
+Envio concluído!
+
+Falha no carregamento. Tente novamente mais tarde.
+
+Você encontrou {*progress*} de {*goal*} discos de música!
+
+
diff --git a/Minecraft.Client/Xbox/loc/lcl/pt-PT/Minecraft_all.resx b/Minecraft.Client/Xbox/loc/lcl/pt-PT/Minecraft_all.resx
new file mode 100644
index 00000000..1c850994
--- /dev/null
+++ b/Minecraft.Client/Xbox/loc/lcl/pt-PT/Minecraft_all.resx
@@ -0,0 +1,4569 @@
+
+Não Utilizado
+
+OK
+
+Anterior
+
+Cancelar
+
+Sim
+
+Não
+
+Dados Guardados Corrompidos
+
+Os teus dados guardados parecem estar corrompidos. Queres gravar novamente e substituir os dados corrompidos?
+
+Sem Espaço Livre
+
+O dispositivo de armazenamento que selecionaste não tem espaço livre suficiente para guardar os dados de jogo.
+
+Selecionar novamente
+
+Jogar sem guardar
+
+Guardar novos dados
+
+Substituir os dados?
+
+O dispositivo de armazenamento selecionado já contém dados guardados. Tens a certeza de que queres substituí-los?
+
+Não - não substituir
+
+Substituir e guardar
+
+Falha ao guardar
+
+Problema de disp. de armazen.
+
+O teu dispositivo de armazenamento não está disponível ou tem um erro
+
+O teu dispositivo de armazenamento não está disponível ou apresenta um erro. Seleciona um novo dispositivo de armazenamento.
+
+Selecionar novo dispositivo
+
+Nenhum disp. de arm. selecionado
+
+Se não selecionares um dispositivo, a opção de guardar os dados de jogo será desativada
+
+Selecionar disp. armazenamento
+
+Continuar sem guardar
+
+O teu dispositivo de armazenamento foi removido. Seleciona um novo dispositivo.
+
+Falha ao carregar
+
+Atrib. nome aos dados guardados
+
+Introduz um nome para os dados de jogo guardados
+
+Voltar à Interface Xbox
+
+Tens a certeza de que queres sair do jogo?
+
+Sessão terminada
+
+Foste reencaminhado para o ecrã principal porque o teu perfil de jogador terminou sessão
+
+O jogo terminou porque um perfil de jogador terminou sessão
+
+Continuar a jogar
+
+Perfil de jogador offline
+
+O jogo tem algumas funcionalidades que requerem um perfil de jogador ativo no Xbox Live, mas de momento estás offline.
+
+Esta funcionalidade requer um perfil de jogador ligado ao Xbox Live.
+
+Ligar ao Xbox Live
+
+Continuar a jogar offline
+
+Problema ao Obter Feito
+
+ Ocorreu um problema ao aceder ao teu perfil de jogador. Não foi possível atribuir-te o feito neste momento.
+
+Problema com o perfil de jogador
+
+Falha ao guardar as definições no perfil de jogador.
+
+Perfil de Jogador Convidado
+
+O perfil de jogador convidado não pode aceder a esta funcionalidade. Utiliza um perfil de jogador diferente.
+
+A guardar…
+
+A guardar conteúdo. Por favor não desligue a consola.
+
+Desbloquear Jogo Completo
+
+Esta é a versão de avaliação do Minecraft. Se tivesses o jogo completo, terias acabado de ganhar um feito!
+Desbloqueia o jogo completo para experimentares a diversão do Minecraft e para jogares com os teus amigos em todo o mundo através do Xbox Live.
+Queres desbloquear o jogo completo?
+
+Estás a ser reencaminhado para o menu principal devido a um problema de leitura do teu perfil.
+
+Novo Conteúdo Transferível disponível! Acede-lhe a partir do botão Loja Minecraft no Menu Principal.
+
+Podes mudar o aspeto da personagem com um Pacote de Skins da Loja Minecraft. Seleciona "Loja Minecraft" no Menu Principal para veres o que está ao teu dispor.
+
+No modo de Alta Definição, podem jogar até 4 jogadores na mesma consola com o ecrã dividido!
+
+Liga controladores extra à tua consola e prime START para te juntares a um jogo a qualquer altura.
+
+Altera as definições de gama para veres o jogo com maior ou menor luminosidade.
+
+Se configurares a dificuldade do jogo para Calmo, a tua saúde irá regenerar automaticamente e não surgirão monstros durante a noite!
+
+Dá um osso a um lobo para o domares. Depois, poderás ordenar-lhe para se sentar ou seguir-te.
+
+No menu Inventário, podes largar os objetos movendo o ponteiro para fora do menu e premindo{*CONTROLLER_VK_A*}
+
+Se dormires numa cama durante a noite irás acelerar o jogo até de madrugada, mas é necessário que todos os jogadores no jogo multijogador estejam a dormir em camas ao mesmo tempo.
+
+Para recuperares saúde, obtém costeletas a partir dos porcos, cozinha-as e come-as.
+
+Recolhe cabedal a partir das vacas e constrói armaduras.
+
+Se tiveres um balde vazio, poderás enchê-lo com leite de vaca, água ou lava!
+
+Utiliza uma enxada para preparar áreas de terreno para o cultivo.
+
+As aranhas não te atacam durante o dia, a não ser que as ataques.
+
+Utiliza uma pá para escavares terra ou areia mais rápido do que com as mãos!
+
+Se comeres as costeletas cozinhadas, irás ganhar mais saúde do que se as comeres cruas.
+
+Cria tochas para iluminares algumas zonas durante a noite. Os monstros não se aproximam das tochas.
+
+Chega ao destino mais rapidamente com uma vagoneta sobre carris!
+
+Planta alguns rebentos para que se transformem em árvores.
+
+Os pastores não te irão atacar, se não os atacares.
+
+Podes alterar o ponto de regeneração do jogo e avançar até à madrugada dormindo numa cama.
+
+Atira essas bolas de fogo de volta para o Ghast!
+
+Constrói um portal para poderes viajar até outra dimensão - o Submundo.
+
+Prime{*CONTROLLER_VK_B*} para largares o objeto que tens na mão!
+
+Usa a ferramenta certa para a tarefa!
+
+Se não conseguires encontrar carvão para as tochas, podes produzir carvão vegetal a partir de árvores numa fornalha.
+
+Não é boa ideia escavares diretamente para cima ou para baixo.
+
+O pó de ossos (obtido a partir de um osso de Esqueleto) pode ser utilizado como fertilizante e pode fazer com que as plantações cresçam instantaneamente!
+
+Os Creepers explodem quando se aproximam de ti!
+
+A obsidiana forma-se quando a água atinge um bloco de lava.
+
+A lava pode demorar vários minutos a desaparecer COMPLETAMENTE quando o bloco de origem é removido.
+
+A pedra arredondada resiste às bolas de fogo do Ghast, sendo muito útil para proteger portais.
+
+Os blocos que podem ser utilizados como fonte de luz, tais como tochas, glowstone e abóboras iluminadas, derretem a neve e o gelo.
+
+Tem cuidado ao construíres estruturas de lã a céu aberto, uma vez que os raios durante as trovoadas podem incendiar a lã.
+
+Um único balde de lava pode ser utilizado na fornalha para fundir 100 blocos.
+
+O instrumento tocado pelo bloco de notas depende do material sobre o qual se encontra.
+
+Os Mortos-vivos e Esqueletos conseguem sobreviver à luz do dia se estiverem dentro de água.
+
+Se atacares um lobo, todos os lobos nas redondezas irão virar-se contra ti. Isto também acontece com os Pastores Mortos-vivos.
+
+Os lobos não conseguem entrar no Submundo.
+
+Os lobos não atacam Creepers.
+
+As galinhas põem um ovo a cada 5 ou 10 minutos.
+
+A obsidiana só pode ser extraída com uma picareta de diamante.
+
+Os Creepers são a fonte mais comum de pólvora.
+
+Cria um baú grande colocando dois baús lado a lado.
+
+Podes ver o estado de saúde dos lobos domados pela posição da sua cauda. Dá-lhes carne para os curares.
+
+Cozinha catos numa fornalha para obteres tinta verde.
+
+Obtém as mais recentes novidades sobre este jogo do 4J Studios e do Kappische no Twitter!
+
+Impressiona os teus amigos publicando capturas de ecrã das tuas criações do Minecraft no Facebook a partir do menu de Pausa!
+
+Lê a secção Novidades nos menus Instruções de Jogo para obteres as informações mais recentes sobre o jogo.
+
+Cercas empilháveis já disponíveis no jogo!
+
+minecraftforum tem uma secção dedicada à Edição Xbox 360.
+
+Alguns animais seguir-te-ão se tiveres trigo na mão.
+
+Se um animal não se puder mover mais de 20 blocos em qualquer direção, ele não se irá desmaterializar.
+
+Música de C418!
+
+O Notch tem mais de um milhão de seguidores no Twitter!
+
+Nem todos os suecos são loiros. Alguns, como o Jens da Mojang, são ruivos!
+
+Nós pensamos que a 4J Studios retirou o Herobrine do jogo para a consola Xbox 360, mas não temos a certeza.
+
+Este jogo será atualizado no futuro!
+
+Quem é o Notch?
+
+A Mojang tem mais prémios do que colaboradores!
+
+Alguns famosos jogam Minecraft!
+
+deadmau5 gosta de Minecraft!
+
+Não olhes diretamente para os bugs.
+
+Os Creepers nasceram de um bug de codificação.
+
+É uma galinha ou um pato?
+
+Estiveste na Minecon?
+
+Nunca ninguém da Mojang viu a cara do Junkboy.
+
+Sabias que existe um Minecraft Wiki?
+
+O novo escritório do Mojang é fixe!
+
+Minecraft: Xbox 360 Edition bateu muitos recordes!
+
+O Minecon 2013 foi em Orlando, Florida, nos EUA!
+
+.party() foi fantástica!
+
+Assume sempre que os rumores são falsos e não verdadeiros!
+
+{*T3*}INSTRUÇÕES DE JOGO : PRINCÍPIOS BÁSICOS{*ETW*}{*B*}{*B*}
+Em Minecraft, podes criar tudo aquilo que quiseres colocando blocos. À noite, os monstros andam por aí; constrói um abrigo antes que seja tarde.{*B*}{*B*}
+Usa{*CONTROLLER_ACTION_LOOK*} para olhares em redor.{*B*}{*B*}
+Usa{*CONTROLLER_ACTION_MOVE*} para te deslocares.{*B*}{*B*}
+Prime{*CONTROLLER_ACTION_JUMP*} para saltar.{*B*}{*B*}
+Prime rapidamente{*CONTROLLER_ACTION_MOVE*} para a frente duas vezes para fazeres um sprint. Enquanto manténs premido o {*CONTROLLER_ACTION_MOVE*} para a frente, a personagem irá continuar a correr até que se esgote o tempo ou que a Barra de Comida tenha menos de{*ICON_SHANK_03*}.{*B*}{*B*}
+Mantém premido{*CONTROLLER_ACTION_ACTION*} para escavar e cortar utilizando as mãos ou os objetos que estiveres a segurar. Podes ter de criar uma ferramenta para colocares alguns blocos.{*B*}{*B*}
+Se estiveres a segurar um objeto, usa{*CONTROLLER_ACTION_USE*} para o utilizares ou prime{*CONTROLLER_ACTION_DROP*} para o largares.
+
+{*T3*}INSTRUÇÕES DE JOGO : MOSTRADOR SUPERIOR{*ETW*}{*B*}{*B*}
+O MOSTRADOR SUPERIOR apresenta informação sobre o teu estado; a tua saúde, o oxigénio que te resta quando estás debaixo de água, o teu nível de fome (tens de comer para reabasteceres) e a armadura, caso estejas a usar alguma. Se perderes saúde, mas tiveres uma barra de comida com 9 ou mais{*ICON_SHANK_01*}, a tua saúde será imediatamente reabastecida. Ao comeres, reabasteces a barra de comida.{*B*}
+Aqui também é mostrada a Barra de Experiência, com um valor numérico que mostra o nível de Experiência, e a barra que indica quantos Pontos de Experiência te faltam para subires de nível. Ganhas Pontos de Experiência recolhendo os Orbes de Experiência que os habitantes deixam cair quando morrem, ao escavar certos tipos de blocos, ao criar animais, ao pescar e ao fundir minério na fornalha.{*B*}
+Também apresenta os objetos disponíveis para usares. Usa{*CONTROLLER_ACTION_LEFT_SCROLL*} e{*CONTROLLER_ACTION_RIGHT_SCROLL*} para mudares o objeto que estás a segurar.
+
+{*T3*}INSTRUÇÕES DE JOGO : INVENTÁRIO{*ETW*}{*B*}{*B*}
+Usa{*CONTROLLER_ACTION_INVENTORY*} para veres o teu inventário.{*B*}{*B*}
+Este ecrã mostra os objetos disponíveis que tens na mão e todos os objetos que estás a transportar. A tua armadura também é mostrada aqui.{*B*}{*B*}
+Usa{*CONTROLLER_MENU_NAVIGATE*} para moveres o ponteiro. Usa{*CONTROLLER_VK_A*} para selecionares um objeto com o ponteiro. Caso exista mais do que um objeto, irás selecioná-los todos, ou poderás usar{*CONTROLLER_VK_X*} para selecionares apenas metade.{*B*}{*B*}
+Move o objeto com o ponteiro sobre outro espaço no inventário e coloca-o nesse espaço utilizando{*CONTROLLER_VK_A*}. Caso tenhas selecionado vários objetos com o ponteiro, usa{*CONTROLLER_VK_A*} para os colocares todos ou{*CONTROLLER_VK_X*} para colocares apenas um.{*B*}{*B*}
+Se o ponteiro estiver sobre uma armadura, verás uma descrição que te permite colocá-la rapidamente no espaço correto do inventário.{*B*}{*B*}
+É possível mudar a cor da tua Armadura de Cabedal tingindo-a. Podes fazê-lo no menu de inventário mantendo a tinta no teu ponteiro e premindo{*CONTROLLER_VK_X*} enquanto o ponteiro está sobre a peça que pretendes tingir.
+
+
+{*T3*}INSTRUÇÕES DE JOGO : BAÚ{*ETW*}{*B*}{*B*}
+Depois de criares um Baú, podes colocá-lo no mundo e usá-lo com{*CONTROLLER_ACTION_USE*} para armazenar objetos do teu inventário.{*B*}{*B*}
+Usa o ponteiro para mover os objetos do inventário para o baú.{*B*}{*B*}
+Os objetos armazenados no baú podem ser colocados no inventário mais tarde.
+
+
+{*T3*}INSTRUÇÕES DE JOGO : BAÚ GRANDE{*ETW*}{*B*}{*B*}
+Ao colocares dois baús um ao lado do outro, estes combinam-se e formam um Baú Grande, que pode armazenar ainda mais objetos.{*B*}{*B*}
+É utilizado da mesma forma que um baú normal.
+
+
+{*T3*}INSTRUÇÕES DE JOGO : CRIAÇÃO{*ETW*}{*B*}{*B*}
+Na interface de Criação, podes combinar objetos do inventário para criar novos tipos de objetos. Usa{*CONTROLLER_ACTION_CRAFTING*} para abrir a interface de criação.{*B*}{*B*}
+Desloca-te pelos separadores no topo utilizando{*CONTROLLER_VK_LB*} e{*CONTROLLER_VK_RB*} para selecionar o tipo de objeto que pretendes criar, depois usa{*CONTROLLER_MENU_NAVIGATE*} para selecionar o objeto a criar.{*B*}{*B*}
+A área de criação mostra os objetos necessários para criar o novo objeto. Prime{*CONTROLLER_VK_A*} para criar o objeto e coloca-o no teu inventário.
+
+
+{*T3*}INSTRUÇÕES DE JOGO : MESA DE CRIAÇÃO{*ETW*}{*B*}{*B*}
+Podes criar objetos maiores utilizando uma Mesa de Criação.{*B*}{*B*}
+Coloca a mesa no mundo e prime{*CONTROLLER_ACTION_USE*} para a usares.{*B*}{*B*}
+A criação na mesa funciona da mesma forma que a criação básica, mas tens à tua disposição uma área maior e uma seleção de objetos mais ampla.
+
+
+{*T3*}INSTRUÇÕES DE JOGO : FORNALHA {*ETW*}{*B*}{*B*}
+A Fornalha permite-te alterar os objetos através do fogo. Por exemplo, podes transformar minério de ferro em lingotes de ferro.{*B*}{*B*}
+Coloca a fornalha no mundo e prime{*CONTROLLER_ACTION_USE*} para a usares.{*B*}{*B*}
+Tens de colocar o combustível na parte de baixo da fornalha e o objeto que queres alterar por cima. O fogo é ateado e a fornalha acende-se.{*B*}{*B*}
+Depois de alterados os objetos, podes movê-los da área de saída para o inventário.{*B*}{*B*}
+Se o objeto sobre o qual se encontra o ponteiro for um ingrediente ou combustível para a fornalha, surgirão descrições que te permitem mover o objeto para a fornalha com um movimento rápido.
+
+
+{*T3*}INSTRUÇÕES DE JOGO : DISTRIBUIDOR{*ETW*}{*B*}{*B*}
+O Distribuidor é utilizado para disparar objetos. Terás de colocar um interruptor, por exemplo, uma alavanca, junto ao distribuidor.{*B*}{*B*}
+Para encheres o distribuidor prime{*CONTROLLER_ACTION_USE*}, depois move os objetos que queres distribuir do inventário para o distribuidor.{*B*}{*B*}
+Quando usares o interruptor, o distribuidor irá disparar um objeto.
+
+
+{*T3*}INSTRUÇÕES DE JOGO : PREPARAÇÃO DE POÇÕES{*ETW*}{*B*}{*B*}
+Para preparares poções precisas de um Posto de Poções, que pode ser construído numa mesa de criação. Todas as poções começam com uma garrafa de água, que é criada enchendo uma Garrafa de Vidro com água de um Caldeirão ou de uma fonte de água.{*B*}
+O Posto de Poções tem três orifícios para garrafas, por isso, podes preparar três poções ao mesmo tempo. Os ingredientes podem ser usados nas três garrafas, por isso, utiliza da melhor forma os teus recursos para preparares três poções em simultâneo.{*B*}
+Se colocares um ingrediente na posição superior do Posto de Poções, passado pouco tempo terás criado uma poção base. Isto por si só não tem qualquer efeito, mas se colocares outro ingrediente com esta poção de base, irás obter uma poção com um efeito.{*B*}
+Depois, podes adicionar um terceiro ingrediente para que o efeito dure mais tempo (utilizando Pó de Redstone), seja mais intenso (utilizando Pó de Glowstone) ou se transforme numa poção negativa (utilizando um Olho de Aranha Fermentado).{*B*}
+Também podes adicionar pólvora a qualquer poção para a transformares numa Poção Explosiva, que pode ser atirada. Ao atirares uma Poção Explosiva, o seu efeito será aplicado em toda a área onde aterrar.{*B*}
+
+Os ingredientes para as poções são:{*B*}{*B*}
+* {*T2*}Verruga do Submundo{*ETW*}{*B*}
+* {*T2*}Olho de Aranha{*ETW*}{*B*}
+* {*T2*}Açúcar{*ETW*}{*B*}
+* {*T2*}Lágrima de Ghast{*ETW*}{*B*}
+* {*T2*}Pó de Blaze{*ETW*}{*B*}
+* {*T2*}Creme de Magma{*ETW*}{*B*}
+* {*T2*}Melancia Brilhante{*ETW*}{*B*}
+* {*T2*}Pó de Redstone{*ETW*}{*B*}
+* {*T2*}Pó de Glowstone{*ETW*}{*B*}
+* {*T2*}Olho de Aranha Fermentado{*ETW*}{*B*}{*B*}
+
+Experimenta várias combinações de ingredientes para descobrires as diferentes poções que podes preparar.
+
+
+{*T3*}INSTRUÇÕES DE JOGO: FEITIÇOS{*ETW*}{*B*}{*B*}
+Os Pontos de Experiência recolhidos quando um habitante morre, ou quando certos blocos são extraídos ou fundidos numa fornalha, podem ser usados para enfeitiçar algumas ferramentas, armas, armaduras e livros.{*B*}
+Quando é colocada uma Espada, Arco, Machado, Picareta, Pá, Armadura ou Livro no orifício por baixo do livro na Mesa de Feitiços, os três botões à direita do orifício apresentam alguns feitiços e os respetivos custos em Níveis de Experiência.{*B*}
+Se não tiveres Níveis de Experiência suficientes para usar alguns destes, o custo surgirá a vermelho, caso contrário surgirá a verde.{*B*}{*B*}
+O feitiço aplicado é selecionado aleatoriamente com base no custo apresentado.{*B*}{*B*}
+Se a Mesa de Feitiços estiver rodeada de Estantes (até um máximo de 15 Estantes), com um bloco de intervalo entre a Estante e a Mesa de Feitiços, o poder dos feitiços irá aumentar e ver-se-ão glifos misteriosos a sair do livro na Mesa de Feitiços.{*B*}{*B*}
+Todos os ingredientes para uma Mesa de Feitiços podem ser encontrados nas aldeias de um mundo, ou escavando ou cultivando no mundo.{*B*}
+Os Livros de Feitiços são usados na Bigorna para aplicar feitiços a itens. Isto dá-te maior controlo sobre os feitiços que gostarias de ter nos teus itens.{*B*}
+
+
+{*T3*}INSTRUÇÕES DE JOGO : ANIMAIS DE QUINTA{*ETW*}{*B*}{*B*}
+Se quiseres manter os teus animais num único sítio, constrói uma área vedada com menos de 20 blocos em cada lado e coloca lá dentro os teus animais. Assim, garantes que eles ainda lá estarão quando regressares.
+
+
+{*T3*}INSTRUÇÕES DE JOGO : ANIMAIS DE CRIAÇÃO{*ETW*}{*B*}{*B*}
+Em Minecraft, os animais podem reproduzir-se e dar origem a animais bebé!{*B*}
+Para fazeres criação, precisas de os alimentar com a comida certa, para que eles entrem em 'Modo Amor'.{*B*}
+Dá Trigo a Vacas, Vacogumelos ou Ovelhas, Cenouras a porcos, Sementes de Trigo ou Verrugas do Submundo a Galinhas, ou qualquer tipo de carne a um Lobo, e estes animais começarão a procurar outro animal da sua espécie que também esteja em Modo Amor.{*B*}
+Quando dois animais da mesma espécie se encontram e estão ambos em Modo Amor, eles beijam-se durante uns segundos e depois aparece um animal bebé. O animal bebé seguirá os pais durante um tempo antes de se transformar num animal adulto.{*B*}
+Depois de estar em Modo Amor, um animal não poderá voltar a esse estado durante cerca de cinco minutos.{*B*}
+Há um limite para o número de animais que podes ter num mundo, pelo que, se já tiveres muitos, os animais podem não se reproduzir.
+
+{*T3*}INSTRUÇÕES DE JOGO : PORTAL DO SUBMUNDO{*ETW*}{*B*}{*B*}
+O Portal do Submundo permite ao jogador viajar entre o Mundo Superior e o Submundo. O Submundo pode ser usado para viajar rapidamente no Mundo Superior - viajar um bloco no Submundo equivale a viajar 3 blocos no Mundo Superior, por isso, quando constróis um portal no Submundo e sais através do mesmo, estarás 3 vezes mais longe do teu ponto de entrada.{*B*}{*B*}
+Para construir o portal são necessários pelo menos 10 blocos de Obsidiana, e o portal tem de ter 5 blocos de altura, 4 de largura e 1 de profundidade. Depois de construíres a estrutura do portal, o espaço interior da estrutura terá de ser incendiado para ser ativado. Podes fazê-lo utilizando o item de Sílex e Aço ou o item Carga de Fogo.{*B*}{*B*}
+Na imagem à direita são apresentados exemplos da construção do portal.
+
+
+{*T3*}INSTRUÇÕES DE JOGO : MULTIJOGADOR{*ETW*}{*B*}{*B*}
+O Minecraft para a consola Xbox 360 é, por definição, um jogo multijogador. Se estiveres a jogar no modo de Alta Definição, podes competir com outros jogadores ligando os controladores na consola e premindo START a qualquer altura durante o jogo.{*B*}{*B*}
+Ao iniciares ou participares num jogo online, essa informação ficará visível na tua lista de amigos (exceto se tiveres selecionado Apenas Por Convite ao criar o jogo) e se eles participarem no jogo, também ficará visível nas suas listas de amigos (se tiveres selecionado a opção Permitir Amigos de Amigos).{*B*}
+Durante um jogo, podes premir o botão BACK para abrires uma lista de todos os outros participantes no jogo, ver os seus Gamercards, expulsar jogadores e convidar outras pessoas para participarem no jogo.
+
+
+{*T3*}INSTRUÇÕES DE JOGO : PARTILHAR CAPTURAS DE ECRÃ{*ETW*}{*B*}{*B*}
+Podes obter uma captura de ecrã do teu jogo abrindo o Menu Pausa e premindo {*CONTROLLER_VK_Y*} para Partilhar no Facebook. Surge uma versão em miniatura da captura de ecrã e podes editar o texto associado à publicação no Facebook.{*B*}{*B*}
+Existe um modo de câmara especial para obter estas capturas de ecrã, que te permite ver a tua personagem de frente na imagem - prime {*CONTROLLER_ACTION_CAMERA*} até surgir a vista frontal da tua personagem antes de premires {*CONTROLLER_VK_Y*} para Partilhar.{*B*}{*B*}
+Os Gamertags não são mostrados na captura de ecrã.
+
+
+{*T3*}INSTRUÇÕES DE JOGO : NÍVEIS DE EXCLUSÃO{*ETW*}{*B*}{*B*}
+Se encontrares conteúdo ofensivo num nível, podes adicioná-lo à lista de Níveis Excluídos.
+Para tal, abre o menu Pausa e prime {*CONTROLLER_VK_RB*} para selecionar a descrição do Nível Excluído.
+Se tentares jogar este nível no futuro, serás notificado de que este nível se encontra na tua lista de Níveis Excluídos e ser-te-á dada a opção de o remover da lista e continuar a jogar o nível ou retroceder.
+
+{*T3*}INSTRUÇÕES DE JOGO : MODO CRIATIVO{*ETW*}{*B*}{*B*}
+A interface do modo criativo permite que qualquer objeto no jogo seja movido para o inventário do jogador sem ser necessário escavar ou criar o objeto.
+Os objetos no inventário do jogador não serão removidos quando são colocados ou utilizados no mundo, o que permite ao jogador concentrar-se na construção em vez de na recolha de recursos.{*B*}
+Se criares, carregares ou guardares um mundo no Modo Criativo, as atualizações de feitos e classificações serão desativadas nesse mundo, mesmo que seja carregado depois no Modo Sobrevivência.{*B*}
+Para voar no Modo Criativo, prime rapidamente {*CONTROLLER_ACTION_JUMP*} duas vezes. Para parar de voar, repete a ação. Para voares mais rápido, prime rapidamente{*CONTROLLER_ACTION_MOVE*} para a frente duas vezes enquanto estiveres a voar.
+No modo de voo, podes manter premido{*CONTROLLER_ACTION_JUMP*} para subires e{*CONTROLLER_ACTION_SNEAK*} para desceres, ou utilizar{*CONTROLLER_ACTION_DPAD_UP*} para subires, {*CONTROLLER_ACTION_DPAD_DOWN*} para desceres,
+{*CONTROLLER_ACTION_DPAD_LEFT*} para ires para a esquerda e {*CONTROLLER_ACTION_DPAD_RIGHT*} para ires para a direita.
+
+{*T3*}INSTRUÇÕES DE JOGO : OPÇÕES DE ANFITRIÃO E JOGADOR{*ETW*}{*B*}{*B*}
+
+{*T1*}Opções de jogo{*ETW*}{*B*}
+Ao carregar ou criar um mundo, prime o botão "Mais Opções" para abrir um menu que te dá maior controlo sobre o teu jogo.{*B*}{*B*}
+
+ {*T2*}Jogador vs. Jogador{*ETW*}{*B*}
+ Quando ativada, os jogadores podem causar danos a outros jogadores. Esta opção afeta apenas o modo Sobrevivência.{*B*}{*B*}
+
+ {*T2*}Confiar Jogadores{*ETW*}{*B*}
+ Quando desativada, os jogadores que participam no jogo ficam limitados na sua ação. Não podem obter ou usar objetos, colocar blocos, usar portas e interruptores, usar contentores, nem atacar jogadores ou animais. Podes alterar estas opções para um determinado jogador utilizando o menu do jogo.{*B*}{*B*}
+
+ {*T2*}Propagação de Fogo{*ETW*}{*B*}
+ Quando ativada, o fogo pode propagar-se para os blocos inflamáveis mais próximos. Esta opção pode ser alterada dentro do jogo.{*B*}{*B*}
+
+ {*T2*}Explosões de TNT{*ETW*}{*B*}
+ Quando ativada, o TNT explode quando é detonado. Esta opção pode ser alterada dentro do jogo.{*B*}{*B*}
+
+ {*T2*}Privilégios de Anfitrião{*ETW*}{*B*}
+ Quando ativada, o anfitrião pode ativar a sua capacidade de voar, desativar a exaustão e tornar-se invisível a partir do menu do jogo. {*DISABLES_ACHIEVEMENTS*}{*B*}{*B*}
+
+{*T1*}Opções de Criação de Mundos{*ETW*}{*B*}
+Ao criar um novo mundo, existem opções adicionais.{*B*}{*B*}
+
+ {*T2*}Criar Estruturas{*ETW*}{*B*}
+ Quando ativada, são geradas Aldeias e Fortalezas no mundo.{*B*}{*B*}
+
+ {*T2*}Mundo Superplano{*ETW*}{*B*}
+ Quando ativada, é gerado um mundo completamente plano no Mundo Superior e no Submundo.{*B*}{*B*}
+
+ {*T2*}Baú de Bónus{*ETW*}{*B*}
+ Quando ativada, é criado um baú com objetos úteis junto ao ponto de regeneração do jogador.{*B*}{*B*}
+
+ {*T2*}Repor Submundo{*ETW*}{*B*}
+ Quando ativada, o Submundo será novamente gerado. É útil no caso de ficheiros mais antigos que ainda não incluíam Fortalezas do Submundo.{*B*}{*B*}
+
+ {*T1*}Opções de Jogo{*ETW*}{*B*}
+ Durante o jogo, é possível aceder a várias opções pressionando {*BACK_BUTTON*} para abrir o menu de jogo.{*B*}{*B*}
+
+ {*T2*}Opções de Anfitrião{*ETW*}{*B*}
+ O anfitrião e os jogadores definidos como moderadores podem aceder ao menu "Opções de Anfitrião". Neste menu, podem ativar e desativar a propagação de fogos e as explosões de TNT.{*B*}{*B*}
+
+{*T1*}Opções de Jogador{*ETW*}{*B*}
+Para modificar os privilégios de um jogador, seleciona o nome e prime{*CONTROLLER_VK_A*} para abrir o menu dos privilégios do jogador, onde podes usar as seguintes opções.{*B*}{*B*}
+
+ {*T2*}Pode Construir e Escavar{*ETW*}{*B*}
+ Esta opção só está disponível quando "Confiar Jogadores" está desativada. Quando esta opção está ativada, o jogador pode interagir normalmente com o mundo. Quando está desativada, o jogador não poderá colocar ou destruir blocos nem interagir com muitos objetos e blocos.{*B*}{*B*}
+
+ {*T2*}Pode Usar Portas e Interruptores{*ETW*}{*B*}
+ Esta opção só está disponível quando "Confiar Jogadores" está desativada. Quando esta opção está desativada, o jogador não poderá usar portas nem interruptores.{*B*}{*B*}
+
+ {*T2*}Pode Abrir Contentores{*ETW*}{*B*}
+ Esta opção só está disponível quando "Confiar Jogadores" está desativada. Quando esta opção está desativada, o jogador não poderá abrir contentores nem baús.{*B*}{*B*}
+
+ {*T2*}Pode Atacar Jogadores{*ETW*}{*B*}
+ Esta opção só está disponível quando "Confiar Jogadores" está desativada. Quando esta opção está desativada, o jogador não pode causar danos aos outros jogadores.{*B*}{*B*}
+
+ {*T2*}Pode Atacar Animais{*ETW*}{*B*}
+ Esta opção só está disponível quando "Confiar Jogadores" está desativada. Quando esta opção está desativada, o jogador não poderá causar danos a animais.{*B*}{*B*}
+
+ {*T2*}Moderador{*ETW*}{*B*}
+ Quando esta opção está ativada, o jogador pode alterar os privilégios dos outros jogadores (exceto o anfitrião) se "Confiar Jogadores" estiver desativada, expulsar jogadores e ativar ou desativar a propagação de fogo e as explosões de TNT.{*B*}{*B*}
+
+ {*T2*}Expulsar Jogador{*ETW*}{*B*}
+ Selecionar esta opção faz com que jogadores que não estejam na mesma consola {*PLATFORM_NAME*} que o anfitrião sejam eliminados do jogo. Os jogadores expulsos não poderão voltar a participar no jogo até que este seja reiniciado.{*B*}{*B*}
+
+{*T1*}Opções de Jogador Anfitrião{*ETW*}{*B*}
+Se "Privilégios de Anfitrião" estiver ativada, o jogador anfitrião pode modificar alguns dos seus privilégios. Para modificar os privilégios de um jogador, seleciona o nome e prime{*CONTROLLER_VK_A*} para abrir o menu de privilégios do jogador, onde podes usar as seguintes opções.{*B*}{*B*}
+
+ {*T2*}Pode Voar{*ETW*}{*B*}
+ Quando esta opção está ativada, o jogador pode voar. Esta opção só é relevante no modo Sobrevivência, uma vez que todos os jogadores podem voar no modo Criativo.{*B*}{*B*}
+
+ {*T2*}Desativar Exaustão{*ETW*}{*B*}
+ Esta opção afeta apenas o modo Sobrevivência. Quando ativada, as atividades físicas (caminhar/correr/saltar, etc.) não diminuem a barra de comida. No entanto, se o jogador for ferido, a barra de comida irá diminuir lentamente enquanto o jogador estiver a recuperar.{*B*}{*B*}
+
+ {*T2*}Invisível{*ETW*}{*B*}
+ Quando esta opção está ativada, o jogador não pode ser visto pelos outros jogadores e é invulnerável.{*B*}{*B*}
+
+ {*T2*}Pode Teletransportar{*ETW*}{*B*}
+ Permite que o jogador se transporte ou transporte outros jogadores até si ou até outros jogadores no mundo.
+
+
+Página Seguinte
+
+Página Anterior
+
+Princípios Básicos
+
+HUD
+
+Inventário
+
+Baús
+
+Criar
+
+Fornalha
+
+Distribuidor
+
+Animais de Quinta
+
+Animais de Criação
+
+Preparação de Poções
+
+Feitiço
+
+Portal do Submundo
+
+Multijogador
+
+A Partilhar Capturas de Ecrã
+
+Níveis Excluídos
+
+Modo Criativo
+
+Opções de Anfitrião e Jogador
+
+Trocar
+
+Bigorna
+
+O Fim
+
+{*T3*}INSTRUÇÕES DE JOGO : O FIM{*ETW*}{*B*}{*B*}
+O Fim é outra dimensão do jogo, à qual é possível chegar através de um Portal do Fim ativo. O Portal do Fim está numa Fortaleza, que está bem abaixo da terra no Mundo Superior.{*B*}
+Para ativar o Portal do Fim, precisas de colocar um Olho de Ender em qualquer Estrutura de Portal do Fim que não o tenha.{*B*}
+Assim que o portal estiver ativo, salta para ele e entra em O Fim.{*B*}{*B*}
+Em O Fim irás encontrar o Ender Dragon, um feroz e poderoso inimigo, bem como muitos Endermen, pelo que tens de estar bem preparado para combater antes de lá entrares!{*B*}{*B*}
+Descobrirás Cristais Ender em cima de oito picos Obsidianos que o Ender Dragon usa para se curar,
+por isso, o primeiro passo na batalha é destruir cada um deles.{*B*}
+Os primeiros podem ser alcançados com flechas, mas os últimos estão protegidos por uma jaula com Vedação de Ferro, e precisarás de subir para os alcançares.{*B*}{*B*}
+Enquanto o fizeres, o Ender Dragon irá atacar-te voando na tua direção e cuspindo bolas de ácido Ender!{*B*}
+Se te aproximares do Pódio de Ovos no centro dos picos, o Ender Dragon vai fazer um voo picado e atacar-te, e é nesse momento que o poderás realmente ferir!{*B*}
+Evita o bafo ácido e aponta para os olhos do Ender Dragon para obteres os melhores resultados. Se possível, leva alguns amigos contigo para O Fim, para te ajudarem na batalha!{*B*}{*B*}
+Assim que estiveres em O Fim, os teus amigos poderão ver nos seus mapas a localização do Portal do Fim na Fortaleza,
+pelo que facilmente se juntarão a ti.
+
+
+Sprint
+
+Novidades
+
+
+{*T3*}Alterações e Adições{*ETW*}{*B*}{*B*}
+- Novos objetos - Esmeralda, Minério de Esmeralda, Bloco de Esmeralda, Baú Ender, Gancho de Armadilha, Maçã Dourada Enfeitiçada, Bigorna, Vaso de Flores, Muros de Pedra Arredondada, Muros de Pedra Arredondada com Musgo, Pintura de Wither, Batata, Batata Cozida, Batata Venenosa, Cenoura, Cenoura Dourada, Cenoura num Pau,
+Tarte de Abóbora, Poção de Visão Nocturna, Poção de Invisibilidade, Quartzo do Submundo, Minério de Quartzo do Submundo, Bloco de Quartzo, Placa de Quartzo, Escada de Quartzo, Bloco de Quartzo Esculpido, Bloco Pilar de Quartzo, Livro de Feitiços, Alcatifa.{*B*}
+- Novas receitas para Grés Suave e Grés Esculpido.{*B*}
+- Novos Habitantes - Aldeões Mortos-Vivos.{*B*}
+- Novas funcionalidades de geração de terreno - Templos do Deserto, Aldeias do Deserto, Templos da Selva.{*B*}
+- Trocas com aldeões.{*B*}
+- Interface Bigorna.{*B*}
+- Pode tingir armadura de cabedal.{*B*}
+- Pode tingir coleiras de lobo.{*B*}
+- Pode montar um porco e controlá-lo com uma Cenoura num Pau.{*B*}
+- Conteúdo de Baú Bónus atualizado com mais objetos.{*B*}
+- Alterada colocação de meios blocos e outros blocos em meios blocos.{*B*}
+- Alterada colocação de placas e escadas invertidas.{*B*}
+- Adicionadas profissões de aldeões diferentes.{*B*}
+- Aldeões gerados a partir de ovo de geração terão uma profissão aleatória.{*B*}
+- Adicionada colocação lateral de tronco.{*B*}
+- Fornalhas podem usar ferramentas de madeira como combustível.{*B*}
+- Painéis de Gelo e Vidro podem ser recolhidos com ferramentas enfeitiçadas com toque de seda.{*B*}
+- Botões de Madeira e Placas de Pressão de Madeira podem ser ativados com Flechas.{*B*}
+- Habitantes do Submundo podem ser gerados no Mundo Superior a partir de Portais.{*B*}
+- Creepers e Aranhas são agressivos para com o último jogador que os tenha atingido.{*B*}
+- Os habitantes no modo Criativo tornam-se novamente neutros após um curto período.{*B*}
+- Remover ricochete aquando de afogamento.{*B*}
+- As portas partidas por mortos-vivos apresentam danos.{*B*}
+- Gelo derrete no Submundo.{*B*}
+- Caldeirões enchem-se quando ficam à chuva.{*B*}
+- Pistões demoram o dobro do tempo a atualizar.{*B*}
+- Porco larga Sela quando é morto (se tiver sela).{*B*}
+- Cor do céu alterada no Fim.{*B*}
+- Corda pode ser colocada (para Armadilhas).{*B*}
+- Chuva escorre das folhas.{*B*}
+- Alavancas podem ser colocadas no fundo dos blocos.{*B*}
+- TNT causa danos variáveis consoante a definição de dificuldade.{*B*}
+- Receita de livro alterada.{*B*}
+- Barcos partem Nenúfares, em vez de Nenúfares partirem Barcos.{*B*}
+- Porcos largam mais Costeletas.{*B*}
+- Slimes reproduzem-se menos em mundos Superplanos.{*B*}
+- Dano de Creeper variável consoante a definição de dificuldade, mais ricochete.{*B*}
+- Corrigida a não abertura dos maxilares dos Endermen.{*B*}
+- Adicionado teletransporte de jogadores (usando o menu BACK do jogo).{*B*}
+- Novas Opções Anfitrião para voar, invisibilidade e invulnerabilidade para jogadores remotos.{*B*}
+- Novos tutoriais do Mundo Tutorial para novos itens e funcionalidades.{*B*}
+- Posições dos Baús de Discos de Música atualizadas no Mundo Tutorial.{*B*}
+
+
+{*ETB*}Bem-vindo de volta! Podes não ter reparado, mas o Minecraft sofreu alterações.{*B*}{*B*}
+Há muitas novas funcionalidades para jogares com os teus amigos. Aqui ficam algumas. Lê e depois diverte-te!{*B*}{*B*}
+{*T1*}Novos objetos{*ETB*} - Esmeralda, Minério de Esmeralda, Bloco de Esmeralda, Baú Ender, Gancho de Armadilha, Maçã Dourada Enfeitiçada, Bigorna, Vaso de Flores, Muros de Pedra Arredondada, Muros de Pedra Arredondada com Musgo, Pintura de Wither, Batata, Batata Cozida, Batata Venenosa, Cenoura, Cenoura Dourada, Cenoura num Pau,
+Tarte de Abóbora, Poção de Visão Nocturna, Poção de Invisibilidade, Quartzo do Submundo, Minério de Quartzo do Submundo, Bloco de Quartzo, Placa de Quartzo, Escada de Quartzo, Bloco de Quartzo Esculpido, Bloco Pilar de Quartzo, Livro de Feitiços, Alcatifa.{*B*}{*B*}
+ {*T1*}Novos Habitantes{*ETB*} - Aldeões Mortos-Vivos.{*B*}{*B*}
+{*T1*}Novas Funcionalidades{*ETB*} - Troca com aldeões, repara ou enfeitiça armas e ferramentas usando a Bigorna, armazena objetos num Baú Ender, controla um porco enquanto o montas usando uma Cenoura num Pau!{*B*}{*B*}
+{*T1*}Novos Mini-Tutoriais{*ETB*} – Aprende a usar as novas funcionalidades no Mundo Tutorial!{*B*}{*B*}
+{*T1*}Novos 'Easter Eggs'{*ETB*} – Mudámos de sítio todos os Discos de Música secretos no Mundo Tutorial. Vê se consegues voltar a encontrá-los!{*B*}{*B*}
+
+
+Provoca mais danos do que com a mão.
+
+Utilizado para escavar terra, erva, areia, gravilha e neve mais rápido do que com a mão. Para escavar bolas de neve precisas de pás.
+
+Necessário para escavar blocos de pedra e minério.
+
+Utilizado para cortar blocos de madeira mais rápido do que com a mão.
+
+Utilizado para lavrar blocos de terra e erva para as colheitas.
+
+As portas de madeira são ativadas através do uso, dando um golpe ou com Redstone.
+
+As portas de ferro só podem ser abertas através de Redstone, botões ou interruptores.
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+NOT USED
+
+Dá ao utilizador 1 de Armadura quando usado.
+
+Dá ao utilizador 3 de Armadura quando usado.
+
+Dá ao utilizador 2 de Armadura quando usado.
+
+Dá ao utilizador 1 de Armadura quando usado.
+
+Dá ao utilizador 2 de Armadura quando usado.
+
+Dá ao utilizador 5 de Armadura quando usado.
+
+Dá ao utilizador 4 de Armadura quando usado.
+
+Dá ao utilizador 1 de Armadura quando usado.
+
+Dá ao utilizador 2 de Armadura quando usado.
+
+Dá ao utilizador 6 de Armadura quando usado.
+
+Dá ao utilizador 5 de Armadura quando usado.
+
+Dá ao utilizador 2 de Armadura quando usado.
+
+Dá ao utilizador 2 de Armadura quando usado.
+
+Dá ao utilizador 5 de Armadura quando usado.
+
+Dá ao utilizador 3 de Armadura quando usado.
+
+Dá ao utilizador 1 de Armadura quando usado.
+
+Dá ao utilizador 3 de Armadura quando usado.
+
+Dá ao utilizador 8 de Armadura quando usado.
+
+Dá ao utilizador 6 de Armadura quando usado.
+
+Dá ao utilizador 3 de Armadura quando usado.
+
+Um lingote brilhante que pode ser usado para criar ferramentas feitas com este material. Criado derretendo minério numa fornalha.
+
+Permite transformar lingotes, pedras preciosas e tintas em blocos colocáveis. Pode ser usado como bloco de construção caro ou arrumação compacta de minério.
+
+Utilizada para enviar uma descarga elétrica quando é pisada por um jogador, um animal ou um monstro. As Placas de Pressão de Madeira podem também ser ativadas deixando cair objetos sobre as mesmas.
+
+Utilizado como escadas compactas.
+
+Utilizado para criar escadas compridas. Duas placas colocadas uma sobre a outra criam um bloco de placa dupla de tamanho normal.
+
+Utilizado como escadas longas. Duas placas colocadas uma sobre a outra irão criar um bloco de placas duplo de tamanho normal.
+
+Utilizadas para criar luz. As tochas também derretem a neve e o gelo.
+
+Utilizado como material de construção, pode servir para criar várias coisas. Pode ser criado a partir de qualquer tipo de madeira.
+
+Utilizada como material de construção. Não é influenciada pela gravidade como a Areia normal.
+
+Utilizado como material de construção.
+
+Utilizado para criar tochas, setas, sinais, escadotes e cercas e também como pegas para ferramentas e armas.
+
+Utilizada para acelerar o tempo de noite até de manhã se todos os jogadores no mundo estiverem na cama, e altera o ponto de regeneração do jogador.
+As cores da cama são sempre as mesmas, independentemente das cores da lã usada.
+
+Permite-te criar uma seleção de objetos mais ampla do que na criação normal.
+
+Permite-te fundir minério, criar carvão vegetal e vidro e cozinhar peixe e costeletas de porco.
+
+Armazena blocos e objetos no interior. Coloca dois baús lado a lado para criar um baú maior com o dobro da capacidade.
+
+Utilizada como barreira que não se pode saltar. Conta como 1,5 blocos de altura para jogadores, animais e monstros, e 1 bloco de altura para outros blocos.
+
+Utilizado para subir na vertical.
+
+São ativadas através do uso, dando um golpe ou com Redstone. Funcionam como portas normais, mas são um bloco único e estão no chão, na horizontal.
+
+Apresenta o texto introduzido por ti ou por outros jogadores.
+
+Utilizado para criar uma luz mais forte do que as tochas. Derrete a neve e o gelo e pode ser utilizado debaixo de água.
+
+Utilizado para causar explosões. É ativado depois da colocação com um objeto de Sílex e Aço ou com uma descarga elétrica.
+
+Utilizada para guardar guisado de cogumelos. Ficas com a tigela depois de comeres o guisado.
+
+Utilizado para guardar e transportar água, lava e leite.
+
+Utilizado para guardar e transportar água.
+
+Utilizado para guardar e transportar lava.
+
+Utilizado para guardar e transportar leite.
+
+Utilizada para criar fogo, explodir TNT e abrir um portal depois da sua construção.
+
+Utilizada para apanhar peixe.
+
+Mostra as posições do Sol e da Lua.
+
+Aponta para o ponto inicial.
+
+Quando seguras no mapa, poderás ver a imagem de uma área explorada. Pode ser utilizado para descobrir caminhos.
+
+Utilizado para ataques à distância com setas.
+
+Utilizadas como munição para os arcos.
+
+Restitui 2,5{*ICON_SHANK_01*}.
+
+Restitui 1{*ICON_SHANK_01*}. Podes usar até 6 vezes.
+
+Restitui 1{*ICON_SHANK_01*}.
+
+Restitui 1{*ICON_SHANK_01*}.
+
+Restaura 3{*ICON_SHANK_01*}.
+
+Restitui 1{*ICON_SHANK_01*} ou pode ser cozinhada numa fornalha. Podes ficar doente se a comeres crua.
+
+Restitui 3{*ICON_SHANK_01*}. Cria-se cozinhando galinha crua numa fornalha.
+
+Restitui 1,5{*ICON_SHANK_01*} ou pode ser cozinhado numa fornalha.
+
+Restitui 4{*ICON_SHANK_01*}. Cria-se cozinhando bife cru numa fornalha.
+
+Restituem 1,5{*ICON_SHANK_01*} ou podem ser cozinhadas numa fornalha.
+
+Restituem 4{*ICON_SHANK_01*}. Criadas ao cozinhar costeletas de porco cruas numa fornalha.
+
+Restitui 1{*ICON_SHANK_01*} ou pode ser cozinhado numa fornalha. Também pode ser dado a um Ocelote como alimento para o domar.
+
+Restitui 2,5{*ICON_SHANK_01*}. Criado ao cozinhar peixe cru numa fornalha.
+
+Restitui 2{*ICON_SHANK_01*} e pode criar uma maçã dourada.
+
+Restitui 2{*ICON_SHANK_01*} e regenera a saúde durante 4 segundos. Fabricada a partir de uma maçã e pepitas de ouro.
+
+Restitui 2{*ICON_SHANK_01*}. Se comeres isto podes ficar doente.
+
+Utilizado na receita do bolo e como ingrediente para fazer poções.
+
+Utilizada para enviar uma descarga elétrica ao ligar e desligar. Fica ligada ou desligada até ser premida novamente.
+
+Envia constantemente uma descarga elétrica ou pode ser utilizada como receptor/transmissor quando ligada ao lado de um bloco.
+Pode também ser utilizada para iluminação reduzida.
+
+Utilizado em circuitos de Redstone como repetidor, retardador e/ou díodo.
+
+Utilizado para enviar uma descarga elétrica ao ser pressionado. Permanece ativado durante cerca de um segundo antes de se desligar.
+
+Utilizado para segurar e disparar objetos em ordem aleatória quando recebe uma descarga de Redstone.
+
+Reproduz uma nota quando ativado. Toca-lhe para alterar a altura da nota. Se o colocares sobre blocos diferentes, mudará o tipo de instrumento.
+
+Utilizado para conduzir vagonetas.
+
+Quando ativado, acelera as vagonetas que lhe passam por cima. Quando não está ativado, as vagonetas param.
+
+Funciona como uma Placa de Pressão (envia um sinal de Redstone quando ativado), mas só pode ser ativado por uma vagoneta.
+
+Utilizada para te transportar a ti, um animal ou um monstro pelos carris.
+
+Utilizado para transportar bens pelos carris.
+
+Desloca-se sobre carris e pode rebocar outras vagonetas utilizando carvão.
+
+Utilizado para viajar pela água mais rapidamente do que a nadar.
+
+Recolhida a partir de ovelhas, pode ser colorida com tintas.
+
+Utilizado como material de construção, pode ser colorido com tintas. Esta receita não é recomendada, porque a Lã pode ser obtida facilmente das Ovelhas.
+
+Utilizada como tinta para criar lã preta.
+
+Utilizada como tinta para criar lã verde.
+
+Utilizados como tinta para criar lã castanha, como ingrediente para bolachas ou para cultivar Vagens de Cacau.
+
+Utilizada como tinta para criar lã prateada.
+
+Utilizada como tinta para criar lã amarela.
+
+Utilizada como tinta para criar lã vermelha.
+
+Utilizado para o crescimento instantâneo de plantações, árvores, ervas altas, cogumelos gigantes e flores e pode ser usado em receitas de tinta.
+
+Utilizado como tinta para criar lã cor-de-rosa.
+
+Utilizado como tinta para criar lã cor-de-laranja.
+
+Utilizado como tinta para criar lã verde-lima.
+
+Utilizado como tinta para criar lã cinza.
+
+Tinta para criar lã cinza clara.
+A tinta pode também ser feita combinando tinta cinza com farinha de ossos, permitindo criar 4 tintas cinzentas claras a partir de cada saco, em vez de 3.
+
+Utilizado como tinta para criar lã azul clara.
+
+Utilizado como tinta para criar lã ciano.
+
+Utilizado como tinta para criar lã roxa.
+
+Utilizado como tinta para criar lã magenta.
+
+Utilizado como tinta para criar lã azul.
+
+Reproduz Discos de Música.
+
+Utiliza-os para criar ferramentas muito duras, armas ou armaduras.
+
+Utilizado para criar uma luz mais forte do que as tochas. Derrete a neve e o gelo e pode ser utilizado debaixo de água.
+
+Utilizado para criar livros e mapas.
+
+Pode ser usado para criar uma estante de livros ou enfeitiçado para fazer Livros de Feitiços.
+
+Permite criar feitiços mais poderosos quando colocada em volta da Mesa de Feitiços.
+
+Utilizado como decoração.
+
+Pode ser extraído com uma picareta de ferro ou superior, e depois derretido numa fornalha para criar lingotes de ouro.
+
+Pode ser extraído com uma picareta de pedra ou superior, e depois derretido numa fornalha para criar lingotes de ferro.
+
+Pode ser extraído com uma picareta para recolher carvão.
+
+Pode ser extraído com uma picareta de pedra ou superior para recolher lápis-lazúli.
+
+Pode ser extraído com uma picareta de ferro ou superior para recolher diamantes.
+
+Pode ser extraído com uma picareta de ferro ou superior para recolher pó de Redstone.
+
+Pode ser extraído com uma picareta para recolher pedra arredondada.
+
+Recolhida com uma pá. Pode ser usada na construção.
+
+Pode ser plantada e irá transformar-se numa árvore.
+
+Não pode ser partida.
+
+Incendeia tudo aquilo em que toca. Pode ser recolhida num balde.
+
+Recolhida com uma pá. Pode ser derretida para criar vidro utilizando a fornalha. É afetada pela gravidade se não tiver um tijolo por baixo.
+
+Recolhida com uma pá. Por vezes produz sílex quando é escavada. É afetada pela gravidade se não tiver um tijolo por baixo.
+
+Cortada com um machado, pode ser usada para criar tábuas ou como combustível.
+
+Criado numa fornalha derretendo areia. Pode ser usado na construção, mas irá partir se o tentares escavar.
+
+Retirado da pedra com uma picareta. Pode ser usado para construir uma fornalha ou ferramentas de pedra.
+
+Cozido a partir de barro numa fornalha.
+
+Pode ser cozido sob a forma de tijolos numa fornalha.
+
+Quando partidos, produzem bolas de barro que podem ser cozidas para criar tijolos na fornalha.
+
+Uma forma compacta de armazenar bolas de neve.
+
+Pode ser escavada com uma pá para criar bolas de neve.
+
+Por vezes produz sementes de trigo quando partida.
+
+Pode ser usada para criar tinta.
+
+Produz guisado com uma tigela.
+
+Só pode ser extraída com uma picareta de diamante. É produzida através de uma combinação de água e lava e é utilizada para construir portais.
+
+Produz grandes quantidades de monstros.
+
+É colocado no chão para transportar uma descarga elétrica. Quando usado numa poção faz aumentar a duração do efeito.
+
+Uma vez crescidas, as plantações estão prontas para a recolha do trigo.
+
+Terreno preparado para semear.
+
+Pode ser cozinhado na fornalha para criar tinta verde.
+
+Pode criar açúcar.
+
+Pode ser usada como capacete ou transformada numa abóbora iluminada em conjunto com uma tocha. É ainda o ingrediente principal da Tarte de Abóbora.
+
+Queima eternamente se for acesa.
+
+Abranda o movimento de tudo aquilo que lhe passar por cima.
+
+Ficar de pé no portal permite-te passar entre o Mundo Superior e o Submundo.
+
+Utilizado como combustível na fornalha e pode criar tochas.
+
+Recolhido ao matar uma aranha, pode ser transformado num Arco ou numa Cana de Pesca, ou colocado no chão para criar uma Armadilha.
+
+Recolhida ao matar uma galinha, pode criar uma seta.
+
+Recolhida ao matar um Creeper, pode ser transformada em TNT ou usada como ingrediente em poções.
+
+Podem ser plantadas em terrenos de cultivo para obter colheitas. Certifica-te de que as sementes têm luz suficiente para crescer!
+
+Recolhido nas plantações, pode ser usado para criar alimentos.
+
+Recolhida ao escavar gravilha, pode ser usada para criar uma ferramenta de sílex e aço.
+
+Quando colocada num porco, permite-te montá-lo. O porco pode então ser guiado usando uma Cenoura num Pau.
+
+Recolhida ao escavar neve, pode ser atirada.
+
+Recolhido ao matar uma vaca, pode ser transformado numa armadura ou usado para fazer Livros.
+
+Recolhida ao matar um Slime e usada como ingrediente para poções ou transformada para fazer Pistões Pegajosos.
+
+Postos de forma aleatória pelas galinhas, podem ser usados para criar alimentos.
+
+Recolhido ao extrair Glowstone, pode ser usado para criar novos blocos de Glowstone ou fazer parte de uma poção que aumente a potência do efeito.
+
+Recolhido ao matar um esqueleto. Pode ser usado para criar farinha de ossos e para domesticar lobos.
+
+Recolhido quando um esqueleto mata um Creeper. Pode ser reproduzido numa jukebox.
+
+Extingue incêndios e ajuda as plantações a crescer. Pode ser recolhida num balde.
+
+Quando partidas, por vezes soltam um rebento que pode ser plantado para que cresça uma árvore.
+
+Encontrada nas masmorras, pode ser usada para construção e decoração.
+
+Usadas para obter lã das ovelhas e recolher blocos de folhas.
+
+Quando é ativado (utilizando um botão, alavanca, placa de pressão, tocha de Redstone ou Redstone com qualquer um destes), o pistão estica e empurra blocos.
+
+Quando é ativado (utilizando um botão, alavanca, placa de pressão, tocha de Redstone ou Redstone com qualquer um destes), o pistão estica e empurra blocos. Quando recolhe, puxa o bloco que está a tocar na parte esticada.
+
+É feito de blocos de Pedra e encontra-se habitualmente nas Fortalezas.
+
+Utilizado como barreira, semelhante às vedações.
+
+Semelhante a uma porta, mas utilizado principalmente com vedações.
+
+Pode ser criado a partir de Fatias de Melancia.
+
+Blocos transparentes que podem ser usados em vez dos Blocos de Vidro.
+
+Produzem abóboras.
+
+Produzem melões.
+
+Largada pelos Enderman quando morrem. Quando atirada, o jogador é teletransportado até ao local onde a Pérola de Ender aterra e perde alguma saúde.
+
+Um bloco de terra com erva por cima. Pode ser recolhido com uma pá e utilizado para construção.
+
+Pode ser usada na construção e decoração.
+
+Torna os movimentos mais lentos quando passas por ela. Pode ser destruída com tesouras para recolheres fio.
+
+Regenera um Peixe Prateado quando destruído. Também pode regenerar um Peixe Prateado se estiver perto de outro Peixe Prateado quando for atacado.
+
+Crescem ao longo do tempo depois de plantadas. Podem ser recolhidas com tesouras. Podem ser escaladas como escadas.
+
+Escorregadio, transforma-se em água se estiver sobre outro bloco quando é destruído. Derrete-se se estiver demasiado perto de uma fonte de luz ou quando colocado no Submundo.
+
+Pode ser usado como decoração.
+
+Utilizado na preparação de poções e para localizar Fortalezas. É produzido pelos Blazes, que se encontram normalmente junto ou dentro de Fortalezas Subterrâneas.
+
+Utilizadas na preparação de poções. Produzidas pelos Ghasts quando morrem.
+
+Produzidas pelos Pastores Mortos-vivos quando morrem. Os Pastores Mortos-vivos podem ser encontrados no Submundo. Usadas como ingrediente em poções.
+
+Utilizadas na preparação de poções. Crescem de forma selvagem nas Fortalezas Subterrâneas. Também podem ser plantadas em Areias Movediças.
+
+Podem ter vários efeitos consoante o uso.
+
+Pode ser enchida de água e usada como ingrediente inicial no Posto de Poções.
+
+Um alimento venenoso e ingrediente para poções. É produzido quando uma Aranha ou Aranha das Cavernas é morta por um jogador.
+
+Utilizado na preparação de poções, principalmente para criar poções com efeito negativo.
+
+Utilizado na preparação de poções ou criado juntamente com outros objetos para criar Olho de Ender ou Creme de Magma.
+
+Usado na preparação de poções.
+
+Utilizado para fazer Poções e Poções Explosivas.
+
+Enche-se com água por ação da chuva ou utilizando um balde e pode ser usado para encher Garrafas de Vidro com água.
+
+Quando atirado, mostra a direção do Portal do Fim. Se forem colocados doze destes nas Estruturas de Portal do Fim, o Portal do Fim é ativado.
+
+Usado na preparação de poções.
+
+Semelhante aos Blocos de Erva, óptimo para cultivar cogumelos.
+
+Flutua na água e pode caminhar-se sobre ele.
+
+Utilizado para construir Fortalezas Subterrâneas. Imune às bolas de fogo de Ghast.
+
+Utilizado em Fortalezas Subterrâneas.
+
+Encontra-se nas Fortalezas do Submundo e produz Verrugas do Submundo quando se parte.
+
+Permite aos jogadores enfeitiçarem Espadas, Picaretas, Machados, Pás, Arcos e Armaduras, utilizando os Pontos de Experiência do jogador.
+
+Pode ser ativado utilizando doze Olhos de Ender e permite ao jogador viajar até à dimensão do Fim.
+
+Usadas para formar um Portal do Fim.
+
+Um tipo de bloco encontrado no Fim. É altamente resistente a explosões, por isso, é útil para construir.
+
+Este bloco é criado quando é derrotado o Dragão no Fim.
+
+Quando atirada, produz Orbes de Experiência, que aumentam os teus pontos de experiência se forem recolhidos.
+
+Útil para incendiar coisas, ou para atear fogos indiscriminadamente quando disparada de um Dispensador.
+
+São similares a uma vitrina e irão apresentar o objeto ou bloco lá colocado.
+
+Quando lançadas podem gerar uma criatura do tipo indicado.
+
+Utilizado para criar escadas compridas. Duas placas colocadas uma sobre a outra criam um bloco de placa dupla de tamanho normal.
+
+Utilizado para criar escadas compridas. Duas placas colocadas uma sobre a outra criam um bloco de placa dupla de tamanho normal.
+
+Criado através da fundição de Rocha do Submundo numa fornalha. Pode ser transformado em blocos de Tijolo do Submundo.
+
+Quando alimentados emitem luz.
+
+Pode ser colhido para recolher Grãos de Cacau.
+
+As Cabeças de Mob podem ser colocadas como decoração ou usadas como máscara na ranhura de capacete.
+
+Lula
+
+Solta sacos de tinta quando é morta.
+
+Vaca
+
+Solta cabedal quando é morta. Pode também ser ordenhada com um balde.
+
+Ovelha
+
+Solta lã quando é tosquiada (se ainda não tiver sido tosquiada). Pode ser pintada para que a sua lã ganhe uma cor diferente.
+
+Galinha
+
+Solta penas quando é morta e também põe ovos de forma aleatória.
+
+Porco
+
+Solta costeletas quando é morto. Pode ser montado utilizando uma sela.
+
+Lobo
+
+É dócil, mas, se o atacares, ele contra-ataca. Pode ser domado utilizando ossos, o que faz com que te siga e ataque tudo o que te atacar.
+
+Creeper
+
+Explode se te aproximares demasiado!
+
+Esqueleto
+
+Dispara setas contra ti. Solta setas quando é morto.
+
+Aranha
+
+Ataca-te quando te aproximas. Pode subir paredes. Solta fios quando é morta.
+
+Morto-vivo
+
+Ataca-te quando te aproximas.
+
+Pastor Morto-vivo
+
+Inicialmente dócil, ataca em grupos se for atacado.
+
+Medusa
+
+Dispara bolas flamejantes que explodem quando entram em contacto.
+
+Slime
+
+Divide-se em Slimes mais pequenos quando sofre danos.
+
+Enderman
+
+Ataca-te se olhares para ele. Consegue movimentar blocos.
+
+Peixe Prateado
+
+Atrai os Peixes Prateados escondidos quando atacado. Esconde-se nos blocos de pedra.
+
+Aranha da Caverna
+
+A sua mordidela é venenosa.
+
+Vacogumelos
+
+Usada com uma tigela para fazer guisado de cogumelos. Produz cogumelos e torna-se uma vaca normal quando tosquiada.
+
+Golem de Neve
+
+O Golem de Neve pode ser criado pelos jogadores com blocos de neve e uma abóbora. Enviam bolas de neve aos inimigos dos seus criadores.
+
+Ender Dragon
+
+Um grande dragão preto que se encontra no Fim.
+
+Blaze
+
+Inimigos que podem ser encontrados no Submundo, principalmente dentro das Fortalezas do Submundo. Produzem Varinhas de Blaze quando são mortos.
+
+Cubo de Magma
+
+Podem ser encontrados no Submundo. Semelhantes aos Slimes, dividem-se em versões mais pequenas quando são mortos.
+
+Aldeão
+
+Ocelote
+
+Podem ser encontrados em Selvas. Podem ser domesticados quando alimentados com Peixe Cru. Porém, tens de ser o Ocelote a aproximar-se de ti, pois qualquer movimento brusco vai assustá-lo.
+
+Golem de Ferro
+
+Aparece nas Aldeias para as proteger e pode ser criado usando Blocos de Ferro e Abóboras.
+
+Explosives Animator
+
+Concept Artist
+
+Number Crunching and Statistics
+
+Bully Coordinator
+
+Original Design and Code by
+
+Project Manager/Producer
+
+Rest of Mojang Office
+
+Programador-Chefe de Minecraft para PC
+
+Ninja Coder
+
+CEO
+
+White Collar Worker
+
+Customer Support
+
+Office DJ
+
+Designer/Programmer Minecraft - Pocket Edition
+
+Developer
+
+Chief Architect
+
+Art Developer
+
+Game Crafter
+
+Director of Fun
+
+Music and Sounds
+
+Programming
+
+Art
+
+QA
+
+Executive Producer
+
+Lead Producer
+
+Producer
+
+Test Lead
+
+Lead Tester
+
+Design Team
+
+Development Team
+
+Release Management
+
+Director, XBLA Publishing
+
+Business Development
+
+Portfolio Director
+
+Product Manager
+
+Marketing
+
+ Community Manager
+
+Europe Localization Team
+
+Redmond Localization Team
+
+Asia Localization Team
+
+User Research Team
+
+MGS Central Teams
+
+Milestone Acceptance Tester
+
+Special Thanks
+
+Test Manager
+
+Senior Test Lead
+
+SDET
+
+Project STE
+
+Additional STE
+
+Test Associates
+
+Jon Kågström
+
+Tobias Möllstam
+
+Risë Lugo
+
+Espada de Madeira
+
+Espada de Pedra
+
+Espada de Ferro
+
+Espada de Diamante
+
+Espada de Ouro
+
+Pá de Madeira
+
+Pá de Pedra
+
+Pá de Ferro
+
+Pá de Diamante
+
+Pá de Ouro
+
+Picareta de Madeira
+
+Picareta de Pedra
+
+Picareta de Ferro
+
+Picareta de Diamante
+
+Picareta de Ouro
+
+Machado de Madeira
+
+Machado de Pedra
+
+Machado de Ferro
+
+Machado de Diamante
+
+Machado de Ouro
+
+Enxada de Madeira
+
+Enxada de Pedra
+
+Enxada de Ferro
+
+Enxada de Diamante
+
+Enxada de Ouro
+
+Porta de Madeira
+
+Porta de Ferro
+
+Capacete Corrente
+
+Colete de Corrente
+
+Calças de Corrente
+
+Botas de Corrente
+
+Boné de Cabedal
+
+Capacete de Ferro
+
+Capacete de Diamante
+
+Capacete de Ouro
+
+Túnica de Cabedal
+
+Colete de Ferro
+
+Colete de Diamante
+
+Colete de Ouro
+
+Calças de Cabedal
+
+Leggings de Ferro
+
+Leggings de Diamante
+
+Leggings de Ouro
+
+Botas de Cabedal
+
+Botas de Ferro
+
+Botas de Diamante
+
+Botas de Ouro
+
+Lingote de Ferro
+
+Lingote de Ouro
+
+Balde
+
+Balde de Água
+
+Balde de Lava
+
+Sílex e Aço
+
+Maçã
+
+Arco
+
+Seta
+
+Carvão
+
+Carvão Vegetal
+
+Diamante
+
+Pau
+
+Tigela
+
+Guisado de Cogumelos
+
+Fio
+
+Pena
+
+Pólvora
+
+Sementes de Trigo
+
+Trigo
+
+Pão
+
+Sílex
+
+Costeleta de Porco Crua
+
+Costeleta de Porco Cozinhada
+
+Pintura
+
+Maçã de Ouro
+
+Sinal
+
+Vagoneta
+
+Sela
+
+Redstone
+
+Bola de Neve
+
+Barco
+
+Cabedal
+
+Balde de Leite
+
+Tijolo
+
+Barro
+
+Canas de Açúcar
+
+Papel
+
+Livro
+
+Slimeball
+
+Vagoneta com Baú
+
+Vagoneta com Fornalha
+
+Ovo
+
+Bússola
+
+Cana de Pesca
+
+Relógio
+
+Pó de Glowstone
+
+Peixe Cru
+
+Peixe Cozinhado
+
+Pó de Tinta
+
+Saco de Tinta
+
+Vermelho Rosa
+
+Verde Cacto
+
+Grãos de Cacau
+
+Lápis-lazúli
+
+Tinta Roxa
+
+Tinta Ciano
+
+Tinta Cinza Clara
+
+Tinta Cinza
+
+Tinta Cor-de-rosa
+
+Tinta Verde-lima
+
+Dente-de-leão
+
+Tinta Azul Clara
+
+Tinta Magenta
+
+Tinta Laranja
+
+Farinha de Ossos
+
+Osso
+
+Açúcar
+
+Bolo
+
+Cama
+
+Repetidor de Redstone
+
+Bolacha
+
+Mapa
+
+Disco Música - "13"
+
+Disco Música - "cat"
+
+Disco Música - "blocks"
+
+Disco Música - "chirp"
+
+Disco Música - "far"
+
+Disco Música - "mall"
+
+Disco Música - "mellohi"
+
+Disco Música - "stal"
+
+Disco Música - "strad"
+
+Disco Música - "ward"
+
+Disco Música - "11"
+
+Disco Música - "where are we now"
+
+Tesouras
+
+Sementes de Abóbora
+
+Sementes de Melancia
+
+Galinha Crua
+
+Galinha Cozinhada
+
+Bife Cru
+
+Bife
+
+Carne Podre
+
+Ender Pearl
+
+Fatia de Melancia
+
+Varinha de Blaze
+
+Lágrima de Ghast
+
+Pepita de Ouro
+
+Verruga do Submundo
+
+{*splash*}{*prefix*}Poção {*postfix*}
+
+Garrafa de Vidro
+
+Garrafa de Água
+
+Olho de Aranha
+
+Olho de Aranha Fermentado
+
+Pó de Blaze
+
+Creme de Magma
+
+Posto de Poções
+
+Caldeirão
+
+Olho de Ender
+
+Melancia Brilhante
+
+Garrafa Mágica
+
+Carga de Fogo
+
+Carga de Fogo (Carvão veg.)
+
+Carga de Fogo (Carvão)
+
+Estrutura de Item
+
+Gerar {*CREATURE*}
+
+Tijolo de Submundo
+
+Caveira
+
+Caveira de Esqueleto
+
+Caveira de Esqueleto Atrofiado
+
+Cabeça de Zombie
+
+Cabeça
+
+Cabeça de %s
+
+Cabeça de Creeper
+
+Pedra
+
+Bloco de Erva
+
+Terra
+
+Pedra Arredondada
+
+Tábuas Madeira Carvalho
+
+Tábuas Madeira Abeto
+
+Tábuas Madeira Bétula
+
+Tábuas Madeira Selva
+
+Rebento
+
+Carvalho Jovem
+
+Abeto Jovem
+
+Bétula Jovem
+
+Rebentos Árvores Selva
+
+Rocha
+
+Água
+
+Lava
+
+Areia
+
+Arenito
+
+Gravilha
+
+Minério de Ouro
+
+Minério de Ferro
+
+Minério de Carvão
+
+Madeira
+
+Madeira de Carvalho
+
+Madeira de Abeto
+
+Madeira de Bétula
+
+Madeira da Selva
+
+Carvalho
+
+Abeto
+
+Bétula
+
+Folhas
+
+Folhas de Carvalho
+
+Folhas de Abeto
+
+Folhas de Bétula
+
+Folhas da Selva
+
+Esponja
+
+Vidro
+
+Lã
+
+Lã Preta
+
+Lã Vermelha
+
+Lã Verde
+
+Lã Castanha
+
+Lã Azul
+
+Lã Roxa
+
+Lã Ciano
+
+Lã Cinza Clara
+
+Lã Cinza
+
+Lã Cor-de-rosa
+
+Lã Verde-lima
+
+Lã Amarela
+
+Lã Azul Clara
+
+Lã Magenta
+
+Lã Cor-de-laranja
+
+Lã Branca
+
+Flor
+
+Rosa
+
+Cogumelo
+
+Bloco de Ouro
+
+Uma forma compacta de armazenar Ouro.
+
+Uma forma compacta de armazenar Ferro.
+
+Bloco de Ferro
+
+Placa de Pedra
+
+Placa de Pedra
+
+Placa de Arenito
+
+Placa Madeira Carvalho
+
+Placa de Cobblestone
+
+Placa de Tijolo
+
+P. Tijolos Pedra
+
+Placa Madeira Carvalho
+
+Placa Madeira Abeto
+
+Placa Madeira Bétula
+
+Placa Madeira Selva
+
+Placa Tijolo Submundo
+
+Tijolos
+
+TNT
+
+Estante de Livros
+
+Pedra com Musgo
+
+Obsidiana
+
+Tocha
+
+Tocha (Carvão)
+
+Tocha (Carvão Vegetal)
+
+Fogo
+
+Criador de Monstros
+
+Escadas Madeira Carvalho
+
+Baú
+
+Pó de Redstone
+
+Minério de Diamante
+
+Bloco de Diamante
+
+Uma forma compacta de armazenar Diamantes.
+
+Mesa de Criação
+
+Plantações
+
+Terreno de Cultivo
+
+Fornalha
+
+Sinal
+
+Porta de Madeira
+
+Escadote
+
+Carril
+
+Carril Electrificado
+
+Carril Detector
+
+Escadas de Pedra
+
+Alavanca
+
+Placa de Pressão
+
+Porta de Ferro
+
+Minério de Redstone
+
+Tocha Redstone
+
+Botão
+
+Neve
+
+Gelo
+
+Cacto
+
+Barro
+
+Cana de Açúcar
+
+Jukebox
+
+Cerca
+
+Abóbora
+
+Abóbora iluminada
+
+Bloco do Submundo
+
+Areia Movediça
+
+Glowstone
+
+Portal
+
+Minério de Lápis-lazúli
+
+Bloco Lápis-lazúli
+
+Uma forma compacta de armazenar Lápis-lazúli.
+
+Distribuidor
+
+Bloco de Notas
+
+Bolo
+
+Cama
+
+Teia
+
+Erva Alta
+
+Arbusto Morto
+
+Díodo
+
+Baú Fechado
+
+Alçapão
+
+Lã (qualquer cor)
+
+Pistão
+
+Pistão Pegajoso
+
+Bloco de Peixe Prateado
+
+Tijolos de Pedra
+
+Tijolos de Pedra com Musgo
+
+Tijolos de Pedra Rachada
+
+Tijolos de Pedra Burilados
+
+Cogumelo
+
+Cogumelo
+
+Barras de Ferro
+
+Painel de Vidro
+
+Melancia
+
+Caule de Abóbora
+
+Caule de Melancia
+
+Videiras
+
+Portão de Vedação
+
+Escadas de Tijolo
+
+Escad. Tijolo Pedra
+
+P. de Peixe Prateado
+
+Cobblestone com Peixe Prateado
+
+Tijolo de Pedra com Peixe Prateado
+
+Micélio
+
+Folha de Nenúfar
+
+Tijolo de Submundo
+
+Vedação Tijolos Sub.
+
+Escadas Tijolos Sub.
+
+Verruga do Submundo
+
+Mesa de Feitiços
+
+Posto de Poções
+
+Caldeirão
+
+Portal do Fim
+
+Estrutura de Portal do Fim
+
+Pedra do Fim
+
+Ovo de Dragão
+
+Arbusto
+
+Samambaia
+
+Escadas de Grés
+
+Escadas Madeira Abeto
+
+Escadas Madeira Bétula
+
+Escadas Madeira Selva
+
+Candeeiro de Redstone
+
+Cacau
+
+Caveira
+
+Controlos Atuais
+
+Esquema
+
+Mover/Sprint
+
+Olhar
+
+Pausar
+
+Saltar
+
+Saltar/Voar Para Cima
+
+Inventário
+
+Mudar de objeto Seguro
+
+Ação
+
+Usar
+
+Criar
+
+Largar
+
+Rastejar
+
+Agachar/Voar Para Baixo
+
+Alterar Modo Câmara
+
+Jogadores/Convidar
+
+Movimento (Ao Voar)
+
+Esquema 1
+
+Esquema 2
+
+Esquema 3
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+
]]>
+
+{*B*}Prime{*CONTROLLER_VK_A*} para continuar.
+
+{*B*}Prime{*CONTROLLER_VK_A*} para iniciar o tutorial.{*B*}
+ Prime{*CONTROLLER_VK_B*} se achas que estás preparado para jogar sozinho.
+
+Em Minecraft, podes criar tudo aquilo que quiseres colocando blocos.
+À noite, os monstros andam por aí; constrói um abrigo antes que seja tarde.
+
+Usa{*CONTROLLER_ACTION_LOOK*} para olhares para cima, para baixo e em redor.
+
+Usa{*CONTROLLER_ACTION_MOVE*} para te deslocares.
+
+Para fazeres um sprint, prime rapidamente {*CONTROLLER_ACTION_MOVE*} para a frente duas vezes. Mantém {*CONTROLLER_ACTION_MOVE*} premido para a frente para a personagem continuar o sprint até esgotar o tempo ou a comida.
+
+Prime{*CONTROLLER_ACTION_JUMP*} para saltar.
+
+Mantém premido{*CONTROLLER_ACTION_ACTION*} para escavar e cortar utilizando as mãos ou os objetos que estiveres a segurar. Podes ter de criar uma ferramenta para colocares alguns blocos...
+
+Mantém premido{*CONTROLLER_ACTION_ACTION*} para cortares 4 blocos de madeira (troncos de árvore).{*B*}Quando um bloco parte, podes apanhá-lo aproximando-te do objeto flutuante que surge, o que faz com que este apareça no teu inventário.
+
+Prime{*CONTROLLER_ACTION_CRAFTING*} para abrir a interface de criação.
+
+À medida que recolhes e crias mais objetos, o teu inventário fica cheio.{*B*}
+ Prime{*CONTROLLER_ACTION_INVENTORY*} para abrir o inventário.
+
+À medida que te movimentas, escavas e atacas, vais gastando a barra de comida {*ICON_SHANK_01*}. Se fizeres sprint ou saltos em sprint, gastas muito mais comida do que ao caminhar ou saltar normalmente.
+
+Se perderes saúde, mas tiveres uma barra de comida com 9 ou mais{*ICON_SHANK_01*}, a tua saúde é restaurada automaticamente. Come para restaurares a barra de comida.
+
+Com um alimento na mão, prime{*CONTROLLER_ACTION_USE*} para comeres e restaurares a barra de comida. Não podes comer se a barra de comida estiver cheia.
+
+A tua barra de comida está em baixo e perdeste alguma saúde. Come o bife que se encontra no teu inventário para restaurares a barra de comida e começares a curar-te.{*ICON*}364{*/ICON*}
+
+A madeira que recolhes pode ser transformada em tábuas. Abre a interface de criação para as criares.{*PlanksIcon*}
+
+Muitas vezes, o processo de criação envolve vários passos. Agora que já tens algumas tábuas, podes criar mais objetos. Cria uma mesa de criação.{*CraftingTableIcon*}
+
+Para recolheres blocos mais rapidamente, podes construir ferramentas específicas para essa tarefa. Algumas ferramentas têm uma pega feita de paus. Cria agora alguns paus.{*SticksIcon*}
+
+Usa{*CONTROLLER_ACTION_LEFT_SCROLL*} e{*CONTROLLER_ACTION_RIGHT_SCROLL*} para alterares o objeto segurado.
+
+Usa{*CONTROLLER_ACTION_USE*} para utilizar, interagir e colocar alguns objetos. Os objetos colocados podem ser recolhidos novamente escavando-os com a ferramenta certa.
+
+Com a mesa de criação selecionada, aponta a mira para o local onde a queres colocar e usa{*CONTROLLER_ACTION_USE*} para colocares uma mesa de criação.
+
+Aponta a mira para a mesa de criação e prime{*CONTROLLER_ACTION_USE*} para a abrires.
+
+As pás ajudam a escavar mais rapidamente os blocos moles, como terra e neve. À medida que recolhes mais materiais, podes criar ferramentas que trabalham mais rapidamente e durante mais tempo. Cria uma pá de madeira.{*WoodenShovelIcon*}
+
+Com um machado poderás cortar a madeira e os tijolos de madeira mais rapidamente. À medida que recolhes mais materiais, podes criar ferramentas que trabalham mais rapidamente e durante mais tempo. Cria um machado de madeira.{*WoodenHatchetIcon*}
+
+A picareta permite-te escavar mais rapidamente blocos mais duros, como pedra e minério. À medida que recolhes mais materiais, podes criar ferramentas que trabalham mais rapidamente, durante mais tempo e que te permitem extrair materiais mais duros. Cria uma picareta de madeira.{*WoodenPickaxeIcon*}
+
+Abre o contentor
+
+
+ A noite pode cair rapidamente e é perigoso estar lá fora sem se estar preparado. Podes criar armaduras e armas, mas é recomendável construíres um abrigo seguro.
+
+
+
+ Nas redondezas, existe um abrigo de mineiros abandonado que podes completar para garantir a tua segurança durante a noite.
+
+
+
+ Terás de recolher os recursos necessários para completar o abrigo. Podes construir as paredes e o tecto com qualquer tipo de tijolo, mas também terás de criar uma porta, algumas janelas e iluminação.
+
+
+Utiliza a tua picareta para escavares alguns blocos de pedra. Os blocos de pedra produzem pedras arredondadas quando escavados. Se conseguires recolher 8 blocos de pedra arredondada, poderás construir uma fornalha. Pode ser necessário escavar alguma terra para chegares à pedra, por isso usa a tua pá nesta tarefa.{*StoneIcon*}
+
+Recolheste pedras arredondadas suficientes para construir uma fornalha. Utiliza a tua mesa de criação para criares uma.
+
+Usa{*CONTROLLER_ACTION_USE*} para colocares a fornalha no mundo e, em seguida, abre-a.
+
+Usa a fornalha para criar carvão vegetal. Enquanto esperas que acabe, porque não recolhes mais materiais para acabar o abrigo?
+
+Usa a fornalha para criar vidro. Enquanto esperas que acabe, porque não recolhes mais materiais para acabar o abrigo?
+
+Um bom abrigo tem de ter uma porta para que possas entrar e sair facilmente sem teres de escavar e substituir paredes. Cria agora uma porta de madeira.{*WoodenDoorIcon*}
+
+Usa{*CONTROLLER_ACTION_USE*} para colocar a porta. Podes usar{*CONTROLLER_ACTION_USE*} para abrir e fechar a porta de madeira no mundo.
+
+À noite pode ficar muito escuro, por isso é melhor teres alguma iluminação dentro do abrigo. Cria uma tocha a partir de paus e carvão vegetal utilizando a interface de criação.{*TorchIcon*}
+
+
+ Concluíste a primeira parte do tutorial.
+
+
+
+ {*B*}
+ Prime{*CONTROLLER_VK_A*} para continuares o tutorial.{*B*}
+ Prime{*CONTROLLER_VK_B*} se achas que estás pronto para jogar sozinho.
+
+
+
+ Este é o teu inventário. Mostra os objetos disponíveis que tens na mão e todos os objetos que estás a transportar. A tua armadura também é mostrada aqui.
+
+
+{*B*}
+ Prime{*CONTROLLER_VK_A*} para continuar.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já sabes utilizar o inventário.
+
+
+
+ Usa{*CONTROLLER_MENU_NAVIGATE*} para moveres o ponteiro. Usa{*CONTROLLER_VK_A*} para selecionares um objeto com o ponteiro.
+ Caso exista mais do que um objeto, irás selecioná-los todos, ou poderás usar{*CONTROLLER_VK_X*} para selecionares apenas metade.
+
+
+
+ Move o objeto com o ponteiro sobre outro espaço no inventário e coloca-o nesse espaço utilizando{*CONTROLLER_VK_A*}.
+ Caso tenhas selecionado vários objetos com o ponteiro, usa{*CONTROLLER_VK_A*} para os colocares todos ou{*CONTROLLER_VK_X*} para colocares apenas um.
+
+
+
+ Se deslocares o ponteiro para fora dos limites da interface com um objeto selecionado, podes largá-lo.
+
+
+
+ Se quiseres saber mais sobre um determinado objeto, coloca o ponteiro sobre o objeto e prime{*CONTROLLER_VK_RT*}.
+
+
+
+ Prime{*CONTROLLER_VK_B*} agora para saíres do inventário.
+
+
+
+ Este é o inventário do modo criativo. Mostra os objetos disponíveis para usares com as mãos e todos os outros objetos que podes escolher.
+
+
+{*B*}
+ Prime{*CONTROLLER_VK_A*} para continuar.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já sabes utilizar o inventário do modo criativo.
+
+
+
+ Usa{*CONTROLLER_MENU_NAVIGATE*} para mover o ponteiro.
+ Na lista de objetos, usa{*CONTROLLER_VK_A*} para recolheres um objeto sob o ponteiro e usa{*CONTROLLER_VK_Y*} para recolheres todas as unidades desse objeto.
+
+
+
+ O ponteiro irá mover-se automaticamente sobre um espaço na linha em uso. Podes colocá-lo utilizando{*CONTROLLER_VK_A*}. Depois de colocares o objeto, o ponteiro regressa à lista de objetos, onde podes selecionar outro objeto.
+
+
+
+ Se deslocares o ponteiro para fora dos limites da interface com um objeto selecionado, podes largá-lo no mundo. Para limpar todos os objetos na barra de seleção rápida, prime{*CONTROLLER_VK_X*}.
+
+
+
+ Desloca-te nos separadores de Tipo de Grupo acima utilizando{*CONTROLLER_VK_LB*} e{*CONTROLLER_VK_RB*} para selecionar o tipo de grupo do objeto que queres recolher.
+
+
+
+ Se quiseres saber mais sobre um determinado objeto, coloca o ponteiro sobre o objeto e prime{*CONTROLLER_VK_RT*}.
+
+
+
+ Prime{*CONTROLLER_VK_B*} agora para saíres do inventário do modo criativo.
+
+
+
+ Esta é a interface de criação. Permite-te combinar os objetos que recolheste para criares novos objetos.
+
+
+{*B*}
+ Prime{*CONTROLLER_VK_A*} para continuar.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já sabes criar.
+
+
+{*B*}
+ Prime{*CONTROLLER_VK_X*} para apresentar a descrição do objeto.
+
+
+{*B*}
+ Prime{*CONTROLLER_VK_X*} para apresentar os ingredientes necessários para criar o objeto atual.
+
+
+{*B*}
+ Prime{*CONTROLLER_VK_X*} para apresentar novamente o inventário.
+
+
+
+ Desloca-te pelos separadores de Tipo de Grupo no topo utilizando{*CONTROLLER_VK_LB*} e{*CONTROLLER_VK_RB*} para selecionar o tipo de grupo do objeto que pretendes criar e depois usa{*CONTROLLER_MENU_NAVIGATE*} para selecionares o objeto a criar.
+
+
+
+ A área de criação mostra os objetos de que necessitas para criares o próximo objeto. Prime{*CONTROLLER_VK_A*} para criar o objeto e colocá-lo no teu inventário.
+
+
+
+ Podes criar uma seleção maior de objetos utilizando uma mesa de criação. A criação na mesa funciona da mesma forma que a criação básica, mas tens à tua disposição uma área maior e mais combinações de ingredientes.
+
+
+
+ A parte inferior direita da interface de criação mostra o inventário. Esta área também pode mostrar uma descrição do objeto atualmente selecionado e os ingredientes necessários para o criar.
+
+
+
+ A descrição do objeto atualmente selecionado é agora apresentada. A descrição pode dar-te uma ideia das funções do objeto.
+
+
+
+ A lista de ingredientes necessários para criar o objeto selecionado é agora apresentada.
+
+
+A madeira que recolheste pode ser usada para criar tábuas. seleciona o ícone das tábuas e prime{*CONTROLLER_VK_A*} para criar.{*PlanksIcon*}
+
+
+ Agora que construíste uma mesa de criação, tens de colocá-la no mundo para te permitir criar uma seleção mais ampla de objetos.{*B*}
+ Prime{*CONTROLLER_VK_B*} agora para saíres da interface de criação.
+
+
+
+ Prime{*CONTROLLER_VK_LB*} e{*CONTROLLER_VK_RB*} para mudares para o tipo de grupo de artigos que pretendes criar. seleciona o grupo de ferramentas.{*ToolsIcon*}
+
+
+
+ Prime{*CONTROLLER_VK_LB*} e{*CONTROLLER_VK_RB*} para mudares para o tipo de grupo de artigos que pretendes criar. seleciona o grupo de estruturas.{*StructuresIcon*}
+
+
+
+ Usa{*CONTROLLER_MENU_NAVIGATE*} para mudares para o objeto que desejas criar. Alguns objetos têm várias versões consoante os materiais utilizados. seleciona a pá de madeira.{*WoodenShovelIcon*}
+
+
+
+ Muitas vezes, o processo de criação envolve vários passos. Agora que já tens algumas tábuas, podes criar mais objetos. Usa{*CONTROLLER_MENU_NAVIGATE*} para mudares para o objeto que queres criar. seleciona a mesa de criação.{*CraftingTableIcon*}
+
+
+
+ Com as ferramenta que construíste estás no caminho certo e podes recolher vários materiais diferentes de forma mais eficiente.{*B*}
+ Prime{*CONTROLLER_VK_B*} agora para saíres da interface de criação.
+
+
+
+ Alguns objetos não podem ser criados utilizando a mesa de criação, mas sim uma fornalha. Cria agora uma fornalha.{*FurnaceIcon*}
+
+
+
+ Coloca a fornalha que criaste no mundo. Deves colocá-la dentro do abrigo.{*B*}
+ Prime{*CONTROLLER_VK_B*} agora para saíres da interface de criação.
+
+
+
+ Esta é a interface da fornalha. A fornalha permite-te alterar os objetos através do fogo. Por exemplo, podes transformar minério de ferro em lingotes de ferro.
+
+
+{*B*}
+ Prime{*CONTROLLER_VK_A*} para continuar.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já sabes utilizar a fornalha.
+
+
+
+ Tens de colocar o combustível na parte de baixo da fornalha e o objeto que queres alterar por cima. O fogo é ateado e a fornalha acende-se. O resultado sai pela ranhura da direita.
+
+
+
+ Muitos objetos de madeira podem ser usados como combustíveis, mas nem todos queimam durante o mesmo tempo. Podes também descobrir outros objetos no mundo que podem ser usados como combustível.
+
+
+
+ Depois de alterados os objetos, podes movê-los da área de saída para o inventário. Experimenta usar ingredientes diferentes para veres o que consegues criar.
+
+
+
+ Se usares madeira como ingrediente, podes criar carvão vegetal. Coloca algum combustível na fornalha, ocupa o tempo da maneira que quiseres e depois regressa para verificares o progresso.
+
+
+
+ O Carvão vegetal pode ser usado como combustível ou para criar tochas juntamente com um pau.
+
+
+
+ Para fazeres vidro, coloca areia na ranhura dos ingredientes. Cria blocos de vidro para usares como janelas no teu abrigo.
+
+
+
+ Esta é a interface de preparação de poções. Podes utilizá-la para criar poções com diferentes efeitos.
+
+
+{*B*}
+ Prime{*CONTROLLER_VK_A*} para continuar.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já sabes como usar o posto de poções.
+
+
+
+ Podes preparar poções colocando um ingrediente no orifício superior e uma poção ou garrafa de água nos orifícios inferiores (podem ser preparadas até 3 poções ao mesmo tempo). Depois de introduzires uma combinação válida, o processo de preparação inicia e é criada uma poção pouco tempo depois.
+
+
+
+ Todas as poções começam com uma Garrafa de Água. A maioria das poções são criadas utilizando uma Verruga do Submundo para criar uma Poção Estranha e necessitam de pelo menos mais um ingrediente para criar a poção final.
+
+
+
+ Depois de criares uma poção, podes modificar os seus efeitos. Se adicionares Pó de Redstone, aumentas a duração do efeito, e se adicionares Pó de Glowstone, o efeito será mais poderoso.
+
+
+
+ Se adicionares Olho de Aranha Fermentado, crias uma poção com o efeito oposto. Se adicionares Pólvora, transformas a poção numa Poção Explosiva, que pode ser atirada para aplicar os seus efeitos à zona circundante.
+
+
+
+ Cria uma Poção de Resistência ao Fogo juntando uma Verruga do Submundo a uma Garrafa de Água e adicionando Creme de Magma.
+
+
+
+ Prime{*CONTROLLER_VK_B*} agora para saíres da interface de preparação de poções.
+
+
+
+ Nesta área existe um Posto de Poções, um Caldeirão e um baú cheio de ingredientes.
+
+
+{*B*}
+ Prime{*CONTROLLER_VK_A*} para saberes mais sobre poções e a sua preparação.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já sabes tudo sobre poções e a sua preparação.
+
+
+
+ O primeiro passo para preparar uma poção é criar uma Garrafa de Água. Retira uma Garrafa de Vidro do baú.
+
+
+
+ Podes encher uma garrafa de vidro num Caldeirão com água ou a partir de um bloco de água. Enche a garrafa de vidro apontando para a fonte de água e premindo{*CONTROLLER_ACTION_USE*}.
+
+
+
+ Se esvaziares o caldeirão, podes voltar a enchê-lo com um Balde de Água.
+
+
+
+ Utiliza o posto de poções para criar uma Poção de Resistência ao Fogo. Precisas de uma Garrafa de Água, uma Verruga do Submundo e Creme de Magma.
+
+
+
+ Com uma poção na mão, prime{*CONTROLLER_ACTION_USE*} para a usares. Com uma poção normal, irás bebê-la e aplicar o efeito em ti mesmo; com uma Poção Explosiva, irás atirá-la e aplicar o efeito às criaturas em torno da zona onde aterrar.
+ Podes criar poções explosivas adicionando pólvora às poções normais.
+
+
+
+ Utiliza a Poção de Resistência ao Fogo em ti mesmo.
+
+
+
+ Agora que és resistente ao fogo e à lava, poderás ir a sítios onde nunca foste.
+
+
+
+ Esta é a interface dos feitiços que podes usar para enfeitiçar armas, armaduras e algumas ferramentas.
+
+
+{*B*}
+ Prime{*CONTROLLER_VK_A*} para saberes mais sobre a interface de feitiços.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já souberes tudo sobre a interface de feitiços.
+
+
+
+ Para enfeitiçares um objeto, em primeiro lugar coloca-o no orifício da mesa de feitiços. Podes enfeitiçar armas, armaduras e algumas ferramentas para adicionar-lhes efeitos especiais, como maior resistência aos danos ou aumentar o número de objetos produzidos ao escavar um bloco.
+
+
+
+ Quando colocas um objeto no orifício da mesa de feitiços, os botões à direita irão apresentar uma seleção de feitiços aleatórios.
+
+
+
+ O número no botão representa o custo em pontos de experiência para enfeitiçar o objeto. Se não tiveres um nível de experiência suficientemente alto, o botão será desativado.
+
+
+
+ seleciona um feitiço e prime{*CONTROLLER_VK_A*} para enfeitiçar o objeto. Isto irá diminuir o teu nível de experiência consoante o custo do feitiço.
+
+
+
+ Apesar de os feitiços serem aleatórios, alguns dos melhores feitiços só estão disponíveis quando atingires um alto nível de experiência e tiveres várias estantes em redor da Mesa de Feitiços para aumentar o seu poder.
+
+
+
+ Nesta área existe uma Mesa de Feitiços e outros objetos que te ajudarão a aprender tudo sobre feitiços.
+
+
+{*B*}
+ Prime{*CONTROLLER_VK_A*} para aprenderes mais sobre feitiços.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já conheceres os feitiços.
+
+
+
+ Utilizar uma Mesa de Feitiços permite-te adicionar efeitos especiais tais como aumentar o número de objetos produzidos ao escavar um bloco ou melhorar a resistência a armas, armaduras e algumas ferramentas.
+
+
+
+ Colocar estantes em redor da Mesa de Feitiços aumenta o seu poder e permite o acesso a feitiços de nível mais alto.
+
+
+
+ Enfeitiçar objetos tem um custo em Níveis de Exp. que podem ser obtidos recolhendo Orbes de Exp. produzidos quando matas monstros e animais, escavas minério, crias animais, pescas e fundes/cozinhas coisas numa fornalha.
+
+
+
+ Também podes ganhar níveis de exp. utilizando uma Garrafa Mágica que, quando atirada, cria Orbes de Exp. em torno da zona onde aterra. Estes orbes podem ser recolhidos.
+
+
+
+ Nos baús nesta área podes encontrar alguns objetos enfeitiçados, Garrafas Mágicas e alguns objetos que ainda não foram enfeitiçados para fazeres experiencias na Mesa de Feitiços.
+
+
+
+ Estás a conduzir uma vagoneta. Para saíres da vagoneta, coloca o ponteiro sobre a mesma e prime{*CONTROLLER_ACTION_USE*}.{*MinecartIcon*}
+
+
+{*B*}
+ Prime{*CONTROLLER_VK_A*} para aprenderes mais sobre vagonetas.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já sabes tudo sobre vagonetas.
+
+
+
+ As vagonetas andam sobre carris. Podes criar um carril electrificado com a fornalha e uma vagoneta com baú.
+ {*RailIcon*}
+
+
+
+ Também podes criar carris electrificados, que recebem energia das tochas de Redstone e dos circuitos para acelerar a vagoneta. Estes são ligados a interruptores, alavancas e placas de pressão para formar sistemas complexos.
+ {*PoweredRailIcon*}
+
+
+
+ Estás a conduzir um barco. Para saíres do barco, coloca o ponteiro sobre o mesmo e prime{*CONTROLLER_ACTION_USE*}.{*BoatIcon*}
+
+
+
+ {*B*}
+ Prime{*CONTROLLER_VK_A*} para saberes mais sobre barcos.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já sabes tudo sobre barcos.
+
+
+
+ O barco permite-te viajar mais rapidamente sobre água. Podes conduzi-lo utilizando{*CONTROLLER_ACTION_MOVE*} e{*CONTROLLER_ACTION_LOOK*}.
+ {*BoatIcon*}
+
+
+
+ Estás a usar uma cana de pesca. Prime{*CONTROLLER_ACTION_USE*} para a usares.{*FishingRodIcon*}
+
+
+
+ {*B*}
+ Prime{*CONTROLLER_VK_A*} para saberes mais sobre pesca.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já sabes tudo sobre pesca.
+
+
+
+ Prime{*CONTROLLER_ACTION_USE*} para lançares a linha e começares a pescar. Prime{*CONTROLLER_ACTION_USE*} novamente para enrolares a linha de pesca.
+ {*FishingRodIcon*}
+
+
+
+ Para apanhares peixe, espera até que o flutuador mergulhe na água e depois enrola a linha. O peixe pode ser comido cru ou cozinhado na fornalha, para restituir saúde.
+ {*FishIcon*}
+
+
+
+ Tal como acontece com outras ferramentas, a cana de pesca tem um número limitado de utilizações. Mas estas não se limitam à pesca. Faz experiências para veres que outras coisas podes apanhar ou ativar...
+ {*FishingRodIcon*}
+
+
+
+ Esta é uma cama. De noite, prime{*CONTROLLER_ACTION_USE*} enquanto apontas para a cama para dormires e acordares de manhã.{*ICON*}355{*/ICON*}
+
+
+
+ {*B*}
+ Prime{*CONTROLLER_VK_A*} para saberes mais sobre camas.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já sabes tudo sobre camas.
+
+
+
+ A cama deve ser colocada num local seguro e bem iluminado para que os monstros não te acordem a meio da noite. Depois de usares a cama, se morreres serás ressuscitado na cama.
+ {*ICON*}355{*/ICON*}
+
+
+
+ Se existirem outros jogadores no teu jogo, todos têm de estar na cama ao mesmo tempo para poderem dormir.
+ {*ICON*}355{*/ICON*}
+
+
+
+ Nesta área existem alguns circuitos simples de Redstone e Pistões e um baú com mais objetos para aumentar estes circuitos.
+
+
+
+ {*B*}
+ Prime {*CONTROLLER_VK_A*} para saberes mais sobre os circuitos de Redstone e pistões.{*B*}
+ Prime {*CONTROLLER_VK_B*} se já sabes tudo sobre os circuitos de Redstone e pistões.
+
+
+
+ As Alavancas, Botões, Placas de Pressão e Tochas de Redstone podem fornecer energia aos circuitos, ligando-os diretamente ao objeto que queres ativar ou com pó de Redstone.
+
+
+
+ A posição e direção em que colocas uma fonte de energia pode alterar a forma como afeta os blocos circundantes. Por exemplo, uma tocha de Redstone ao lado de um bloco pode ser apagada se o bloco for alimentado por outra fonte.
+
+
+
+ O pó de Redstone é recolhido através da extração de Redstone com uma picareta em Ferro, Diamante ou Ouro. Podes utilizá-lo para alimentar até 15 blocos e pode subir ou descer um bloco em altura.
+ {*ICON*}331{*/ICON*}
+
+
+
+ Os repetidores de Redstone podem ser usados para aumentar o alcance da energia ou colocar um retardador no circuito.
+ {*ICON*}356{*/ICON*}
+
+
+
+ Quando é ativado, o Pistão estica e empurra até 12 blocos. Quando recolhem, os Pistões Pegajosos conseguem puxar um bloco de quase todos os tipos.
+ {*ICON*}33{*/ICON*}
+
+
+
+ No baú nesta área existem alguns componentes para criar circuitos com pistões. Experimenta usar ou completar os circuitos nesta área ou cria o teu próprio circuito. Existem mais exemplos fora da área do tutorial.
+
+
+
+ Nesta área existe um Portal para o Submundo!
+
+
+
+ {*B*}
+ Prime{*CONTROLLER_VK_A*} para saber mais sobre Portais e sobre o Submundo.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já souberes tudo sobre Portais e o Submundo.
+
+
+
+ Os Portais são criados colocando blocos de Obsidiana numa estrutura com quatro blocos de largura e cinco blocos de altura. Não são necessários blocos de canto.
+
+
+
+ Para ativar um Portal do Submundo, incendeia os blocos de Obsidiana dentro da estrutura com Sílex e Aço. Os Portais podem ser desativados se a sua estrutura se partir, se ocorrer uma explosão nas proximidades ou se escorrer líquido sobre os blocos.
+
+
+
+ Para utilizar um Portal do Submundo, entra no mesmo. O ecrã fica roxo e ouves um som. Alguns segundos depois, serás transportado para outra dimensão.
+
+
+
+ O Submundo pode ser um local perigoso, cheio de lava, mas também pode ser útil para recolher Blocos do Submundo, que ardem para sempre depois de acesos, e Glowstone, que produz luz.
+
+
+
+ O Submundo pode ser usado para viajar rapidamente no Mundo Superior - um bloco no Submundo equivale a viajar 3 blocos no Mundo Superior.
+
+
+
+ Agora estás em Modo Criativo.
+
+
+
+ {*B*}
+ Prime{*CONTROLLER_VK_A*} para saberes mais sobre o modo Criativo.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já sabes tudo sobre o modo Criativo.
+
+
+No modo Criativo, tens um número infinito de objetos e blocos disponíveis, podes destruir blocos com um clique sem serem necessárias ferramentas, és invulnerável e podes voar.
+
+Prime rapidamente{*CONTROLLER_ACTION_JUMP*} duas vezes para voares. Para parares de voar, repete a ação. Para voares mais rápido, prime{*CONTROLLER_ACTION_MOVE*} para a frente duas vezes em rápida sucessão enquanto voas.
+No modo de voo, podes manter premido{*CONTROLLER_ACTION_JUMP*} para subires e{*CONTROLLER_ACTION_SNEAK*} para desceres ou utilizar o botão direcional para subires e desceres, para ires para a esquerda ou para a direita.
+
+Prime{*CONTROLLER_ACTION_CRAFTING*} para abrir a interface do inventário criativo.
+
+Atravessa este buraco para continuares.
+
+Concluíste o tutorial do modo Criativo.
+
+
+ Nesta área foi criada uma quinta. As quintas permitem-te criar uma fonte renovável de alimentos e outros objetos.
+
+
+
+ {*B*}
+ Prime{*CONTROLLER_VK_A*} para saberes mais sobre quintas.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já souberes tudo sobre quintas.
+
+
+O Trigo, as Abóboras e as Melancias crescem a partir de sementes. As sementes de Trigo obtêm-se partindo Erva Alta ou colhendo trigo e as sementes de Abóbora e Melancia são criadas a partir de Abóboras e Melancias, respetivamente.
+
+Antes de plantares sementes, tens de transformar os blocos de terra em Terra Cultivável, utilizando uma Enxada. Uma fonte de água nas proximidades irá manter a Terra Cultivável hidratada e irá fazer com que as sementes cresçam mais depressa, tal como manter a área iluminada.
+
+O Trigo passa por várias fases de crescimento e está pronto para ser colhido quando fica mais escuro.{*ICON*}59:7{*/ICON*}
+
+Para que as Abóboras e os Melões cresçam, é necessário colocar um bloco junto ao local onde plantaste a semente, depois de ter crescido o caule.
+
+A Cana de Açúcar tem de ser plantada em blocos de Erva, Terra ou Areia ao lado de um bloco de água. Cortar um bloco de Cana de Açúcar também fará cair todos os blocos por cima dele.{*ICON*}83{*/ICON*}
+
+Os Cactos têm de ser plantados em Areia e crescem até três blocos de altura. Tal como a Cana de Açúcar, se destruíres o bloco inferior, poderás recolher também os blocos acima deste.{*ICON*}81{*/ICON*}
+
+Os Cogumelos têm de ser plantados numa área com pouca luz e irão espalhar-se pelos blocos pouco iluminados em redor.{*ICON*}39{*/ICON*}
+
+Podes usar Pó de Ossos para fazer crescer as plantações ou transformar Cogumelos em Cogumelos Enormes.{*ICON*}351:15{*/ICON*}
+
+Concluíste o tutorial sobre quintas.
+
+
+ Nesta área, os animais foram colocados dentro de uma cerca. Podes criar animais para produzir crias dos mesmos.
+
+
+
+ {*B*}
+ Prime{*CONTROLLER_VK_A*} para aprenderes mais sobre animais e criação.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já sabes tudo sobre animais e criação.
+
+
+Para que os animais procriem, terás de lhes dar os alimentos certos para que entrem em "Modo Amor".
+
+Dá Trigo a vacas, vacogumelos ou ovelhas, Cenouras a porcos, Sementes de Trigo ou Verrugas do Submundo a galinhas, ou qualquer tipo de carne a lobos, e estes irão começar a procurar outro animal da sua espécie que também esteja em Modo Amor.
+
+Quando dois animais da mesma espécie se encontram, e ambos estão em Modo Amor, irão beijar-se durante alguns segundos e surgirá um animal bebé. O animal bebé irá seguir os pais durante algum tempo antes de se transformar num animal adulto.
+
+Os animais só podem voltar a entrar no Modo Amor ao fim de cerca de cinco minutos.
+
+Alguns animais irão seguir-te se tiveres o alimento deles na mão. Isto facilita a tarefa de reunir os animais para que procriem.{*ICON*}296{*/ICON*}
+
+
+ Os lobos selvagens podem ser domesticados se lhes deres ossos. Quando estiverem domesticados surgem Corações de Amor à volta deles. Os lobos domesticados vão seguir o jogador e defendê-lo se não lhes tiver sido dada uma ordem para se sentarem.
+
+
+Concluíste o tutorial sobre criação e animais.
+
+
+ Nesta zona há algumas abóboras e blocos para fazer um Golem de Neve e um Golem de Ferro.
+
+
+
+ {*B*}
+ Prime{*CONTROLLER_VK_A*} para saber mais sobre Golems.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já sabes o que precisas sobre Golems.
+
+
+Os Golems são criados colocando uma abóbora no topo de uma pilha de blocos.
+
+Os Golems de Neve são criados com dois Blocos de Neve, um por cima do outro, com uma abóbora em cima. Os Golems de Neve atiram bolas de neve aos inimigos.
+
+Os Golems de Ferro são criados com quatro Blocos de Ferro no padrão apresentado, com uma abóbora no topo do bloco central. Os Golems de Ferro atacam os inimigos.
+
+Os Golems de Ferro também aparecem naturalmente para proteger as aldeias e, caso ataques quaisquer aldeões, eles atacam-te.
+
+Não podes sair desta área até teres completado o tutorial.
+
+Diferentes ferramentas adaptam-se a diferentes materiais. Deves usar uma pá para escavar materiais moles como terra e areia.
+
+Diferentes ferramentas adaptam-se a diferentes materiais. Deves usar um machado para cortar troncos de árvore.
+
+Diferentes ferramentas adaptam-se a diferentes materiais. Deves usar uma picareta para extrair pedra e minério. Podes ter de construir uma picareta em materiais melhores para obter recursos de certos blocos.
+
+Algumas ferramentas são melhores para atacar inimigos. Experimenta usar uma espada para atacares.
+
+Sugestão: Mantém premido {*CONTROLLER_ACTION_ACTION*}para escavar e cortar com a mão ou com o objeto que estiveres a segurar. Pode ser necessário criar uma ferramenta para escavares alguns blocos...
+
+A ferramenta que estás a usar ficou danificada. Sempre que isto acontece, a ferramenta acabará por partir. A barra colorida sob o objeto no teu inventário indica o estado atual dos danos.
+
+Mantém premido{*CONTROLLER_ACTION_JUMP*} para nadares para cima.
+
+Nesta área, existe uma vagoneta sobre carris. Para entrares na vagoneta, aponta o ponteiro para a mesma e prime{*CONTROLLER_ACTION_USE*}. Usa{*CONTROLLER_ACTION_USE*} no botão para fazeres a vagoneta andar.
+
+No baú junto ao rio encontra-se um barco. Para usares o barco, aponta o ponteiro para a água e prime{*CONTROLLER_ACTION_USE*}. Usa{*CONTROLLER_ACTION_USE*} enquanto apontas para o barco para entrares.
+
+No baú junto ao lago encontra-se uma cana de pesca. Retira-a do baú e seleciona-a como objeto atual na tua mão para a usares.
+
+Este mecanismo de pistão mais avançado cria uma ponte que se repara automaticamente! Prime o botão para ativar e descobre como interagem os componentes.
+
+Se deslocares o ponteiro para fora dos limites da interface quando estiveres a transportar um objeto, poderás largá-lo.
+
+Não tens todos os ingredientes necessários para criar este objeto. A caixa em baixo à esquerda mostra os ingredientes de que precisas.
+
+
+ Parabéns, concluíste o tutorial. Agora, o tempo de jogo passa normalmente e não tens muito tempo até que anoiteça e os monstros saiam para a rua! Acaba o teu abrigo!
+
+
+{*EXIT_PICTURE*} Quando estiveres preparado para explorar mais, existe uma escadaria nesta área junto ao abrigo dos mineiros que conduz a um pequeno castelo.
+
+Lembrete:
+
+
]]>
+
+Foram adicionadas novas funcionalidades na última versão do jogo, incluindo novas áreas no mundo do tutorial.
+
+{*B*}Prime {*CONTROLLER_VK_A*} para jogares o tutorial normalmente.{*B*}
+ Prime {*CONTROLLER_VK_B*} para ignorar o tutorial principal.
+
+Nesta área, poderás saber mais sobre pesca, barcos, pistões e Redstone.
+
+Fora desta área irás encontrar exemplos de edifícios, quintas, vagonetas e carris, feitiços, poções, trocas, forjas e muito mais!
+
+
+ O nível da tua barra de comida está demasiado baixo para restaurar a tua saúde.
+
+
+
+ {*B*}
+ Prime{*CONTROLLER_VK_A*} para saberes mais sobre a barra de comida e a alimentação.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já souberes tudo sobre a barra de comida e a alimentação.
+
+
+Selecionar
+
+Usar
+
+Anterior
+
+Sair
+
+Cancelar
+
+Cancelar Participação
+
+Selec. Disp. Armaz.
+
+Mudar Disp. Armaz.
+
+Lista Jogos Online
+
+Jogos Party
+
+Todos os Jogos
+
+Alterar Grupo
+
+Mostrar Inventário
+
+Mostrar Descrição
+
+Mostrar Ingredientes
+
+Criar
+
+Criar
+
+Retirar/Colocar
+
+Retirar
+
+Retirar tudo
+
+Retirar metade
+
+Colocar
+
+Colocar tudo
+
+Colocar um
+
+Largar
+
+Largar tudo
+
+Largar um
+
+Trocar
+
+Mover rápido
+
+Limpar Seleção Rápida
+
+Que é isto?
+
+Partilhar no Facebook
+
+Alterar Filtro
+
+Ver Gamercard
+
+Ver Perfil de Jogador
+
+Enviar Pedido de Amizade
+
+Página Abaixo
+
+Página Acima
+
+Seguinte
+
+Anterior
+
+Expulsar Jogador
+
+Tingir
+
+Escavar
+
+Alimentar
+
+Domar
+
+Curar
+
+Senta
+
+Segue-me
+
+Ejectar
+
+Esvaziar
+
+Sela
+
+Colocar
+
+Atingir
+
+Leite
+
+Recolher
+
+Comer
+
+Dormir
+
+Acorda
+
+Jogar
+
+Montar
+
+Velejar
+
+Crescer
+
+Nadar
+
+Abrir
+
+Alterar Tom
+
+Detonar
+
+Ler
+
+Pendurar
+
+Atirar
+
+Plantar
+
+Lavrar
+
+Colher
+
+Continuar
+
+Desbloquear Jogo Completo
+
+Eliminar Jogo Guardado
+
+Eliminar
+
+Opções
+
+Convidar Xbox Live Party
+
+Convidar Amigos
+
+Aceitar
+
+Tosquia
+
+Excluir Nível
+
+selecionar Skin
+
+Acender
+
+Navegar
+
+Instalar Versão Completa
+
+Instalar Versão de Avaliação
+
+Instalar
+
+Reinstalar
+
+Op. Jogo Guardado
+
+Executar Comando
+
+Criativo
+
+Mover Ingrediente
+
+Mover Combustível
+
+Mover Ferramenta
+
+Mover Armadura
+
+Mover Arma
+
+Equipar
+
+Puxar
+
+Soltar
+
+Privilégios
+
+Bloco
+
+Página Acima
+
+Página Abaixo
+
+Modo Amor
+
+Beber
+
+Rodar
+
+Ocultar
+
+Carregar Grav. Xbox One
+
+Limpar Todas as Ranhuras
+
+Carregar Gravação para Xbox One
+
+OK
+
+Cancelar
+
+Loja Minecraft
+
+Tens a certeza de que queres sair do jogo atual e entrar num novo jogo? O progresso não guardado será perdido.
+
+Sair do Jogo
+
+Guardar Jogo
+
+Sair sem guardar
+
+Tens a certeza de que queres substituir os jogos guardados anteriormente pela versão atual deste mundo?
+
+Tens a certeza de que queres sair sem guardar? Irás perder todo o progresso neste mundo!
+
+Iniciar Jogo
+
+Se criares, carregares ou guardares um mundo no Modo Criativo, as atualizações de feitos e classificações serão desativadas nesse mundo, mesmo que seja carregado depois no Modo Sobrevivência. Tens a certeza de que queres continuar?
+
+Este mundo foi guardado anteriormente no Modo Criativo e as atualizações de feitos e classificações serão desativadas. Tens a certeza de que queres continuar?
+
+Este mundo já foi guardado no Modo Criativo, pelo que as atualizações de feitos e classificações estão desativadas.
+
+Se criares, carregares ou guardares um mundo com os Privilégios de Anfitrião ativados, as atualizações de feitos e classificações serão desativadas, mesmo que depois seja carregado com estas opções desligadas. Tens a certeza de que queres continuar?
+
+Jogo Danificado
+
+O jogo guardado está corrompido ou danificado. Queres apagá-lo?
+
+Tens a certeza de que queres sair para o menu principal e desligar todos os jogadores do jogo? O progresso não guardado será perdido.
+
+Sair e guardar
+
+Sair sem guardar
+
+Tens a certeza de que queres sair para o menu principal? O progresso não guardado será perdido.
+
+Tens a certeza de que queres sair para o menu principal? Perderás o teu progresso!
+
+Criar Mundo Novo
+
+Jogar Tutorial
+
+Tutorial
+
+Nomeia o Teu Mundo
+
+Introduz um nome para o teu mundo
+
+Deposita a semente para a criação do teu mundo
+
+Carregar Mundo Guardado
+
+Prime START para te juntares ao jogo
+
+A sair do jogo
+
+Ocorreu um erro. A sair para o menu principal.
+
+Falha na ligação
+
+Ligação perdida
+
+Perdeste a ligação ao servidor. A sair para o menu principal.
+
+Perdeste a ligação ao Xbox Live. A sair para o menu principal.
+
+Perdeste a ligação ao Xbox Live.
+
+Desligado pelo servidor
+
+Foste expulso do jogo
+
+Foste expulso do jogo por voares
+
+A tentativa de ligação excedeu o tempo
+
+O servidor está cheio
+
+O anfitrião saiu do jogo.
+
+Não podes participar neste jogo porque não és amigo de nenhum dos participantes.
+
+Não podes participar neste jogo porque foste expulso pelo anfitrião anteriormente.
+
+Não podes juntar-te a este jogo, pois o jogador a que te estás a tentar juntar possui uma versão mais antiga do jogo.
+
+Não podes juntar-te a este jogo, pois o jogador a que te estás a tentar juntar possui uma versão mais recente do jogo.
+
+Novo Mundo
+
+Prémio Desbloqueado!
+
+Parabéns - recebeste uma imagem de jogador com o Steve do Minecraft!
+
+Parabéns - recebeste uma imagem de jogador com um Creeper!
+
+Parabéns - recebeste um item de avatar - uma t-shirt Minecraft: Edição Xbox 360!
+Acede à interface para vestires a t-shirt ao teu avatar.
+
+Parabéns - recebeste um item de avatar - um relógio Minecraft: Edição Xbox 360!
+Acede à interface para colocares o relógio no teu avatar.
+
+Parabéns - recebeste um item de avatar - um boné de Creeper!
+Acede à interface para colocares o boné no teu avatar.
+
+Parabéns - recebeste o tema do Minecraft: Edição Xbox 360!
+Acede à interface para selecionares este tema.
+
+Desbloquear Jogo Completo
+
+Estás a jogar a versão de avaliação, mas precisas do jogo completo para poderes guardar o jogo.
+Queres desbloquear o jogo completo agora?
+
+Esta é a versão de avaliação do Minecraft: Edição Xbox 360. Se tivesses o jogo completo, terias acabado de ganhar um feito!
+Queres desbloquear o jogo completo?
+
+Esta é a versão de avaliação do Minecraft: Edição Xbox 360. Se tivesses o jogo completo, terias acabado de ganhar um prémio avatar!
+Queres desbloquear o jogo completo?
+
+Esta é a versão de avaliação do Minecraft: Edição Xbox 360. Se tivesses o jogo completo, terias acabado de ganhar uma imagem de jogador!
+Queres desbloquear o jogo completo?
+
+Esta é a versão de avaliação do Minecraft: Edição Xbox 360. Se tivesses o jogo completo, terias acabado de ganhar um tema!
+Queres desbloquear o jogo completo?
+
+Esta é a versão de avaliação do Minecraft: Edição Xbox 360. Precisas do jogo completo para poderes aceitar este convite.
+Queres desbloquear o jogo completo?
+
+Os jogadores convidados não podem desbloquear o jogo completo. Inicia sessão com um ID de utilizador Xbox Live.
+
+Por favor aguarda
+
+Sem resultados
+
+Filtro:
+
+Amigos
+
+A Minha Pontuação
+
+Geral
+
+Entradas:
+
+Lugar
+
+Gamertag
+
+A Preparar para Guardar Nível
+
+A Preparar Blocos...
+
+A Finalizar...
+
+A Construir Terreno
+
+A simular o mundo
+
+A iniciar o servidor
+
+A gerar área de criação
+
+A carregar área de criação
+
+A entrar no Submundo
+
+A Sair do Submundo
+
+A criar novamente
+
+A gerar nível
+
+A carregar nível
+
+A guardar jogadores
+
+A ligar ao anfitrião
+
+A transferir terreno
+
+A mudar para jogo offline
+
+Aguarda enquanto o anfitrião guarda o jogo
+
+Entrar no FIM
+
+Sair do FIM
+
+Encontrar Sementes para o Gerador de Mundos
+
+Esta cama está ocupada
+
+Só podes dormir à noite
+
+%s está a dormir numa cama. Para acelerares até de manhã, todos os jogadores têm de estar a dormir em camas ao mesmo tempo.
+
+A tua cama desapareceu ou está bloqueada
+
+Não podes descansar agora, existem monstros nas redondezas
+
+Estás a dormir numa cama. Para acelerares até de manhã, todos os jogadores têm de estar a dormir em camas ao mesmo tempo.
+
+Ferramentas e Armas
+
+Armas
+
+Alimentos
+
+Estruturas
+
+Armadura
+
+Mecanismos
+
+Transporte
+
+Decorações
+
+Blocos de Construção
+
+Redstone e Transporte
+
+Vários
+
+Preparação de Poções
+
+Poções
+
+Ferramentas, Armas e Armadura
+
+Materiais
+
+Sessão terminada
+
+Foste reencaminhado para o ecrã principal porque o teu perfil de jogador terminou sessão
+
+Dificuldade
+
+Música
+
+Som
+
+Gama
+
+Sensibilidade do Jogo
+
+Sensibilidade da Interface
+
+Calmo
+
+Fácil
+
+Normal
+
+Difícil
+
+Neste modo, o jogador recupera a saúde com o passar do tempo e não há inimigos no horizonte.
+
+Neste modo, existem inimigos nas redondezas, mas irão provocar menos danos ao jogador do que no modo Normal.
+
+Neste modo, existem inimigos nas redondezas e podem provocar uma quantidade de danos normal ao jogador.
+
+Neste modo, existem inimigos nas redondezas e irão provocar graves danos ao jogador. Presta atenção aos Creepers também, uma vez que é pouco provável que cancelem o seu ataque explosivo quando te afastas!
+
+Tempo Limite da Avaliação Excedido
+
+Jogaste a versão de avaliação do Minecraft: Xbox 360 Edition durante o tempo máximo permitido! Para continuares a divertir-te, queres desbloquear o jogo completo?
+
+Jogo cheio
+
+Falha ao entrar no jogo, não existem espaços livres
+
+Introduzir Texto de Sinal
+
+Introduz uma linha de texto para o teu sinal
+
+Introduzir Título
+
+Introduz um título para a tua publicação
+
+Introduzir Legenda
+
+Introduz uma legenda para a tua publicação
+
+Introduzir Descrição
+
+Introduz uma descrição da tua publicação
+
+Inventário
+
+Ingredientes
+
+Posto de Poções
+
+Baú
+
+Encantar
+
+Fornalha
+
+Ingrediente
+
+Combustível
+
+Distribuidor
+
+De momento, não existem ofertas de conteúdo transferível deste tipo disponíveis para este título.
+
+%s juntou-se ao jogo.
+
+%s saiu do jogo.
+
+%s foi expulso do jogo.
+
+Tens a certeza de que queres eliminar os dados de jogo gravados?
+
+A confirmar
+
+Censurado
+
+A jogar:
+
+Repor Definições
+
+Tens a certeza de que queres repor as definições para os valores predefinidos?
+
+Erro de Carregamento
+
+Não foi possível carregar "Minecraft: Edição Xbox 360" e não é possível continuar.
+
+Jogo de %s
+
+Anfitrião de jogo desconhecido
+
+Um convidado terminou sessão
+
+Um jogador convidado terminou sessão e todos os jogadores convidados foram removidos do jogo.
+
+Iniciar Sessão
+
+Não tens sessão iniciada. Para jogares este jogo, tens de iniciar sessão. Queres iniciar sessão agora?
+
+Multijogador não permitido
+
+Falha ao participar no jogo. Um ou mais jogadores não têm permissão para jogar no modo multijogador no Xbox Live.
+
+Falha ao criar um jogo online. Um ou mais jogadores não têm permissão para jogar no modo multijogador no Xbox Live. Desmarca a caixa "Jogo Online" para iniciares um jogo offline.
+
+Não tens autorização para participar nesta sessão de jogo porque os teus privilégios de Conteúdo de Assinante são demasiado limitados. Altera esta definição em Configurações Privacidade e Online na interface Xbox se quiseres participar nesta sessão.
+
+Não tens autorização para participar nesta sessão de jogo porque um dos jogadores locais tem privilégios de Conteúdo de Assinante demasiado limitados.
+
+Não tens autorização para participar nesta sessão de jogo porque um dos jogadores da sessão tem privilégios de Conteúdo de Assinante para Somente Amigos e tu não estás na Lista de Amigos deles.
+
+Falha ao criar jogo
+
+Não tens autorização para criar esta sessão de jogo porque um dos jogadores locais tem privilégios de Conteúdo de Assinante demasiado limitados. Desmarca a caixa "Jogo Online" para iniciar um jogo offline ou altera esta definição em Configurações Privacidade e Online na interface Xbox.
+
+Auto Selecionado
+
+Sem Pacote: Skins Pred.
+
+Skins Favoritas
+
+Nível Excluído
+
+O jogo no qual pretendes participar encontra-se na tua lista de níveis excluídos.
+Se quiseres participar neste jogo, o nível será removido da lista de níveis excluídos.
+
+Excluir este nível?
+
+Tens a certeza de que queres adicionar este nível à lista de níveis excluídos?
+Se selecionares OK, irás sair do jogo.
+
+Removido da Lista de Excluídos
+
+Intervalo de Gravação Automática
+
+Intervalo de Gravação Automática: Desl.
+
+Minutos
+
+Não é possível colocar aqui!
+
+Não é possível colocar lava junto a um ponto de regeneração devido à possibilidade de morte instantânea dos jogadores regenerados.
+
+Este jogo tem uma funcionalidade de gravação automática. Quando vires o ícone acima, o jogo está a guardar os dados.
+Não desligues a consola Xbox 360 enquanto este ícone estiver visível.
+
+Opacidade da Interface
+
+A preparar gravação automática do nível
+
+Tamanho HUD
+
+Tamanho HUD (Ecrã dividido)
+
+Semear
+
+Desbloquear Pacote de Skins
+
+Para utilizares a skin selecionada, tens de desbloquear este pacote de skins.
+Queres desbloquear agora este pacote de skins?
+
+Desbloquear Pacote de Texturas
+
+Para usar este pacote de texturas no teu mundo, precisas de o desbloquear.
+Queres desbloqueá-lo agora?
+
+Pacote de Texturas de Avaliação
+
+Estás a usar uma versão de avaliação do pacote de texturas. Não poderás guardar este mundo sem desbloqueares a versão completa.
+Gostarias de desbloquear a versão completa deste pacote de texturas?
+
+Pacote de Texturas Não Disponível
+
+Desbloquear Versão Completa
+
+Transferir Versão de Avaliação
+
+Transferir Versão Completa
+
+Este mundo usa um pacote de mistura ou pacote de texturas que não tens!
+Queres instalar o pacote de mistura ou pacote de texturas agora?
+
+Obtém a Versão de Avaliação
+
+Obtém a Versão Completa
+
+Expulsar Jogador
+
+Tens a certeza de que queres expulsar este jogador do jogo? Ele não poderá voltar a participar até reiniciares o mundo.
+
+Pacotes de Imagens de Jogador
+
+Temas
+
+Pacotes de Skins
+
+Permitir amigos de amigos
+
+Não podes participar neste jogo porque está limitado a amigos do anfitrião.
+
+Impossível Participar no Jogo
+
+Selecionado
+
+Skin selecionada:
+
+Conteúdo Transferível Corrupto
+
+Este conteúdo transferível está danificado e não pode ser usado. Tens de eliminá-lo e reinstalá-lo a partir do menu Loja Minecraft.
+
+Algum conteúdo transferível está danificado e não pode ser usado. Tens de eliminá-lo e reinstalá-lo a partir do menu Loja Minecraft.
+
+O teu modo de jogo foi alterado
+
+Muda o Nome do Teu Mundo
+
+Introduz o novo nome para o teu mundo
+
+Modo Sobrevivência
+
+Modo Criativo
+
+Sobrevivência
+
+Criativo
+
+Criado em Sobrevivência
+
+Criado em Criativo
+
+Compor Nuvens
+
+O que queres fazer com o jogo guardado?
+
+Mudar o Nome
+
+Guardar automaticamente dentro de %d...
+
+Ligado
+
+Desligado
+
+Normal
+
+Superplano
+
+Quando ativado, o jogo ficará online.
+
+Quando ativado, só os jogadores convidados podem aderir.
+
+Quando ativado, amigos de pessoas na tua Lista de Amigos podem aderir.
+
+Quando ativada, os jogadores podem infligir danos aos outros jogadores. Afeta apenas o modo Sobrevivência.
+
+Quando desativada, os jogadores que participam no jogo não podem construir ou escavar até receberem autorização.
+
+Quando ativada, o fogo pode propagar-se aos blocos inflamáveis mais próximos.
+
+Quando ativada, o TNT explode ao ser acionado.
+
+Quando ativada, o anfitrião pode voar, desativar a exaustão e tornar-se invisível no menu do jogo. Desativa as atualizações dos feitos e das classificações.
+
+Quando ativado, o Submundo será regenerado. É útil se tiveres um ficheiro mais antigo em que não existissem Fortalezas do Submundo.
+
+Quando ativada, são geradas Aldeias e Fortalezas no mundo.
+
+Quando ativada, é gerado um mundo completamente plano no Mundo Superior e no Submundo.
+
+Quanto ativada, é criado um baú com objetos úteis junto ao ponto de regeneração do jogador.
+
+Pacotes de Skins
+
+Temas
+
+Imagens de Jogador
+
+Itens de Avatar
+
+Pacotes de Textura
+
+Pacotes de Mistura
+
+{*PLAYER*} foi consumido pelas chamas
+
+{*PLAYER*} morreu carbonizado
+
+{*PLAYER*} tentou nadar na lava
+
+{*PLAYER*} sufocou numa parede
+
+{*PLAYER*} afogou-se
+
+{*PLAYER*} morreu à fome
+
+{*PLAYER*} foi picado até à morte
+
+{*PLAYER*} embateu no chão com muita força
+
+{*PLAYER*} caiu do mundo
+
+{*PLAYER*} morreu
+
+{*PLAYER*} explodiu
+
+{*PLAYER*} foi morto por magia
+
+{*PLAYER*} foi morto pela respiração do Ender Dragon
+
+{*PLAYER*} foi assassinado por {*SOURCE*}
+
+{*PLAYER*} foi assassinado por {*SOURCE*}
+
+{*PLAYER*} foi atingido por {*SOURCE*}
+
+{*PLAYER*} foi atingido por uma bola de fogo de {*SOURCE*}
+
+{*PLAYER*} foi agredido por {*SOURCE*}
+
+{*PLAYER*} foi morto por {*SOURCE*}
+
+Rochas Enevoadas
+
+Mostrar HUD
+
+Mostrar Mão
+
+Gamertags Ecrã Dividido
+
+Mensagens de Morte
+
+Personagem Animada
+
+Animação de Skin Personalizada
+
+Já não podes escavar ou usar objetos
+
+Já podes escavar e usar objetos
+
+Já não podes colocar blocos
+
+Já podes colocar blocos
+
+Agora podes usar portas e interruptores
+
+Já não podes usar portas e interruptores
+
+Agora podes usar contentores (tais como baús)
+
+Já não podes usar contentores (tais como baús)
+
+Já não podes atacar habitantes
+
+Já podes atacar habitantes
+
+Já não podes atacar jogadores
+
+Já podes atacar jogadores
+
+Já não podes atacar animais
+
+Já podes atacar animais
+
+Já és um moderador
+
+Já não és um moderador
+
+Já podes voar
+
+Já não podes voar
+
+Já não podes ficar cansado
+
+Já podes ficar cansado
+
+Já estás invisível
+
+Já não estás invisível
+
+Já és invulnerável
+
+Já não és invulnerável
+
+%d MSP
+
+Ender Dragon
+
+%s entrou em O Fim
+
+%s abandonou O Fim
+
+
+{*C3*}Sei a que jogador te referes.{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}?{*EF*}{*B*}{*B*}
+{*C3*}Sim. Toma cuidado. Alcançou um nível mais elevado agora. Consegue ler os nossos pensamentos.{*EF*}{*B*}{*B*}
+{*C2*}Isso não interessa. Pensa que fazemos parte do jogo.{*EF*}{*B*}{*B*}
+{*C3*}Gosto deste jogador. Jogou bem. Não desistiu.{*EF*}{*B*}{*B*}
+{*C2*}Lê os nossos pensamentos como se fossem palavras num ecrã.{*EF*}{*B*}{*B*}
+{*C3*}É assim que escolhe imaginar muitas coisas, quando está imerso no sonho de um jogo.{*EF*}{*B*}{*B*}
+{*C2*}As palavras são uma excelente interface. Muito flexível. E menos aterrorizadoras do que olhar para a realidade atrás do ecrã.{*EF*}{*B*}{*B*}
+{*C3*}Eles costumavam ouvir vozes. Antes de os jogadores saberem ler. No tempo em que aqueles que não jogavam chamavam bruxas e feiticeiros aos jogadores. E os jogadores sonhavam que voavam pelo ar, em vassouras movidas por demónios.{*EF*}{*B*}{*B*}
+{*C2*}O que sonhou este jogador?{*EF*}{*B*}{*B*}
+{*C3*}Este jogador sonhou com a luz do sol e árvores. Fogo e água. Sonhou que criava. E sonhou que destruía. Sonhou que caçava e era caçado. Sonhou com abrigos.{*EF*}{*B*}{*B*}
+{*C2*}Ah, a interface original. Com um milhão de anos e ainda funciona. Mas que estrutura verdadeira criou este jogador, na realidade por detrás do ecrã?{*EF*}{*B*}{*B*}
+{*C3*}Trabalhou, com um milhão de outros, na criação de um mundo verdadeiro numa dobra de {*EF*}{*NOISE*}{*C3*}, e criou um {*EF*}{*NOISE*}{*C3*} para {*EF*}{*NOISE*}{*C3*}, em {*EF*}{*NOISE*}{*C3*}.{*EF*}{*B*}{*B*}
+{*C2*}Não consegue ler esse pensamento.{*EF*}{*B*}{*B*}
+{*C3*}Não. Ainda não alcançou o nível mais elevado. Esse, terá de o alcançar no sonho longo da vida, não no sonho curto de um jogo.{*EF*}{*B*}{*B*}
+{*C2*}Sabe que o amamos? Que o universo é bondoso?{*EF*}{*B*}{*B*}
+{*C3*}Às vezes, através do ruído dos seus pensamentos, sim, ouve o universo.{*EF*}{*B*}{*B*}
+{*C2*}Mas por vezes está triste, no sonho longo. Cria mundos que não têm verão, e treme sob um sol negro, confundindo a sua triste criação com a realidade.{*EF*}{*B*}{*B*}
+{*C3*}Curá-lo da tristeza destruí-lo-ia. A tristeza é parte da sua missão privada. Não podemos interferir.{*EF*}{*B*}{*B*}
+{*C2*}Por vezes, quando estão imersos em sonhos, quero dizer-lhes que estão a construir mundos verdadeiros na realidade. Por vezes, quero falar-lhes da sua importância para o universo. Por vezes, quando passou algum tempo e ainda não estabeleceram uma ligação verdadeira, quero ajudá-los a proferir a palavra que temem.{*EF*}{*B*}{*B*}
+{*C3*}Lê os nossos pensamentos.{*EF*}{*B*}{*B*}
+{*C2*}Por vezes, não me importo. Por vezes, desejo dizer-lhes que este mundo que tomam por verdade não passa de {*EF*}{*NOISE*}{*C2*} e {*EF*}{*NOISE*}{*C2*}, quero dizer-lhes que são {*EF*}{*NOISE*}{*C2*} no {*EF*}{*NOISE*}{*C2*}. Observam tão pouco da realidade, no seu sonho longo.{*EF*}{*B*}{*B*}
+{*C3*}E, contudo, jogam o jogo.{*EF*}{*B*}{*B*}
+{*C2*}Mas seria tão fácil dizer-lhes...{*EF*}{*B*}{*B*}
+{*C3*}É demais para este sonho. Dizer-lhes como viver é impedi-los de viver.{*EF*}{*B*}{*B*}
+{*C2*}Não direi ao jogador como viver.{*EF*}{*B*}{*B*}
+{*C3*}O jogador está a ficar impaciente.{*EF*}{*B*}{*B*}
+{*C2*}Vou contar-lhe uma história.{*EF*}{*B*}{*B*}
+{*C3*}Mas não a verdade.{*EF*}{*B*}{*B*}
+{*C2*}Não. Uma história que contenha seguramente a verdade, numa jaula de palavras. Não a verdade nua, capaz de queimar a qualquer distância.{*EF*}{*B*}{*B*}
+{*C3*}Dá-lhe corpo, mais uma vez.{*EF*}{*B*}{*B*}
+{*C2*}Sim. Jogador...{*EF*}{*B*}{*B*}
+{*C3*}Usa o nome.{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}. Jogador de jogos.{*EF*}{*B*}{*B*}
+{*C3*}Boa.{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}Agora, inspira. Mais uma vez. Sente o ar nos teus pulmões. Deixa os teus membros regressarem. Sim, mexe os dedos. Tens corpo novamente, sob a gravidade, no ar. Rematerializa-te no sonho longo. Aí estás. O teu corpo a tocar novamente no universo em todos os pontos, como se fossem coisas distintas. Como se fôssemos coisas distintas.{*EF*}{*B*}{*B*}
+{*C3*}Como estamos? Em tempos chamavam-nos espírito da montanha. Pai sol, mãe lua. Espíritos ancestrais, espíritos animais. Génios. Fantasmas. Duendes. Depois deuses, demónios. Anjos. Poltergeists. Alienígenas, extra-terrestres. Leptões, quarks. As palavras mudam. Nós não mudamos.{*EF*}{*B*}{*B*}
+{*C2*}Somos o universo. Somos tudo o que pensas que não és. Olhas para nós agora, através da tua pele e dos teus olhos. E porque é que o universo toca a tua pele e emite luz sobre ti? Para te ver, jogador. para te conhecer. E ser conhecido. Vou contar-te uma história.{*EF*}{*B*}{*B*}
+{*C2*}Era uma vez um jogador.{*EF*}{*B*}{*B*}
+{*C3*}O jogador eras tu, {*PLAYER*}.{*EF*}{*B*}{*B*}
+{*C2*}Por vezes, considerava-se humano, na fina crosta de um globo de rocha fundida em rotação. A bola de rocha fundida girava em torno de uma bola de gás abrasador trezentas e trinta mil vezes maior do que ela. Estavam tão afastadas que a luz levava oito minutos a percorrer a distância. A luz era informação de uma estrela, e era capaz de queimar a tua pele a cento e cinquenta milhões de quilómetros de distância.{*EF*}{*B*}{*B*}
+{*C2*}Por vezes, o jogador sonhava que era mineiro, na superfície de um mundo que era plano e infinito. O sol era um quadrado branco. Os dias eram curtos; havia muito que fazer; e a morte era um inconveniente temporário.{*EF*}{*B*}{*B*}
+{*C3*}Por vezes, o jogador sonhava que estava perdido numa história.{*EF*}{*B*}{*B*}
+{*C2*}Por vezes, o jogador sonhava que era outras coisas, noutros lugares. Às vezes, esses sonhos eram perturbadores. Outras eram mesmo muito bonitos. Por vezes, o jogador acordava de um sonho e partia para outro, e depois acordava desse e ia para um terceiro.{*EF*}{*B*}{*B*}
+{*C3*}Por vezes, o jogador sonhava que via palavras num ecrã.{*EF*}{*B*}{*B*}
+{*C2*}Vamos voltar atrás.{*EF*}{*B*}{*B*}
+{*C2*}Os átomos do jogador estavam dispersos na relva, nos rios, no ar, no solo. Uma mulher juntou os átomos; bebeu-os, comeu-os e inalou-os; e a mulher montou o jogador, no seu corpo.{*EF*}{*B*}{*B*}
+{*C2*}E o jogador acordou, do mundo escuro e quente do corpo da sua mãe, para o sonho longo.{*EF*}{*B*}{*B*}
+{*C2*}E o jogador era uma nova história, nunca antes contada, escrita em letras de ADN. E o jogador era um novo programa, nunca antes executado, gerado por um código-fonte com mil milhões de anos. E o jogador era um novo humano, nunca antes vivo, feito apenas de leite e amor.{*EF*}{*B*}{*B*}
+{*C3*}Tu és o jogador. A história. O programa. O humano. Feito apenas de leite e amor.{*EF*}{*B*}{*B*}
+{*C2*}Vamos recuar ainda mais.{*EF*}{*B*}{*B*}
+{*C2*}Os sete mil quatriliões de átomos do corpo do jogador foram criados, muito antes deste jogo, no coração de uma estrela. Por isso, o jogador é, em si, informação de uma estrela. E o jogador move-se através de uma história, que é uma floresta de informação plantada por um homem chamado Julian num apartamento, mundo infinito criado por um homem chamado Markus, que existe num mundo pequeno e privado criado pelo jogador, que habita um universo criado por...{*EF*}{*B*}{*B*}
+{*C3*}Caluda. Por vezes, o jogador criou um pequeno mundo privado suave, quente e simples. Outras vezes duro, frio e complexo. Por vezes, construiu um modelo de universo na sua cabeça; salpicos de energia, salpicos de energia movendo-se através de vastos espaços vazios. Por vezes, chamava a esses salpicos "electrões" e "protões".{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}Por vezes, chamava-lhes "planetas" e "estrelas".{*EF*}{*B*}{*B*}
+{*C2*}Por vezes, acreditava estar num universo feito de energia, que era feita de ligados e desligados; zeros e uns; linhas de código. Por vezes, acreditava que estava a jogar um jogo. Por vezes, acreditava que estava a ler palavras num ecrã.{*EF*}{*B*}{*B*}
+{*C3*}Tu és o jogador, a ler palavras...{*EF*}{*B*}{*B*}
+{*C2*}Caluda... Por vezes, o jogador lia linhas de código num ecrã. Descodificava-as em palavras; descodificava as palavras e dava-lhes sentido; descodificava sentidos e transformava-os em sentimentos, emoções, teorias, ideias, e o jogador começava a respirar mais depressa e mais profundamente e percebia que estava vivo, vivo, que aquelas mil mortes não tinham sido reais, o jogador estava vivo{*EF*}{*B*}{*B*}
+{*C3*}Tu. Sim, tu. Tu estás vivo.{*EF*}{*B*}{*B*}
+{*C2*}e, por vezes, o jogador acreditava que o universo lhe falara através da luz do sol que atravessava as folhas das árvores num dia de verão{*EF*}{*B*}{*B*}
+{*C3*}e, por vezes, o jogador acreditava que o universo lhe falara através da luz emitida pelo nítido céu de inverno, onde um salpico de luz no canto do olho do jogador podia ser uma estrela um milhão de vezes maior do que o sol, a ferver os seus planetas até se transformarem em plasma de modo a ser vista pelo jogador por um momento, enquanto ia a caminho de casa no outro extremo do universo, com um súbito odor a comida, quase à porta de casa, prestes a sonhar de novo{*EF*}{*B*}{*B*}
+{*C2*}e, por vezes, o jogador acreditava que o universo lhe falara através dos zeros e uns, através da electricidade do mundo, através das palavras que passavam num ecrã no final de um sonho{*EF*}{*B*}{*B*}
+{*C3*}e o universo dizia amo-te{*EF*}{*B*}{*B*}
+{*C2*}e o universo dizia jogaste bem{*EF*}{*B*}{*B*}
+{*C3*}e o universo dizia tudo o que precisas está em ti{*EF*}{*B*}{*B*}
+{*C2*}e o universo dizia que és mais forte do que pensas{*EF*}{*B*}{*B*}
+{*C3*}e o universo dizia que és a luz do dia{*EF*}{*B*}{*B*}
+{*C2*}e o universo dizia que és a noite{*EF*}{*B*}{*B*}
+{*C3*}e o universo dizia que as trevas contra as quais lutas estão dentro de ti{*EF*}{*B*}{*B*}
+{*C2*}e o universo dizia que a luz que procuras está em ti{*EF*}{*B*}{*B*}
+{*C3*}e o universo dizia que não estás só{*EF*}{*B*}{*B*}
+{*C2*}e o universo dizia que não estás separado de tudo o resto{*EF*}{*B*}{*B*}
+{*C3*}e o universo dizia que és o universo que se prova a si mesmo, que fala consigo próprio, que lê o seu próprio código{*EF*}{*B*}{*B*}
+{*C2*}e o universo dizia amo-te porque és o amor.{*EF*}{*B*}{*B*}
+{*C3*}E o jogo terminava e o jogador acordava do sonho. E o jogador começava um novo sonho. E o jogador sonhava de novo, sonhava melhor. E o jogador era o universo. E o jogador era amor.{*EF*}{*B*}{*B*}
+{*C3*}Tu és o jogador.{*EF*}{*B*}{*B*}
+{*C2*}Acorda.{*EF*}
+
+
+Repor Submundo
+
+Queres mesmo repor o Submundo no seu estado predefinido? Vais perder tudo o que construíste no Submundo!
+
+Repor Submundo
+
+Não Repor Submundo
+
+De momento, não é possível tosquiar este Vacogumelo. Foi alcançado o número máximo de Porcos, Ovelhas, Vacas e Gatos.
+
+De momento, não é possível usar o Ovo de Geração. O número máximo de Porcos, Ovelhas, Vacas e Gatos foi alcançado.
+
+De momento, não é possível usar o Ovo de Geração. Foi alcançado o número máximo de Vacogumelos.
+
+De momento, não é possível usar o Ovo de Geração. Foi alcançado o número máximo de Lobos num mundo.
+
+De momento, não é possível usar o Ovo de Geração. Foi alcançado o número máximo de Galinhas num mundo.
+
+De momento, não é possível usar o Ovo de Geração. Foi alcançado o número máximo de Lulas num mundo.
+
+De momento, não é possível usar o Ovo de Geração. Foi alcançado o número máximo de inimigos num mundo.
+
+De momento, não é possível usar o Ovo de Geração. Foi alcançado o número máximo de aldeões num mundo.
+
+O número máximo de Pinturas/Estruturas de Itens num mundo foi atingido.
+
+Não podes produzir inimigos no modo Calmo.
+
+Este animal não pode entrar no Modo Amor. O número máximo de Porcos, Ovelhas, Vacas e Gatos de criação foi alcançado.
+
+Este animal não pode entrar no Modo Amor. Foi alcançado o número máximo de Lobos de criação.
+
+Este animal não pode entrar no Modo Amor. Foi alcançado o número máximo de Galinhas de criação.
+
+Este animal não pode entrar no Modo Amor. Foi alcançado o número máximo de Vacogumelos de criação.
+
+Foi alcançado o número máximo de Barcos num mundo.
+
+O número máximo de Cabeças de Mob num mundo foi alcançado.
+
+Inverter
+
+Esquerdino
+
+Morreste!
+
+Regenerar
+
+Conteúdo transferível
+
+Alterar Skin
+
+Instruções de Jogo
+
+Controlos
+
+Definições
+
+Ficha técnica
+
+Reinstalar Conteúdo
+
+Definições de Depuração
+
+Fogos Propagados
+
+Explosões de TNT
+
+Jogador vs. Jogador
+
+Confiar nos Jogadores
+
+Privilégios de Anfitrião
+
+Gerar Estruturas
+
+Mundo Superplano
+
+Baú de Bónus
+
+Opções de Mundo
+
+Pode Construir e Escavar
+
+Pode Usar Portas e Interruptores
+
+Pode Abrir Caixas
+
+Pode Atacar Jogadores
+
+Pode Atacar Animais
+
+Moderador
+
+Expulsar Jogador
+
+Pode Voar
+
+Desativar Exaustão
+
+Invisível
+
+Opções de Anfitrião
+
+Jogadores/Convidar
+
+Jogo online
+
+Apenas por convite
+
+Mais Opções
+
+Carrega
+
+Novo Mundo
+
+Nome do Mundo
+
+Semente para o Gerador de Mundos
+
+Deixar livre para uma semente aleatória
+
+Jogadores
+
+Participar no Jogo
+
+Iniciar Jogo
+
+Não foram encontrados jogos
+
+Jogar
+
+Classificações
+
+Feitos
+
+Ajuda e Opções
+
+Desbloquear Jogo Completo
+
+Retomar Jogo
+
+Guardar Jogo
+
+Dificuldade:
+
+Tipo de Jogo:
+
+Gamertags:
+
+Estruturas:
+
+Tipo de Nível:
+
+JvJ:
+
+Confiar Jogadores:
+
+TNT:
+
+Fogos Propagados:
+
+Reinstalar Tema
+
+Reinstalar Imagem de Jogador 1
+
+Reinstalar Imagem de Jogador 2
+
+Reinstalar Item de Avatar 1
+
+Reinstalar Item de Avatar 2
+
+Reinstalar Item de Avatar 3
+
+Opções
+
+Áudio
+
+Controlo
+
+Gráficos
+
+Interface de Utilizador
+
+Repor Predefinições
+
+Ver Saltos
+
+Sugestões
+
+Descrições do Jogo
+
+Gamertags do Jogo
+
+Ecrã Divido Vertical 2 Jogadores
+
+Concluído
+
+Editar mensagem do sinal:
+
+Preenche os detalhes da tua captura de ecrã
+
+Legenda
+
+Captura de ecrã do jogo
+
+Editar mensagem do sinal:
+
+Olha o que eu fiz no Minecraft: Edição Xbox 360!
+
+As texturas, os ícones e a interface de utilizador clássicos do Minecraft!
+
+Mostrar todos os Mundos Mash-up
+
+Selecionar Ranhura de Gravação de Transferência
+
+Ranhura Vazia
+
+A Carregar Gravação de Metadados
+
+A Carregar Gravação de Dados
+
+A Carregar Gravação para Xbox One
+
+Carregamento Cancelado
+
+Cancelaste o carregamento deste ficheiro para a área de transferência de gravações.
+
+Sem Efeitos
+
+Velocidade
+
+Lentidão
+
+Rapidez
+
+Cansaço por Escavação
+
+Força
+
+Fraqueza
+
+Saúde Instantânea
+
+Danos Instantâneos
+
+Impulso de Salto
+
+Náusea
+
+Regeneração
+
+Resistência
+
+Resistência ao Fogo
+
+Inalação de Água
+
+Invisibilidade
+
+Cegueira
+
+Visão Nocturna
+
+Fome
+
+Veneno
+
+de Velocidade
+
+de Lentidão
+
+de Rapidez
+
+de Sonolência
+
+de Força
+
+de Fraqueza
+
+de Saúde
+
+de Danos
+
+de Salto
+
+de Náusea
+
+de Regeneração
+
+de Resistência
+
+de Resistência ao Fogo
+
+de Inalação de Água
+
+de Invisibilidade
+
+de Cegueira
+
+de Visão Nocturna
+
+de Fome
+
+de Veneno
+
+
+
+II
+
+III
+
+IV
+
+Explosiva
+
+Mundano
+
+Desinteressante
+
+Suave
+
+Clara
+
+Leitosa
+
+Difusa
+
+Simples
+
+Fina
+
+Estranha
+
+Plana
+
+Pesada
+
+Estragada
+
+Amanteigada
+
+Macia
+
+Suave
+
+Alegre
+
+Espessa
+
+Elegante
+
+Pomposa
+
+Charmosa
+
+Enérgica
+
+Sofisticada
+
+Cordial
+
+Brilhante
+
+Potente
+
+Repugnante
+
+Sem Cheiro
+
+Grosseira
+
+Severa
+
+Acre
+
+Nojenta
+
+Mal Cheirosa
+
+Usada como base em todas as poções. Usa-a num posto de poções para criares poções.
+
+Não tem efeitos, pode ser usada num posto de poções para criar poções adicionando mais ingredientes.
+
+Aumenta a velocidade dos movimentos dos jogadores, animais e monstros afetados, e a velocidade de sprint, comprimento do salto e campo de visão dos jogadores.
+
+Reduz a velocidade dos movimentos dos jogadores, animais e monstros afetados, e a velocidade de sprint, comprimento do salto e campo de visão dos jogadores.
+
+Aumenta os danos causados pelos jogadores e monstros quando atacam.
+
+Reduz os danos causados pelos jogadores e monstros quando atacam.
+
+Aumenta instantaneamente a saúde dos jogadores, animais e monstros afetados.
+
+Reduz instantaneamente a saúde dos jogadores, animais e monstros afetados.
+
+Restitui a saúde dos jogadores, animais e monstros afetados ao longo do tempo.
+
+Faz com que os jogadores, animais e monstros afetados fiquem imunes ao fogo, lava e ataques de Blaze à distância.
+
+Reduz a saúde dos jogadores, animais e monstros afetados ao longo do tempo.
+
+Precisão
+
+Golpear
+
+Veneno de Artrópodes
+
+Coice
+
+Aspeto do Fogo
+
+Proteção
+
+Proteção contra Fogos
+
+Queda de Penas
+
+Proteção contra Explosões
+
+Proteção contra Projécteis
+
+Respiração
+
+Afinidade Aquática
+
+Eficiência
+
+Toque de Seda
+
+Inquebrável
+
+Saque
+
+Sorte
+
+Poder
+
+Chama
+
+Soco
+
+Infinidade
+
+I
+
+II
+
+III
+
+IV
+
+V
+
+VI
+
+VII
+
+VIII
+
+IX
+
+X
+
+Pode ser extraído com uma Picareta de Ferro ou melhor para obter Esmeraldas.
+
+Similar a um Baú, com a exceção de que os itens colocados num Baú Ender estão disponíveis em cada um dos Baús Ender do jogador, mesmo em dimensões diferentes.
+
+Ativa-se quando uma entidade passa por uma Armadilha ligada.
+
+Ativa um Gancho de Armadilha ligado quando uma entidade passa por ele.
+
+Uma forma compacta de armazenar Esmeraldas.
+
+Um muro feito de Pedras Arredondadas.
+
+Pode ser usada para reparar armas, ferramentas e armaduras.
+
+Fundido numa fornalha para produzir Quartzo do Submundo.
+
+Usado como decoração.
+
+Pode ser trocado com aldeões.
+
+Usado como decoração. É possível plantar Flores, Mudas, Cactos e Cogumelos nele.
+
+Restitui 2{*ICON_SHANK_01*} e pode ser transformada numa cenoura dourada. Pode ser plantada na terra.
+
+Restitui 0,5{*ICON_SHANK_01*} ou pode ser cozida numa fornalha. Pode ser plantada na terra.
+
+Restitui 3{*ICON_SHANK_01*}. Cria-se cozendo uma batata numa fornalha.
+
+Restitui 1{*ICON_SHANK_01*} ou pode ser cozida numa fornalha. Pode ser plantada na terra. Se comeres isto podes ficar doente.
+
+Restitui 3{*ICON_SHANK_01*}. Fabricada a partir de uma cenoura e de pepitas de ouro.
+
+Usada para controlar um porco com sela quando estás a montá-lo.
+
+Restaura 4{*ICON_SHANK_01*}.
+
+Usado com uma Bigorna para enfeitiçar armas, ferramentas ou armaduras.
+
+Criado através da extração de Minério de Quartzo do Submundo. Pode ser transformado num Bloco de Quartzo.
+
+Fabricada a partir da Lã. Usada como decoração.
+
+Esmeralda
+
+Vaso de Flores
+
+Cenoura
+
+Batata
+
+Batata Cozida
+
+Batata Venenosa
+
+Cenoura Dourada
+
+Cenoura num Pau
+
+Tarte de Abóbora
+
+Livro de Feitiços
+
+Quartzo do Submundo
+
+Minério de Esmeralda
+
+Baú Ender
+
+Gancho de Armadilha
+
+Armadilha
+
+Bloco de Esmeralda
+
+Muro Pedra Arredondada
+
+Muro Pedra Arr. e Musgo
+
+Vaso de Flores
+
+Cenouras
+
+Batatas
+
+Bigorna
+
+Bigorna
+
+Bigorna Ligeiramente Danificada
+
+Bigorna Muito Danificada
+
+Minério de Quartzo do Submundo
+
+Bloco de Quartzo
+
+Bloco de Quartzo Esculpido
+
+Bloco Pilar de Quartzo
+
+Escadas de Quartzo
+
+Alcatifa
+
+Alcatifa Preta
+
+Alcatifa Vermelha
+
+Alcatifa Verde
+
+Alcatifa Castanha
+
+Alcatifa Azul
+
+Alcatifa Roxa
+
+Alcatifa Ciano
+
+Alcatifa Cinzenta-clara
+
+Alcatifa Cinzenta
+
+Alcatifa Rosa
+
+Alcatifa Lima
+
+Alcatifa Amarela
+
+Alcatifa Azul-clara
+
+Alcatifa Magenta
+
+Alcatifa Laranja
+
+Alcatifa Branca
+
+Grés Esculpido
+
+Grés Suave
+
+{*PLAYER*} foi morto ao tentar ferir {*SOURCE*}
+
+{*PLAYER*} foi esmagado por uma Bigorna.
+
+{*PLAYER*} foi esmagado por um bloco.
+
+{*PLAYER*} teletransportado/a para {*DESTINATION*}
+
+{*PLAYER*} teletransportou-te para a sua posição
+
+{*PLAYER*} teletransportado/a até ti
+
+Espinhos
+
+Placa de Quartzo
+
+Ilumina as zonas escuras, mesmo debaixo de água.
+
+Torna invisíveis os jogadores, animais e monstros afetados.
+
+Reparar & Nomear
+
+Custo do Feitiço: %d
+
+Demasiado Caro!
+
+Renomear
+
+Tens:
+
+Necessário para Troca
+
+{*VILLAGER_TYPE*} oferece %s
+
+Reparar
+
+Trocar
+
+Tingir coleira
+
+
+ Esta é a interface da Bigorna, que podes usar para renomear, reparar e aplicar feitiços a armas, armaduras ou ferramentas, às custas de Níveis de Experiência.
+
+
+
+ {*B*}
+ Prime{*CONTROLLER_VK_A*} para aprenderes mais sobre a interface da Bigorna.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já conheceres a interface da Bigorna.
+
+
+
+ Para começar a trabalhar num objeto, coloca-o no primeiro orifício.
+
+
+
+ Quando a matéria-prima correta é colocada no segundo orifício (exemplo: Lingotes de Ferro para uma Espada de Ferro danificada), a reparação proposta surge no orifício de saída.
+
+
+
+ Em alternativa, um segundo objeto idêntico pode ser colocado no segundo orifício para combinar os dois objetos.
+
+
+
+ Para enfeitiçar objetos na Bigorna, coloca um Livro de Feitiços no segundo orifício.
+
+
+
+ O número de Níveis de Experiência que o trabalho vai custar é apresentado por baixo da saída. Se não tiveres Níveis de Experiência suficientes, a reparação não será concluída.
+
+
+
+ É possível renomear o objeto editando o nome apresentado na caixa de texto.
+
+
+
+ Pegar no objeto reparado irá consumir os dois objetos usados na Bigorna e diminuir o teu Nível de Experiência na quantidade indicada.
+
+
+
+ Nesta zona há uma Bigorna e um Baú com ferramentas e armas para trabalhar.
+
+
+
+ {*B*}
+ Prime{*CONTROLLER_VK_A*} para aprenderes mais sobre a Bigorna.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já conheceres a Bigorna.
+
+
+
+ Usando uma Bigorna, podes reparar armas e ferramentas para restaurar a sua durabilidade, renomeá-las ou enfeitiçá-las com Livros de Feitiços.
+
+
+
+ Os Livros de Feitiços estão dentro de Baús nas masmorras, ou são enfeitiçados a partir de Livros normais na Mesa de Feitiços.
+
+
+
+ Usar a Bigorna custa Níveis de Experiência e cada utilização poderá danificar a Bigorna.
+
+
+
+ O tipo de trabalho a fazer, o valor do objeto, o número de feitiços e o uso prévio afetam o custo da reparação.
+
+
+
+ Renomear um objeto muda o nome apresentado a todos os jogadores e reduz permanentemente o custo do trabalho prévio.
+
+
+
+ No Baú desta zona vais encontrar Picaretas, matérias-primas, Frascos de Feitiços e Livros de Feitiços para experimentares.
+
+
+
+ Esta é a interface de troca que apresenta as trocas que podem ser feitas com um aldeão.
+
+
+
+ {*B*}
+ Prime{*CONTROLLER_VK_A*} para aprenderes mais sobre a interface de troca.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já conheceres a interface de troca.
+
+
+
+ Todas as trocas que o aldeão está disposto a fazer de momento são apresentadas no topo.
+
+
+
+ As trocas surgirão a vermelho e estarão indisponíveis se não tiveres os objetos necessários.
+
+
+
+ A quantidade e o tipo de objetos que dás ao aldeão surge nas duas caixas à esquerda.
+
+
+
+ Podes ver o número total de objetos necessários para a troca nas duas caixas à esquerda.
+
+
+
+ Prime{*CONTROLLER_VK_A*} para trocar os objetos que o aldeão pretende pelo objeto que ele disponibiliza.
+
+
+
+ Nesta zona há um aldeão e um Baú com Papel para comprar objetos.
+
+
+
+ {*B*}
+ Prime{*CONTROLLER_VK_A*} para aprenderes mais sobre trocas.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já conheceres as trocas.
+
+
+
+ Os jogadores podem trocar objetos do seu inventário com os aldeões.
+
+
+
+ As trocas que um aldeão poderá disponibilizar dependem da sua profissão.
+
+
+
+ Desempenhar uma mistura de trocas irá adicionar ou atualizar aleatoriamente as trocas disponíveis do aldeão.
+
+
+
+ As trocas que tenham sido usadas frequentemente podem ser temporariamente removidas, mas o aldeão irá sempre oferecer pelo menos uma troca.
+
+
+
+ Tira algum Papel do Baú e tenta trocar com este aldeão.
+
+
+
+ Nesta zona há dois Baús Ender.
+
+
+
+ {*B*}
+ Prime{*CONTROLLER_VK_A*} para aprenderes mais sobre Baús Ender.{*B*}
+ Prime{*CONTROLLER_VK_B*} se já conheceres os Baús Ender.
+
+
+
+ Todos os Baús Ender num mundo estão ligados, mesmo através de dimensões. Os objetos colocados num Baú Ender estão acessíveis noutro Baú Ender.
+
+
+
+ Todavia, os conteúdos dos Baús Ender são diferentes para cada jogador.
+
+
+
+ Isto permite que os jogadores armazenem objetos em qualquer Baú Ender e os recuperem noutros Baús Ender em diferentes posições no mundo. Podes tentar isto agora, colocando objetos num dos Baús Ender.
+
+
+Restitui 2{*ICON_SHANK_01*}, regenera a saúde durante 30 segundos e concede resistência ao fogo e a danos durante 5 minutos. Fabricada a partir de uma maçã e blocos de ouro.
+
+Pode Teletransportar
+
+Teletransportar
+
+Teletransportar Para Jogador
+
+Teletransportar Para Mim
+
+Pode Desativar Exaustão
+
+Pode Tornar-se Invisível
+
+Agora podes ativar a invisibilidade
+
+Já não podes ativar a invisibilidade
+
+Agora podes ativar o voo
+
+Já não podes ativar o voo
+
+Agora podes desativar a exaustão
+
+Já não podes desativar a exaustão
+
+Agora podes teletransportar
+
+Já não podes teletransportar
+
+{*T3*}COMO JOGAR : BIGORNAS{*ETW*}{*B*}{*B*}
+Os níveis de experiência também podem ser usados para reparar, enfeitiçar ou renomear objetos com a Bigorna.{*B*}
+Todos os objetos podem ser renomeados, embora só objetos com durabilidade possam ser reparados ou ser alvo de feitiços dos Livros de Feitiços.{*B*}
+Um objeto pode ser reparado se for colocado num dos orifícios à esquerda, juntamente com alguma matéria-prima do objeto, como Lingotes de Ferro para uma Espada de Ferro, ou combinado com outro objeto do mesmo tipo.{*B*}
+Combinar objetos é mais eficiente quando usas uma Bigorna e, se algum dos objetos tiver sido enfeitiçado, o produto final poderá ter feitiços de qualquer dos materiais usados.{*B*}
+Os Livros de Feitiços podem aplicar feitiços aos objetos, ao combinarem-nos numa Bigorna, desde que o feitiço do Livro seja adequado. Os Livros de Feitiços podem ser encontrados em Baús nas masmorras, ou ser enfeitiçados a partir de Livros normais na Mesa de Feitiços.{*B*}
+Há a possibilidade de a Bigorna ficar danificada após cada utilização, e até de se destruir caso seja demasiado castigada.{*B*}
+
+
+{*T3*}COMO JOGAR : TROCAR{*ETW*}{*B*}{*B*}
+É possível trocar objetos com aldeões. Cada aldeão tem uma profissão. Eles podem ser Agricultores, Açougueiros, Ferreiros, Bibliotecários ou Padres, e isto afeta o tipo de objetos que podem trocar.{*B*}
+Podes encontrar uma lista de todas as trocas que podes fazer com um aldeão no menu de trocas. Um aldeão pode modificar ou adicionar o que tem para troca sempre que um jogador faça negócio com ele, embora uma troca possa ficar temporariamente desativada se for usada com demasiada frequência.{*B*}
+As trocas geralmente implicam comprar ou vender uns quantos objetos por esmeraldas.{*B*}
+Se não tiveres os objetos necessários para uma troca, os objetos surgem a vermelho.{*B*}
+
+
+{*T3*}COMO JOGAR : BAÚ ENDER {*ETW*}{*B*}{*B*}
+Todos os Baús Ender de um mundo estão ligados. Os objetos colocados num Baú Ender estão acessíveis em qualquer outro. Todavia, os conteúdos dos Baús Ender diferem de jogador para jogador. Isto permite que os Jogadores armazenem objetos em qualquer Baú Ender e os recolham de outros Baús Ender em locais distintos do mundo.
+
+
+Agricultor
+
+Bibliotecário
+
+Padre
+
+Ferreiro
+
+Açougueiro
+
+Presentes nas aldeias, os aldeões oferecem-se para vender objetos ao jogador dependendo da sua profissão.
+
+Baú Grande
+
+
+ Também podes criar Livros de Feitiços na Mesa de Feitiços, os quais podem ser usados mais tarde na Bigorna para aplicar o seu feitiço a um objeto.
+
+
+
+ Ganchos de Armadilha também fornecem energia constante a um circuito enquanto algo está a despoletar a corda entre eles.
+
+
+
+ Depois de domesticado, um lobo terá sempre a sua coleira. Podes mudar a cor da coleira tingindo-a.
+
+
+Cenouras e Batatas são cultivadas plantando Cenouras ou Batatas, e ficam prontas a colher quando o vegetal é visível acima do solo.
+
+
+ Além disso, os jogadores podem colocar selas em porcos e montá-los. Eles são controlados se os tentares com uma Cenoura num Pau.
+
+
+
+ Em caso de necessidade, podes mover lentamente a tua vagoneta usando {*CONTROLLER_ACTION_MOVE*}. Pô-la num carril com energia ajuda a vagoneta a arrancar.
+
+
+Não podes juntar-te a este jogo porque o ecrã dividido só é suportado no modo de Alta Definição. Faz com que todos os outros jogadores terminem a sessão se quiseres aderir.
+
+Cura
+
+Xbox 360
+
+BACK
+
+Esta opção desativa as atualizações dos feitos e das classificações para este mundo durante o jogo e também ao carregá-lo novamente após guardar com esta opção ativa.
+
+Carregar Gravação para Xbox One
+
+Carregar Gravação
+
+Na área de transferência de gravações só pode ser armazenada uma gravação Xbox 360 de cada vez. Por favor, confirma se transferiste a gravação na tua consola Xbox One antes de carregares outra gravação Xbox 360.
+
+A carregar...
+
+Carregamento Concluído!
+
+Carregamento Falhou. Volta a tentar mais tarde, por favor.
+
+Encontraste {*progress*} de {*goal*} Discos de Música!
+
+
diff --git a/Minecraft.Client/Xbox/loc/lcl/zh-CHT/Minecraft_all.resx b/Minecraft.Client/Xbox/loc/lcl/zh-CHT/Minecraft_all.resx
new file mode 100644
index 00000000..1539934c
--- /dev/null
+++ b/Minecraft.Client/Xbox/loc/lcl/zh-CHT/Minecraft_all.resx
@@ -0,0 +1,4572 @@
+
+未使用
+
+確定
+
+返回
+
+取消
+
+是
+
+否
+
+存檔已損毀
+
+您的遊戲存檔已損毀。要建立新的存檔,並覆寫損毀的存檔嗎?
+
+沒有可用空間
+
+已選取儲存裝置沒有足夠的可用空間來建立遊戲存檔。
+
+再選取一次
+
+不儲存即進行遊戲
+
+建立新存檔
+
+要覆寫存檔嗎?
+
+已選取儲存裝置已經有這個存檔,確定要覆寫該存檔嗎?
+
+否:不要覆寫
+
+覆寫並儲存
+
+儲存失敗
+
+儲存裝置的問題
+
+儲存裝置無法使用,或儲存裝置發生錯誤
+
+儲存裝置無法使用,或儲存裝置發生錯誤。請選取新的儲存裝置。
+
+選取新的儲存裝置
+
+尚未選取儲存裝置
+
+如果您不選取儲存裝置,系統將會停用儲存遊戲的功能
+
+選取儲存裝置
+
+不儲存即繼續
+
+儲存裝置已遭移除,請選取新的儲存裝置。
+
+載入失敗
+
+為存檔命名
+
+請輸入遊戲存檔的名稱
+
+返回 Xbox 設定畫面
+
+確定要離開遊戲嗎?
+
+已登出
+
+您的玩家設定檔已登出,因此您即將返回標題畫面
+
+某個玩家設定檔已登出,因此配對遊戲即將結束
+
+繼續進行遊戲
+
+玩家設定檔沒有登入
+
+這個遊戲有某些功能需要使用已啟用 Xbox LIVE 功能的玩家設定檔,但您的玩家設定檔目前沒有登入 Xbox LIVE。
+
+這個功能需要使用已登入 Xbox LIVE 的玩家設定檔。
+
+連線至 Xbox LIVE
+
+繼續離線進行遊戲
+
+成就獎項問題
+
+系統在讀取您的玩家設定檔時發生問題,因此您目前無法獲得成就。
+
+玩家設定檔的問題
+
+無法將設定儲存至玩家設定檔。
+
+訪客玩家設定檔
+
+訪客玩家設定檔無法使用這個功能,請使用不同的玩家設定檔。
+
+正在儲存...
+
+正在儲存,請勿關閉主機。
+
+解除完整版遊戲鎖定
+
+這是 Minecraft 試玩版遊戲。如果您擁有完整版遊戲,那您剛剛就獲得了 1 個成就!
+解除完整版遊戲即可享受 Minecraft 的遊戲歡樂,而且還能透過 Xbox LIVE 與世界各地的好友一起玩遊戲。
+想要解除完整版遊戲鎖定嗎?
+
+系統在讀取您的設定檔時發生問題。即將返回主畫面。
+
+新的下載內容現已推出!請選取主畫面的 [Minecraft 商店] 按鈕來取得下載內容。
+
+您可以用 Minecraft 商店裡的角色外觀套件來變更角色的外觀喔。選取主畫面中的 [Minecraft 商店] 按鈕,去看看有哪些好東西吧。
+
+如果您選擇高畫質模式,就能讓最多 4 位玩家在同一台主機上以分割畫面同時進行遊戲!
+
+將其他控制器連接至您的主機,然後按下這些控制器的 START 鍵就能隨時加入遊戲。
+
+調整 [色差補正] 設定就能讓遊戲畫面變亮或變暗。
+
+如果您將遊戲困難度設定為 [和平],您的生命值就會自動回復,而且夜晚不會出現怪物!
+
+用骨頭來餵狼來馴服牠,然後就能讓牠坐下或是跟著您走。
+
+當您開啟物品欄選單時,只要把游標移動到選單外面,然後按下 {*CONTROLLER_VK_A*} 即可丟棄物品。
+
+夜晚時,在床舖上睡覺就能讓遊戲時間快轉到日出;但在多人遊戲中,所有玩家必須同時睡在床舖上,才會有這種效果。
+
+您可以殺死豬來獲得生豬肉,然後在烹煮後吃掉熟豬肉來回復生命值。
+
+您可以殺死乳牛來獲得皮革,然後用來製作護甲。
+
+如果您有空的桶子,可以用在乳牛身上來裝牛奶、裝水,或是裝熔岩。
+
+您可以用鋤頭墾地,來準備栽種作物用的地面。
+
+蜘蛛不會在白天攻擊您,除非您先展開攻擊。
+
+用鏟子來挖泥土或沙子,會比用手來挖快多了!
+
+吃下熟豬肉所回復的生命值,會比吃下生豬肉所回復的多!
+
+別忘了製造些火把,以便在夜晚時照亮四周的環境,而且怪物會避開火把附近的區域。
+
+您可以利用礦車與軌道,來快速抵達目的地!
+
+只要栽種樹苗,樹苗就會長成樹木。
+
+殭屍 Pigmen 不會攻擊您,除非您先展開攻擊。
+
+只要在床舖上睡覺,就能變更時間再生點,並讓遊戲時間快轉到日出。
+
+把 Ghast 發射的火球打回去!
+
+建造傳送門就能讓您前往地獄。
+
+按下 {*CONTROLLER_VK_B*} 即可丟棄您手上握著的物品!
+
+別忘了要使用正確的工具來做事!
+
+如果您找不到煤塊來製造火把,可以用熔爐火燒木頭來製造木炭。
+
+我們不建議您直直往下挖,或是直直往上挖。
+
+從骷髏的骨頭精製出來的骨粉可以當做肥料,讓植物立刻長大喔!
+
+當 Creeper 靠近您時,就會自爆!
+
+當水碰到熔岩源方塊時,就會產生黑曜石。
+
+當您移除熔岩源方塊後,熔岩在好幾分鐘後才會完全消失。
+
+Ghast 的火球無法破壞鵝卵石,因此鵝卵石很適合用來保護傳送門。
+
+可做為光源的方塊能夠融化白雪和冰塊,這些方塊包括火把、閃石及南瓜燈。
+
+在野外以羊毛做為建築材料來蓋東西時,千萬要小心,因為雷雨的閃電會讓羊毛著火。
+
+使用熔爐時,1 個熔岩桶可讓您熔煉 100 個方塊。
+
+音符方塊所演奏的樂器種類,是根據底下方塊的材質而定。
+
+白天時,如果殭屍和骷髏在水中就能活下去。
+
+如果您攻擊某隻狼,四周的所有狼就會開始攻擊您。而殭屍 Pigmen 也有這種特點。
+
+狼無法進入地獄。
+
+狼不會攻擊 Creeper。
+
+雞每 5 到 10 分鐘就會下一次蛋。
+
+黑曜石只能用鑽石鎬來開採。
+
+最容易取得火藥的來源就是 Creeper。
+
+把 2 個箱子並排放置,就能製造出 1 個大箱子。
+
+馴服的狼的生命值高低,會以尾巴的位置來表示。只要餵狼吃肉,就能治療狼。
+
+在熔爐烹煮仙人掌,即可獲得綠色染料。
+
+只要在 Twitter 上關注 4J Studios 和 Kappische 的動態,就能獲得 Minecraft 的最新消息!
+
+透過暫停選單把螢幕擷取畫面分享到 Facebook 上,讓好友驚嘆您在 Minecraft 中的創作!
+
+閱讀 [遊戲方式] 選單中的 [最新資訊] 部分,即可獲得 Minecraft 的最新更新資訊。
+
+現在柵欄可以堆疊囉!
+
+Minecraft 的論壇上有個特別保留給 Xbox 360 Edition 的地方喔!
+
+如果您的手中有小麥,有些動物會跟著您。
+
+只要動物無法朝任一方向移動超過 20 個方塊的距離,牠就不會消失。
+
+音樂是由 C418 所製作!
+
+Notch 在 Twitter 上已經有超過 100 萬位的關注者了!
+
+並非所有瑞典人都有金髮,有些瑞典人 (像是 Mojang 裡的 Jens) 就擁有紅髮!
+
+我們認為 4J Studios 已經把 Xbox 360 版本中的 Herobrine 拿掉了,不過我們不確定這個消息是真是假。
+
+我們會為這個遊戲推出更新程式!
+
+Notch 是誰?
+
+Mojang 獲得的獎項數目比員工數目還要多!
+
+有些名人很喜歡玩 Minecraft 喔!
+
+deadmau5 喜歡玩 Minecraft!
+
+別直視遊戲的程式錯誤。
+
+Creeper 就是從某個程式錯誤中誕生的。
+
+這是雞?還是鴨子?
+
+您有去 Minecon 嗎?
+
+在 Mojang 裡,沒人看過 Junkboy 的臉。
+
+您知道 Minecraft Wiki 嗎?
+
+Mojang 的新 office 很酷喔!
+
+Minecraft: Xbox 360 Edition 打破了許多紀錄!
+
+2013 年的 Minecon 於美國佛羅里達州奧蘭多舉辦!
+
+.party() 棒極了!
+
+要永遠假設謠言是錯誤的,不要當真!
+
+{*T3*}遊戲方式:基本介紹{*ETW*}{*B*}{*B*}
+Minecraft 是一款可讓您放置方塊來建造夢想世界的遊戲。但千萬別忘了要在夜行怪物出現之前,先蓋好一個棲身處喔。{*B*}{*B*}
+使用 {*CONTROLLER_ACTION_LOOK*} 即可四處觀看。{*B*}{*B*}
+使用 {*CONTROLLER_ACTION_MOVE*} 即可四處移動。{*B*}{*B*}
+按下 {*CONTROLLER_ACTION_JUMP*} 即可跳躍。{*B*}{*B*}
+快速往前按兩下 {*CONTROLLER_ACTION_MOVE*} 即可奔跑。當您往前按住 {*CONTROLLER_ACTION_MOVE*} 時,角色將會繼續奔跑,直到奔跑時間結束,或是食物列少於 {*ICON_SHANK_03*} 為止。{*B*}{*B*}
+按住 {*CONTROLLER_ACTION_ACTION*} 即可用您的手,或是手中握住的東西來開採及劈砍。但您可能需要精製出工具來開採某些方塊。{*B*}{*B*}
+當您手中握著某樣物品時,使用 {*CONTROLLER_ACTION_USE*} 即可使用該物品;您也可以按下 {*CONTROLLER_ACTION_DROP*} 來丟棄該物品。
+
+{*T3*}遊戲方式:抬頭顯示器{*ETW*}{*B*}{*B*}
+抬頭顯示器會顯示您的相關資訊,例如狀態、生命值、在水中時的剩餘氧氣量、您的飢餓程度 (需要吃東西來補充),以及穿戴護甲時的護甲值。 如果您失去部分生命值,但是食物列有 9 個以上的 {*ICON_SHANK_01*},您的生命值將會自動回復。只要吃下食物,就能補充食物列。{*B*}
+經驗值列同時也顯示在此處,經驗等級將以數字顯示,列條圖示則顯示出提升至下一等級所需的經驗值。 收集生物被殺死時掉落的光球、開採特定的方塊、繁殖動物、釣魚,或使用熔爐熔煉或烹煮皆可累積經驗值。{*B*}{*B*}
+抬頭顯示器也會顯示您可以使用的物品。使用 {*CONTROLLER_ACTION_LEFT_SCROLL*} 和 {*CONTROLLER_ACTION_RIGHT_SCROLL*} 即可變更您手中的物品。
+
+{*T3*}遊戲方式:物品欄{*ETW*}{*B*}{*B*}
+使用 {*CONTROLLER_ACTION_INVENTORY*} 即可檢視您的物品欄。{*B*}{*B*}
+這個畫面會顯示您手中可使用的物品,以及您身上的所有其他物品。您穿戴的護甲也會顯示在這裡。{*B*}{*B*}
+使用 {*CONTROLLER_MENU_NAVIGATE*} 即可移動游標。使用 {*CONTROLLER_VK_A*} 即可撿起游標下的物品。如果游標下有數個物品,您將會撿起所有物品,但您也可以使用 {*CONTROLLER_VK_X*} 撿起一半的物品。{*B*}{*B*}
+您可以使用 {*CONTROLLER_VK_A*} 用游標把物品移動到物品欄的另一個空格上,然後把物品放置在那裡。如果游標上有數個物品,使用 {*CONTROLLER_VK_A*} 即可放置所有物品,但您也可以使用 {*CONTROLLER_VK_X*} 只放置 1 個物品。{*B*}{*B*}
+如果游標下的物品是護甲,畫面會出現工具提示,讓您能夠快速地把護甲移動至物品欄中正確的護甲空格。{*B*}{*B*}
+您也可以藉由染色來改變您的皮甲顏色,您可以在物品欄中使用游標撿起染色劑並將其移動到您想染色的目標上然後按下 {*CONTROLLER_VK_X*} 來染色。
+
+
+{*T3*}遊戲方式:箱子{*ETW*}{*B*}{*B*}
+當您精製出箱子時,就能將箱子放置在遊戲世界中,然後用 {*CONTROLLER_ACTION_USE*} 來使用箱子,以便存放您物品欄中的物品。{*B*}{*B*}
+您可以使用游標在物品欄與箱子之間移動物品。{*B*}{*B*}
+箱子會保存您的物品,等您之後有需要時再將物品移動到物品欄中。
+
+
+{*T3*}遊戲方式:大箱子{*ETW*}{*B*}{*B*}
+把 2 個箱子並排放置就能組合成 1 個大箱子,讓您能存放更多物品。{*B*}{*B*}
+大箱子的使用方式就跟普通箱子一樣。
+
+
+{*T3*}遊戲方式:精製物品{*ETW*}{*B*}{*B*}
+您可以在精製介面中,把物品欄中的物品組合起來,精製出新類型的物品。使用 {*CONTROLLER_ACTION_CRAFTING*} 即可開啟精製介面。{*B*}{*B*}
+使用 {*CONTROLLER_VK_LB*} 和 {*CONTROLLER_VK_RB*} 來依序切換頂端的索引標籤,以便選取您想要製作的物品類型,然後使用 {*CONTROLLER_MENU_NAVIGATE*} 來選取您要精製的物品。{*B*}{*B*}
+精製區域會顯示精製新物品所需的材料。按下 {*CONTROLLER_VK_A*} 即可精製物品,並將該物品放置在物品欄中。
+
+
+{*T3*}遊戲方式:精製台{*ETW*}{*B*}{*B*}
+精製台可讓您精製出種類較多的物品。{*B*}{*B*}
+先將精製台放置在遊戲世界中,然後按下 {*CONTROLLER_ACTION_USE*} 即可使用。{*B*}{*B*}
+精製台的運作方法跟基本的精製介面是一樣的,但您會擁有較大的精製空間,能精製出的物品種類也較多。
+
+
+{*T3*}遊戲方式:熔爐{*ETW*}{*B*}{*B*}
+熔爐可讓您透過火燒來改變物品。舉例來說,您可以使用熔爐把鐵礦石轉變成鐵錠塊。{*B*}{*B*}
+先將熔爐放置在遊戲世界中,然後按下 {*CONTROLLER_ACTION_USE*} 即可使用。{*B*}{*B*}
+您必須把燃料放在熔爐的底部,熔爐頂端的物品才會燃燒。{*B*}{*B*}
+當物品火燒完畢後,您就能把物品從成品區移動到物品欄中。{*B*}{*B*}
+如果游標下的物品是適合熔爐使用的材料或燃料,畫面會出現工具提示,讓您能夠快速將物品移動至熔爐。
+
+
+{*T3*}遊戲方式:發射器{*ETW*}{*B*}{*B*}
+發射器可用來射出物品,但您必須在發射器旁邊放置開關 (例如拉桿),才能啟動發射器。{*B*}{*B*}
+如要用物品裝填發射器,只要先按下 {*CONTROLLER_ACTION_USE*},再把您要射出的物品從物品欄移動到發射器即可。{*B*}{*B*}
+現在,當您使用開關時,發射器就會射出 1 個物品。
+
+
+{*T3*}遊戲方式:釀製{*ETW*}{*B*}{*B*}
+您必須使用釀製台才能釀製藥水,而釀製台可在精製台建造。不論您想釀製哪一種藥水,都必須先使用水瓶。您可將玻璃瓶裝入水槽或其他水源的水來製作水瓶。{*B*}
+每個釀製台中都有三個放置瓶子的空格,代表您可以同時釀製三瓶藥水。而同一種材料可同時讓三個瓶子使用,所以最有效率的作法就是每一次都同時釀製三瓶藥水。{*B*}
+只要將藥水所需的材料放在釀製台的上方,經過一段時間後即可釀製出基本藥水。基本藥水本身並不具備任何效果,但您只需再使用另一項材料,即可釀製出具備效力的藥水。{*B*}
+釀製出藥水後,您可以再加入紅石塵讓藥水的效力更持久,或加入閃石塵讓藥水更具威力,或是用發酵蜘蛛眼讓藥水的傷害性更強。{*B*}
+您也可加入火藥,將藥水變成可用來投擲的噴濺藥水。投擲噴濺藥水即可將藥水的效力波及其落點附近的區域。{*B*}
+
+可用來製作藥水的材料包括:-{*B*}{*B*}
+* {*T2*}地獄結節{*ETW*}{*B*}
+* {*T2*}蜘蛛眼{*ETW*}{*B*}
+* {*T2*}砂糖{*ETW*}{*B*}
+* {*T2*}Ghast 淚水{*ETW*}{*B*}
+* {*T2*}Blaze 粉{*ETW*}{*B*}
+* {*T2*}熔岩球{*ETW*}{*B*}
+* {*T2*}發光西瓜{*ETW*}{*B*}
+* {*T2*}紅石塵{*ETW*}{*B*}
+* {*T2*}閃石塵{*ETW*}{*B*}
+* {*T2*}發酵蜘蛛眼{*ETW*}{*B*}{*B*}
+
+請試著組合各種不同的材料,找出釀製各種不同藥水所需的方程式。
+
+
+{*T3*}遊戲方式:附加能力{*ETW*}{*B*}{*B*}
+收集生物被殺死時掉落的光球、開採特定的方塊,或使用熔爐熔煉或烹煮皆可累積經驗值,您必須使用經驗值才能將特殊能力附加到武器、書本、護甲或特定工具上。{*B*}
+當您將劍、弓、斧、鎬、鏟、書本和護甲放到附加能力台的書下方的空格後,空格右邊的三個按鈕會顯示一些附加能力,以及使用該附加能力所需的經驗等級。{*B*}
+當您的經驗等級不足時,所需的經驗等級會以紅色呈現;足夠時則以綠色呈現。{*B*}{*B*}
+被附加的能力是根據所顯示經驗等級多寡隨機挑選出來。{*B*}{*B*}
+當附加能力台的周圍被書架圍住 (最多可有 15 個書架),且書架和附加能力台的中間有一個方塊的空間時,附加能力的效果會增強,同時附加能力台的書上會顯示神秘的圖示。{*B*}{*B*}
+附加能力台所需使用的材料都可在該世界的村落中被找到,或經由開採或栽種而得到。{*B*}{*B*}
+在鐵砧上使用附魔小冊來對物品使用附加能力。這能讓您有更多自由決定要對物品使用何種附加能力。{*B*}
+
+
+{*T3*}遊戲方式:豢養動物{*ETW*}{*B*}{*B*}
+當您想要將動物聚集在同一個地方豢養時,可以建造一個大小不超過 20x20 個方塊的柵欄區域,然後將您的動物放置在裡面。這樣就能確保牠們在您回來的時候還在那裡。
+
+
+{*T3*}遊戲方式:繁殖動物{*ETW*}{*B*}{*B*}
+現在 Minecraft 遊戲中的動物可以繁殖,生出小動物了!{*B*}
+您必須餵動物吃特定的食物,讓動物進入戀愛模式,動物才能繁殖。{*B*}
+餵乳牛、Mooshroom、或綿羊吃小麥,餵豬吃紅蘿蔔,餵雞吃小麥種子或地獄結節,餵狼吃肉,然後這些動物就會開始尋找也在戀愛模式中的同種類動物。{*B*}
+當同在戀愛模式中的兩隻同種類動物相遇,牠們會先親吻數秒,剛出生的小動物就會出現。小動物在長成一般成年動物大小前都會跟在父母身旁。{*B*}
+剛結束戀愛模式的動物必須等待大約五分鐘後,才能再次進入戀愛模式。{*B*}
+在遊戲世界中有動物數量限制,因此在您擁有很多動物的時候會發現牠們不再繁殖了。
+
+{*T3*}遊戲方式:地獄傳送門{*ETW*}{*B*}{*B*}
+地獄傳送門可讓玩家在地上世界與地獄世界之間往返。您可以利用地獄世界在地上世界中快速移動,因為在地獄世界移動 1 個方塊的距離,就等於在地上世界移動 3 個方塊的距離。
+因此當您在地獄世界建造傳送門並通過它時,您出現在地上世界的移動距離,將會是以進入傳送門為起點時的 3 倍。{*B*}{*B*}
+要建造傳送門至少需要 10 個黑曜石方塊,且傳送門必須要有 5 個方塊高,4 個方塊寬,1 個方塊厚。當您建造好傳送門的框架後,必須要用火彈物品讓框架中的空間著火,才能啟動傳送門。{*B*}{*B*}
+右邊圖片中有數種傳送門的範例。
+
+
+{*T3*}遊戲方式:多人遊戲{*ETW*}{*B*}{*B*}
+Xbox One 主機上的 Minecraft 預設為多人遊戲。如果您選擇高畫質模式,就能隨時讓本機玩家加入遊戲,只要在遊戲進行時連接控制器並按下 {*CONTROLLER_VK_START*} 鍵即可。{*B*}{*B*}
+當您開始或加入線上遊戲時,您好友名單上的玩家就能看到您正在玩 Minecraft (除非您在主持遊戲時選取「僅限邀請」);而當好友加入您的遊戲後,好友的好友名單上的玩家也會看到他正在玩 Minecraft (如果您選取了「允許好友的好友加入」選項)。{*B*}
+當您進行遊戲時,按下 {*CONTROLLER_VK_BACK*} 鍵即可讓您看到遊戲中所有其他玩家的名單,並可檢視他們的玩家卡、把玩家踢出遊戲,以及邀請其他玩家加入遊戲。
+
+
+{*T3*}遊戲方式:分享螢幕擷取畫面{*ETW*}{*B*}{*B*}
+只要在暫停選單按下 {*CONTROLLER_VK_Y*} 即可拍攝螢幕擷取畫面並分享到 Facebook。您會看到螢幕擷取畫面的縮圖,還能編輯與該 Facebook 文章相關的文字。{*B*}{*B*}
+遊戲有專為拍攝螢幕擷取畫面而設計的視角模式,可讓您看到自己角色的正面。先按下 {*CONTROLLER_ACTION_CAMERA*} 直到您看到自己角色的正面,然後按下 {*CONTROLLER_VK_Y*} 即可分享螢幕擷取畫面。{*B*}{*B*}
+玩家代號不會出現在螢幕擷取畫面中。
+
+
+{*T3*}遊戲方式:禁用關卡{*ETW*}{*B*}{*B*}
+如果您在進行某個關卡時看到有冒犯意味的內容,可以選擇把這個關卡加入您的禁用關卡清單。
+方法是先前往暫停選單,然後按下 {*CONTROLLER_VK_RB*} 來選取 [禁用關卡] 工具提示。
+之後當您要加入這個關卡時,系統會提示您該關卡已在您的禁用關卡清單中,然後讓您選擇是否把該關卡從清單中移除並進入關卡,或是要退出。
+
+{*T3*}遊戲方式:創造模式{*ETW*}{*B*}{*B*}
+創造模式的介面可讓玩家把遊戲中的物品移動到自己的物品欄,不需要先開採或是精製。
+當玩家在遊戲世界中放置或使用這些物品時,這些物品並不會從玩家的物品欄中消失,讓玩家可專注在建造上,不需要開採或精製物品。{*B*}
+如果您在創造模式中建立、載入或儲存世界,該世界的成就及排行榜更新功能將無法使用,即使您之後以生存模式載入該世界,也無法改變這種狀況。{*B*}
+在創造模式中,快速按兩下 {*CONTROLLER_ACTION_JUMP*} 即可飛翔。如要停止飛翔,只要重複這個動作即可。飛行時,快速往前按兩下 {*CONTROLLER_ACTION_MOVE*} 即可加快飛行速度。
+在飛翔模式時,按住 {*CONTROLLER_ACTION_JUMP*} 即可往上飛,按住 {*CONTROLLER_ACTION_SNEAK*} 即可往下飛。您也可以使用 {*CONTROLLER_ACTION_DPAD_UP*} 來往上飛,使用 {*CONTROLLER_ACTION_DPAD_DOWN*} 來往下飛,
+使用 {*CONTROLLER_ACTION_DPAD_LEFT*} 來往左飛,使用 {*CONTROLLER_ACTION_DPAD_RIGHT*} 來往右飛。
+
+{*T3*}遊戲方式:主持人與玩家選項{*ETW*}{*B*}{*B*}
+
+{*T1*}遊戲選項{*ETW*}{*B*}
+當載入或建立世界時,您可以按下 [更多選項] 按鈕,來選擇更多遊戲的相關設定。{*B*}{*B*}
+
+ {*T2*}玩家 vs 玩家{*ETW*}{*B*}
+ 啟用此選項時,玩家對其他玩家可以造成傷害。此選項只在生存模式下可使用。{*B*}{*B*}
+
+ {*T2*}信任玩家{*ETW*}{*B*}
+ 停用此選項時,會限制加入遊戲的玩家只能從事限定的活動。他們無法進行開採或使用項目、放置方塊、使用門與開關、使用容器、攻擊玩家,或攻擊動物。您可以使用遊戲選單為特定玩家變更上述的選項。{*B*}{*B*}
+
+ {*T2*}火會蔓延{*ETW*}{*B*}
+ 啟用此選項時,火會蔓延到附近易燃的方塊。可以從遊戲中變更此選項。{*B*}{*B*}
+
+ {*T2*}炸藥會爆炸{*ETW*}{*B*}
+ 啟用此選項時,引爆炸藥時會爆炸。可以從遊戲中變更此選項。{*B*}{*B*}
+
+ {*T2*}主持人特權{*ETW*}{*B*}
+ 啟用此選項時,主持人可以在遊戲中切換自己的飛翔能力、停用疲勞功能,或是讓自己隱形。{*DISABLES_ACHIEVEMENTS*}{*B*}{*B*}
+
+{*T1*}產生新世界選項{*ETW*}{*B*}
+建立新世界時,有些額外的選項可使用。{*B*}{*B*}
+
+ {*T2*}產生建築{*ETW*}{*B*}
+ 啟用此選項時,會在世界中產生如村落與地下要塞等建築。{*B*}{*B*}
+
+ {*T2*}非常平坦的世界{*ETW*}{*B*}
+ 啟用此選項時,會在地上世界與地獄世界中產生完全平坦的世界。{*B*}{*B*}
+
+ {*T2*}贈品箱{*ETW*}{*B*}
+ 啟用此選項時,會在玩家再生點附近創造內含一些有用項目的贈品箱。{*B*}{*B*}
+
+ {*T2*}重設地獄{*ETW*}{*B*}
+ 啟用此選項時,會再度產生地獄。如果您的舊存檔中沒有地獄要塞,這將會很有用。{*B*}{*B*}
+
+ {*T1*}遊戲中選項{*ETW*}{*B*}
+ 玩遊戲時,按下 BACK 鍵可以叫出遊戲中功能表,存取某些選項。{*B*}{*B*}
+
+ {*T2*}主持人選項{*ETW*}{*B*}
+ 玩家主持人或設定為管理員的玩家,可以存取 [主持人選項] 功能表。這些人可以啟用或取消「火會蔓延」及「炸藥會爆炸」的選項。{*B*}{*B*}
+
+{*T1*}玩家選項{*ETW*}{*B*}
+若要修改玩家的特權,可以選取玩家的名字並按下 {*CONTROLLER_VK_A*},這會叫出玩家特權功能表,您可以使用列出的選項。{*B*}{*B*}
+
+ {*T2*}可以建造和開採{*ETW*}{*B*}
+ 只有在關閉信任玩家時才可以使用此選項。啟用此選項時,玩家可以像是在正常狀況下一樣與世界互動。取消使用此選項時,玩家將無法放置或摧毀方塊,並無法與許多項目及方塊互動。{*B*}{*B*}
+
+ {*T2*}可以使用門與開關{*ETW*}{*B*}
+ 只有在關閉信任玩家時才可以使用此選項。停用此選項時,玩家將無法使用門與開關。{*B*}{*B*}
+
+ {*T2*}可以打開容器{*ETW*}{*B*}
+ 只有在關閉信任玩家時才可以使用此選項。停用此選項時,玩家將無法打開箱子等容器。{*B*}{*B*}
+
+ {*T2*}可以攻擊玩家{*ETW*}{*B*}
+ 只有在關閉信任玩家時才可以使用此選項。取消使用此選項時,玩家將無法對其他玩家造成傷害。{*B*}{*B*}
+
+ {*T2*}可以攻擊動物{*ETW*}{*B*}
+ 只有在關閉信任玩家時才可以使用此選項。停用此選項時,玩家將無法對動物造成傷害。{*B*}{*B*}
+
+ {*T2*}管理員{*ETW*}{*B*}
+ 啟用此選項時,玩家可以修改主持人以外其他玩家的特權 (在「信任玩家」關閉的狀態下)、踢出玩家,並啟用或停用「火會蔓延」及「炸藥會爆炸」功能。{*B*}{*B*}
+
+ {*T2*}踢出玩家{*ETW*}{*B*}
+ 對使用與主持人玩家不同 {*PLATFORM_NAME*} 主機的玩家選取此選項,會將該玩家或使用其他 {*PLATFORM_NAME*} 主機的玩家踢出遊戲。除非重新啟動,否則被踢出的玩家無法再加入遊戲。{*B*}{*B*}
+
+{*T1*}主持人玩家選項{*ETW*}{*B*}
+如果已經啟用主持人特權,則主持人玩家可以修改自己的某些特權。若要修改玩家的特權,可以選取玩家的名字並按下 {*CONTROLLER_VK_A*},這會叫出玩家特權功能表,您可以使用列出的選項。{*B*}{*B*}
+
+ {*T2*}可以飛翔{*ETW*}{*B*}
+ 啟用此選項時,玩家可以擁有飛翔的能力。只能在生存模式中選擇是否使用此選項。在創造模式中,所有的玩家都有飛翔的能力。{*B*}{*B*}
+
+ {*T2*}停用疲勞{*ETW*}{*B*}
+ 只能在生存模式中選擇是否使用此選項。啟用時,消耗體力的活動 (行走/奔跑/跳躍等等) 不會讓食物列減少。然而,如果玩家受傷,在玩家回復生命值期間,食物列會緩慢減少。{*B*}{*B*}
+
+ {*T2*}隱形{*ETW*}{*B*}
+ 啟用此選項時,其他玩家將無法看見玩家,且玩家會變成刀槍不入。{*B*}{*B*}
+ {*T2*}可以傳送{*ETW*}{*B*}
+ 這可以讓玩家傳送其他玩家或者他自己到其他玩家身邊。
+
+
+下一頁
+
+上一頁
+
+基本介紹
+
+抬頭顯示器
+
+物品欄
+
+箱子
+
+精製
+
+熔爐
+
+發射器
+
+豢養動物
+
+繁殖動物
+
+釀製
+
+附加能力
+
+地獄傳送門
+
+多人遊戲
+
+分享螢幕擷取畫面
+
+禁用關卡
+
+創造模式
+
+主持人與玩家選項
+
+交易
+
+鐵砧
+
+終界
+
+{*T3*}遊戲方式:終界{*ETW*}{*B*}{*B*}
+終界是遊戲中的另一個世界,只要進入已啟動的終界入口就能到達。終界入口位於地上世界的地下深處要塞。{*B*}
+把終界之眼放入沒有終界之眼的終界入口框架中就能啟動終界入口。{*B*}
+跳進已啟動的入口即可前往終界。{*B*}{*B*}
+您將在終界中對抗許多的 Enderman 以及凶狠強大的終界龍,所以請在進入終界之前做好準備! {*B*}{*B*}
+您會發現 8 根黑曜石柱,其頂端都有終界水晶,終界龍會用水晶來治療自己,
+因此戰鬥的第一步就是要摧毀這些水晶。{*B*}
+只要用箭就能摧毀前面幾顆水晶,不過後面幾顆水晶受到鐵柵欄籠子的保護,需要建造方塊抵達石柱頂端才有辦法摧毀。{*B*}{*B*}
+終界龍會在您建造的時候飛過來進行攻擊並向您吐終界酸液球!{*B*}
+只要一接近被石柱包圍的龍蛋台,終界龍就會飛下來攻擊您,這會是對終界龍使出強力攻擊的好機會!{*B*}
+閃避酸液氣攻擊的同時並攻擊終界龍的眼睛會有最佳的攻擊效果。如果可以的話,帶好友一起進入終界幫助您作戰! {*B*}{*B*}
+您的好友會在您進入終界之後,在他們的地圖上看到位於要塞中的終界入口,
+這樣他們就能輕鬆地加入您。
+
+
+奔跑
+
+最新資訊
+
+{*T3*}變更及新增功能{*ETW*}{*B*}{*B*}
+- 新增物品:翡翠、翡翠原礦、翡翠方塊、終界箱、絆線鉤、附魔金蘋果、鐵砧、鵝卵石牆、青苔卵石牆、凋零骷髏的畫像、馬鈴薯、烤馬鈴薯、有毒馬鈴薯、金色胡蘿蔔、「願者上鉤」
+南瓜派、夜視藥水、隱形藥水、獄石英、獄石英原礦、石英方塊、石英板、石英階梯、雕刻石英方塊、希臘圓柱石英方塊、附魔小冊、各種地毯。{*B*}
+- 新增平滑沙岩和雕刻沙岩的配方。{*B*}
+- 新增怪物:殭屍村民。{*B*}
+- 新增生成地形特色建築:沙漠神廟、沙漠村落、叢林神廟。{*B*}
+- 新增村民交易功能。{*B*}
+- 新增鐵砧介面{*B*}
+- 可以將皮甲染色。{*B*}
+- 可以將狼項圈染色。{*B*}
+- 在騎乘豬隻時可以使用「願者上鉤」來控制方向。{*B*}
+- 在贈品箱中加入更多物品。{*B*}
+- 變更一般擺設半格方塊以及兩個半格方塊的擺設機制。{*B*}
+- 變更樓梯以及石、木板上下顛倒的擺設。{*B*}
+- 新增不同的村民職業。{*B*}
+- 若使用角色蛋產生村民,其職業將為亂數設置。{*B*}
+- 新增木頭的橫擺配置。{*B*}
+- 可在熔爐中使用木質工具作為燃料。{*B*}
+- 可以使用聚寶特殊能力收取冰塊和玻璃片。{*B*}
+- 木質按鈕和木質壓板可以透過射箭啟動。{*B*}
+- 地獄中的怪物可以穿過傳送門來到地上世界。{*B*}
+- Creeper 和蜘蛛會攻擊最後一個對他們出手的玩家。{*B*}
+- 創造模式下的怪物短時間後會回到中立特性。{*B*}
+- 移除溺水時發生的擊退效果。{*B*}
+- 被殭屍打壞的門會顯示傷害。{*B*}
+- 冰塊會在地獄中融化。{*B*}
+- 水槽在大雨中會自動補水。{*B*}
+- 活塞動作的更新時間延長一倍。{*B*}
+- 殺掉豬後會得到馬鞍(如果豬身上裝了馬鞍)。{*B*}
+- 變更終界天空的顏色。{*B*}
+- 可以擺置絲線使成為絆線。{*B*}
+- 雨滴會穿過樹葉了。{*B*}
+- 拉桿可以安裝在方塊的底部。{*B*}
+- 炸藥的傷害會依據遊戲難度改變。{*B*}
+- 變更書本的製作配方。{*B*}
+- 船撞上睡蓮葉不會損壞了,而不是船撞上睡蓮葉就解體。{*B*}
+- 殺死豬後會得到更多豬肉。{*B*}
+- 史萊姆現在比較不會在非常平坦類型的世界中出現。{*B*}
+- Creeper 自爆造成的傷害會依遊戲難度而變動,擊退距離也會更遠。{*B*}
+- 修正 Endermen 不會張開嘴巴的問題。{*B*}
+- 新增玩家傳送的功能 (請見遊戲內的 BACK 鍵選單)。{*B*}
+- 新增遠端設定玩家飛行、隱身、無敵的主持人選項功能。{*B*}
+- 因應本次更新新增物品,在教學模式中加入新的物品與功能教學。{*B*}
+- 更新唱片箱子在教學模式中的位置。{*B*}
+
+
+{*ETB*}歡迎回來!或許您還沒有注意到,您的 Minecraft 已經更新了。{*B*}{*B*}
+我們為您和您的好友新增了許多功能,我們在此為您重點列舉幾,趕快瞭解並開始遊戲吧!{*B*}{*B*}
+{*T1*}新物品{*ETB*} - 翡翠、翡翠原礦、翡翠方塊、終界箱、絆線鉤、附魔金蘋果、鐵砧、花盆、鵝卵石牆、青苔卵石牆、凋零骷髏的畫像、馬鈴薯、烤馬鈴薯、有毒馬鈴薯、金色胡蘿蔔、「願者上鉤」、
+南瓜派、夜視藥水、隱形藥水、獄石英、獄石英原礦、石英方塊、石英板、石英階梯、雕刻石英方塊、希臘圓柱石英方塊、附魔小冊、各種地毯。{*B*}{*B*}
+{*T1*}新生物{*ETB*} - 殭屍村民.{*B*}{*B*}
+{*T1*}新功能{*ETB*} - 和村民交易、透過鐵砧修理武器和工具,或是增加特殊能力,在終界箱裡儲存物品、在騎乘小豬的時候使用「願者上鉤」來控制豬的移動方向!{*B*}{*B*}
+{*T1*}新的迷你教學課程{*ETB*} – 在教學世界裡學習如何使用新功能!{*B*}{*B*}
+{*T1*}新的彩蛋{*ETB*} – 我們已經移動了在教學世界裡的秘密唱片,看看您是否能再次找出它們!{*B*}{*B*}
+
+
+能造成比用手劈砍更大的傷害。
+
+用來挖泥土、青草、沙子、礫石及白雪時的速度,會比用手挖還要快。您需要用鏟子才能挖雪球。
+
+您需要用十字鎬才能開採石頭相關方塊和礦石。
+
+用來劈砍木頭相關方塊的速度,會比用手劈砍還要快。
+
+用來在泥土和青草方塊上整地,以便準備耕種。
+
+木門只要透過使用或敲擊,或是使用紅石就能啟動。
+
+鐵門只能透過紅石、按鈕或開關來開啟。
+
+未使用
+
+未使用
+
+未使用
+
+未使用
+
+穿戴時會讓使用者擁有 1 點護甲值。
+
+穿戴時會讓使用者擁有 3 點護甲值。
+
+穿戴時會讓使用者擁有 2 點護甲值。
+
+穿戴時會讓使用者擁有 1 點護甲值。
+
+穿戴時會讓使用者擁有 2 點護甲值。
+
+穿戴時會讓使用者擁有 5 點護甲值。
+
+穿戴時會讓使用者擁有 4 點護甲值。
+
+穿戴時會讓使用者擁有 1 點護甲值。
+
+穿戴時會讓使用者擁有 2 點護甲值。
+
+穿戴時會讓使用者擁有 6 點護甲值。
+
+穿戴時會讓使用者擁有 5 點護甲值。
+
+穿戴時會讓使用者擁有 2 點護甲值。
+
+穿戴時會讓使用者擁有 2 點護甲值。
+
+穿戴時會讓使用者擁有 5 點護甲值。
+
+穿戴時會讓使用者擁有 3 點護甲值。
+
+穿戴時會讓使用者擁有 1 點護甲值。
+
+穿戴時會讓使用者擁有 3 點護甲值。
+
+穿戴時會讓使用者擁有 8 點護甲值。
+
+穿戴時會讓使用者擁有 6 點護甲值。
+
+穿戴時會讓使用者擁有 3 點護甲值。
+
+只要在熔爐中熔煉礦石,就能取得閃亮的錠塊。錠塊可用來精製成相同材質的工具。
+
+您可以將錠塊、寶石或染料精製成可放置的方塊,然後拿來當做昂貴的建築材料,或是壓縮的礦石存放方式。
+
+當玩家、動物或怪物踏上壓板時,壓板就會送出電流。如果您讓東西掉落在木壓板上,也能啟動送出電流。
+
+可用來組成樓梯。
+
+可用來組成長長的樓梯。把 2 個板子上下重疊,就會產生普通大小的雙層板方塊。
+
+可用來組成長長的樓梯。把 2 個板子上下重疊,就會產生普通大小的雙層板方塊。
+
+可用來產生光線,還能用來融化白雪和冰塊。
+
+無論是哪種木頭,都可以精製成木板。木板可當做建築材料,還能用來精製出許多種物品。
+
+可當做建築材料。沙岩不會受到重力的影響,不像普通的沙子會因為重力而往下掉。
+
+可當做建築材料。
+
+可用來精製出火把、箭、牌子、梯子、柵欄,還能當做工具與武器的把手。
+
+當遊戲世界進入夜晚時,只要世界中的所有玩家都使用床舖睡覺,就能讓時間立刻從夜晚跳到早晨。而且使用床舖也會改變玩家的再生點。
+無論您用哪種色彩的羊毛來精製床舖,床舖的色彩都會是一樣的。
+
+與一般的精製介面相較之下,精製台可讓您精製出更多種類的物品。
+
+可讓您熔煉礦石、製造木炭與玻璃,還能烹煮生魚和生豬肉。
+
+可讓您在裡面存放方塊和物品。把 2 個箱子並排放置,就能製造出有 2 倍容量的大箱子。
+
+可當做無法躍過的屏障。對玩家、動物及怪物而言,柵欄有 1.5 個方塊高;但對於其他方塊來說,柵欄只有 1 個方塊高。
+
+可讓您上下攀爬。
+
+只要透過使用或敲擊,或是使用紅石就能啟動。活板門的功用與一般的門相同,但大小是 1 x 1 的方塊,而且放置後會平躺在地面上。
+
+可顯示您或其他玩家輸入的文字。
+
+比火把更亮的光源。可以用來融化白雪和冰塊,還能在水面下使用。
+
+可用來產生爆炸。炸藥放置後,只要用打火鐮點燃,或利用電流即可啟動。
+
+可用來裝燉蘑菇。當您吃掉燉蘑菇時,碗會保留下來。
+
+可用來裝水、熔岩及牛奶,讓您能夠把這些物品運送到其他地方。
+
+可用來裝水,讓您能夠把水運送到其他地方。
+
+可用來裝熔岩,讓您能夠把熔岩運送到其他地方。
+
+可用來裝牛奶,讓您能夠把牛奶運送到其他地方。
+
+可用來生火、點燃炸藥,以及啟動蓋好的傳送門。
+
+可用來釣魚。
+
+會顯示目前太陽與月亮的位置。
+
+會持續指向您的起點。
+
+用手握住時,會顯示某個地區中已探索區域的影像。可讓您用來尋找能前往某個地點的路。
+
+可射出箭來遠距攻擊。
+
+可與弓組成武器。
+
+可回復 2.5 個 {*ICON_SHANK_01*}。
+
+使用 1 次可回復 1 個 {*ICON_SHANK_01*},總共能使用 6 次。
+
+可回復 1 個 {*ICON_SHANK_01*}。
+
+可回復 1 個 {*ICON_SHANK_01*}。
+
+可回復 3 個 {*ICON_SHANK_01*}。
+
+可回復 1 個 {*ICON_SHANK_01*},或可在熔爐中烹煮。食用可能會讓您中毒。
+
+可回復 3 個 {*ICON_SHANK_01*}。在熔爐烹煮生雞肉即可獲得。
+
+可回復 1.5 個 {*ICON_SHANK_01*},或可在熔爐中烹煮。
+
+可回復 4 個 {*ICON_SHANK_01*}。在熔爐烹煮生牛肉即可獲得。
+
+可回復 1.5 個 {*ICON_SHANK_01*},或可在熔爐中烹煮。
+
+可回復 4 個 {*ICON_SHANK_01*}。在熔爐烹煮生豬肉即可獲得。
+
+可回復 1 個 {*ICON_SHANK_01*},或可在熔爐中烹煮。也可用來餵食豹貓以馴服牠們。
+
+可回復 2.5 個 {*ICON_SHANK_01*}。在熔爐烹煮生魚即可獲得。
+
+可回復 2 個 {*ICON_SHANK_01*},還能精製成金蘋果。
+
+可回復 2 個 {*ICON_SHANK_01*},並在 4 秒內持續回復生命值。用蘋果和碎金塊精製而成。
+
+可回復 2 個 {*ICON_SHANK_01*}。食用可能會讓您中毒。
+
+可用來製作蛋糕或當做釀製藥水的材料。
+
+開啟時會送出電流。當拉桿開啟或關閉後,就會保持在這個狀態,直到下次開啟或關閉為止。
+
+紅石火把會持續送出電流,也可以在連接到方塊側邊時做為接收器或傳送器。
+紅石火把還可以當做亮度較低的光源。
+
+可在紅石電路中當做中繼器、延遲器,及/或真空管。
+
+按下後即會啟動並送出電流,持續時間大約 1 秒鐘,然後就會再次關閉。
+
+可用來裝填物品,並在收到紅石送出的電流時隨機射出其中的物品。
+
+啟動後會播放 1 個音符的聲音,受到敲擊後就會變更音符的音調。把音符方塊放在不同的方塊上面,就會改變樂器的類型。
+
+可用來引導礦車的行進路線。
+
+有動力時,會讓經過的礦車加速。沒有動力時,會讓碰到的礦車停在上面。
+
+功能跟壓板一樣 (會在啟動時送出紅石信號),但只能靠礦車來啟動。
+
+可用來沿著軌道運送您、動物或怪物。
+
+可用來沿著軌道運送物品。
+
+當裡面有煤塊時,可自動在軌道上移動,或是推動其他礦車。
+
+可讓您在水面上移動,而且速度會比游泳快。
+
+可從綿羊身上收集,還能用染料染色。
+
+可當做建築材料,還能用染料染色。但我們不建議您使用這個製作方法,因為您可以輕易地從綿羊身上取得羊毛。
+
+當做染料來製造黑色羊毛。
+
+可當做染料來製造綠色羊毛。
+
+可當做染料來製造棕色羊毛,製作餅乾的材料或者用來栽種可可樹。
+
+可當做染料來製造銀色羊毛。
+
+可當做染料來製造黃色羊毛。
+
+可當做染料來製造紅色羊毛。
+
+可用來讓作物、樹木、茂密青草、巨型蘑菇及花朵立刻長大,還能與某些染料組合成新的染料。
+
+可當做染料來製造粉紅色羊毛。
+
+可當做染料來製造橘色羊毛。
+
+可當做染料來製造亮綠色羊毛。
+
+可當做染料來製造灰色羊毛。
+
+可當做染料來製造淺灰色羊毛。
+(注意:您可以把灰色染料與骨粉組合成淺灰色染料,讓您可以用 1 個墨囊製造出 4 個淺灰色染料,而不是 3 個。)
+
+可當做染料來製造淺藍色羊毛。
+
+可當做染料來製造水藍色羊毛。
+
+可當做染料來製造紫色羊毛。
+
+可當做染料來製造紫紅色羊毛。
+
+可當做染料來製造藍色羊毛。
+
+可用來播放唱片。
+
+可用來製造非常強韌、堅硬的工具、武器或護甲。
+
+比火把更亮的光源。可以用來融化白雪和冰塊,還能在水面下使用。
+
+可用來製造書本和地圖。
+
+可用來製造書架或者是附魔來製作附魔小冊。
+
+放置在附加能力台附近的時候可以讓創作擁有更強力的附加效果。
+
+可當做裝飾品。
+
+可用鐵鎬或更堅硬的十字鎬開採,然後在熔爐中熔煉成黃金錠塊。
+
+可用石鎬或更堅硬的十字鎬開採,然後在熔爐中熔煉成鐵錠塊。
+
+可用十字鎬開採來收集煤塊。
+
+可用石鎬或更堅硬的十字鎬開採來收集青金石。
+
+可用鐵鎬或更堅硬的十字鎬開採來收集鑽石。
+
+可用鐵鎬或更堅硬的十字鎬開採來收集紅石塵。
+
+可用十字鎬開採來收集鵝卵石。
+
+可用鏟子來收集,能當做建築材料。
+
+可讓您栽種,最後會長成樹木。
+
+這不會破裂。
+
+會讓接觸到的任何東西著火。可以用桶子來收集。
+
+可用鏟子來收集,能在熔爐中熔煉成玻璃。當下方沒有東西時,會受重力的影響而往下掉。
+
+可用鏟子來收集,挖掘時偶爾會挖出打火石。當下方沒有東西時,會受重力的影響而往下掉。
+
+可用斧頭劈砍來收集,能精製成木板,或是當做燃料使用。
+
+在熔爐中熔煉沙子即可獲得。可當做建築材料,但當您開採玻璃時,玻璃會破碎。
+
+用十字鎬開採石頭即可獲得,可用來建造熔爐或石製工具。
+
+用熔爐燒黏土之後即可獲得。
+
+可在熔爐中燒成磚塊。
+
+破裂之後會掉落黏土球,可在熔爐中將黏土球烤成磚塊。
+
+壓縮的雪球存放方式。
+
+可用鏟子挖掘來製造雪球。
+
+破裂時偶爾會出現小麥種子。
+
+可精製成染料。
+
+可與碗一起精製成燉蘑菇。
+
+可用鑽石鎬來開採。當靜止的熔岩碰到水時,就會產生黑曜石。黑曜石可用來建造傳送門。
+
+可產生怪物。
+
+可放置在地上來傳送電流。當與藥水一起釀製時,將會增加效果的持續時間。
+
+完全成熟後,即可收成來收集小麥。
+
+已經準備好能栽種種子的地面。
+
+可用熔爐烹煮來取得綠色染料。
+
+可精製成砂糖。
+
+可當做頭盔使用,或是與火把一起精製成南瓜燈。也是製作南瓜派的主要材料。
+
+點燃後會永遠燃燒。
+
+會讓任何經過其上方的東西減速。
+
+站在傳送門中,即可讓您在地上世界與地獄世界之間往返。
+
+可當做熔爐的燃料,或是精製成火把。
+
+殺死蜘蛛即可獲得,可用來精製成弓或釣魚竿,或者是放置於地面來製作絆線。
+
+殺死雞即可獲得,可用來精製成箭。
+
+殺死 Creeper 即可獲得,可用來精製成炸藥或者當作釀製藥水的材料。
+
+在農田栽種即可長成作物。切記:種子需要足夠的光線才能成長!
+
+收成作物即可獲得,可用來精製成食物。
+
+挖掘礫石即可獲得,可用來精製成打火鐮。
+
+用在豬身上時,可讓您騎豬。您可以使用「願者上鉤」這項道具來操控豬的移動方向。
+
+挖掘白雪即可獲得,可讓您投擲。
+
+殺死乳牛即可獲得,可用來精製成護甲或用來製作書本。
+
+殺死史萊姆即可獲得,並可當做釀製藥水的材料或者是用來製作黏性活塞。
+
+雞會隨機生蛋,而蛋可用來精製成食物。
+
+開採閃石即可獲得,可透過精製變回閃石方塊或者與藥水釀製來提高附加能力的效果。
+
+殺死骷髏後即可收集,可用來精製成骨粉,餵狼吃還可馴服狼。
+
+設法讓骷髏殺死 Creeper 後即可收集,可利用點唱機來播放。
+
+可用來滅火,或協助作物生長。您可用桶子來裝水。
+
+破碎時偶爾會掉落樹苗,讓您能重新栽種並長成樹木。
+
+可在地下迷宮找到,可當做建築材料和裝飾品。
+
+可用來取得綿羊身上的羊毛,以及獲得樹葉方塊。
+
+當活塞有動力時 (使用按鈕、拉桿、壓板、紅石火把,或是紅石來啟動活塞),會在情況允許下延伸出去推動方塊。
+
+當活塞有動力時 (使用按鈕、拉桿、壓板、紅石火把,或是紅石來啟動活塞),會在情況允許下延伸出去推動方塊。黏性活塞縮回時,會把接觸到活塞延伸部分的方塊一起拉回。
+
+由石頭方塊製造而成,通常能在地下要塞中找到。
+
+可當做屏障,類似柵欄。
+
+類似門,但主要與柵欄搭配使用。
+
+精製西瓜片即可獲得。
+
+可用來取代玻璃方塊的透明方塊。
+
+栽種即可長成南瓜。
+
+栽種即可長成西瓜。
+
+會在 Enderman 死亡時掉落,投擲後玩家即會在失去些許生命值的同時,被傳送到終界珍珠所在之處。
+
+上面長草的泥土方塊。可用鏟子來收集,能當做建築材料。
+
+可當做建築材料和裝飾品。
+
+當您通過時,行走速度會變慢。可使用羊毛剪摧毀,並收集絲線。
+
+摧毀時會產生 Silverfish。如果附近有隻 Silverfish 遭到攻擊,也可能會產生另一隻 Silverfish。
+
+放置後會隨著時間生長。使用羊毛剪即可收集。可像梯子一樣攀爬。
+
+在上面行走時會感覺滑溜。如果冰塊下面有其他方塊,當您摧毀冰塊時,冰塊就會變成水。如果冰塊太靠近光源或地獄,就會融化。
+
+可當做裝飾品。
+
+可用來釀製藥水或尋找地下要塞。由 Blaze 掉落,而 Blaze 多半出沒於地獄要塞的裡面或附近。
+
+可用來釀製藥水,會在 Ghast 死亡時掉落。
+
+會在殭屍 Pigmen 死亡時掉落,可在地獄找到殭屍 Pigmen。是釀製藥水的材料。
+
+可用來釀製藥水。生長在地獄要塞中,也可以種植在魂沙上。
+
+依據使用對象的不同,使用時會有各種不同的效果。
+
+可用來裝水,並可在釀製台當成製作藥水一開始時就必須用到的材料。
+
+這是有毒的食物和釀製物品,會在蜘蛛或穴蜘蛛被玩家殺死時掉落。
+
+可用來釀製藥水,且絕大部分用來製造具備負面效果的藥水。
+
+可用來釀製藥水,或與其他物品一起精製成終界之眼或熔岩球。
+
+可用來釀製藥水。
+
+可用來製作藥水和噴濺藥水。
+
+可使用雨水或水桶替水槽裝水,然後即可用來替水瓶裝水。
+
+投擲後即會顯示前往終界入口的方向。將十二個終界之眼放置於終界入口框架上後,即可啟動終界入口。
+
+可用來釀製藥水。
+
+跟青草方塊很像,但非常適於在上面栽種蘑菇。
+
+會浮在水面,且可在上面行走。
+
+可用來建造地獄要塞,且不受 Ghast 的火球傷害。
+
+用在地獄要塞。
+
+出現於地獄要塞,會在地獄結節破裂後掉落。
+
+您可在附加能力台使用您的經驗值,將特殊能力附加到劍、鎬、斧、鏟、弓和護甲上。
+
+終界入口可由十二個終界之眼啟動,玩家可經由終界入口進入終界。
+
+可用來製作終界入口。
+
+這是一種只會在終界出現的方塊,防爆性很高,很適合拿來建造。
+
+擊敗終界的龍就會產生這個方塊。
+
+投擲後經驗值光球會掉落,收集光球即可增加您的經驗值。
+
+很適合用來讓東西著火,或者是點燃發射器的火焰。
+
+類似展示櫃,可將物品或方塊放置在裡面展示。
+
+投擲出去時可再生出當中所顯示的生物類型。
+
+可用來組成長長的樓梯。把 2 個板子上下重疊,就會產生普通大小的雙層板方塊。
+
+可用來組成長長的樓梯。把 2 個板子上下重疊,就會產生普通大小的雙層板方塊。
+
+在熔爐中熔煉地獄血石即可獲得。能精製成地獄磚塊方塊。
+
+有動力時會發出光線。
+
+耕種即可收集可可豆。
+
+生物頭顱可當裝飾品或當做面具戴在頭盔空格中。
+
+烏賊
+
+被殺死時會掉落墨囊。
+
+乳牛
+
+被殺死時會掉落皮革。您也可以用桶子來擠牛奶。
+
+綿羊
+
+被剪羊毛時會掉落羊毛 (前提是牠的羊毛還沒被剪掉)。可染色來讓綿羊擁有不同色彩的羊毛。
+
+雞
+
+被殺死時會掉落羽毛,還會隨機生蛋。
+
+豬
+
+被殺死時會掉落豬肉。您還可以使用鞍座來騎在豬上。
+
+狼
+
+狼是溫馴的動物,但當您攻擊牠時,牠就會攻擊您。您可以使用骨頭來馴服狼,這會讓牠跟著您走,並攻擊任何在攻擊您的東西。
+
+Creeper
+
+如果您靠太近就會爆炸!
+
+骷髏
+
+會對您射箭,被殺死時會掉落箭。
+
+蜘蛛
+
+如果您靠近蜘蛛,牠就會攻擊您。蜘蛛會爬牆,被殺死時會掉落絲線。
+
+殭屍
+
+如果您靠近殭屍,殭屍就會攻擊您。
+
+殭屍 Pigman
+
+殭屍 Pigman 是溫馴的怪物,但如果您攻擊整群殭屍 Pigman 中的一個,整群殭屍 Pigman 就會開始攻擊您。
+
+Ghast
+
+會對您發射火球,而且火球碰到東西時會爆炸。
+
+史萊姆
+
+受傷害時會分裂成數個小史萊姆。
+
+Enderman
+
+如果您直視 Enderman,Enderman 就會攻擊您,而且還會到處移動方塊。
+
+Silverfish
+
+當 Silverfish 受到攻擊時,會引來躲在附近的 Silverfish。牠們會躲在石頭方塊中。
+
+穴蜘蛛
+
+擁有毒牙。
+
+Mooshroom
+
+與碗一起使用可用來燉蘑菇,剪毛後會掉落蘑菇,且會變成普通的乳牛。
+
+雪人
+
+玩家可用白雪方塊和南瓜製作雪人。雪人會對製作者的敵人投擲雪球。
+
+終界龍
+
+這是出現在終界的巨大黑龍。
+
+Blaze
+
+Blaze 是地獄裡的敵人,絕大部分皆分布在地獄要塞中。當 Blaze 被殺死時會掉落 Blaze 棒。
+
+熔岩怪
+
+熔岩怪出現於地獄,被殺死時會分裂成很多小熔岩怪,這點跟史蘭姆很像。
+
+村民
+
+豹貓
+
+分布在熱帶叢林中,餵生魚就能馴服牠們。但前提是必須讓豹貓靠近您,畢竟任何一個突然的動作都會嚇跑牠們。
+
+鐵傀儡
+
+出現來保護村落,可以用鐵塊跟南瓜製作。
+
+Explosives Animator
+
+Concept Artist
+
+Number Crunching and Statistics
+
+Bully Coordinator
+
+Original Design and Code by
+
+Project Manager/Producer
+
+Rest of Mojang Office
+
+Lead Game Programmer Minecraft PC
+
+Ninja Coder
+
+CEO
+
+White Collar Worker
+
+Customer Support
+
+Office DJ
+
+Designer/Programmer Minecraft - Pocket Edition
+
+Developer
+
+Chief Architect
+
+Art Developer
+
+Game Crafter
+
+Director of Fun
+
+Music and Sounds
+
+Programming
+
+Art
+
+QA
+
+Executive Producer
+
+Lead Producer
+
+Producer
+
+Test Lead
+
+Lead Tester
+
+Design Team
+
+Development Team
+
+Release Management
+
+Director, XBLA Publishing
+
+Business Development
+
+Portfolio Director
+
+Product Manager
+
+Marketing
+
+ Community Manager
+
+Europe Localization Team
+
+Redmond Localization Team
+
+Asia Localization Team
+
+User Research Team
+
+MGS Central Teams
+
+Milestone Acceptance Tester
+
+Special Thanks
+
+Test Manager
+
+Senior Test Lead
+
+SDET
+
+Project STE
+
+Additional STE
+
+Test Associates
+
+Jon Kagstrom
+
+Tobias Mollstam
+
+Rise Lugo
+
+木劍
+
+石劍
+
+鐵劍
+
+鑽石劍
+
+黃金劍
+
+木鏟
+
+石鏟
+
+鐵鏟
+
+鑽石鏟
+
+黃金鏟
+
+木鎬
+
+石鎬
+
+鐵鎬
+
+鑽石鎬
+
+黃金鎬
+
+木斧
+
+石斧
+
+鐵斧
+
+鑽石斧
+
+黃金斧
+
+木鋤
+
+石鋤
+
+鐵鋤
+
+鑽石鋤
+
+黃金鋤
+
+木門
+
+鐵門
+
+鎖鏈盔
+
+鎖鏈護甲
+
+鎖鏈護脛
+
+鎖鏈靴
+
+皮帽
+
+鐵盔
+
+鑽石盔
+
+黃金盔
+
+皮衣
+
+鐵護甲
+
+鑽石護甲
+
+黃金護甲
+
+皮褲
+
+鐵護脛
+
+鑽石護脛
+
+黃金護脛
+
+皮靴
+
+鐵靴
+
+鑽石靴
+
+黃金靴
+
+鐵錠塊
+
+黃金錠塊
+
+桶子
+
+水桶
+
+熔岩桶
+
+打火鐮
+
+蘋果
+
+弓
+
+箭
+
+煤塊
+
+木炭
+
+鑽石
+
+木棍
+
+碗
+
+燉蘑菇
+
+絲線
+
+羽毛
+
+火藥
+
+小麥種子
+
+小麥
+
+麵包
+
+打火石
+
+生豬肉
+
+熟豬肉
+
+圖畫
+
+金蘋果
+
+招牌
+
+礦車
+
+鞍座
+
+紅石
+
+雪球
+
+小船
+
+皮革
+
+牛奶桶
+
+磚塊
+
+黏土
+
+甘蔗
+
+紙張
+
+書本
+
+史萊姆球
+
+箱子礦車
+
+熔爐礦車
+
+蛋
+
+指南針
+
+釣魚竿
+
+時鐘
+
+閃石塵
+
+生魚
+
+熟魚
+
+染粉
+
+墨囊
+
+玫瑰紅
+
+仙人掌綠
+
+可可豆
+
+青金石
+
+紫色染料
+
+水藍色染料
+
+淺灰色染料
+
+灰色染料
+
+粉紅色染料
+
+亮綠色染料
+
+蒲公英黃
+
+淺藍色染料
+
+紫紅色染料
+
+橘色染料
+
+骨粉
+
+骨頭
+
+砂糖
+
+蛋糕
+
+床舖
+
+紅石中繼器
+
+餅乾
+
+地圖
+
+唱片:13
+
+唱片:Cat
+
+唱片:Blocks
+
+唱片:Chirp
+
+唱片:Far
+
+唱片:Mall
+
+唱片:Mellohi
+
+唱片:Stal
+
+唱片:Strad
+
+唱片:Ward
+
+唱片:11
+
+唱片:Where are we now
+
+羊毛剪
+
+南瓜子
+
+西瓜子
+
+生雞肉
+
+熟雞肉
+
+生牛肉
+
+牛排
+
+腐肉
+
+終界珍珠
+
+西瓜片
+
+Blaze 棒
+
+Ghast 淚水
+
+碎金塊
+
+地獄結節
+
+{*splash*}{*prefix*}{*postfix*}藥水
+
+玻璃瓶
+
+水瓶
+
+蜘蛛眼
+
+發酵蜘蛛眼
+
+Blaze 粉
+
+熔岩球
+
+釀製台
+
+水槽
+
+終界之眼
+
+發光西瓜
+
+經驗藥水瓶
+
+火彈
+
+火彈 (木炭)
+
+火彈 (煤塊)
+
+物品框架
+
+再生 {*CREATURE*}
+
+地獄磚塊
+
+骷髏
+
+骷髏頭
+
+凋零骷髏
+
+殭屍頭顱
+
+頭顱
+
+%s 頭顱
+
+Creeper 頭顱
+
+石頭
+
+青草方塊
+
+泥土
+
+鵝卵石
+
+橡樹厚木板
+
+杉樹厚木板
+
+樺樹厚木板
+
+熱帶叢林厚木板
+
+樹苗
+
+橡樹樹苗
+
+杉樹樹苗
+
+樺樹樹苗
+
+熱帶叢林樹苗
+
+基岩
+
+水體
+
+熔岩
+
+沙子
+
+沙岩
+
+礫石
+
+黃金礦石
+
+鐵礦石
+
+煤礦石
+
+木頭
+
+橡樹木頭
+
+杉樹木頭
+
+樺樹木頭
+
+熱帶叢林木頭
+
+橡樹
+
+杉樹
+
+樺樹
+
+樹葉
+
+橡樹樹葉
+
+杉樹樹葉
+
+樺樹樹葉
+
+熱帶叢林樹葉
+
+海綿
+
+玻璃
+
+羊毛
+
+黑色羊毛
+
+紅色羊毛
+
+綠色羊毛
+
+棕色羊毛
+
+藍色羊毛
+
+紫色羊毛
+
+水藍色羊毛
+
+淺灰色羊毛
+
+灰色羊毛
+
+粉紅色羊毛
+
+亮綠色羊毛
+
+黃色羊毛
+
+淺藍色羊毛
+
+紫紅色羊毛
+
+橘色羊毛
+
+白色羊毛
+
+花朵
+
+玫瑰
+
+蘑菇
+
+黃金方塊
+
+一種精簡儲存黃金的方式。
+
+一種精簡儲存鐵的方式。
+
+鐵方塊
+
+石板
+
+石板
+
+沙岩板
+
+橡樹木板
+
+鵝卵石板
+
+磚塊板
+
+石磚塊板
+
+橡樹木板
+
+杉樹木板
+
+樺樹木板
+
+熱帶叢林木板
+
+地獄磚塊板
+
+磚塊
+
+炸藥
+
+書架
+
+苔蘚石
+
+黑曜石
+
+火把
+
+火把 (煤塊)
+
+火把 (木炭)
+
+火
+
+怪物產生器
+
+橡樹木梯
+
+箱子
+
+紅石塵
+
+鑽石礦石
+
+鑽石方塊
+
+一種精簡儲存鑽石的方式。
+
+精製台
+
+作物
+
+農地
+
+熔爐
+
+牌子
+
+木門
+
+梯子
+
+軌道
+
+動力軌道
+
+偵測器軌道
+
+石梯
+
+拉桿
+
+壓板
+
+鐵門
+
+紅石礦石
+
+紅石火把
+
+按鈕
+
+白雪
+
+冰塊
+
+仙人掌
+
+黏土
+
+甘蔗
+
+點唱機
+
+柵欄
+
+南瓜
+
+南瓜燈
+
+地獄血石
+
+魂沙
+
+閃石
+
+傳送門
+
+青金石礦石
+
+青金石方塊
+
+一種精簡儲存青金石的方式。
+
+發射器
+
+音符方塊
+
+蛋糕
+
+床舖
+
+蜘蛛網
+
+茂密青草
+
+枯灌木
+
+真空管
+
+上鎖的箱子
+
+活板門
+
+羊毛 (不限色彩)
+
+活塞
+
+黏性活塞
+
+Silverfish 方塊
+
+石磚塊
+
+長滿青苔的石磚塊
+
+裂開的石磚塊
+
+刻紋石磚塊
+
+蘑菇
+
+蘑菇
+
+鐵條
+
+玻璃片
+
+西瓜
+
+南瓜莖
+
+西瓜莖
+
+藤蔓
+
+柵欄門
+
+磚塊梯
+
+石磚塊梯
+
+Silverfish 石
+
+Silverfish 鵝卵石
+
+Silverfish 石磚塊
+
+菌絲體
+
+睡蓮
+
+地獄磚塊
+
+地獄磚塊柵欄
+
+地獄磚塊梯
+
+地獄結節
+
+附加能力台
+
+釀製台
+
+水槽
+
+終界入口
+
+終界入口框架
+
+終界石
+
+龍蛋
+
+矮樹
+
+蕨
+
+沙岩梯
+
+杉樹木梯
+
+樺樹木梯
+
+熱帶叢林木梯
+
+紅石燈
+
+可可
+
+骷髏
+
+目前的控制方式
+
+配置
+
+移動/奔跑
+
+觀看
+
+暫停
+
+跳躍
+
+跳躍/往上飛
+
+物品欄
+
+依序更換手中的物品
+
+動作
+
+使用
+
+精製
+
+丟棄
+
+潛行
+
+潛行/往下飛
+
+變更視角模式
+
+玩家/邀請
+
+移動 (飛行時)
+
+配置 1
+
+配置 2
+
+配置 3
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+]]>
+
+
]]>
+
+{*B*}請按下 {*CONTROLLER_VK_A*} 來繼續。
+
+{*B*}請按下 {*CONTROLLER_VK_A*} 來開始教學課程。{*B*}
+ 如果您覺得自己已經準備好,可以獨自玩遊戲了,請按下 {*CONTROLLER_VK_B*}。
+
+Minecraft 是一款可讓您放置方塊來建造夢想世界的遊戲。
+但千萬別忘了要在夜行怪物出現之前,先蓋好一個棲身處喔。
+
+使用 {*CONTROLLER_ACTION_LOOK*} 即可往上、下及四周觀看。
+
+使用 {*CONTROLLER_ACTION_MOVE*} 即可四處移動。
+
+如要奔跑,只要快速往前按兩下 {*CONTROLLER_ACTION_MOVE*} 即可。當您往前按住 {*CONTROLLER_ACTION_MOVE*} 時,角色將會繼續奔跑,直到奔跑時間結束或是食物消耗完畢為止。
+
+按下 {*CONTROLLER_ACTION_JUMP*} 即可跳躍。
+
+按住 {*CONTROLLER_ACTION_ACTION*} 即可用您的手,或是手中握住的東西來開採及劈砍。但您可能需要精製出工具來開採某些方塊。
+
+請按住 {*CONTROLLER_ACTION_ACTION*} 來砍下 4 個木頭方塊 (樹幹)。{*B*}當方塊被劈砍下來後,只要站在隨後出現的浮空物品旁邊,該物品就會進入您的物品欄。
+
+按下 {*CONTROLLER_ACTION_CRAFTING*} 即可開啟精製介面。
+
+在您不斷收集和精製物品的同時,物品欄也會逐漸填滿。{*B*}
+ 請按下 {*CONTROLLER_ACTION_INVENTORY*} 來開啟物品欄。
+
+當您四處移動、開採和攻擊時,就會消耗食物列 {*ICON_SHANK_01*}。奔跑和快速跳躍時所消耗的食物量,會比行走和正常跳躍時所消耗的多。
+
+如果您失去部分生命值,但是食物列有 9 個以上的 {*ICON_SHANK_01*},您的生命值將會自動回復。只要吃下食物,就能補充食物列。
+
+只要把食物握在手中,然後按住 {*CONTROLLER_ACTION_USE*} 即可吃下該食物來補充您的食物列。當食物列全滿時,您無法再吃東西。
+
+您的食物列即將耗盡,而且您失去了部分生命值。請吃下物品欄中的牛排來補充食物列,並開始回復生命值。{*ICON*}364{*/ICON*}
+
+您收集來的木頭可以精製成木板。請開啟精製介面來精製木板。{*PlanksIcon*}
+
+許多精製過程包含好幾個步驟。現在您已經有幾片木板,就能夠精製出更多物品了。請建造 1 個精製台。{*CraftingTableIcon*}
+
+如果您想要加快收集方塊的速度,可以建造專為該工作所設計的工具。某些工具上有用木棍做成的把手。請立刻精製出幾根木棍。{*SticksIcon*}
+
+使用 {*CONTROLLER_ACTION_LEFT_SCROLL*} 和 {*CONTROLLER_ACTION_RIGHT_SCROLL*} 即可變更手中握住的物品。
+
+使用 {*CONTROLLER_ACTION_USE*} 即可使用物品、與物體互動,以及放置某些物品。如果您想要撿起已經放置的物品,只要使用正確的工具敲擊該物品即可撿起。
+
+當您選取精製台時,請將游標對準您要放置精製台的地方,然後使用 {*CONTROLLER_ACTION_USE*} 來放置。
+
+請將游標對準精製台,然後按下 {*CONTROLLER_ACTION_USE*} 來打開。
+
+鏟子可加快您挖掘較軟方塊 (例如泥土及白雪) 的速度。當您收集了更多不同材質的方塊後,就能精製出可加快工作速度,且更不容易損壞的工具。請製造 1 個木鏟。{*WoodenShovelIcon*}
+
+斧頭可加快劈砍木頭及木製方塊的速度。當您收集了更多不同材質的方塊後,就能精製出可加快工作速度,且更不容易損壞的工具。請製造 1 個木斧。{*WoodenHatchetIcon*}
+
+十字鎬可加快您挖掘較硬方塊 (例如石頭及礦石) 的速度。當您收集了更多不同材質的方塊後,就能精製出可加快工作速度,且更不容易損壞的工具。請製造 1 個木鎬。{*WoodenPickaxeIcon*}
+
+請打開容器
+
+
+ 夜晚很快就會來臨,沒有做好準備就在夜晚外出是很危險的事。您可以精製出護甲及武器來保護自己,但最實用的方法就是建造安全的棲身處。
+
+
+
+ 附近有個廢棄的礦工棲身處,您可以完成該建築當做您夜晚時的安全棲身處。
+
+
+
+ 您還需要收集資源才能蓋好這個棲身處。您可以用任何材質的方塊來蓋牆壁和屋頂,但您還必須製作 1 個門、幾個窗戶,還有光源。
+
+
+請使用十字鎬來開採石頭方塊。石頭方塊在開採後會挖出鵝卵石。只要收集 8 個鵝卵石方塊,就能建造 1 個熔爐。您可能需要挖開一些泥土才能找到石頭,別忘了要用鏟子來挖泥土喔。{*StoneIcon*}
+
+您已經收集到足夠的鵝卵石來建造熔爐了。請使用精製台來建造熔爐。
+
+請使用 {*CONTROLLER_ACTION_USE*} 把熔爐放置在遊戲世界中,然後打開熔爐。
+
+請使用熔爐來製作木炭。如果您正在等待木炭製作完成,我們建議您利用這段等待時間收集更多建築材料來蓋好棲身處。
+
+請使用熔爐來製作玻璃。如果您正在等待玻璃製作完成,我們建議您利用這段等待時間收集更多建築材料來蓋好棲身處。
+
+良好的棲身處是有門的,讓您能夠輕易地進出棲身處,不用費力把牆壁挖開再補好牆壁來進出。請立刻精製 1 個木門。{*WoodenDoorIcon*}
+
+請使用 {*CONTROLLER_ACTION_USE*} 來放置門。您可以使用 {*CONTROLLER_ACTION_USE*} 來開、關遊戲世界中的門。
+
+當夜晚來臨時,棲身處裡面可能會很黑,因此您必須放置光源,好讓您能看見周遭的環境。請立刻使用精製台,把木棍跟木炭精製成火把。{*TorchIcon*}
+
+
+ 您已經完成教學課程的第一部份。
+
+
+
+ {*B*}
+ 請按下 {*CONTROLLER_VK_A*} 來繼續教學課程。{*B*}
+ 如果您覺得自己已經準備好,可以獨自玩遊戲了,請按下 {*CONTROLLER_VK_B*}。
+
+
+
+ 這是您的物品欄。這裡會顯示可在您手中使用的物品,以及您身上的所有其他物品。您穿戴的護甲也會顯示在這裡。
+
+
+{*B*}
+ 請按下 {*CONTROLLER_VK_A*} 來繼續。{*B*}
+ 如果您已經了解物品欄的使用方式,請按下 {*CONTROLLER_VK_B*}。
+
+
+
+ 請使用 {*CONTROLLER_MENU_NAVIGATE*} 來移動游標,然後用 {*CONTROLLER_VK_A*} 來撿起游標下的物品。
+ 如果游標下有數個物品,您將會撿起所有物品,但您也可以使用 {*CONTROLLER_VK_X*} 來撿起剛剛好一半的物品。
+
+
+
+ 請用游標把這個物品移動到物品欄的另一個空格,然後使用 {*CONTROLLER_VK_A*} 把物品放置在那個空格。
+ 如果游標上有數個物品,使用 {*CONTROLLER_VK_A*} 即可放置所有物品,但您也可以使用 {*CONTROLLER_VK_X*} 來只放置 1 個物品。
+
+
+
+ 當游標上有物品時,如果您把游標移動到物品欄的外面,就能丟棄游標上的物品。
+
+
+
+ 如果您想知道某個物品的詳細資訊,只要把游標移動到該物品上面,然後按下 {*CONTROLLER_VK_RT*} 即可。
+
+
+
+ 請立刻按下 {*CONTROLLER_VK_B*} 來離開物品欄。
+
+
+
+ 這是您的創造模式物品欄,會顯示可在您手中使用的物品,以及可供您選擇的物品。
+
+
+{*B*}
+ 請按下 {*CONTROLLER_VK_A*} 來繼續。{*B*}
+ 如果您已經了解創造模式物品欄的使用方式,請按下 {*CONTROLLER_VK_B*}。
+
+
+
+ 請使用 {*CONTROLLER_MENU_NAVIGATE*} 來移動游標。
+ 當您在物品清單時,使用 {*CONTROLLER_VK_A*} 即可撿起游標下的物品,使用 {*CONTROLLER_VK_Y*} 即可撿起清單裡的所有物品。
+
+
+
+ 游標會自動移動到使用列,您只要使用 {*CONTROLLER_VK_A*} 即可放置物品。當您放置好物品後,游標會返回物品清單,讓您能選取另一個物品。
+
+
+
+ 當游標上有物品時,如果您把游標移動到物品欄的外面,就能把游標上的物品丟棄到遊戲世界中。若要清除快速選取列中的所有項目,請按下 {*CONTROLLER_VK_X*}。
+
+
+
+ 請使用 {*CONTROLLER_VK_LB*} 和 {*CONTROLLER_VK_RB*} 來切換頂端的群組類型索引標籤,以便選取您想要撿起的物品。
+
+
+
+ 如果您想知道某個物品的詳細資訊,只要把游標移動到該物品上面,然後按下 {*CONTROLLER_VK_RT*} 即可。
+
+
+
+ 請立刻按下 {*CONTROLLER_VK_B*} 來離開創造模式物品欄。
+
+
+
+ 這是精製介面,可讓您把收集到的物品組合成各種新物品。
+
+
+{*B*}
+ 請按下 {*CONTROLLER_VK_A*} 來繼續。{*B*}
+ 如果您已經了解精製物品的方式,請按下 {*CONTROLLER_VK_B*}。
+
+
+{*B*}
+ 按下 {*CONTROLLER_VK_X*} 即可顯示物品說明。
+
+
+{*B*}
+ 按下 {*CONTROLLER_VK_X*} 即可顯示要精製出目前物品所需的材料。
+
+
+{*B*}
+ 請按下 {*CONTROLLER_VK_X*} 來再次顯示物品欄。
+
+
+
+ 請使用 {*CONTROLLER_VK_LB*} 和 {*CONTROLLER_VK_RB*} 來切換頂端的群組類型索引標籤,以便選取您想要精製的物品群組類型,然後使用 {*CONTROLLER_MENU_NAVIGATE*} 來選取您要精製的物品。
+
+
+
+ 精製區域會顯示精製新物品所需的材料。按下 {*CONTROLLER_VK_A*} 即可精製物品,並將該物品放置在物品欄中。
+
+
+
+ 精製台可讓您精製出種類較多的物品。精製台的運作方法跟基本的精製介面是一樣的,但您會擁有較大的精製空間,讓您能使用更多種的材料組合。
+
+
+
+ 精製介面的右下區域會顯示您的物品欄。這裡也會顯示您目前選取物品的說明,以及精製出該物品所需的材料。
+
+
+
+ 精製介面顯示了您目前選取物品的說明,告訴您該物品的用途。
+
+
+
+ 精製介面顯示了要精製出已選取物品的所需材料。
+
+
+您之前收集的木頭可用來精製成木板。請選取木板圖示,然後按下 {*CONTROLLER_VK_A*} 來製造木板。{*PlanksIcon*}
+
+
+ 既然您已經製造出精製台,就應該將其放置在遊戲世界中,以便讓您能夠精製出更多種類的物品。{*B*}
+ 請立刻按下 {*CONTROLLER_VK_B*} 來離開精製介面。
+
+
+
+ 按下 {*CONTROLLER_VK_LB*} 和 {*CONTROLLER_VK_RB*} 即可變更您想要精製的物品群組類型。請選取工具群組。{*ToolsIcon*}
+
+
+
+ 按下 {*CONTROLLER_VK_LB*} 和 {*CONTROLLER_VK_RB*} 即可變更您想要精製的物品的群組類型。請選取建築群組。{*StructuresIcon*}
+
+
+
+ 使用 {*CONTROLLER_MENU_NAVIGATE*} 即可變更您想要精製的物品。某些物品會因為材料的材質不同,而有各種不同的版本。請選取木鏟。{*WoodenShovelIcon*}
+
+
+
+ 許多精製過程包含好幾個步驟。現在您已經有幾片木板,就能夠精製出更多物品了。使用 {*CONTROLLER_MENU_NAVIGATE*} 即可變更您想要精製的物品。請選取精製台。{*CraftingTableIcon*}
+
+
+
+ 有了您製造的這些工具,您就能更有效率地收集各種不同的方塊。{*B*}
+ 請立刻按下 {*CONTROLLER_VK_B*} 來離開精製介面。
+
+
+
+ 某些物品無法用精製台來製造,必須靠熔爐來產生。請立刻製造 1 個熔爐。{*FurnaceIcon*}
+
+
+
+ 請將您精製出的熔爐放置在遊戲世界中,最好是放置在您的棲身處裡面。{*B*}
+ 請立刻按下 {*CONTROLLER_VK_B*} 來離開精製介面。
+
+
+
+ 這是熔爐介面。熔爐可讓您透過燃燒來改變物品。舉例來說,您可以使用熔爐把鐵礦石轉變成鐵錠塊。
+
+
+{*B*}
+ 請按下 {*CONTROLLER_VK_A*} 來繼續。{*B*}
+ 如果您已經了解熔爐的使用方式,請按下 {*CONTROLLER_VK_B*}。
+
+
+
+ 您必須把燃料放在熔爐底部的空格中,熔爐頂端空格裡的物品才會受熱。然後熔爐就會起火,開始火燒上面的物品,並把成品放在右邊的空格中。
+
+
+
+ 許多木頭物品能拿來當做燃料,但並非每樣東西的燃燒時間都是相同的。還有其他物品也能拿來當做燃料,您不妨多試試看。
+
+
+
+ 當物品火燒完畢後,您就能把物品從成品區移動到物品欄中。您可以嘗試火燒不同的物品,看看會得到什麼成品。
+
+
+
+ 如果您把木頭當做材料,就會製造出木炭。請在熔爐裡放些燃料,然後把木頭放在材料格裡。熔爐需要花些時間才能製造木炭,您可以趁這機會去做其他的事,稍後再回來查看進度。
+
+
+
+ 木炭可當做燃料使用,還能與木棍一起精製成火把。
+
+
+
+ 把沙子放在材料格裡,就能製造出玻璃。請製造些玻璃來當做棲身處的窗戶。
+
+
+
+ 這是釀製介面,您可在此製作具備各種不同效果的藥水。
+
+
+{*B*}
+ 按下 {*CONTROLLER_VK_A*} 即可繼續。{*B*}
+ 如果您已經了解應如何使用釀製台,請按一下 {*CONTROLLER_VK_B*}。
+
+
+
+ 請將材料放在上方空格,再將藥水或水瓶置於下方空格,即可釀製藥水,最多可同時釀製三樣。當您完成適當的組合後,釀製即開始進行,不久即可製出藥水。
+
+
+
+ 釀製藥水必須先從水瓶著手。大部分的藥水都是先用地獄結節做出粗劣藥水,再使用至少一樣其他材料,釀製出最後的成品。
+
+
+
+ 您可以變更藥水的效果:加入紅石塵即可增加效果的持久度;加入閃石塵則可讓效果更具威力。
+
+
+
+ 加入發酵蜘蛛眼會破壞藥水,讓藥水出現反效果;加入火藥則可將藥水變成噴濺藥水,投擲噴濺藥水即可使藥水效力影響附近區域。
+
+
+
+ 先將地獄結節加入水瓶,再加入熔岩球,即可製造防火藥水。
+
+
+
+ 按下 {*CONTROLLER_VK_B*} 即可離開釀製介面。
+
+
+
+ 您可在這個區域找到釀製藥水所需的釀製台、水槽和裝滿物品的箱子。
+
+
+{*B*}
+ 按下 {*CONTROLLER_VK_A*} 即可了解更多關於釀製和藥水的相關資訊。{*B*}
+ 如果您已經了解如何釀製和使用藥水,請按下 {*CONTROLLER_VK_B*}。
+
+
+
+ 釀製藥水的第一步就是製造水瓶。請從箱子中拿出玻璃瓶。
+
+
+
+ 您可以從裝了水的水槽或水方塊中取水裝入玻璃瓶。請將游標指向水源,再按下 {*CONTROLLER_ACTION_USE*},即可在玻璃瓶中裝入水。
+
+
+
+ 如果水槽空了,您可用水桶替水槽加水。
+
+
+
+ 使用水瓶、地獄結節和熔岩球,即可釀製防火藥水。
+
+
+
+ 有了藥水時,只要按住 {*CONTROLLER_ACTION_USE*} 即可使用藥水。使用一般藥水時,您必須喝下藥水,即可在自己身上發揮藥水的效果。使用噴濺藥水時,您則必須投擲藥水,讓藥水的效果發揮在位於擊中處附近的生物上。
+ 在一般藥水內加入火藥,即可製造噴濺藥水。
+
+
+
+ 將防火藥水用在自己身上。
+
+
+
+ 既然您現在已可抗火和熔岩,不妨前往之前因火或熔岩的阻礙而無法到達之處。
+
+
+
+ 這是附加能力介面,可讓您將附加能力加至武器、護甲以及特定的工具。
+
+
+{*B*}
+ 按下 {*CONTROLLER_VK_A*} 即可了解更多關於附加能力介面的資訊。{*B*}
+ 如果您已經了解應如何附加能力,請按下 {*CONTROLLER_VK_B*}。
+
+
+
+ 請先將物品放到附加能力空格中,才能開始附加能力。武器、護甲和特定工具在附加能力後,即可擁有如更能抵抗傷害,或開採時可收集更多物品等特殊效果。
+
+
+
+ 當您將物品放到附加能力空格後,畫面右邊的按鈕會顯示多種隨機挑選的附加能力。
+
+
+
+ 按鈕上的號碼代表附加該能力到物品所需的經驗值。如果您的經驗等級不夠高,您就無法使用該按鈕。
+
+
+
+ 請選取您要的附加能力,然後按一下 {*CONTROLLER_VK_A*},即可將能力附加至物品上。使用該附加能力會降低您的經驗等級。
+
+
+
+ 雖然可供您使用的附加能力為隨機出現,但某些效果較好的附加能力,只會在您經驗等級較高,且附加能力台附近有許多書架讓附加能力台的力量增加時,才會出現。
+
+
+
+ 您可在這個區域裡找到附加能力台,以及其他能幫助您了解如何附加能力的物品。
+
+
+{*B*}
+ 請按下 {*CONTROLLER_VK_A*} 即可了解更多關於附加能力的資訊。{*B*}
+ 如果您已十分了解如何使用附加能力,請按下 {*CONTROLLER_VK_B*}。
+
+
+
+ 您可使用附加能力台,把例如開採時可收集更多物品,或更能抵抗傷害等特殊的效果附加到武器、護甲和特定工具上。
+
+
+
+ 在附加能力台的附近放置書架,即可增加附加能力台的力量,您也因此可使用更高等級的附加能力。
+
+
+
+ 使用附加能力會降低您的經驗等級。您可以藉由收集殺死怪物或動物、開採礦、繁殖動物、釣魚,以及使用熔爐熔煉或烹煮所產生的經驗值光球,來提升經驗等級。
+
+
+
+ 您也可使用經驗藥水瓶增加經驗等級。只要投擲經驗藥水瓶,掉落處就會產生可以收集的經驗值光球。
+
+
+
+ 您可在箱子中找到:已附加能力的物品、經驗藥水瓶,以及待您使用附加能力台來嘗試進行附加能力的物品。
+
+
+
+ 您現在坐在礦車中。如要離開礦車,請把游標指向礦車,然後按下 {*CONTROLLER_ACTION_USE*}。{*MinecartIcon*}
+
+
+{*B*}
+ 請按下 {*CONTROLLER_VK_A*} 來學習礦車的相關知識。{*B*}
+ 如果您已經了解礦車的使用方式,請按下 {*CONTROLLER_VK_B*}。
+
+
+
+ 礦車會在軌道上前進。您也可以製作內有熔爐的動力礦車,以及內有箱子的礦車。
+ {*RailIcon*}
+
+
+
+ 您也可以精製出動力軌道,這會使用紅石火把及電路傳來的動力,使礦車速度加快。動力軌道還能與開關、拉桿及壓板連接,製造出更複雜的軌道系統。
+ {*PoweredRailIcon*}
+
+
+
+ 您現在坐在小船上。如要離開小船,請把游標指向小船,然後按下 {*CONTROLLER_ACTION_USE*}。{*BoatIcon*}
+
+
+
+ {*B*}
+ 請按下 {*CONTROLLER_VK_A*} 來學習小船的相關知識。{*B*}
+ 如果您已經了解小船的使用方式,請按下 {*CONTROLLER_VK_B*}。
+
+
+
+ 小船可讓您在水面上快速移動。您可以使用 {*CONTROLLER_ACTION_MOVE*} 和 {*CONTROLLER_ACTION_LOOK*} 來控制方向。
+ {*BoatIcon*}
+
+
+
+ 您現在手中握著釣魚竿。請按下 {*CONTROLLER_ACTION_USE*} 來使用釣魚竿。{*FishingRodIcon*}
+
+
+
+ {*B*}
+ 請按下 {*CONTROLLER_VK_A*} 來學習釣魚。{*B*}
+ 如果您已經知道釣魚的方法,請按下 {*CONTROLLER_VK_B*}。
+
+
+
+ 按下 {*CONTROLLER_ACTION_USE*} 即可拋線來開始釣魚。再次按下 {*CONTROLLER_ACTION_USE*} 即可捲線。
+ {*FishingRodIcon*}
+
+
+
+ 如果您等到浮標沈到水面下時再捲線,就能釣到魚。您可以吃生魚,也可以先用熔爐把魚煮熟後再吃。不論是生魚還是熟魚,吃下後都能回復您的生命值。
+ {*FishIcon*}
+
+
+
+ 釣魚竿就跟許多其他工具一樣,有使用次數的限制,但用途可不限於釣魚喔!您可以多多實驗,看看釣魚竿還能釣上或啟動什麼東西。
+ {*FishingRodIcon*}
+
+
+
+ 這是床舖。當夜晚來臨時,把游標指向床舖並按下 {*CONTROLLER_ACTION_USE*} 即可睡覺,並在早晨醒來。{*ICON*}355{*/ICON*}
+
+
+
+ {*B*}
+ 請按下 {*CONTROLLER_VK_A*} 來學習床舖的相關知識。{*B*}
+ 如果您已經了解床舖的使用方式,請按下 {*CONTROLLER_VK_B*}。
+
+
+
+ 床舖應該要放置在安全、明亮的地方,以免怪物在半夜吵醒您。當您使用過床舖後,您下次死亡時就會在那張床舖再生。
+ {*ICON*}355{*/ICON*}
+
+
+
+ 如果您的遊戲中有其他玩家,每位玩家都必須同時躺在床上才能睡覺。
+ {*ICON*}355{*/ICON*}
+
+
+
+ 在這個地區裡,有些簡單的紅石和活塞電路,還有個箱子,裡面裝了其他可用來擴大電路系統的物品。
+
+
+
+ {*B*}
+ 請按下 {*CONTROLLER_VK_A*} 來學習紅石電路和活塞的相關知識。{*B*}
+ 如果您已經了解紅石電路和活塞的使用方式,請按下 {*CONTROLLER_VK_B*}。
+
+
+
+ 拉桿、按鈕、壓板和紅石火把都可為電路提供動力。您可直接把這些東西連接到您想要啟動的物品上,或是利用紅石塵將這些東西連接到物品上。
+
+
+
+ 動力來源的放置位置和方向,會變更對周遭方塊的影響方式。舉例來說,如果您把紅石火把連接到方塊側邊,當這個方塊從其他來源獲得動力時,紅石火把就會關閉。
+
+
+
+ 只要用鐵、鑽石或是黃金材質的十字鎬開採紅石礦石,就能獲得紅石塵。紅石塵可用來傳送動力,最多可達 15 個方塊,還可像斜坡般往上或往下移動 1 個方塊的高度。
+ {*ICON*}331{*/ICON*}
+
+
+
+ 紅石中繼器可用來延長動力傳送的距離,或是延遲電路。
+ {*ICON*}356{*/ICON*}
+
+
+
+ 當活塞有動力時會延伸出去,並推動最多 12 個方塊。當黏性活塞縮回時,會拉回 1 個方塊,而且幾乎所有材質的方塊都可拉回。
+ {*ICON*}33{*/ICON*}
+
+
+
+ 在這個地區的箱子中有些零件,可用來組成有活塞的電路。請使用或完成這個地區裡的電路,或是組成您自己的電路。在教學課程地區外,還有更多的範例可讓您參考。
+
+
+
+ 在這個地區裡,有個通往地獄的傳送門!
+
+
+
+ {*B*}
+ 請按下 {*CONTROLLER_VK_A*} 來學習傳送門和地獄的相關知識。 {*B*}
+ 如果您已經了解傳送門和地獄的使用方式,請按下 {*CONTROLLER_VK_B*}。
+
+
+
+ 只要利用黑曜石方塊組合成有 4 個方塊寬、5 個方塊高的框架,就能製造傳送門。框架的 4 個邊角不需要放置方塊。
+
+
+
+ 如要啟動地獄傳送門,只要用打火鐮點燃框架內側的黑曜石方塊即可。當傳送門的框架損壞、附近發生爆炸,或是有液體流過傳送門時,傳送門就會關閉。
+
+
+
+ 如要使用地獄傳送門,請站在傳送門裡面。此時您會看到畫面變成紫色,還會聽到某種聲音。幾秒鐘後,您就會被傳送到地獄。
+
+
+
+ 地獄是個危險的地方,到處都是熔岩,但也是收集地獄血石和閃石的好地方。地獄血石只要一點燃就會永遠燃燒,而閃石則可做為光源。
+
+
+
+ 您可以利用地獄世界在地上世界中快速移動,因為在地獄世界移動 1 個方塊的距離,就等於在地上世界移動 3 個方塊的距離。
+
+
+
+ 您正以創造模式進行遊戲。
+
+
+
+ {*B*}
+ 按下 {*CONTROLLER_VK_A*} 即可了解更多關於創造模式的資訊。{*B*}
+ 如果您已經了解如何使用創造模式,請按下 {*CONTROLLER_VK_B*}。
+
+
+在創造模式中,您擁有無限多的物品和方塊,且不需使用任何特殊工具,只要按一下即可摧毀方塊。您是無敵的,並且可以飛翔。
+
+快速按兩次 {*CONTROLLER_ACTION_JUMP*} 即可飛翔,重複這個動作則可停止飛翔。快速往前按兩下 {*CONTROLLER_ACTION_MOVE*} 即可在飛行中加快飛行的速度。
+在飛翔模式下,只要按住 {*CONTROLLER_ACTION_JUMP*} 即可往上飛,按住 {*CONTROLLER_ACTION_SNEAK*} 則可往下飛。您也可用方向鍵操控方向,往上、下、左或右飛。
+
+按下 {*CONTROLLER_ACTION_CRAFTING*} 即可開啟創造模式物品欄介面。
+
+您必須設法移到這個洞的另一邊,才能繼續進行遊戲。
+
+您已完成創造模式的教學課程。
+
+
+ 這個地區已經準備好一塊農田。耕種能夠讓您建立一個可以重複提供食物與其他物品的可再生來源。
+
+
+
+ {*B*}
+ 按下 {*CONTROLLER_VK_A*} 來學習耕種的相關知識。{*B*}
+ 如果您已經了解耕種的方法,請按下 {*CONTROLLER_VK_B*} 。
+
+
+小麥、南瓜和西瓜皆必須利用種子栽種。小麥種子可以藉由破壞茂密青草,或收成小麥來進行收集。相對地,收成南瓜和西瓜,同樣也能收集到南瓜和西瓜種子。
+
+在栽種種子前,需要先使用鋤頭將泥土方塊變成農田。在附近放置水源和光源,不但能使農田保持水分,且能讓作物生長得較快。
+
+小麥的生長過程包含了數個階段,當顏色轉深後,就代表可以收成了。{*ICON*}59:7{*/ICON*}
+
+南瓜和西瓜同時也需要在旁邊空出一格的空間,讓完全長成的莖葉能夠在上面長出果實。
+
+甘蔗必須栽種在青草、泥土,或沙子方塊上,並且需要和水體方塊相鄰。劈砍甘蔗方塊將會連帶使上方所有方塊一起掉落。{*ICON*}83{*/ICON*}
+
+仙人掌必須栽種在沙子上,最高可以長到三個方塊的高度。和甘蔗一樣,破壞最底層的方塊,就能夠連帶一起收集上方所有的方塊。{*ICON*}81{*/ICON*}
+
+蘑菇必須栽種在光線昏暗的地區,並且會蔓延至附近其他光線昏暗的方塊上。{*ICON*}39{*/ICON*}
+
+骨粉可以用來讓作物立刻達到完全成熟的階段,或是讓蘑菇長成巨型蘑菇。{*ICON*}351:15{*/ICON*}
+
+您已完成耕種的教學課程。
+
+
+ 這個區域裡,已豢養數隻動物。您可以讓動物進行繁殖,培育小動物。
+
+
+
+ {*B*}
+ 按下 {*CONTROLLER_VK_A*} 來學習繁殖的相關知識。{*B*}
+ 如果您已經了解繁殖的方法,請按下 {*CONTROLLER_VK_B*}。
+
+
+您必須餵動物吃特定的食物,讓動物進入「戀愛模式」,動物才能繁殖。
+
+餵乳牛、蘑菇牛或綿羊吃小麥,餵豬吃胡蘿蔔、餵雞吃小麥種子或地獄結節,餵狼吃任何一種肉類,這些動物就會開始尋找也在戀愛模式中的同種類動物。
+
+當同在戀愛模式中的兩隻同種類動物相遇,牠們會先親吻數秒,剛出生的小動物就會出現。小動物一開始會跟在父母身旁,之後就會長成一般成年動物的大小。
+
+剛結束戀愛模式的動物必須等待大約五分鐘後,才能再次進入戀愛模式。
+
+當您手中握著牠們的食物時,有些動物會尾隨在後,這可以協助您將一群動物聚集起來繁殖。{*ICON*}296{*/ICON*}
+
+
+ 您可以透過餵食骨頭來馴服野狼,馴服當下可以在狼的身邊看到愛心顯示。除非玩家命令馴服的狼坐下,這些狼會持續跟隨並保護玩家。
+
+
+您已完成動物與繁殖的教學課程。
+
+
+ 這個區域有一些南瓜和方塊可以用來製作雪人和鐵傀儡。
+
+
+ {*B*}
+ 按下 {*CONTROLLER_VK_A*} 深入了解。{*B*}
+ 若您已經十分熟悉就按下{*CONTROLLER_VK_B*}。
+
+
+放南瓜在方塊堆頂端就可以製作出傀儡。
+
+製作雪人需要 2 個白雪方塊,疊在一起,最頂端放 1 個南瓜。雪人會向您的敵人丟雪球。
+
+製作鐵傀儡需要 4 個有圖案的鐵方塊,在中間的方塊上方放 1 個南瓜。鐵傀儡會攻擊您的敵人。
+
+鐵傀儡也會自然出現來保護村落,如果您攻擊村民,就會遭到鐵傀儡的攻擊。
+
+您必須完成教學課程,才能離開這個地區。
+
+不同材質的方塊,就應該要用適合的工具進行開採。建議您使用鏟子來開採材質較軟的方塊,例如泥土和沙子。
+
+不同材質的方塊,就應該要用適合的工具進行開採。建議您使用斧頭來劈砍樹幹。
+
+不同材質的方塊,就應該要用適合的工具進行開採。建議您使用十字鎬來開採石頭及礦石,但您可能需要用更好的材料來製造十字鎬,才能開採某些較硬的方塊。
+
+某些工具比較適合用來攻擊敵人。請考慮使用劍來攻擊。
+
+提示:按住 {*CONTROLLER_ACTION_ACTION*} 即可用您的手,或是手中握住的東西來開採及劈砍。但您可能需要精製出工具來開採某些方塊。
+
+您正在使用的工具受損了。工具每次使用時都會受損,到最後就會整個壞掉。在物品欄中,物品下方的色彩列即為目前的損害狀態。
+
+按住 {*CONTROLLER_ACTION_JUMP*} 即可往上游。
+
+附近的軌道上有台礦車。如要坐上礦車,請把游標指向礦車,然後按下 {*CONTROLLER_ACTION_USE*} 即可。對按鈕使用 {*CONTROLLER_ACTION_USE*} 即可讓礦車移動。
+
+河邊的箱子中有艘小船。如要放置小船,請把游標指向水面,然後按下 {*CONTROLLER_ACTION_USE*} 即可。當您把游標指向小船時,使用 {*CONTROLLER_ACTION_USE*} 即可上船。
+
+池塘邊的箱子中有根釣魚竿。請把釣魚竿拿出箱子,然後將其選取為您手中握住的物品來使用。
+
+這個更進階的活塞機械系統,可產生會自行修復的橋樑喔!請按下按鈕啟動,然後觀察各個零件的互動方式,瞭解更多資訊。
+
+當您拿著物品時,將游標移動到介面外,即可丟棄該物品。
+
+您沒有製造該物品所需的所有材料。左下角的方塊會顯示要精製出該物品所需的材料。
+
+
+ 恭喜,您已經完成教學課程!遊戲中的時間流逝速度已經恢復正常,夜晚很快就會來臨,怪物隨後就會出現!請快點蓋好您的棲身處!
+
+
+{*EXIT_PICTURE*} 當您準備好進一步探索世界時,礦工棲身處附近有個樓梯口,會通往某個小城堡。
+
+提醒事項:
+
+
]]>
+
+我們已經在最新版遊戲中加入新功能,包括教學課程世界裡的幾個新地區。
+
+{*B*}按下 {*CONTROLLER_VK_A*} 即可以一般的遊戲方式來進行教學課程。{*B*}
+ 按下 {*CONTROLLER_VK_B*} 即可略過主要的教學課程。
+
+在這個地區裡,有幾個可協助您了解釣魚、小船、活塞和紅石等相關知識的區域。
+
+在這個地區外,您會發現有關建築物、耕種、礦車和軌道、附加能力、釀製、交易、鍛造以及更多的範例!
+
+
+ 您的食物列已消耗到無法讓生命值自動回復的程度。
+
+
+
+ {*B*}
+ 請按下 {*CONTROLLER_VK_A*} 來學習食物列和吃東西的相關知識。{*B*}
+ 如果您已經了解食物列的使用方式,以及吃東西的方法,請按下 {*CONTROLLER_VK_B*} 。
+
+
+選取
+
+使用
+
+返回
+
+離開
+
+取消
+
+取消加入
+
+選取儲存裝置
+
+變更儲存裝置
+
+重新整理線上遊戲清單
+
+派對遊戲
+
+所有遊戲
+
+變更群組
+
+顯示物品欄
+
+顯示說明
+
+顯示材料
+
+精製
+
+製造
+
+撿起/放置
+
+撿起
+
+全部撿起
+
+撿起一半
+
+放置
+
+全部放置
+
+放置 1 個
+
+丟棄
+
+全部丟棄
+
+丟棄 1 個
+
+交換
+
+快速移動
+
+清除快速選取
+
+這是什麼?
+
+分享至 Facebook
+
+變更篩選條件
+
+檢視玩家卡
+
+檢視玩家設定檔
+
+傳送好友請求
+
+下一頁
+
+上一頁
+
+下一個
+
+上一個
+
+踢出玩家
+
+染色
+
+開採
+
+餵食
+
+馴服
+
+治療
+
+坐下
+
+跟著我
+
+退出
+
+清空
+
+鞍座
+
+放置
+
+敲擊
+
+擠牛奶
+
+收集
+
+吃
+
+睡覺
+
+起床
+
+播放
+
+騎/搭乘
+
+乘船
+
+栽培
+
+往上游
+
+開啟
+
+變更音調
+
+觸發
+
+閱讀
+
+懸吊
+
+投擲
+
+栽種
+
+整地
+
+收成
+
+繼續
+
+解除完整版遊戲鎖定
+
+刪除存檔
+
+刪除
+
+選項
+
+邀請 Xbox Live 派對
+
+邀請好友
+
+接受
+
+剪羊毛
+
+禁用關卡
+
+選取角色外觀
+
+點燃
+
+瀏覽
+
+安裝完整版
+
+安裝試用版
+
+安裝
+
+重新安裝
+
+儲存選項
+
+執行命令
+
+創造
+
+移動材料
+
+移動燃料
+
+移動工具
+
+移動護甲
+
+移動武器
+
+配備
+
+拉弓
+
+射箭
+
+特權
+
+阻擋
+
+上一頁
+
+下一頁
+
+戀愛模式
+
+喝
+
+旋轉
+
+隱藏
+
+上傳供 Xbox One 使用的存檔
+
+清空所有空格
+
+上傳供 Xbox One 使用的存檔
+
+確定
+
+取消
+
+Minecraft 商店
+
+確定要離開目前的遊戲,並加入新的遊戲嗎?您將因此失去尚未儲存的遊戲進度。
+
+離開遊戲
+
+儲存遊戲
+
+不儲存即離開
+
+確定要用這個世界目前的存檔,來覆寫同一世界之前的存檔嗎?
+
+確定要不儲存即離開嗎?您將因此失去在這個世界的所有進度!
+
+開始遊戲
+
+如果您在創造模式中建立、載入或儲存世界,該世界的成就及排行榜更新功能將無法使用,即使您之後以生存模式載入該世界,也無法改變這種狀況。確定要繼續嗎?
+
+這個世界已經在創造模式中儲存,因此其成就及排行榜更新功能已經無法使用。確定要繼續嗎?
+
+這個世界已經在創造模式中儲存,因此其成就及排行榜更新功能已經無法使用。
+
+如果您在主持人特權啟用時,建立、載入或儲存世界,該世界的成就及排行榜更新功能將無法使用,即使您之後關閉那些選項並再次載入該世界,也無法改變這種狀況。確定要繼續嗎?
+
+損毀的存檔
+
+這個存檔已損毀。想要刪除這個存檔嗎?
+
+確定要離開並返回主畫面,同時中斷與遊戲中所有玩家的連線嗎?您將因此失去尚未儲存的遊戲進度。
+
+儲存並離開
+
+不儲存即離開
+
+確定要離開並返回主畫面嗎?您將因此失去尚未儲存的遊戲進度。
+
+確定要離開並返回主畫面嗎?您將因此失去遊戲進度!
+
+建立新世界
+
+進行教學課程
+
+教學課程
+
+為您的世界命名
+
+請輸入您世界的名稱
+
+輸入用來產生新世界的種子
+
+載入已儲存世界
+
+按下 START 來加入遊戲
+
+正在離開遊戲
+
+發生錯誤,即將離開遊戲並返回主畫面。
+
+連線失敗。
+
+連線中斷
+
+與伺服器的連線中斷。即將離開遊戲並返回主畫面。
+
+與 Xbox Live 的連線中斷。即將離開遊戲並返回主畫面。
+
+與 Xbox Live 的連線中斷。
+
+伺服器中斷連線
+
+您被踢出遊戲
+
+您因為飛翔而被踢出遊戲
+
+嘗試連線的時間太久
+
+伺服器人數已滿
+
+主持人已經離開遊戲。
+
+您無法加入這個遊戲,因為該遊戲中沒有任何玩家是您的好友。
+
+您無法加入這個遊戲,因為您之前已經被主持人踢出遊戲。
+
+由於您嘗試加入的玩家進行較舊版本的遊戲,所以您無法加入此遊戲。
+
+由於您嘗試加入的玩家進行較新版本的遊戲,所以您無法加入此遊戲。
+
+新世界
+
+解除獎項鎖定!
+
+讚喔!您獲得 1 個玩家圖示,主角就是 Minecraft 裡的 Steve!
+
+讚喔!您獲得 1 個玩家圖示,主角就是 Creeper!
+
+讚喔!您獲得 1 個虛擬人偶項目「Minecraft: Xbox 360 Edition T 恤」!
+快去設定畫面讓您的虛擬人偶穿上吧!
+
+讚喔!您獲得 1 個虛擬人偶項目「Minecraft: Xbox 360 Edition 手錶」!
+快去設定畫面讓您的虛擬人偶戴上吧!
+
+讚喔!您獲得 1 個虛擬人偶項目「Creeper 棒球帽」!
+快去設定畫面讓您的虛擬人偶戴上吧!
+
+讚喔!您獲得 1 個 Minecraft: Xbox 360 Edition 主題!
+快去設定畫面來選取這個主題吧!
+
+解除完整版遊戲鎖定
+
+您正在玩試玩版遊戲,但您必須擁有完整版遊戲才能儲存遊戲進度。
+想要立刻解除完整版遊戲鎖定嗎?
+
+這是 Minecraft: Xbox 360 Edition 試玩版遊戲。如果您擁有完整版遊戲,那您剛剛就獲得了 1 個成就!
+解除完整版遊戲即可享受 Minecraft: Xbox 360 Edition 的遊戲歡樂,而且還能透過 Xbox Live 與世界各地的好友一起玩遊戲。
+想要解除完整版遊戲鎖定嗎?
+
+這是 Minecraft: Xbox 360 Edition 試玩版遊戲。如果您擁有完整版遊戲,那您剛剛就獲得了 1 個虛擬人偶獎項!
+解除完整版遊戲即可享受 Minecraft: Xbox 360 Edition 的遊戲歡樂,而且還能透過 Xbox Live 與世界各地的好友一起玩遊戲。
+想要解除完整版遊戲鎖定嗎?
+
+這是 Minecraft: Xbox 360 Edition 試玩版遊戲。如果您擁有完整版遊戲,那您剛剛就獲得了 1 個玩家圖示!
+解除完整版遊戲即可享受 Minecraft: Xbox 360 Edition 的遊戲歡樂,而且還能透過 Xbox Live 與世界各地的好友一起玩遊戲。
+想要解除完整版遊戲鎖定嗎?
+
+這是 Minecraft: Xbox 360 Edition 試玩版遊戲。如果您擁有完整版遊戲,那您剛剛就獲得了 1 個主題!
+解除完整版遊戲即可享受 Minecraft: Xbox 360 Edition 的遊戲歡樂,而且還能透過 Xbox Live 與世界各地的好友一起玩遊戲。
+想要解除完整版遊戲鎖定嗎?
+
+這是 Minecraft: Xbox 360 Edition 的試玩版遊戲。您必須擁有完整版遊戲,才能接受這個邀請。
+想要解除完整版遊戲鎖定嗎?
+
+訪客玩家無法解除完整版遊戲鎖定,請使用 Xbox Live 玩家使用者識別碼來登入。
+
+請稍候
+
+沒有搜尋結果
+
+篩選條件:
+
+好友
+
+我的分數
+
+整體
+
+項目:
+
+排名
+
+玩家代號
+
+正在準備儲存關卡
+
+正在準備區塊...
+
+正在完成...
+
+正在建造地形
+
+正在模擬世界
+
+正在啟動伺服器
+
+正在產生再生區域
+
+正在載入再生區域
+
+正在進入地獄
+
+正在離開地獄
+
+再生中
+
+正在產生關卡
+
+正在載入關卡
+
+正在儲存玩家
+
+正在與主持人連線
+
+正在下載地形
+
+正在切換至離線遊戲
+
+主持人正在儲存遊戲,請稍候
+
+正在進入終界
+
+正在離開終界
+
+為世界產生器尋找種子
+
+這張床已經有人佔據了
+
+您只能在夜晚睡覺
+
+%s 正在床舖上睡覺。如要讓遊戲時間跳至日出,所有玩家必須同時睡在床舖上。
+
+您家中的床舖已消失,或是被擋住了
+
+附近有怪物,您不能休息
+
+您正在床舖上睡覺。如要讓遊戲時間跳至日出,所有玩家必須同時睡在床舖上。
+
+工具與武器
+
+武器
+
+食物
+
+建築
+
+護甲
+
+機械
+
+運送
+
+裝飾
+
+建築材料
+
+紅石與運送方式
+
+雜項
+
+釀製
+
+釀製
+
+工具、武器與護甲
+
+材料
+
+已登出
+
+您的玩家設定檔已登出,因此您即將返回標題畫面
+
+困難度
+
+音樂
+
+音效
+
+色差補正
+
+遊戲靈敏度
+
+介面靈敏度
+
+和平
+
+簡單
+
+普通
+
+困難
+
+在這個模式中,玩家的生命值會隨時間自動回復,且遊戲環境中不會有怪物。
+
+在這個模式中,遊戲世界會產生怪物,且怪物會對玩家造成少量的傷害。
+
+在這個模式中,遊戲世界會產生怪物,且怪物會對玩家造成普通的傷害。
+
+在這個模式中,遊戲世界會產生怪物,且怪物會對玩家造成嚴重的傷害。千萬要留意 Creeper,因為當您嘗試遠離 Creeper 時,Creeper 可不會取消爆炸!
+
+試玩版遊戲時間結束
+
+Minecraft: Xbox 360 Edition 試玩版的遊戲時間已經結束!想要解除完整版遊戲鎖定來繼續玩 Minecraft: Xbox 360 Edition 嗎?
+
+遊戲人數已滿
+
+已無空位,因此無法加入遊戲
+
+輸入牌子的文字
+
+請輸入牌子上的文字
+
+輸入標題
+
+請輸入文章的標題
+
+輸入標題
+
+請輸入文章的標題
+
+輸入說明
+
+請輸入文章的說明
+
+物品欄
+
+材料
+
+釀製台
+
+箱子
+
+附加能力
+
+熔爐
+
+材料
+
+燃料
+
+發射器
+
+這款遊戲目前沒有此類型的下載內容。
+
+%s 已經加入遊戲。
+
+%s 已經離開遊戲。
+
+%s 已被踢出遊戲。
+
+確定要刪除這個遊戲存檔嗎?
+
+正在等待核准
+
+已審查
+
+現在正在播放:
+
+重設設定
+
+確定要將所有設定重設為預設值嗎?
+
+載入錯誤
+
+無法載入 Minecraft: Xbox 360 Edition,因此無法繼續。
+
+%s 的遊戲
+
+不明主持人的遊戲
+
+訪客已登出
+
+某位訪客玩家已登出,導致系統移除遊戲中的所有訪客玩家。
+
+登入
+
+您尚未登入。您必須登入,才能進行這個遊戲。想要立刻登入嗎?
+
+不允許進行多人遊戲
+
+無法加入遊戲,因為至少有 1 位玩家不允許透過 Xbox Live 進行多人遊戲。
+
+無法建立線上遊戲,因為至少有 1 位玩家不允許透過 Xbox Live 進行多人遊戲。請取消核取 [線上遊戲] 方塊來開始進行離線遊戲。
+
+您無法加入這個遊戲,因為您的會員內容權限設定過於嚴格。如果您想要加入這個遊戲,請在 Xbox 設定畫面的 [隱私權和線上設定] 部份變更這項設定。
+
+您無法加入這個遊戲,因為某位本機玩家的會員內容權限設定過於嚴格。
+
+您無法加入這個遊戲,因為遊戲中某位玩家的會員內容權限設定為 [僅限好友],而您不在該玩家的好友名單中。
+
+無法建立遊戲
+
+您無法建立這個遊戲,因為某位本機玩家的會員內容權限設定過於嚴格。請取消核取 [線上遊戲] 方塊來開始進行離線遊戲,或是在 Xbox 設定畫面的 [隱私權和線上設定] 部份變更這項設定。
+
+已自動選取
+
+無套件:預設外觀
+
+我的最愛角色外觀
+
+已禁用的關卡
+
+您要加入的遊戲,已經列在您的禁用關卡清單中。
+如果您要加入這個遊戲,系統會把這個關卡從禁用關卡清單中移除。
+
+要禁用這個關卡嗎?
+
+確定要把這個關卡加入禁用關卡清單嗎?
+如果您選取 [確定],將會離開這個遊戲。
+
+從禁用清單中移除
+
+自動儲存時間間隔
+
+自動儲存時間間隔:關閉
+
+分鐘
+
+不能放置在這裡!
+
+您無法在關卡再生點附近放置熔岩,以避免讓再生的玩家立刻死亡。
+
+這個遊戲有自動儲存關卡的功能。當畫面出現這個圖示時,代表遊戲正在儲存您的資料。
+請勿在畫面出現這個圖示時關閉 Xbox 360 主機。
+
+介面透明度
+
+正在準備自動儲存關卡
+
+抬頭顯示器大小
+
+抬頭顯示器大小 (分割畫面)
+
+種子
+
+解除角色外觀套件的鎖定
+
+如要使用您選取的角色外觀,您必須先解除這個角色外觀套件的鎖定。
+您想要立刻解除這個角色外觀套件的鎖定嗎?
+
+解除材質套件的鎖定
+
+您必須先解除材質套件的鎖定才能在您的世界中使用。
+想要解除材質套件的鎖定嗎?
+
+試用版材質套件
+
+您目前所使用的是試用版的材質套件。只有解除完整版鎖定才能保存這個世界。
+您要解除完整版材質套件的鎖定嗎?
+
+沒有材質套件
+
+解除完整版鎖定
+
+下載試用版
+
+下載完整版
+
+您沒有這個世界所使用的混搭套件或材質套件!
+想要立刻安裝混搭套件或材質套件嗎?
+
+取得試用版
+
+取得完整版
+
+踢出玩家
+
+確定要將該玩家踢出這個遊戲嗎?除非您讓這個世界重新開始,該玩家才能再次加入遊戲。
+
+玩家圖示套件
+
+主題
+
+角色外觀套件
+
+允許好友的好友加入
+
+您無法加入這個遊戲,因為只有主持人的好友才能加入。
+
+無法加入遊戲
+
+已選取
+
+已選取的角色外觀:
+
+損毀的下載內容
+
+這個下載內容已經損毀,因此無法使用。您必須刪除該下載內容,然後從 [Minecraft 商店] 選單重新安裝。
+
+您有部分的下載內容已經損毀,因此無法使用。您必須刪除這些下載內容,然後從 [Minecraft 商店] 選單重新安裝。
+
+遊戲模式已經變更
+
+重新為您的世界命名
+
+請輸入您世界的新名稱
+
+遊戲模式:生存
+
+遊戲模式:創造
+
+生存
+
+創造
+
+在生存模式中建立
+
+在創造模式中建立
+
+產生雲朵
+
+您要如何處裡這個遊戲存檔?
+
+重新為存檔命名
+
+自動儲存倒數 %d...
+
+開啟
+
+關閉
+
+普通
+
+非常平坦
+
+啟用時,本遊戲將成為線上遊戲。
+
+啟用時,只限被邀請的玩家加入。
+
+啟用時,您的好友清單上的好友可以加入遊戲。
+
+啟用時,玩家可以傷害其他玩家。只有在生存模式才會生效。
+
+停用時,加入遊戲的玩家需要取得同意才能建造或開採。
+
+啟用時,火可能會蔓延至附近的易燃方塊。
+
+啟用時,炸藥會在點燃後爆炸。
+
+啟用時,主持人可以從遊戲選單切換自己的飛翔能力、停用疲勞功能,或是讓自己隱形。但將會無法使用成就及排行榜更新的功能。
+
+啟用時,會再度產生地獄世界。如果您的舊存檔中沒有地獄要塞,這將會很有用。
+
+啟用時,遊戲世界會產生村落和地下要塞等建築。
+
+啟用時,會在地上世界與地獄世界中產生完全平坦的世界。
+
+啟用時,玩家的再生點附近會有個裝著有用物品的箱子。
+
+角色外觀套件
+
+主題
+
+玩家圖示
+
+虛擬人偶項目
+
+材質套件
+
+混搭套件
+
+{*PLAYER*} 著火死亡了
+
+{*PLAYER*} 被燒死了
+
+{*PLAYER*} 嘗試在熔岩中游泳而死亡了
+
+{*PLAYER*} 在牆中窒息死亡了
+
+{*PLAYER*} 溺死了
+
+{*PLAYER*} 餓死了
+
+{*PLAYER*} 被戳死了
+
+{*PLAYER*} 重重摔在地面上而死亡了
+
+{*PLAYER*} 掉出世界而死亡了
+
+{*PLAYER*} 死亡了
+
+{*PLAYER*} 被炸死了
+
+{*PLAYER*} 被魔法殺死了
+
+{*PLAYER*} 已被終界龍所吹的氣殺死了
+
+{*PLAYER*} 被 {*SOURCE*} 殺死了
+
+{*PLAYER*} 被 {*SOURCE*} 殺死了
+
+{*PLAYER*} 被 {*SOURCE*} 的箭射死了
+
+{*PLAYER*} 被 {*SOURCE*} 的火球殺死了
+
+{*PLAYER*} 被 {*SOURCE*} 的拳頭打死了
+
+{*PLAYER*} 已被 {*SOURCE*} 殺死。
+
+基岩迷霧
+
+顯示抬頭顯示器
+
+顯示手
+
+分割畫面玩家代號
+
+死亡訊息
+
+動態角色
+
+自訂角色外觀動畫
+
+您已不能開採或使用物品
+
+您現在可以開採及使用物品
+
+您已不能放置方塊
+
+您現在可以放置方塊
+
+已可以使用門與開關
+
+已無法使用門與開關
+
+已可以使用容器 (例如箱子等)
+
+已無法使用容器 (例如箱子等)
+
+您已不能攻擊生物
+
+您現在可以攻擊生物
+
+您已不能攻擊玩家
+
+您現在可以攻擊玩家
+
+已無法攻擊動物
+
+已可以攻擊動物
+
+您現在是管理員
+
+您已不是管理員
+
+您現在可以飛翔
+
+您已不能飛翔
+
+您不再感到疲勞
+
+您現在開始會感到疲勞
+
+您現在是隱形的
+
+您已不是隱形的
+
+您現在是無敵的
+
+您已不是無敵的
+
+%d MSP
+
+終界龍
+
+%s 已經進入終界
+
+%s 已經離開終界
+
+
+{*C3*}我知道你所指的玩家了。{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}?{*EF*}{*B*}{*B*}
+{*C3*}是的。小心,他的層次現在提高了。他能讀取我們的心思。{*EF*}{*B*}{*B*}
+{*C2*}沒關係。他認為我們是遊戲的一部分。{*EF*}{*B*}{*B*}
+{*C3*}我喜歡這個玩家,他表現得很好,一直玩到最後。{*EF*}{*B*}{*B*}
+{*C2*}他現在正如閱讀螢幕上的文字般讀著我們的心思。{*EF*}{*B*}{*B*}
+{*C3*}他在深入遊戲的夢境時一向選擇以這種方式想像很多事情。{*EF*}{*B*}{*B*}
+{*C2*}文字是很美妙的介面,靈活又易變,比直視螢幕背後的真相要安全得多。{*EF*}{*B*}{*B*}
+{*C3*}他們之前是聽話語。在玩家能夠閱讀之前,是玩家被那些不玩遊戲的人稱呼為女巫或巫師的時候。玩家想像自己乘坐具有魔鬼力量的棍子騰空翱翔。{*EF*}{*B*}{*B*}
+{*C2*}這位玩家夢到了什麼?{*EF*}{*B*}{*B*}
+{*C3*}這位玩家夢到陽光與樹木、火與水。他夢見自己造物,也夢見自己破壞。他夢見自己打獵,同時也是獵物。他夢到了庇護所。{*EF*}{*B*}{*B*}
+{*C2*}哈,這是原型介面。經過了百萬年,還是奏效。不過這位玩家在螢幕背後的真相中創造了什麼結構?{*EF*}{*B*}{*B*}
+{*C3*}他和百萬名其他玩家在 {*EF*}{*NOISE*}{*C3*} 的皺摺中塑造出一個真實世界,並在 {*EF*}{*NOISE*}{*C3*} 中替 {*EF*}{*NOISE*}{*C3*} 建造了 {*EF*}{*NOISE*}{*C3*}。{*EF*}{*B*}{*B*}
+{*C2*}他讀不出那幾個心思。{*EF*}{*B*}{*B*}
+{*C3*}沒錯。他尚未達到最高層次。他必須先在人生的長夢中開悟,這場遊戲的短夢尚不足以成就這一點。{*EF*}{*B*}{*B*}
+{*C2*}他是否知道我們愛他?是否知道宇宙是仁慈的?{*EF*}{*B*}{*B*}
+{*C3*}有時候。穿越他那些思考的雜訊,他的確能聽到宇宙。{*EF*}{*B*}{*B*}
+{*C2*}不過有時候他會在長夢中悲傷;他創造出沒有夏天的世界,讓自己在黑暗的太陽下發抖,並認為他所創造出的產物就是真相。{*EF*}{*B*}{*B*}
+{*C3*}治好他的悲傷會毀掉他。悲傷是他自身的業,我們無法干涉。{*EF*}{*B*}{*B*}
+{*C2*}有時當他們沈溺於夢境時,我想告訴他們,他們是在真相中建立真實的世界。有時候我想讓他們了解他們對宇宙的重要性。有時候,在他們封閉自我一段時間後,我想幫助他們說出他們害怕的文字。{*EF*}{*B*}{*B*}
+{*C3*}他能讀取我們的心思。{*EF*}{*B*}{*B*}
+{*C2*}有時候我不在乎。有時我想告訴他們,你所以為的真實世界不過是 {*EF*}{*NOISE*}{*C2*} 和 {*EF*}{*NOISE*}{*C2*},我想告訴他們,他們是 {*EF*}{*NOISE*}{*C2*} 中的 {*EF*}{*NOISE*}{*C2*}。他們在自己的長夢中幾乎察覺不到真相。{*EF*}{*B*}{*B*}
+{*C3*}但他們還是玩著遊戲。{*EF*}{*B*}{*B*}
+{*C2*}告訴他們會讓一切變得好簡單...{*EF*}{*B*}{*B*}
+{*C3*}對這場夢而言真相太過刺激。告訴他們如何去活就是阻止他們去活。{*EF*}{*B*}{*B*}
+{*C2*}我不會告訴玩家如何去活。{*EF*}{*B*}{*B*}
+{*C3*}玩家開始蠢蠢欲動了。{*EF*}{*B*}{*B*}
+{*C2*}我會告訴那位玩家一個故事。{*EF*}{*B*}{*B*}
+{*C3*}但不說真相。{*EF*}{*B*}{*B*}
+{*C2*}沒錯。那是一個包含真相的故事,被文字安全地包裝起來。我不會赤裸裸地說出他所無法接受的真相。{*EF*}{*B*}{*B*}
+{*C3*}再一次賦予他身體。{*EF*}{*B*}{*B*}
+{*C2*}沒錯。玩家...{*EF*}{*B*}{*B*}
+{*C3*}喚他的名字。{*EF*}{*B*}{*B*}
+{*C2*}{*PLAYER*}。遊戲的玩家。{*EF*}{*B*}{*B*}
+{*C3*}很好。{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}現在,吸一口氣。再一口。感覺空氣進入肺部。讓你的四肢回復。是的,動動你的手指。再一次擁有身體,騰空、感受地心引力。再生到長夢當中。你回來了。你身體的每個細胞又再度碰觸宇宙,彷彿你和宇宙其實不是一體。彷彿我們都不是一體。{*EF*}{*B*}{*B*}
+{*C3*}我們是誰?我們曾被稱為山神、陽父、月母、祖靈、獸靈、神仙、神靈、天地精華。又被稱為神明、魔鬼、天使、鬼、外星人、輕子、夸克。文字會改變,我們從未改變。{*EF*}{*B*}{*B*}
+{*C2*}我們是宇宙。所有你認為不是你的一切都是我們。你正在透過你的皮膚和雙眼看我們。宇宙為何要觸碰你的皮膚,將光投向你?玩家,是為了要看你。我們想認識你,想要你認識我們。我將告訴你一個故事。{*EF*}{*B*}{*B*}
+{*C2*}很久很久以前,有一位玩家。{*EF*}{*B*}{*B*}
+{*C3*}那位玩家就是你,{*PLAYER*}。{*EF*}{*B*}{*B*}
+{*C2*}有的時候他認為自己是人類,處在一顆自轉熔岩球體的薄薄地殼上。這顆熔岩球體繞行著一顆比自己大 33 萬倍的炙熱氣體球。「光」需要 8 分鐘才能橫渡這兩者之間的距離。光是來自恆星的訊息,能在一億五千萬公里之外灼傷你的皮膚。{*EF*}{*B*}{*B*}
+{*C2*}有時候,那位玩家夢見自己是採礦人,處在一個平坦無盡的世界的地表。太陽是一個白色方塊。一天很短暫,死亡只不過是一時的小小不便。{*EF*}{*B*}{*B*}
+{*C3*}有時候,玩家夢見自己迷失在故事裡。{*EF*}{*B*}{*B*}
+{*C2*}有時候,玩家夢見自己是別的東西、身在其他場所。有時這些夢境令人不安,有時卻極其美麗。有時候玩家會從一個夢中甦醒至下一個夢中,然後再進入第三個夢。{*EF*}{*B*}{*B*}
+{*C3*}有時玩家夢見自己看著螢幕上的字。{*EF*}{*B*}{*B*}
+{*C2*}讓我們回溯一下。{*EF*}{*B*}{*B*}
+{*C2*}玩家的原子分散在草地、河流、空氣和土壤中。一位女性蒐集這些原子,她吃下、飲用、吸入它們,然後在她的體內組織玩家。{*EF*}{*B*}{*B*}
+{*C2*}然後玩家從母親體內那溫暖黑暗的世界中甦醒過來,甦醒至一場長夢當中。{*EF*}{*B*}{*B*}
+{*C2*}玩家被寫成 DNA,成為一個從未被訴說的新故事。玩家成為一個以具有十億年歷史的來源碼所寫成的新程式,從未執行過。玩家成為一個以乳水與愛所孕育而成的新人類,從未活過。{*EF*}{*B*}{*B*}
+{*C3*}你就是那位玩家。那個故事。那個程式。那個人類。以乳水和愛孕育而成。{*EF*}{*B*}{*B*}
+{*C2*}讓我們再回溯得遠一點。{*EF*}{*B*}{*B*}
+{*C2*}組成玩家身體的這七千萬億顆原子,早在遊戲存在之前,就已在恆星的中心被創造出來。因此,玩家也是來自恆星的訊息。玩家所通過的故事,就是訊息所組成的叢林,這個訊息叢林由一位名為 Julian 的人所種下,在名為 Markus 的人所創造的平坦無盡世界上滋生,並在玩家所創造的小小私人世界中存在著。創造玩家所居住的這個宇宙的人是...{*EF*}{*B*}{*B*}
+{*C3*}噓。玩家所創造的小小私人世界有時輕鬆、溫暖而單純,有時則艱險、寒冷而複雜。有時他會在腦中建造宇宙模型;那些穿越空間的能量微粒,有時候會被他稱為「電子」和「質子」。{*EF*}{*B*}{*B*}
+
+
+
+{*C2*}有的時候他稱它們為「行星」和「恆星」。{*EF*}{*B*}{*B*}
+{*C2*}有時候,他相信自己所處的宇宙由能源組成,而這能源又由關與開、0 與 1、一行又一行的程式碼所組成。有時候,他相信自己正在進行一場遊戲。有時候,他相信自己正在閱讀螢幕上的文字。{*EF*}{*B*}{*B*}
+{*C3*}你就是那位玩家,讀著文字...{*EF*}{*B*}{*B*}
+{*C2*}噓... 有時候,玩家讀著螢幕上的程式碼,將程式碼解讀成文字、將文字解讀成意義、將意義解讀成感覺、情緒、理論、思想。然後玩家的呼吸變得越來越快、越來越沈重,他發現自己活著,真正活著;那一千次的死亡都不是真的,玩家還活著。{*EF*}{*B*}{*B*}
+{*C3*}你。就是你。你還活著。{*EF*}{*B*}{*B*}
+{*C2*}有時候,玩家相信自己聽到宇宙透過夏季綠葉間流瀉的陽光和他說話。{*EF*}{*B*}{*B*}
+{*C3*}有時候,玩家相信自己聽到宇宙在冷冽冬夜中射下光芒和他說話。那閃現在玩家眼角的微光,可能是一顆比太陽大百萬倍的恆星,為了在那一瞬間讓玩家看到,而驟燒化為離子,好讓在宇宙遠端漫步回家的玩家,突然間聞到食物的香氣,感覺自己幾乎就要抵達那道熟悉的門前,準備好再度入夢。{*EF*}{*B*}{*B*}
+{*C2*}有時候,玩家相信宇宙透過 0 和 1、透過世上的電流、透過夢境結束時在螢幕上捲動的文字和他說話。{*EF*}{*B*}{*B*}
+{*C3*}而宇宙說「我愛你」。{*EF*}{*B*}{*B*}
+{*C2*}宇宙說你在遊戲中表現得很好。{*EF*}{*B*}{*B*}
+{*C3*}宇宙說你已具備你所需的一切。{*EF*}{*B*}{*B*}
+{*C2*}宇宙說你比自己所想的還要堅強。{*EF*}{*B*}{*B*}
+{*C3*}宇宙說你就是白晝。{*EF*}{*B*}{*B*}
+{*C2*}宇宙說你就是黑夜。{*EF*}{*B*}{*B*}
+{*C3*}宇宙說你所抵抗的黑暗來自你的內心。{*EF*}{*B*}{*B*}
+{*C2*}宇宙說你所追尋的光就在你自己心中。{*EF*}{*B*}{*B*}
+{*C3*}宇宙說你不孤單。{*EF*}{*B*}{*B*}
+{*C2*}宇宙說你和一切都是一體。{*EF*}{*B*}{*B*}
+{*C3*}宇宙說你就是宇宙,正在認識自己、和自己對話、讀著自己編寫的程式碼。{*EF*}{*B*}{*B*}
+{*C2*}宇宙說我愛你,因為你就是愛。{*EF*}{*B*}{*B*}
+{*C3*}遊戲已經結束,玩家已從夢境中甦醒。玩家開始一段新的夢境。玩家又再度做夢,做一場更好的夢。玩家就是宇宙。玩家就是愛。{*EF*}{*B*}{*B*}
+{*C3*}你就是玩家。{*EF*}{*B*}{*B*}
+{*C2*}醒過來吧。{*EF*}
+
+
+重設地獄
+
+確定要對此遊戲存檔的地獄進行重設嗎?這將會失去所有地獄內的建設進度!
+
+重設地獄
+
+不要重設地獄
+
+目前豬、 綿羊、乳牛和貓已達到數量上限,無法剪 Mooshroom 的毛。
+
+目前豬、綿羊、乳牛和貓已達到數量上限。無法使用角色蛋。
+
+目前 Mooshroom 已達到數量上限,無法使用角色蛋。
+
+目前已達到遊戲世界的狼數量上限,無法使用角色蛋。
+
+目前已達到遊戲世界的雞數量上限,無法使用角色蛋。
+
+目前已達到遊戲世界的烏賊數量上限,無法使用角色蛋。
+
+目前已達到遊戲世界的敵人數量上限,無法使用角色蛋。
+
+目前已達到遊戲世界的村民數量上限,無法使用角色蛋。
+
+該世界中的圖畫/物品框架已達最大數量。
+
+您無法在和平模式中產生敵人。
+
+目前豬、綿羊、乳牛和貓已達到數量上限。此動物無法進入戀愛模式。
+
+狼已達到繁殖數量上限,該動物無法進入戀愛模式。
+
+雞已達到繁殖數量上限,該動物無法進入戀愛模式。
+
+Mooshrooms 已達到繁殖數量上限,該動物無法進入戀愛模式。
+
+目前這個世界的小船已達到數量上限。
+
+目前已達遊戲世界的生物頭顱數量上限。
+
+上下反轉
+
+慣用左手
+
+您死亡了!
+
+再生
+
+下載內容
+
+變更角色外觀
+
+遊戲方式
+
+控制
+
+設定
+
+製作群
+
+重新安裝內容
+
+偵錯設定
+
+火會蔓延
+
+炸藥會爆炸
+
+玩家對玩家
+
+信任玩家
+
+主持人特權
+
+產生建築
+
+非常平坦的世界
+
+贈品箱
+
+世界選項
+
+可以建造和開採
+
+可以使用門與開關
+
+可以開啟容器
+
+可以攻擊玩家
+
+可以攻擊動物
+
+管理員
+
+踢出玩家
+
+可以飛翔
+
+停用疲勞
+
+隱形
+
+主持人選項
+
+玩家/邀請
+
+線上遊戲
+
+僅限邀請
+
+更多選項
+
+載入
+
+新世界
+
+世界名稱
+
+世界生成器用的種子
+
+留白即可使用隨機種子
+
+玩家
+
+加入遊戲
+
+開始遊戲
+
+找不到遊戲
+
+進行遊戲
+
+排行榜
+
+成就
+
+說明與選項
+
+解除完整版遊戲鎖定
+
+繼續遊戲
+
+儲存遊戲
+
+困難度:
+
+遊戲類型:
+
+玩家代號:
+
+建築:
+
+關卡類型:
+
+玩家對玩家:
+
+信任玩家:
+
+炸藥:
+
+火會蔓延:
+
+重新安裝主題
+
+重新安裝玩家圖示 1
+
+重新安裝玩家圖示 2
+
+重新安裝虛擬人偶項目 1
+
+重新安裝虛擬人偶項目 2
+
+重新安裝虛擬人偶項目 3
+
+選項
+
+音訊
+
+控制
+
+圖形
+
+使用者介面
+
+重設為預設值
+
+檢視上下跳動的動作
+
+提示
+
+遊戲中的工具提示
+
+遊戲中的玩家代號
+
+雙人遊戲垂直分割畫面
+
+完成
+
+編輯牌子上的訊息:
+
+請填寫螢幕擷取畫面的說明
+
+標題
+
+遊戲中的螢幕擷取畫面
+
+編輯牌子上的訊息:
+
+來看看我在 Minecraft: Xbox 360 Edition 製作了什麼東西!
+
+經典 Minecraft 材質、圖示及使用者介面!
+
+顯示所有混搭世界
+
+選取要傳輸的存檔空格
+
+清空空格
+
+正在上傳存檔中繼資料
+
+正在上傳存檔資料
+
+正在上傳供 Xbox One 使用的存檔
+
+已取消上傳
+
+您已經取消將此存檔上傳至存檔轉移區。
+
+無特殊效果
+
+速度
+
+緩慢
+
+快速
+
+開採倦怠
+
+力量
+
+虛弱
+
+立即回復生命值
+
+立即傷害
+
+跳躍增強
+
+噁心
+
+再生
+
+抵抗力
+
+防火
+
+水中呼吸
+
+隱形
+
+眼盲
+
+夜視
+
+飢餓
+
+巨毒
+
+敏捷
+
+緩慢
+
+快速
+
+遲鈍
+
+力量
+
+虛弱
+
+回復生命值
+
+傷害
+
+跳躍
+
+噁心
+
+再生
+
+抵抗力
+
+防火
+
+水中呼吸
+
+隱形
+
+眼盲
+
+夜視
+
+飢餓
+
+巨毒
+
+
+
+2
+
+3
+
+4
+
+噴濺
+
+平庸
+
+無趣
+
+平淡
+
+清澈
+
+乳狀
+
+擴散
+
+拙劣
+
+稀薄
+
+粗劣
+
+走味
+
+巨大
+
+粗製
+
+奶油
+
+平順
+
+柔順
+
+精緻
+
+濃郁
+
+高雅
+
+高貴
+
+媚力
+
+華麗
+
+極緻
+
+強烈
+
+閃光
+
+強效
+
+混濁
+
+無臭
+
+惡臭
+
+刺鼻
+
+刺激
+
+濃稠
+
+黏性
+
+所有藥水的基本配方,用來在釀製台中釀製藥水。
+
+本身不具備任何效果,藉由在釀製台中添加其他材料來釀製藥水。
+
+增加受影響玩家、動物和怪物的移動速度,並增加玩家的奔跑速度、跳躍高度和視野。
+
+減少受影響玩家、動物和怪物的移動速度,並降低玩家的奔跑速度、跳躍高度和視野。
+
+增加受影響玩家和怪物攻擊時所造成的傷害。
+
+減少受影響玩家和怪物攻擊時所造成的傷害。
+
+立即增加受影響玩家、動物和怪物的生命值。
+
+立即減少受影響玩家、動物和怪物的生命值。
+
+隨著時間自動回復受影響玩家、動物和怪物的生命值。
+
+讓受影響玩家、動物和怪物不受火、熔岩,和 Blaze 遠距攻擊的傷害。
+
+隨著時間自動減少受影響玩家、動物和怪物的生命值。
+
+鋒利
+
+重擊
+
+節足剋星
+
+擊退
+
+烈火
+
+防護
+
+防火
+
+輕盈
+
+防爆
+
+防彈
+
+水中呼吸
+
+水中挖掘
+
+效率
+
+聚寶
+
+耐力
+
+奪寶
+
+財富
+
+力量
+
+火焰
+
+猛擊
+
+無限
+
+1
+
+2
+
+3
+
+4
+
+5
+
+6
+
+7
+
+8
+
+9
+
+10
+
+可以用一把鶴嘴鋤或更好的工具來採集翡翠。
+
+和箱子類似,但是玩家可以在各處的終界箱裡取得個人所存放的道具。
+
+有東西穿過連結的絆線時就會啟動。
+
+有東西穿過連接的絆線鉤時就會啟動。
+
+精簡的翡翠儲存方法。
+
+一面由鵝卵石砌成的牆。
+
+可以用來修理武器、工具,以及護甲。
+
+在熔爐內熔煉製成獄石英。
+
+用來當作裝飾。
+
+可以用來和村民交易。
+
+用來當作裝飾,您可以把花、樹苗、仙人掌,還有蘑菇種在上面。
+
+可回復 2 個 {*ICON_SHANK_01*},並可精製成金色胡蘿蔔。可以栽種在農地上。
+
+可回復 0.5 個 {*ICON_SHANK_01*},或可在熔爐中烹煮。可以栽種在農地上。
+
+可回復 3 點 {*ICON_SHANK_01*}。在熔爐中烹煮馬鈴薯即可獲得。
+
+可回復 1 個 {*ICON_SHANK_01*},或可在熔爐中烹煮。可以栽種在農地上。食用可能會讓您中毒。
+
+可回復 3 個 {*ICON_SHANK_01*}。用胡蘿蔔和碎金塊精製而成。
+
+可以在騎豬的時候控制牠的方向。
+
+
+可回復 4 個 {*ICON_SHANK_01*}。
+
+用於鐵砧中,可以為武器、工具,或是護甲附加特殊能力。
+
+採集獄石英原礦即可獲得。可精製成獄石英方塊。
+
+由羊毛製成,可用於裝飾。
+
+翡翠
+
+花盆
+
+胡蘿蔔
+
+馬鈴薯
+
+烤馬鈴薯
+
+有毒馬鈴薯
+
+金色胡蘿蔔
+
+願者上鉤
+
+南瓜派
+
+附魔小冊
+
+獄石英
+
+翡翠原礦
+
+終界箱
+
+絆線鉤
+
+絆線
+
+翡翠方塊
+
+鵝卵石牆
+
+青苔卵石牆
+
+花盆
+
+胡蘿蔔
+
+馬鈴薯
+
+鐵砧
+
+鐵砧
+
+輕微受損的鐵砧
+
+嚴重受損的鐵砧
+
+獄石英原礦
+
+獄石英方塊
+
+雕刻石英方塊
+
+希臘圓柱石英方塊
+
+石英階梯
+
+地毯
+
+黑色地毯
+
+紅色地毯
+
+綠色地毯
+
+棕色地毯
+
+藍色地毯
+
+紫色地毯
+
+青綠地毯
+
+淺灰地毯
+
+灰色地毯
+
+粉紅地毯
+
+青檸地毯
+
+黃色地毯
+
+淺藍地毯
+
+洋紅地毯
+
+橘色地毯
+
+白色地毯
+
+雕刻沙岩
+
+平滑沙岩
+
+{*PLAYER*} 打算傷害 {*SOURCE*},卻因此喪命
+
+{*PLAYER*} 遭落下鐵砧擊斃。
+
+{*PLAYER*} 遭落下方塊擊斃。
+
+將 {*PLAYER*} 傳送至 {*DESTINATION*}
+
+{*PLAYER*} 將您傳送至他身邊
+
+{*PLAYER*} 剛剛傳送到您身邊
+
+棘刺
+
+石英板
+
+讓陰暗的地方看起來像在日光下一樣,就連在水中也一樣。
+
+讓受影響的玩家、動物以及怪物隱形。
+
+修理 & 命名
+
+附加能力花費:%d
+
+花費太高!
+
+重新命名
+
+您擁有:
+
+交易所需道具
+
+{*VILLAGER_TYPE*} 提供 %s
+
+修理
+
+交易
+
+染製項圈
+
+
+ 這是鐵砧操作介面,您可以在此消耗經驗值為武器、護甲或工具重新命名、修理或附加特殊能力。
+
+
+
+ {*B*}
+ 請按一下 {*CONTROLLER_VK_A*} 瞭解更多關於鐵砧介面的資訊。{*B*}
+ 如您已瞭解此資訊,請按一下 {*CONTROLLER_VK_B*}。
+
+
+
+ 如要開始維護一項道具,請將道具放在第一個格子裡。
+
+
+
+ 在第二個空格放置正確的材料(例如使用鐵碇塊修補受損的鐵劍),修理的結果就會顯示在產出空格中。
+
+
+
+ 或者,您可以在第二個空格中放入特定的道具來組合。
+
+
+
+ 如果要在鐵砧中附加特殊能力,請在第二個空格中放入附魔小冊。
+
+
+
+ 一次作業所需的經驗值會顯示在產出格的下方。如果您的經驗值不足以執行該次作業,便無法完成此次操作。
+
+
+
+ 您可以在文字方塊中重新為道具命名。
+
+
+
+ 從產出格拿起即將修復的道具,即會消耗先前放入鐵砧的兩件物品以及所需經驗值。
+
+
+
+ 在此區中有一個鐵砧和一個裝了工具和武器的箱子,您可以在此體驗鐵砧的操作方式。
+
+
+
+ {*B*}
+ 請按一下 {*CONTROLLER_VK_A*} 瞭解關於鐵砧的資訊。{*B*}
+ 如您已瞭解如何使用鐵砧,請按一下 {*CONTROLLER_VK_B*}。
+
+
+
+ 您可以使用鐵砧修復武器和工具的耐久度,也可以在鐵砧上變更物品名稱,或是放入附魔小冊以加上特殊能力。
+
+
+
+ 您能在地下迷宮中的箱子裡發現或在附加能力台上製作附魔小冊。
+
+
+
+ 在鐵砧上執行作業會消耗經驗值,也會使此器具受損。
+
+
+
+ 消耗量會依作業類型、物品價值、附加能力數量,以及先前組合的次數而有不同。
+
+
+
+ 在變更名稱後,所有玩家都可以看到物品的新名稱,還能降低先前組合造成的消耗。
+
+
+
+ 在本區的箱子中收納了幾把受損的十字鎬還有一些材料、幾瓶經驗值藥水,以及附魔小冊,讓您體驗此操作。
+
+
+
+ 您可以在交易介面中得知村民願意交換的物品。
+
+
+
+ {*B*}
+ 請按一下 {*CONTROLLER_VK_A*} 瞭解交易介面。{*B*}
+ 如您已瞭解交易介面,請按一下 {*CONTROLLER_VK_B*}。
+
+
+
+ 村民當時願意交易的物品會顯示在介面的上方。
+
+
+
+ 如果您持有的道具數量不足,該物品會顯示為紅色且無法交易。
+
+
+
+ 您要交給村民的道具數量會顯示在介面左方的兩個方格中。
+
+
+
+ 您能在介面中的左邊看到兩個方格,以及交易所需的道具數量。
+
+
+
+ 請按一下 {*CONTROLLER_VK_A*} 和村民交換他們提供的道具。
+
+
+
+ 在此區域有一位村民以及裝有紙張的箱子,讓您了解如何交易。
+
+
+
+ {*B*}
+ 請按一下 {*CONTROLLER_VK_A*} 瞭解何謂交易。{*B*}
+ 如果您已明白,請按一下 {*CONTROLLER_VK_B*}。
+
+
+
+ 玩家可以用身上持有的道具和村民交易。
+
+
+
+ 村民持有的交易品可能和他們的職業有關。
+
+
+
+ 執行多項交易,可能會增加或更新村民持有的物品。
+
+
+
+ 太常交易的熱門物品可能會暫時停止交換,但是仍能和村民交易換取其他物品。
+
+
+
+ 從箱子裡拿幾張紙和村民交易。
+
+
+
+ 在此區域中有兩個終界箱。
+
+
+
+ {*B*}
+ 請按一下 {*CONTROLLER_VK_A*} 了解關於終界箱的資訊。{*B*}
+ 如果您已瞭解其運作方式,請按一下 {*CONTROLLER_VK_B*}。
+
+
+
+ 即使在不同的空間裡,世界上所有的終界箱仍串聯在一起。存放在終界箱中的道具,都可以在其他終界箱中取用。
+
+
+
+ 不過,每個玩家在終界箱中看到的內容物都會不同。
+
+
+
+ 玩家能在任何終界箱中儲存物品,並從世界中其他不同地點的終界箱中取物。試著把道具放進終界箱吧。
+
+
+可回復 2 個 {*ICON_SHANK_01*},在 30 秒內持續回復生命值,並具有 5 分鐘抗火和抵抗傷害的效果。用蘋果和金塊精製而成。
+
+可以傳送
+
+傳送
+
+傳送至玩家位置
+
+傳送到自己身邊
+
+可以關閉疲勞計算
+
+可以隱形
+
+您能啟用隱形功能
+
+您無法啟用隱形功能
+
+您能啟用飛行功能
+
+您無法啟用飛行功能
+
+您能關閉疲勞計算
+
+您無法關閉疲勞計算
+
+您能使用傳送功能
+
+您無法使用傳送功能
+
+{*T3*}遊戲方式:鐵砧{*ETW*}{*B*}{*B*}
+您可以在鐵砧上使用經驗等級來修理、更名,或是於物品上附加特殊能力。{*B*}
+您可以變更所有物品的名稱,修繕有耐久度的裝備,或加入附魔小冊為物品提供特殊能力。{*B*}
+您可以在最左邊的空格內放入想要修理的物品,並加入該物品的製作原料(例如鐵劍與鐵錠)或是以相同類型的物品來組合。{*B*}
+用鐵砧組合物品會更有效率,如果其中一件物品附加了特殊能力,產出成品也會繼承此特殊能力。{*B*}
+也可以透過加入附魔小冊的方式為物品加入特殊能力,您只需要確認使用了適當的附魔小冊。您可以在地下迷宮中的箱子裡找到附魔小冊,也可以在附加能力台上製作。{*B*}
+在每次組合後,鐵砧都有可能會受損,在一定的使用次數後便會損毀。{*B*}
+
+
+{*T3*}遊戲方式:交易{*ETW*}{*B*}{*B*}
+您也可以和村民交易。每位村民都有不同的職業,他們有可能會是農夫、肉販、鐵匠、書商或是祭司 ,這也會影響他們供應的物品種類。{*B*}
+您可以從村民的交易選單中看到可交易的物品清單。村民在交易時給予的物品數量可能會有不同,而如果是太常交易的品項,可能會暫時停止販售。{*B*}
+交易通常與物品買賣交易的翡翠數量有關。{*B*}
+如果您身上沒有足夠的物品,您想交換的物品就會顯示為紅色。{*B*}
+
+
+{*T3*}遊戲方式:終界箱{*ETW*}{*B*}{*B*}
+世界中所有終界箱都連在一起,放在這種箱子裡的物品,也可以在其他終界箱中取用。不過,每個玩家在終界箱裡看到的物品都會不同。這能讓玩家在世界中任何終界箱存放物品並在其他地點的終界箱取得存放物。
+
+
+農夫
+
+書商
+
+祭司
+
+鐵匠
+
+肉販
+
+可在村莊裡找到村民,他們會根據各自的職業,供應相應的道具給玩家購買。
+
+大容量箱子
+
+
+ 您也能在附加能力台上製作附魔小冊,您往後可透過鐵砧將此能力附加在其他物品上。
+
+
+
+ 只要有東西經過並觸動機關,絆線鉤也能為迴路供電。
+
+
+
+ 只要一經馴服,狼身上就會出現一條項圈,您可以透過染色方式變更項圈的顏色。
+
+
+在種植胡蘿蔔和馬鈴薯後,也能收成這兩項材料。您可以在地面上看到這些蔬果的狀態來判斷是否可以收成。
+
+
+ 此外,您可以為豬加上馬鞍,玩家便能騎乘豬隻。您可以使用「願者上鉤」來引誘小豬移動。
+
+
+
+ 如果需要的話,您可以藉由使用 {*CONTROLLER_ACTION_MOVE*} 來慢慢移動您的礦車。藉此將礦車移動到有電力的軌道上可以幫助它啟動。
+
+
+您無法加入此遊戲。分割畫面只在高畫質模式中支援。如果您想要加入,請登出其他玩家。
+
+治療
+
+Xbox 360
+
+上一步
+
+當遊戲中或載入遊戲的存檔有啟用此選項時,都會停用成就及排行榜更新的功能。
+
+上傳供 Xbox One 使用的存檔
+
+上傳存檔
+
+您一次只能在存檔轉移區儲存一個 Xbox 360 主機存檔。請確認您在上傳另一個 Xbox 360 主機存檔之前已經將存檔下載至您的 Xbox One 主機中。
+
+正在上傳...
+
+上傳完成!
+
+上傳失敗。請您稍後再試。
+
+您已經找到 {*progress*}/{*goal*} 張唱片!
+
+
diff --git a/Minecraft.Client/Xbox/small.ico b/Minecraft.Client/Xbox/small.ico
new file mode 100644
index 00000000..449296f4
Binary files /dev/null and b/Minecraft.Client/Xbox/small.ico differ
diff --git a/Minecraft.Client/Xbox/targetver.h b/Minecraft.Client/Xbox/targetver.h
new file mode 100644
index 00000000..87c0086d
--- /dev/null
+++ b/Minecraft.Client/Xbox/targetver.h
@@ -0,0 +1,8 @@
+#pragma once
+
+// Including SDKDDKVer.h defines the highest available Windows platform.
+
+// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
+// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
+
+#include
diff --git a/Minecraft.Client/Xbox/xex-dev.xml b/Minecraft.Client/Xbox/xex-dev.xml
new file mode 100644
index 00000000..dec790d9
--- /dev/null
+++ b/Minecraft.Client/Xbox/xex-dev.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/Minecraft.Client/Xbox/xex.xml b/Minecraft.Client/Xbox/xex.xml
new file mode 100644
index 00000000..131cc5c4
--- /dev/null
+++ b/Minecraft.Client/Xbox/xex.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
--
cgit v1.2.3